假設我想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'