한 단계로 디렉터리를 변경하려면 "whereis" 명령의 출력을 "cd"에 전달하세요.

한 단계로 디렉터리를 변경하려면 "whereis" 명령의 출력을 "cd"에 전달하세요.

whereis명령의 출력을 같은 줄의 명령으로 파이프하는 방법을 찾을 수 없으므로 두 번째 단계에서 그렇게 할 cd필요가 없습니다 .cd

아래와 같이 전달해 보았습니다.

cd $(whereis node_modules)

또는

cd "`dirname $(whereis node_modules)`"

반품

cd "$(whereis node_modules)"

그러나 위의 방법 중 어느 것도 작동하지 않습니다.

위 코드에서 무엇이 문제인지 알 수 있는 사람이 있나요?

답변1

당신은 이것을 할 수 있습니다,

cd "`which node_modules`"

dirname디렉토리를 가져오는 데 사용합니다 .

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

댓글에서 언급하셨듯이나는 이것을 한 단계로 수행하기를 기대하고 있습니다.&는 nod_module디렉토리를 가정하므로 다음 명령을 사용하여 이를 수행할 수 있습니다.

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

(후자의 명령은 whereisBSD가 아닌 Linux를 사용하고 있으며 경로에 공백이 포함되어 있지 않다고 가정합니다.)

@Dani_I가 제안한대로 이것을 볼 수 있습니다" which "를 사용하지 않는 이유는 무엇입니까? 그러면 무엇을 사용해야 합니까?, 이는 더 유용할 수 있습니다.

답변2

이것은 트릭을 수행하는 것 같습니다

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

귀하의 의견에 따르면 가고 싶다면입력하다대상이 디렉터리인 경우:

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

위의 내용은 쉽게 귀하의 것으로 만들 수 있습니다 .bash_profile.

답변3

whereis콜론으로 구분된 패턴 이름과 위치를 제공하므로 cd결과에 또는 를 수행해도 아무런 효과가 없습니다.dirnamewhereis

$ whereis node_modules
node_modules: /usr/lib/node_modules

올바른 방법은 npm자체를 사용하여 기본 접두사를 얻는 것입니다.

$ cd "$(npm get prefix)/lib/node_modules"
$ pwd
/usr/lib/node_modules

답변4

이것은 나에게 효과적입니다. 그 중에는 명령줄에 결과를 전달하는 목적으로만 사용되는 -q(동등) 옵션이 있습니다.

cd `whereis -q node_modules`

관련 정보