假设我想ls
这样修改该工具的原始行为:
$ ls
Hello World
file1 file2 ...
我怎样才能做到这一点?
运行时ls
我想运行另一个命令,比如说echo "Hello World!"
。
我看到的快速解决方案是使用别名:
alias orig_ls="ls"
alias ls='echo "Hello World!"'
然而,这不是一个真正的解决方案,因为当我运行时orig_ls
它会输出"Hello World!"
.
答案1
有时别名不够强大,无法轻松执行您想要的操作,因此这里有一种不使用别名的方法。
在 shell 启动时获取的某些文件中(例如.bashrc
),添加以下函数:
ls () {
echo "Hello world!"
command ls "$@"
}
与别名不同,函数可以递归。这就是为什么command ls
使用 is 而不是ls
;它告诉您的 shell 使用实际的函数ls
而不是您刚刚定义的函数。
答案2
您一定不要忘记致电ls
:
alias ls='echo "Hello World!"; ls'