![コマンド出力をlsにどのようにリダイレクトできますか? [コピー]](https://linux33.com/image/148103/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E5%87%BA%E5%8A%9B%E3%82%92ls%E3%81%AB%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E3%83%AA%E3%83%80%E3%82%A4%E3%83%AC%E3%82%AF%E3%83%88%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
リダイレクトに問題があります。
$ 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
プログラムにコマンドライン引数として追加します。