Alias

別名解釋

  • June 19, 2014

我在.bash_aliases. 我將c別名定義如下,但它不能正常工作:

...
alias cd='cd; ls -r --time=atime'
alias c='cd'
...

.bashrc裡面有一行:

alias ls='clear; ls --color=auto'

Commandc現在給出錯誤的輸出。它應該給出與 相同的輸出 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 "$@"
}

(commandbash用於引用真實命令的內置命令,而不是具有相同名稱的函式)。

c應該完全等同於cd。我希望您會看到與 from 相同的錯誤cd dirc dir並且c僅此一項即可。

cd不會按照您定義的方式工作,因為別名執行簡單的文本替換。cd dir擴展為cd; ls -r --time=atime dir。別名幾乎僅限於為命令提供更短的名稱或提供預設選項,例如alias c=cdor alias cp='cp -i'。對於更複雜的事情,例如執行多個命令,請使用函式。

cd () {
 command cd "$@" &&
 ls -r --time=atime
}

另請參閱別名 vs 函式 vs 腳本如何將參數傳遞給別名?.

引用自:https://unix.stackexchange.com/questions/19926