Shell

cd 在最後一個文件夾 tcsh

  • September 19, 2019

試圖在 bash 中的最後一個目錄上 cd

如果我嘗試這個:

cd $(ls -l | tail -l)

這將導致:

Illegal variable name.

我不知道我應該怎麼做

$(...)是 Korn/POSIX shell 語法。(t)csh 中的命令替換是用....

tcsh中,您可以這樣做:

set dirs = (./*/); cd $dirs[$#dirs]:q

cd進入目前目錄中非隱藏目錄的詞法列表中的最後一個目錄(或目錄的符號連結)。

這比:

cd "`ls | tail -n 1`"

如果文件名包含換行符或以-(或+後跟數字)開頭,或者目前目錄中的最後一個文件不是目錄,則該方法不起作用。

您的 Ksh 語法cd $(ls | tail -1)更糟糕,因為它也會因帶有空格、製表符或萬用字元的文件名而失敗。

請注意,順序是詞法的,例如2排序 10。對於數字排序,對於 GNU 實現ls,您可以使用-v選項 ( cd "ls -v | tail -n 1")

使用zsh外殼,您可以:

cd ./*(/[-1])

或者也考慮到目錄的符號連結:

cd ./*(-/[-1])

要按數字對文件進行排序:

cd ./*(n-/[-1])

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