Bash結合了
結合了mkdir
和cd
?
有什麼方法(什麼是 bash 中最簡單的方法)可以結合以下內容:
mkdir foo cd foo
的手冊頁
mkdir
沒有描述類似的東西,也許有一個花哨的版本mkdir
?我知道它cd
必須是內置的shell,所以對於花哨的東西也是如此mkdir
……別名?
功能?
mkcdir () { mkdir -p -- "$1" && cd -P -- "$1" }
將上面的程式碼放在
~/.bashrc
,~/.zshrc
或你的 shell 提供的另一個文件中。然後通過執行例如source ~/.bashrc
應用更改來獲取它。之後只需執行
mkcdir foo
ormkcdir "nested/path/in quotes"
。筆記:
"$1"
是mkcdir
命令的第一個參數。如果它有空格或其他特殊字元,它周圍的引號可以保護參數。--
確保為新目錄傳遞的名稱不會被解釋為mkdir
or的選項cd
,從而有機會創建以-
or開頭的目錄--
。-p
used onmkdir
會在它們尚不存在時創建額外的目錄, used on-P
會cd
解析符號連結。- 除了
source
-ing rc,您還可以重新啟動終端仿真器/shell。
我認為創建一個函式是最合適的方法,但只是為了列出所有替代方法,您可以編寫:
mkdir foo && cd "$_"
$_
是一個特殊參數,它保存上一個命令的最後一個參數。周圍的引號$_
確保即使文件夾名稱包含空格也能正常工作。為什麼要使用雙引號?
在某些 shell(例如 )中,即使目錄名稱包含空格,也不需要
zsh
將雙引號括起來。$_
但是,此命令需要它們才能在 中工作bash
。例如,在 macOS 10.13.6 上的 bash 3.2.57 中執行此命令:
mkdir "my directory" && cd $_
導致此輸出:
bash: cd: my: No such file or directory
但是,如果我們
$_
用雙引號括起來,則命令成功返回。bash-3.2$ mkdir "my directory" && cd "$_" bash-3.2$ echo $? 0 bash-3.2$