是否有任何实用程序可以快速添加、列出和删除命令别名?

是否有任何实用程序可以快速添加、列出和删除命令别名?

我希望能够快速、即时地添加(和列出/删除)命令别名,以便它们在 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 aliashelp 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

相关内容