Bash
在執行使用者想要執行的命令之前執行另一個命令
假設我想以
ls
這種方式修改工具的原始行為:$ ls Hello World file1 file2 ...
我怎樣才能做到這一點?
執行時
ls
我想執行另一個命令,比如說echo "Hello World!"
.我看到的快速解決方案是使用別名:
alias orig_ls="ls" alias ls='echo "Hello World!"'
但是,這不是一個真正的解決方案,因為當我執行
orig_ls
它時會輸出"Hello World!"
.
有時別名不夠強大,無法輕鬆地做你想做的事,所以這裡有一種不使用它們的方法。
在您的 shell 啟動時獲取的某個文件中(例如
.bashrc
),添加以下函式:ls () { echo "Hello world!" command ls "$@" }
與別名不同,函式可以遞歸。這就是為什麼
command ls
使用ls
;而不是 它告訴你的 shell 使用實際的ls
而不是你剛剛定義的函式。
您一定不要忘記致電
ls
:alias ls='echo "Hello World!"; ls'