whereis
コマンドの出力を同じ行のコマンドにパイプする方法が見つからないため、2番目のステップでそれを行う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`