コマンド出力をlsにどのようにリダイレクトできますか? [コピー]

コマンド出力をlsにどのようにリダイレクトできますか? [コピー]

リダイレクトに問題があります。

$ 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を使用しています。

私は次の質問を言わなければなりません。前のコマンドの出力を次のコマンドの引数に渡します。おそらくこれと同じでしょう。しかし、与えられた答えを見ると迷子になります。機能を実行するには、ここで提供されているよりも高いレベルの知識や研究が必要です。

答え1

ls標準入力では入力を受け取らず、パラメータからのみ入力を受け取ります。

努力するls -l "$(which python3)"

答え2

lsパイプからは読みません。実際、ls標準入力はまったく使用されません。

ls -l代わりに、次のコマンドラインから実行したい項目を渡す必要がありますls

ls -l "$( which python3 )"

これは、コマンドラインでコマンド置換を使用してls -lコマンドの出力に拡張されますwhich。これはコマンドライン引数として使用されますls

または:

ls -l "$( command -v python3 )"

関連:

答え3

他の答えはすべて良いですが、これも便利です。

which python3 | xargs ls -l

xargs指定されたプログラムから値を取得し、指定されたstdinプログラムにコマンドライン引数として追加します。

関連情報