我想向 bash 别名脚本添加一个参数,以便我可以运行
alias -p l='ls -l'
Run Code Online (Sandbox Code Playgroud)
它会永久添加到我的 .zshrc 中。但我无法找到别名的 shell 脚本。
我试过whereis alias
,但没有运气。甚至man alias
显示别名没有条目。
我看了看,/usr/bin, /usr/share/local/bin
但没有运气。谁能指出位置?
编辑:我还尝试通过以下方式查看所有可能的路径 ls $(echo $PATH| tr ':' '\n') | grep alias
ilk*_*chu 17
alias
是一个内置命令,因此它不会在任何文件中显示为脚本,也不会显示为函数。该type
命令将显示:
$ type alias
alias is a shell builtin
Run Code Online (Sandbox Code Playgroud)
但是你仍然可以覆盖它。具有相同名称的函数将屏蔽内置函数,除非使用builtin
内置函数显式调用它。
所以,这样的事情应该工作:
alias() {
if [ "$1" = "-p" ]; then
echo "-p was given";
shift;
fi;
builtin alias "$@";
}
Run Code Online (Sandbox Code Playgroud)
如果要将相同的别名分配打印到文件,则需要小心将其引用正确,以便它可用作 shell 的输入。
像这样的事情可能会做(shift
在函数之后添加),但请测试它:printf "alias %q\n" "$@" >> ~/my.alias.file
至于 Bash 与 Zsh 的问题,我认为上述两种方法都适用,但我不是 Zsh 的专家。
顺便说一句,您可能还想注意 Bashalias
已经有一个-p
选项help alias
说:
Options:
-p print all defined aliases in a reusable format
Run Code Online (Sandbox Code Playgroud)
我不知道它是否有任何用处,因为alias
不带参数的默认行为也是以可重用的格式打印所有别名。
归档时间: |
|
查看次数: |
1170 次 |
最近记录: |