Symlink

符號連結到目錄以便於訪問:.bashrc、usr/local/bin,還有別的嗎?

  • February 29, 2020

(薄荷 19.1,基於 Ubuntu 18.04)

我有一個經常訪問但路徑很長的目錄。我已經厭倦了打字,所以我希望能夠輕鬆地跳轉到這個目錄。我能想到的最簡單的方法是在 中創建別名.bashrc,例如:

alias goto_project="cd /projectdir"

這有效,但只有在我想使用時才有效cd。我認為在路徑中添加符號連結會更通用,/projectdir這樣我就可以全域使用cd projectmv file project(將文件移動到目錄)或某些rsync呼叫之類的命令。我嘗試將目錄的符號連結放入/usr/local/bin(我使用過ln -s /projectdir /usr/local/bin/projects)。但是,這似乎無法cd project按預期使用。例如,呼叫which projects不會產生任何結果。

這種方法不可能嗎?也許是因為它可能會產生衝突?

別名用於命令 - 您需要的是一個引用您的長目錄名稱的簡單變數。將這樣的內容添加到您的 ~/.bashrc 中:

shortdir="/super/long/directory/name"

現在,類似ls "$shortdir"or的命令du "$shortdir"會給你你想要的。

使用 bash,您就有了CDPATH變數。關於它的說法如下:

CDPATH cd 命令的搜尋路徑。這是一個以冒號分隔的目錄列表,shell 在其中查找由 cd 命令指定的目標目錄。範例值為“.:~:/usr”。

如果你有/my/super/very/long/path/to/projectdir然後如果你把/my/super/very/long/path/to/CDPATH一個cd projectdir從層次結構中的任何地方都會讓你去特定的/my/super/very/long/path/to/projectdir

它有缺點(可能發生衝突),但我用它來指向我所有 git 工作樹的頂部,這樣我就可以切換到它們只知道(或實際上是自動完成)它們的名稱,而不管它們實際儲存在哪裡。

它當然只解決了問題的“簡單的 cd 方法”部分,而不是以某種任意符號方式引用某個名稱以供所有命令操作的全域問題。

您可能還想看看pushd/popd他們可以在某些情況下提供幫助。

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