
因此,在這裡我已經創建,或者至少嘗試為接受命令列參數的命令創建一個別名,使用該名稱創建一個新目錄,然後轉到它。
alias newfolder='mkdir $2 ; cd "$(history | tail -2 | awk '\''NR == 1'\'' | awk '\''{print $3}'\'')"'
別名創建成功,但當我想使用命令列參數運行命令時,收到此錯誤訊息。
username:~/workspace (master) $ newfolder a
mkdir: missing operand
Try 'mkdir --help' for more information.
bash: cd: newfolder='mkdir: No such file or directory
答案1
您需要一個函數,而不是別名。嘗試:
newfolder() { mkdir -p "$1" && cd "$1"; }
例子:
$ pwd
/tmp
$ newfolder dir1/dir2
$ pwd
/tmp/dir1/dir2
筆記:
該
-p
選項mkdir
告訴它在需要時建立丟失的父目錄。在上面的範例中,dir1
不存在,但mkdir -p dir1/dir2
創建了dir1
和dir2
。因為我們使用了 shell 操作符
&&
,所以只有在指令成功cd
時才會執行該指令。mkdir
別名在非常簡單的情況下非常有用,其中固定字串可以替換單字。別名不處理參數。
因為我們使用 shell 函數來代替別名,所以我們可以
$1
根據需要引用參數,例如在本例中為 。