Bash

接受來自評估結果的變數的別名

  • June 12, 2017

我試圖定義一個別名來幫助我 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。

但是您需要記住,這不會處理名稱中帶有換行符的文件。

引用自:https://unix.stackexchange.com/questions/370625