{"id":13859030,"url":"https://github.com/tj/bm","last_synced_at":"2025-08-20T01:32:10.784Z","repository":{"id":2738292,"uuid":"3734025","full_name":"tj/bm","owner":"tj","description":"CLI bookmarks -- dropbox persisted bookmarks in your terminal - view screenshots in your browser","archived":false,"fork":false,"pushed_at":"2017-05-19T12:40:06.000Z","size":179,"stargazers_count":231,"open_issues_count":7,"forks_count":26,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-07T07:08:17.851Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tj.png","metadata":{"files":{"readme":"Readme.md","changelog":"History.md","contributing":null,"funding":null,"license":"licenses.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-03-15T23:33:09.000Z","updated_at":"2025-03-11T15:02:26.000Z","dependencies_parsed_at":"2022-09-10T01:11:38.745Z","dependency_job_id":null,"html_url":"https://github.com/tj/bm","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/tj/bm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tj%2Fbm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tj%2Fbm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tj%2Fbm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tj%2Fbm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tj","download_url":"https://codeload.github.com/tj/bm/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tj%2Fbm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271252410,"owners_count":24726910,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-19T02:00:09.176Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-05T03:02:30.133Z","updated_at":"2025-08-20T01:32:10.515Z","avatar_url":"https://github.com/tj.png","language":"Shell","readme":"\u003ca name=\"bm\" /\u003e\n## BM\n\n  Simple bash CLI bookmarks.\n\n  Firstly designed for Mac and now also for Linux, supports search on criteria,\n  accelerator, tags, Screenshots, configuration file, backup, and also\n  generate a HTML file with bookmarks and Screenshots.\n\n  **/!\\ : version prior to v0.6.6 had a bug when deleting. Don't use the delete function or update !**  \n  If you upgrade from a version prior to v0.6.0, read at the end.\n\n  ![](http://cl.ly/FREx/Screen%20Shot%202012-03-29%20at%2011.15.14%20PM.png)\n\n  Please note, BM needs some binaries to work see configuration to change them): \n\n  * For the Screenshot part:\n  * - `cutycapt` for Linux\n  * - `webkit2png` for Mac.\n  * For the clipboard copy:\n  * - `xsel` for Linux\n  * - As I don't have any Mac, nothing for the time being.\n  * For the md5 part:\n  * - `md5sum` for Linux\n  * - `md5` for Mac.\n  * Other tools: `sed`, `awk`, `date`, `iconv`, `cat`, `curl`, `column` and `bash`\n\n## Install\n\n```\n$ make install\n$ make uninstall\n```\n\n## Example\n\n  Add a bookmark:\n  \n    $ bm add http://subtlepatterns.com \"tiling background images\" design textures\n\n  Open it later:\n\n    $ bm subtle\n\n  Search for design related bookmarks:\n\n  ![cli bookmarks](http://f.cl.ly/items/0s3M0T1B122L3W1C1L1U/Screen%20Shot%202012-03-15%20at%204.44.24%20PM.png)\n\n## Usage\n\n```\nUsage: ./bm [modifier(s)] command [option(s)]\n\n\tCommands :\n\t==========\n\t-h\t\tPrint this help\n\t-H\t\tPrint help for legacy usage\n\t-v/-V\t\tPrint the version\n\t-a 'URL'\tAdd the URL to bookmark file\n\t\t\tOptions for -a\n\t\t\t-t \"TagList\"\tTags are sparated by a comma ,\n\t\t\t-T \"Title\"\tTitle for this URL (if empty and allowed Title\n\t\t\t\t\tdownloaded)\n\t\t\t-A \"accel\"\tAccelerator when search for URLs (start with Accel)\n\t\t\t\t\tDefault is FQDN without gTld (and www, and sheme)\n\t\t\t-F\t\tForce the bookmark to be created (even if duplicate\n\t\t\t\t\tor invalid)\n\t\t\t-p\t\tForce the screenshot to be taken\n\t\n\t-l\t\tList all URLs (default action, same thing as calling bm without args)\n\t\t\tOptions for -l\n\t\t\t-z\t\tUse the alternate print list\n\t\t\t-n\t\tSort the results by date\n\t\t\t-N\t\tSort the results by date  (reverse)\n\n\n\t-s 'object'\tSearch for bookmarks\n\t\t\tOptions for -s\n\t\t\t-i\t\tIncensitive case search\n\t\t\t-z\t\tUse the alternate print list\n\t\t\t-n\t\tSort the results by date\n\t\t\t-N\t\tSort the results by date  (reverse)\n\t\t\tObjects are\n\t\t\t\t:string\tSearch in accelerator list\n\t\t\t\t+string\tSearch in tags list\n\t\t\t\t=string\tSearch in MD5 list\n\t\t\t\t/string\tSearch in URL list\n\t\t\t\tstring\tSearch in full test\n\n\t-o 'object'\tSearch for bookmarks and open it (use the same argument as for -s)\n\t\t\tOptions for -o\n\t\t\t-i\t\tIncensitive case search\n\t\t\t-O\t\tIf more than one answer force the first bookmark to be open\n\t\t\t-Y\t\tIf more than one answer force ALL bookmarks to be open\n\n\t-x 'object'\tSearch for bookmarks and copy it to clipboard (use the same argument as for -s)\n\t\t\tOptions for -x\n\t\t\t-i\t\tIncensitive case search\n\t\t\t-X\t\tIf more than one answer force the first bookmark to be copied\n\t\t\t-Y\t\tIf more than one answer force ALL bookmarks to be copied\n\n\t-r 'object'\tSearch for bookmarks and Print the recorded associated picture (use the same argument as for -s)\n\t\t\tOptions for -r\n\t\t\t-i\t\tIncensitive case search\n\t\t\t-O\t\tIf more than one answer force the first bookmark to have its picture printed\n\t\t\t-Y\t\tIf more than one answer force ALL bookmarks to have their picture printed\n\n\t-d 'URL' or\tDelete the URL from bookmark file\n\t   md5sum or\n\t   'URL part'\tOptions for -d\n\t\t\t-D\t\tDelete first occurence only\n\t\t\t-F\t\tForce the bookmark to be deleted (even if duplicate)\n\t\t\t-p\t\tDelete the associated picture (no trash available)\n\n\t-g\t\tGenerate a HTML page with all bookmarks\n\t\t\tIf used more than once, generate a page per tag\n\t\t\tOptions for -g\n\t\t\t-G \"filename\"\tIf g==1 then generate then use this filename to generate page\n\t\t\t-O\t\tOpen the file when generated\n\n\t-P 'object'\tGenerate all Non existant picture (check done for all URL in bm), if none argument.\n\t\t\tIf an argument is given (use the same argument as for -s) only the results will have a picture.\n\t\t\tOptions for -P\n\t\t\t-F\t\tForce the picture to be taken again (even if already exists).\n\n\t-L\t\tList all tags\n\n\t-C\t\tPrint the color table (usefull for configuration)\n\n\t-S\t\tShow statistics about bookmarks/tags (and also configuration)\n\t\t\tOptions for -S\n\t\t\t-p\t\tPrint the list of orphaned Pictures\n\n\tModifiers :\n\t===========\n\t-c 'file'\tUse this configuration file instead of the default one\n\n\t-b 'file'\tUse this bookmark file instead of the default one\n\n\tOld Legacy usage still available :\n\tUsage: bm [options] [cmd]\n\n\tCommands:\n\n\t# add a bookmark with the given url, description, and optional tags\n\t$ bm add \u003curl\u003e [desc] [tag...] [accelerator]\n\n\t# open the first bookmark matching \u003cquery\u003e\n\t$ bm open \u003cquery\u003e\n\t$ bm \u003cquery\u003e\n\n\t# search the bookmarks via full-text \u003cquery\u003e\n\t$ bm search \u003cquery\u003e\n\n\t# list tags\n\t$ bm tags\n\n\t# list bookmarks available\n\t$ bm list\n\t$ bm ls\n\t$ bm\n\n\t# display statistics about the bookmarks\n\t$ bm statistics\n\t$ bm stats\n\n\t# view bookmark screenshots in your default browser\n\t$ bm view design\n\t$ bm view\n\n\t# clear all bookmarks\n\t$ bm clear\n\n\tOptions:\n\n\t-V    output bm version\n\t-h    output help information for new parameters\n\t-H    output this help information\n```\n\n\u003ca name=\"screenshots\" /\u003e\n## Screenshots\n\n  Run `bm view [query]` to view the bookmark screenshots in your default browser. This requires `webkit2png(1)` (`brew install webkit2png`).\n\n## Storage\n\n  Store the file(s) wherever you want. Use configuration (either internal or with a config file with `-c`), or parameters (`-b` for bookmark file).\n  \n```\n$ cat ~/sync/bm.lnk\nbd8b3eff7fa82a0382a3e7576c5363b6|:bm|https://github.com/Flyounet/bm/|bm a cool enhanced bookmark tool for your console|default,shell|2016-01-18T07:21:36Z\n2981b5cae113491ddb18e0d51454f0d9|:bmtj|https://github.com/tj/bm/|The original bm : a cool bookmark tool for your console|default,shell|2016-01-18T07:21:36Z\n#fd65acec3e2abff9d2fd3c581df3142d|:7|http://flyounet.net|http-flyounet-net|site,dev, bli,bla,blo,bli|2016-01-20T17:44:02Z\n # fd65acec3e2abff9d2fd3c581df3142d|:9|http://flyounet.net|http-flyounet-net|site,dev, ba,bello,belli,bella,arthur,toto,titi,tata,bli,bla,blo,bli|2016-01-20T17:46:24Z\nac313b7d866bc76487858b243f9f3ff0|:HP|http://localhost:631/printers/HP8600|Cups: Imprimante HP 8600|admin,cups,local|2016-01-31T18:33:11Z\nae6461ffeb6cd8393c4c100d026db789|:sync|https://127.0.0.1:8384/|SyncThings Local|admin,network,syncthings|2016-01-31T19:05:08Z\n7ad10b8decf3ef55ce4e8a95e80f4b9d|:home|http://flyounet.net/life|3615 my life|blog,home|2016-01-31T21:09:33Z\n7a3a43da3e8b8f58e5ade40eab35a1fd|:syntaxe|http://flyounet.net/life/2015-11-01-time-to-markdown.html|Syntaxe markdown|blog,home,markdown|2016-01-31T21:12:11Z\n```\nPlease note the above format is not used anymore since the v0.6.0. The date has been put as the second field of bookmark file.\n\nIf you don't want to see some bookmarks, but want to keep them, you could comment them by adding a hash `#`.\n\n## Statistics\n\nbm provides you some statistics usage\n\n```\n$ bm -S -p\n\n===== Configuration =====\nBookmark file           : /home/testuser/bm.lnk\nConfig file             : /home/testuser/bm.conf (but doesn't exist)\nTrash file              : /home/testuser/.bm.trash\nScreenshot directory    : /home/testuser/.bm.shots\nBackup file(s)          : /home/testuser/.bm.lnk.bck*\n                          /home/testuser/.bm.lnk.bck.0\n                          /home/testuser/.bm.lnk.bck.1\n                          /home/testuser/.bm.lnk.bck.2\n\n=====  Statistics   =====\n# of Bookmarks          : 27\n# of Duplicate          : 0\n# of tags               : 26\nTop 14 tags used        :\nadmin:8  color:7   bash:7     prompt:6    git:4  design:4  css:4\nbox:4    system:3  network:3  ecryptfs:3  doc:3  rpi:2     lprab:2\n# of Pictures           : 34 [# of files in /home/testuser/.bm.shots:39]\nAll Pictures size       : 27M\nBookmark Without Pic    : 0\nOrphaned pictures       : 7\n\n=====   Orphaned   =====\nList of orphaned pictures :\n - /home/testuser/.bm.shots/16d402a7f1be2304f90ec25924782edc.png [Trashed URL should be: https://github.com/Flyounet/bm]\n - /home/testuser/.bm.shots/2981b5cae113491ddb18e0d51454f0d9.png [Trashed URL should be: ]\n - /home/testuser/.bm.shots/7a3a43da3e8b8f58e5ade40eab35a1fd.png [Trashed URL should be: Unknown]\n - /home/testuser/.bm.shots/7ad10b8decf3ef55ce4e8a95e80f4b9d.png [Trashed URL should be: Unknown]\n - /home/testuser/.bm.shots/b88fe41f6aa05370e81bae926da2087c.png [Trashed URL should be: Unknown]\n - /home/testuser/.bm.shots/bd8b3eff7fa82a0382a3e7576c5363b6.png [Trashed URL should be: ]\n - /home/testuser/.bm.shots/c5c24b5609b0191095197d19d852eb1c.png [Trashed URL should be: http://toto]\n\n```\n\n## v0.6.0 and above...\n\n  The field's order has been changed. To use the v0.6.0, you have to execute the migration tool located in the `scripts` subdirectory.\n  It will modify your bookmark file for you (and do a backup first).\n\n## Licenses\n\n  * WTFPL : do What The Fuck you Want to Public License\n  * DSSL  : Demerden Sie Sich License\n\n","funding_links":[],"categories":["📦 Legacy \u0026 Inactive Projects","Shell"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftj%2Fbm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftj%2Fbm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftj%2Fbm/lists"}