Alias
別名解釋
我在
.bash_aliases
. 我將c
別名定義如下,但它不能正常工作:... alias cd='cd; ls -r --time=atime' alias c='cd' ...
.bashrc
裡面有一行:alias ls='clear; ls --color=auto'
Command
c
現在給出錯誤的輸出。它應該給出與 相同的輸出cd; clear; ls -r --time=atime --color=auto
。其他問題:當我打字時,
cd dir
我應該留在裡面,dir
但結果是我在$HOME
裡面。我該如何解決這個問題並改進定義別名?被
.bash_aliases
解釋為regular grammar
?
改用函式,優點是可以傳遞參數和更簡潔的語法。
function cd() { command cd "$@" ls -r --time=atime } function c() { cd "$@" } function ls() { clear command ls --color=auto "$@" }
(
command
是bash
用於引用真實命令的內置命令,而不是具有相同名稱的函式)。
c
應該完全等同於cd
。我希望您會看到與 from 相同的錯誤cd dir
,c dir
並且c
僅此一項即可。
cd
不會按照您定義的方式工作,因為別名執行簡單的文本替換。cd dir
擴展為cd; ls -r --time=atime dir
。別名幾乎僅限於為命令提供更短的名稱或提供預設選項,例如alias c=cd
oralias cp='cp -i'
。對於更複雜的事情,例如執行多個命令,請使用函式。cd () { command cd "$@" && ls -r --time=atime }