Bash

將“whereis”命令的輸出傳遞給“cd”以一步更改目錄

  • April 20, 2021

我找不到將命令輸出傳遞whereis給同一行中的命令的方法,cd因此我不必cd在第二步中執行此操作。

我試過像下面這樣傳遞:

cd $(whereis node_modules)

或者

cd "`dirname $(whereis node_modules)`"

cd "$(whereis node_modules)"

但是上述方法都不起作用。

有人能在上面的程式碼中找到什麼問題嗎?

你可以這樣做,

cd "`which node_modules`"

獲取dirname目錄:

cd "$(dirname "$(which node_modules)" )"

正如您在評論中提到的那樣,我希望一步完成並假設nod_module是一個目錄,因此您可以使用以下命令執行此操作:

cd $(whereis node_modules | cut -d ' ' -f2)

(請注意,後一個命令假定使用的是 Linux whereis,而不是 BSD,並且路徑不包含任何空格。)

正如@Dani_I 所建議的,你可以看看這個Why not use “which”? 那該用什麼?,這可能更有用。

這似乎可以解決問題:

cd "$(dirname "$(whereis node_modules)")"

如果根據您的評論,如果它是一個目錄,您想進入目標:

location=$(whereis node_modules)
if [[ -d "$location" ]]; then
   cd "$location"
else
   cd "$(dirname "$location" )"
fi

以上可以很容易地在你的.bash_profile.

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