別名建立一個新目錄並轉到它

別名建立一個新目錄並轉到它

因此,在這裡我已經創建,或者至少嘗試為接受命令列參數的命令創建一個別名,使用該名稱創建一個新目錄,然後轉到它。

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

筆記:

  1. -p選項mkdir告訴它在需要時建立丟失的父目錄。在上面的範例中,dir1不存在,但mkdir -p dir1/dir2創建了dir1dir2

  2. 因為我們使用了 shell 操作符&&,所以只有在指令成功cd時才會執行該指令。mkdir

  3. 別名在非常簡單的情況下非常有用,其中固定字串可以替換單字。別名不處理參數。

  4. 因為我們使用 shell 函數來代替別名,所以我們可以$1根據需要引用參數,例如在本例中為 。

相關內容