リダイレクトに問題があります:
$ which python3
くれます
/Library/Frameworks/Python.framework/Versions/3.7/bin/python3
そして
$ ls -l /Library/Frameworks/Python.framework/Versions/3.7/bin/python3
くれます
lrwxr-xr-x 1 root admin 9 5 fév 18:30 /Library/Frameworks/Python.framework/Versions/3.7/bin/python3 -> python3.7
だが
which python3 | ls -l
同じ結果にならないでください。
なぜなのかご存知ですか ?そして、リダイレクトの正しいコマンドは何ですか?
OSXを使用しています。
次の質問 前のコマンドの出力を次の引数として次へ渡す はこれと同じかもしれませんが、与えられた答えを見ると失われています。役立つためには、ここで説明するよりも高度な知識や研究が必要です。
ls
は標準入力からではなく、引数からのみ入力を受け取ります。
ls -l "$(which python3)"
をお試しください
ls
はパイプから読み取りません。実際、ls
は標準入力をまったく使用しません。
代わりに、ls
のコマンドラインを介して、ls -l
を実行するものを渡す必要があります。
ls -l "$( which python3 )"
これはls -l
のコマンドラインでコマンド置換を使用し、which
コマンドの出力に展開されます。これは、ls
のコマンドライン引数として使用されます。
または:
ls -l "$( command -v python3 )"
関連:
他の答えも良いですが、これも便利です:
which python3 | xargs ls -l
xargs
はstdin
から値を取得し、それらをコマンドライン引数として指定されたプログラムに追加します。