現在のコマンドが実行される前に実行されたコマンドを説明する文字列にアクセスする方法を知りたいです。
たとえば、次のように実行すると:
ls | myscripthere
私は "ls"コマンドがSTDINを介して得られた出力を生成するコマンドであることがわかります。これを行う方法はありますか?
ありがとう
ベストアンサー1
パイプの受信側プログラムは、実際に入ってくるデータがどこから来るのかを知る方法がありません。あなたの例を使用して:
$ ls | myscript
標準出力はls
標準入力にリダイレクトされますmyscript
。ただし、これは以下とまったく区別できません。
$ ls > datafile
$ myscript < datafile
または
$ ls > datafile
$ cat datafile | myscript
または
$ wget -o - https://www.example.com/some/file/that/resembles/the/output/of/ls | myscript
または
$ ls | sed '/secrethiddenfile/d' | myscript
でも
$ cat - | myscript
馬は馬だけです。