Shell
如何將目錄更改為最後一個目錄?
我有很長的目錄列表,比如
/dir/dir/dir/../../../../../../../../../.. ../../ ../../last dir
是否可以立即更改到最後一個目錄?
如果
lastdir
是您的目錄層次結構中該名稱的唯一目錄,您可能會逃脫bash
(儘管可能需要一段時間才能執行)shopt -s globstar cd **/lastdir
我認為在“cd”中實現這樣的功能沒有多大意義。如果每個子目錄只有一個子子目錄,它會起作用,但是如果有一棵樹呢
$$ i.e. several subdirs in a dir $$? 應該走哪條路?‘cd’ 不是讀心器。 考慮以下兩個直接樹:
<some_parent_dir> | |-<subdir> | | | |-<subdir> | | | |-<subdir> | | | |-<subdir> | | | |-<subdir> | | | |-<subdir> | |-<other_parent_dir>
在這種(以上)情況下,您要求的“cd”功能可以正常工作但是在以下情況下,“cd”會感到困惑,不知道它應該輸入哪個子目錄:subdir1 或 subdir2 …
<some_parent_dir> | |-<subdir> | | | |-**<subdir1>** | | | | | |-<subdir> | | | | | |-<subdir> | | | |-**<subdir2>** | | | |-<subdir> | |-<other_parent_dir>
在這種情況下,最好的出路是製作合理的目錄樹。避免創建包含單個子目錄的目錄鏈。
但是..如果您已經有這樣的目錄結構並且您在互動式外殼中-使用 BASH 並且它是自動完成功能…如果目錄包含單個元素 cd come_parent_dir ….最終將帶您到最後一個目錄鏈中的目錄或具有多個目錄的目錄(系統會詢問您要進一步處理的位置)