Shell

用於更改目錄的命令行快捷方式

  • December 28, 2014

我正在尋找一種簡單的方法來導航到跨多個硬碟驅動器的目錄,並希望在終端中設置與快捷方式等效的內容。

在 Windows 中,我將完成此mklink操作並創建符號連結以跳轉到目錄,或創建連接以將位置附加到目前文件路徑的末尾。

由於這實際上只是關於導航,它也不必是連結或任何東西,也許我可以設置一些環境變數以便我可以cd $myDir(首選)。

這樣的事情可能嗎,還是我真的需要更好地學習我的目錄?

熟悉您的文件系統佈局是成為稱職使用者的全部內容 - 記住該目標的任何時間都不會浪費時間。但是,話雖如此,您確實可以更輕鬆地在文件系統中移動。請注意,在 Linux/UNIX 中,無論有多少設備構成您的儲存,文件系統都呈現為一棵樹,這與 Windows 中的每個“驅動器”(物理或邏輯,取決於您的配置)不同,在預設配置,由一個獨立的樹。

有很多方法可以解決這個問題。當然可以設置一堆 shell 變數,每個變數都指向不同的目錄。發出cd $SomeDir將導致 shell 擴展變數$SomeDir並在命令行中替換它,這樣當它最終執行時,cd會收到儲存在變數中的目錄的名稱。這可能是最簡單的方法,如果你用絕對路徑填充你的 shell 變數,它應該可以在文件系統的任何地方工作。

您還可以使用指向目標目錄的符號連結(大多數 UNIX 不支持指向目錄的硬連結)。但是,要使其有效,您仍然需要在 path 參數中提供足夠的資訊以允許核心解析符號連結。也就是說,您需要提供符號連結的絕對路徑,或者提供足夠的相對路徑以允許核心找到連結,以便它可以跟隨它。

根據您的外殼,另一種可能可用或不可用的方法是使用外殼的cdpath功能。這在bashzshtcsh毫無疑問的其他人中得到支持。使用這種技術,您可以將環境變數設置CDPATH為以冒號分隔的目錄名稱列表,當您執行cd. 如果 上 的目錄之一$CDPATH包含其名稱與傳遞給 的子目錄匹配的子目錄cd,則 shell 將更改其目前工作目錄。例如,如果CDPATHcontains /usr/local,並且如果您的系統有一個目錄/usr/local/www,則發出cd www將查找 的內容$CDPATH,嘗試找到 call 的子目錄/usr/localwww如果存在,則將其目前工作目錄更改為/usr/local/www. 請注意,shell$CDPATH按照指定的順序搜尋目錄,因此如果$CDPATH包含多個目錄,其中包含您作為參數傳遞給的子目錄cd則第一個匹配獲勝。這讓我經常出局,以至於我不再是我們了cdpath

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