$PATH
編集したいファイルのスクリプトを指すシンボリックリンクがあります。ファイルパスを忘れて、次のことを試してみました。
$ which my_script_link | readlink
出力ファイルへのパスが予想されましたが出力されます。
> readlink: missing operand
> Try 'readlink --help' for more information
以前は、他の状況(編集用にファイルリストをvimにパイプするなど)でも同様の動作を見たことがあります。 subshellのような回避策があることを知っていますが、readlink $(which my_script_link)
理解したいと思います。なぜこの場合、パイプラインは私が想像したように動作しません。
ありがとうございます!
ベストアンサー1
簡単に言えば、これを行うようにプログラムが作成されていないからです。ソフトウェアがSTDINから読み取れるかどうか、または入力ファイルが必要かどうかを判断するのはプログラマーの役割です。この場合、readlink
そのman
ページには次のように指定されています(強調表示)。
readlink - 印刷が解決されましたシンボリックリンクまたは規範的なファイル名
要約
読み取りリンク[オプション] ...文書...
通常、STDINから入力を受け取るプログラムは、どのような方法でもその入力を解析するように設計されています。データをパイプするとreadlink
テキストストリームを受け取りますが、コンテンツではないファイルのみを処理するため、どうすればよいかわかりません。ls
またはのcd
ようなプログラムも同じですcp
。テキスト/データストリームを処理するプログラムだけがパイプの入力を受け入れることができます。