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)
(후자의 명령은 whereis
BSD가 아닌 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
결과에 또는 를 수행해도 아무런 효과가 없습니다.dirname
whereis
$ 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`