2009-11-30 13 views
20

力圖打造:如何在bash別名中包含參數?

alias mcd="mkdir $1; cd $1" 

獲取:

$ mcd foo 
usage: mkdir [-pv] [-m mode] directory ... 
-bash: foo: command not found 

我在做什麼錯?

+1

這一個被提出和回答第一個吧! – 2015-04-24 14:46:28

回答

31

別名只能用一些任意文本替換命令的第一個單詞。它不能使用參數。

您可以改用一個shell函數:

mcd() 
{ 
    test -e "$1" || mkdir "$1" 
    cd "$1" 
} 
+0

也可能是一個shell腳本?命名爲沒有擴展名的文件mcd?功能如何不同或更好? – talkaboutquality 2009-11-30 18:39:19

+5

它不能用作shell腳本,因爲腳本會在子shell中運行。爲了使CD具有預期的效果,它必須運行在調用者的shell中,而不是子shell。 – 2009-11-30 18:45:03

+0

這個函數應該如何被調用? – Tebe 2014-07-21 11:56:58