{"id":16513278,"url":"https://github.com/chinarjoshi/acronym","last_synced_at":"2026-01-28T09:01:51.581Z","repository":{"id":41362039,"uuid":"504369973","full_name":"chinarjoshi/acronym","owner":"chinarjoshi","description":"CRUD for shell aliases","archived":false,"fork":false,"pushed_at":"2024-10-31T04:43:18.000Z","size":1445,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-21T23:08:27.522Z","etag":null,"topics":["alias-management","bash","developer-tools"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chinarjoshi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-06-17T02:34:20.000Z","updated_at":"2025-11-03T23:40:46.000Z","dependencies_parsed_at":"2023-12-03T22:22:03.375Z","dependency_job_id":"b15459cc-b701-4b0a-82a6-bd9deee810b9","html_url":"https://github.com/chinarjoshi/acronym","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/chinarjoshi/acronym","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chinarjoshi%2Facronym","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chinarjoshi%2Facronym/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chinarjoshi%2Facronym/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chinarjoshi%2Facronym/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chinarjoshi","download_url":"https://codeload.github.com/chinarjoshi/acronym/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chinarjoshi%2Facronym/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28843115,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T07:39:25.367Z","status":"ssl_error","status_checked_at":"2026-01-28T07:39:24.487Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["alias-management","bash","developer-tools"],"created_at":"2024-10-11T16:08:24.378Z","updated_at":"2026-01-28T09:01:51.562Z","avatar_url":"https://github.com/chinarjoshi.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# acronym\r\nA tool that syncs shell usage between development environments through [***aliases***](https://tldp.org/LDP/abs/html/aliases.html).\r\n\r\n## Rational\r\nDevelopment environments are notoriously hard to keep consistent. One component is the difficulty establishing and remembering the commands to make your software, which often have\r\nlong and awkward flags that are a common source of error. \r\n\r\nThis solution is a new version-controlled file strictly containing aliases for commands to be used by the whole team, named `.aliases.sh`.\r\nIt can be version-controlled because its devoid of secrets, and it dodges the complexity and performance impact of a container. This comes with significant advantages:\r\n1. *Enforces consistent shell usage when collaborating*: everyone is running identical commands, which simplifies new developer onboarding and removes a component of the *\"well it works on my machine\"* problem\r\n2. *Allows a uniform interface to all of your projects, regardless of the language or build system*: `build` can mean make, cmake, ninja, meson, scons, gradle, etc. based on the current project.\r\n    Remember what the tool does, instead of its name\r\n3. *Encourages ergonomic names to your long commands*: typing `l` instead of `ls -ghAFG --color=auto` reduces typos and saves time\r\n\r\n## Usage\r\n\r\nAcronym manages *databases* of aliases that compile to plain shell scripts. Only one person needs the `acronym` executable for everyone to benefit. To use global aliases, add this command to your .bashrc/.zshrc: `. $(acronym -g)`[^1].\r\nTo use project-wide aliases, all contributors can simply source the `.aliases.sh` file located in your git repository, either manually or with [autoenv](https://github.com/hyperupcall/autoenv).\r\n\r\nThere are 3 alias database scopes:\r\n1. *global* defines aliases available everywhere. Default: `~/.aliases.sh`\r\n2. *project-wide* defines aliases specific to a git-tracked directory, which should be version-controlled and used by all contributors. Example: `~/projects/example/.aliases.sh`\r\n3. *local project-wide* is same as above, but is local to your machine and specified in the git ignore file [^2].  Example: `~/projects/example/.env`\r\n\r\nEvery entry in the database has the following string fields:\r\n - alias: the new command you type\r\n - command: the actual command the alias runs\r\n - section: the category the alias falls under (for organization)\r\n - comment: an optional description\r\n\r\nThere are 4 database operations (CRUD) [^3]:\r\n\r\n### `acronym create [OPTION ...] [COMMAND]`\r\n\r\nAdds a new alias to the specified database scope by providing the command. By default, it will auto-generate the alias from the acronym of the command, and the section from the first word of the command\r\n(unless its sudo), but you can provide the alias, section, and comment. The scope is *global* by default.\r\n```\r\n  -p, --project              Add to project-wide alias database\r\n  -l, --local                Add to local project-wide alias database\r\n  -a, --alias=ALIAS          Optionally provide alias\r\n  -c, --comment=COMMENT      Optionally provide a description\r\n  -s, --section=SECTION      Optionally provide section/category\r\n  -i, --include-flags        Include flags when generating default alias\r\n```\r\n![create_demo2](https://github.com/chinarjoshi/acronym/assets/68311366/9f21e4e5-925d-4e45-946d-ce5ffd6c4bb8)\r\n\r\n### `acronym read [OPTION ...] [PATTERN ...]`\r\n\r\nShows your aliases in *TOML format*, optionally filtered by the given patterns. If you're in a git repository, it will show the *project-wide* and *local project-wide* scopes.\r\nIf neither of those files exist or you're not in a git repository, it will show the *global* scope. The patterns match the *command* field by default.\r\n```\r\n  -g, --global               Include your global aliases, even when in a git repository\r\n  -a, --aliases              Make patterns match aliases\r\n  -s, --sections             Make patterns match sections\r\n```\r\n![read_demo](https://github.com/chinarjoshi/acronym/assets/68311366/d4f49bd5-3f84-4fe3-b0f9-dec5a6087cc3)\r\n\r\n### `acronym update [OPTION ...]`\r\n\r\nEdit the database in *TOML format* using your default editor. Here you can create, update, or delete entries and have the output converted back to shell script format. The scope is *global* by default.\r\n```\r\n  -p, --project              Edit project-wide alias database\r\n  -l, --local                Edit local project-wide alias database\r\n  -e, --editor=EDITOR        Name of editor to use\r\n```\r\n![update_demo](https://github.com/chinarjoshi/acronym/assets/68311366/30b9611b-dc1e-44bb-808b-c383dcdb743a)\r\n\r\n### `acronym delete [OPTION ...] [ALIAS/SECTION ...]`\r\n\r\nRemove aliases or whole sections from the database.\r\n```\r\n  -p, --project              Remove from project-wide alias database\r\n  -l, --local                Remove from local project-wide alias database\r\n  -s, --section              Remove whole sections instead of aliases\r\n  -f, --force                Never prompt, even if alias not found\r\n  -i, --interactive          Prompt before every removal\r\n```\r\n![delete_demo2](https://github.com/chinarjoshi/acronym/assets/68311366/df78d0d9-8dfb-48bb-8fd3-b4ef56c0b103)\r\n\r\n## Installation\r\n\r\nBinaries are available for x86_64 Linux and MacOS.\r\n\r\nIf you're an **Arch Linux** user, you can install acronym from the AUR\r\n```\r\n$ yay -S acronym\r\n```\r\n\r\nIf you're a **MacOS Homebrew** user, you can install acronym from a tap\r\n```\r\n$ brew tap chinarjoshi/tap\r\n$ brew install acronym\r\n```\r\n\r\nOtherwise, you can download the binary from the releases tab and install it with the following command\r\n```\r\n$ chmod +x acronym* \u0026\u0026 sudo mv acronym* /usr/local/bin/acronym\r\n```\r\n\r\n## Configuration\r\n\r\nAcronym can be configured through the following environmental variables:\r\n* `ACRONYM_FILENAME`: The name of the global and project-wide alias file. Default: `.aliases.sh`\r\n* `ACRONYM_LOCAL_FILENAME`: The name of the local project-wide alias file. Default: `.env`\r\n* `ACRONYM_GLOBAL_DIR`: The directory that contains the global alias file. Useful if you want it to be somewhere like dotfiles. Default: `~`\r\n\r\n[^1]: Invoking `acronym` with no parameters prints the path to the global aliases file\r\n[^2]: The `.env` file can still contain any other code. Local mode will just append all aliases to the end of the file, and top it off\r\nwith the command `. ./.aliases.sh`, meaning local aliases *cannot* override project-wide aliases\r\n[^3]: The alias database incurs no performance penalty because it is converted to a plain shell script of `alias` commands for the shell to source.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchinarjoshi%2Facronym","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchinarjoshi%2Facronym","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchinarjoshi%2Facronym/lists"}