Fix*_*int 3 bash alias utilities
我希望能够快速、即时地添加(和列出/删除)命令别名,以便它们在 shell 重新启动之间保持不变(就像它们被添加到.bashrc)。是否有任何现成的实用程序/脚本/任何可以帮助我解决的问题?
理想情况下,用例如下所示:
aliasutil add "gcm" "git checkout master"
aliasutil add "gfp %1" "git push --force %1"
aliasutil list
aliasutil remove "gcm"
Run Code Online (Sandbox Code Playgroud)
我知道没有任何工具可以做到这一点,但是您应该能够使用现有的实用程序来完成大部分工作。根据您希望别名的同步程度,您可以.bashrc使用PROMPT_COMMAND以下命令在每个命令行中或之前获取列表:
ALIAS_FILE='~/.aliases'
PROMPT_COMMAND=". $ALIAS_FILE"
Run Code Online (Sandbox Code Playgroud)
aliasutil add "gcm" "git checkout master"
echo 'alias gcm="git checkout master"' >> $ALIAS_FILE
Run Code Online (Sandbox Code Playgroud)
aliasutil 添加“gfp %1”“git push --force %1”
你打算把它%1作为一个论点吗?别名不支持参数,因此要实现这一点,您需要创建一个函数。
别名实用程序列表
cat $ALIAS_FILE
Run Code Online (Sandbox Code Playgroud)
aliasutil 删除“gcm”
sed -i '/^alias gcm=/d'
unalias gcm
Run Code Online (Sandbox Code Playgroud)
alias处理别名的创建和列表。unalias处理删除它们。如果需要,您可以使用help内置的 bashhelp alias和help unalias或在 bash 手册页中获取更多详细信息。
为了拯救它们,我多年来一直在使用以下方法:
$ alias savealias='alias > ~/.bash-aliases'
$ savealias
Run Code Online (Sandbox Code Playgroud)
所有别名(包括新定义的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'
Run Code Online (Sandbox Code Playgroud)
和许多其他人。
通过将以下内容添加到 ~/.bash_profile、~/.bashrc 甚至 /etc/profile 中,在登录时加载保存的别名
[ -e ~/.bash-aliases ] && . ~/.bash-aliases
Run Code Online (Sandbox Code Playgroud)
即“如果我的主目录中存在 .bash-aliases 文件,则获取它。”
使用此方法,除非您运行,否则您对别名所做的任何更改都将在注销时丢失savealias- 这包括添加、编辑和删除别名。