私はこれが|
プログラムの出力を他のプログラムの入力として提供するために使用されると思います。だから試してみましたが、kill | pgrep dnsspoof
成功しませんでした。だから私は努力しました
kill `pgrep dnsspoof`
効果がありました。誰もがこれらのコマンドが内部的にどのように機能するかを教えてもらえますか?
ベストアンサー1
|
あるプログラムの出力を別のプログラムに供給することは正確です。データleft
フローがright
。
pgrep dnsspoof | kill
pgrep
dnsspoofのプロセス番号が見つかり、提供されてから終了するkill
ため、これは機能します。 Killはコマンドラインで殺す項目だけを見るので、これはうまくいかないことがわかりました。
pgrep
だから私たちはコマンドラインに出力を入れなければなりません。これが
`pgrep dnsspoof`
現代で$(pgrep dnsspoof)
行うことです。バックティックまたは角かっこ内でコマンドを実行し、コマンドの場所に出力を配置します。したがって、pgrep dnsspoof
出力がある場合、5432
runコマンドはでありkill 5432
、これはKillプログラムを呼び出す正しい方法です。
を使用すると、いくつかの利点があります$( )
。ネストする方が簡単で、エスケープすべき項目が少なくなります。したがって、シェルがそれをサポートしている場合は、優先的に使用する必要があります` `
。