我希望能够快速、即时地添加(和列出/删除)命令别名,以便它们在 shell 重新启动之间持续存在(就像它们被添加到.bashrc
)。有没有现成的实用程序/脚本/任何可以帮助我的东西?
理想情况下,用例如下所示:
aliasutil add "gcm" "git checkout master"
aliasutil add "gfp %1" "git push --force %1"
aliasutil list
aliasutil remove "gcm"
答案1
alias
处理别名的创建和列表。unalias
处理删除它们。如果您需要它,您可以使用 bashhelp
内置的 -help alias
和help unalias
或 bash 手册页来获取更多详细信息。
为了拯救它们,我多年来一直在使用以下方法:
$ alias savealias='alias > ~/.bash-aliases'
$ savealias
所有别名(包括新定义的别名)savealias
现在都将保存在 中~/.bash-aliases
。这是一个纯文本文件,如果需要,可以像 shell 脚本一样进行编辑。例如,我的包含如下行:
alias acs='apt-cache show'
alias acss='apt-cache search'
alias loadalias='. ~/.bash-aliases '
alias mq='mailq | grep "^[0-9A-Z]"'
alias savealias='alias >~/.bash-aliases'
alias ttystat='echo $(tty) $TERM ${COLUMNS}x$LINES'
alias where='type -all'
alias which='type -path'
还有许多其他人。
通过将以下内容添加到 ~/.bash_profile、~/.bashrc 甚至 /etc/profile,在登录时加载保存的别名
[ -e ~/.bash-aliases ] && . ~/.bash-aliases
即“如果我的主目录中存在 .bash-aliases 文件,则获取它。”
使用此方法,您对别名所做的任何更改都将在注销时丢失,除非您运行savealias
- 这包括添加、编辑和删除别名。
答案2
据我所知,没有任何工具可以做到这一点,但是您应该能够使用现有的实用程序来完成大部分工作。根据您希望别名的同步程度,您可以在.bashrc
每个命令行中或之前使用以下命令获取列表PROMPT_COMMAND
:
ALIAS_FILE='~/.aliases'
PROMPT_COMMAND=". $ALIAS_FILE"
aliasutil 添加“gcm”“git checkout master”
echo 'alias gcm="git checkout master"' >> $ALIAS_FILE
aliasutil 添加“gfp %1”“git Push --force %1”
你打算将其%1
作为一个论据吗?别名不支持参数,因此要实现此目的,您需要创建一个函数。
别名实用程序列表
cat $ALIAS_FILE
aliasutil 删除“gcm”
sed -i '/^alias gcm=/d'
unalias gcm
答案3
当我自己实现这个时(受到@Thor的答案的启发),我想我应该创建一个其他人可以很好安装的工具:https://github.com/talwrii/aliasutil。
这适用于 bash zsh
,并且有望与 bash 一起使用(未经测试)。
如果您正在使用zsh
,则可以使用 来安装它zplug
。
source /usr/share/zplug/init.zsh
zplug talwrii/aliasutil
zplug install
zplug load