フラグを使用してコマンドを渡します。

フラグを使用してコマンドを渡します。

この質問は以前も明らかに提起された質問であることがわかっており、正確に何を検索しているのかよく分からないので重複した質問であることをご了承ください。

前のコマンドで入力をパイプするときに変数を正しい位置に「プール」するにはどうすればよいですか? PIDを見つけて、そのPIDに関連する開いているファイルを見つけて、ファイルに絞り込み、そのファイルに対してコマンドを実行しようとしています。これはコマンドです:

ps x | grep IINA | grep -v grep | awk '{print $1}'

さて、これは私にPIDを与えます。いいですね。今私はlsof -pそのPIDが欲しいが、単にこれを行うことはできませんps x | grep IINA | grep -v grep | awk '{print $1}' | lsof -p

そうでなければps x | grep IINA | grep -v grep | lsof -p 'awk '{print $1}''(間違った逆引用符をもう一度ご了承ください)、私は何をしたいのですか?

ベストアンサー1

このlsofユーティリティには、標準入力ではなくコマンドラインにPIDが必要です。

あなたはそれを使用することができます

lsof -p "$( pgrep IINA )"

これは引数として実行され、その出力はコマンド置換を使用してオプションのオプション引数として渡されpgrepます。IINAlsof-p

IINAコマンド名ではなく、プロセスを開始するために使用されるコマンドラインの一部である場合、-fフラグをpgrep

複数のヒットを取得した場合、実装がそれをサポートしている場合は(最も最近開始された一致プロセスのインポート)、または(最も古い一致プロセスのインポート)を使用するか、次のいずれかをpgrep使用できます。-n-opgrep

lsof -p "$( pgrep IINA | tr '\n' ',' )"

カンマ区切りのPIDリストを作成しますlsof -p

おすすめ記事