Bash
接受來自評估結果的變數的別名
我試圖定義一個別名來幫助我 cd 到最近創建的目錄,並且我在我的 .bashrc 中使用以下內容:
alias cdlatest="latestdir=$(ls -td -- */|head -n 1); cd $latestdir"
但是這個別名只工作一次。如果我更改為新目錄,它仍會嘗試 cd 到最後一個目錄。似乎因為該變數
$(ls -td -- */|head -n 1)
從一開始只被評估一次。如何解決這個問題?
將別名定義周圍的雙引號更改為單引號,您就可以開始了。
alias cdlatest='latestdir=$(ls -td -- */|head -n 1); cd $latestdir'
但是,我建議一些精簡:
alias cdlatest='cd "$(\ls -td -- */|head -n 1)"'
我們去掉中間變數“ $ latestdir", quote the results of the command evaluation $ (…),並使用無別名形式的 ls。
但是您需要記住,這不會處理名稱中帶有換行符的文件。