Linux
管道到帶有標誌的命令
我知道這一定是以前問過的,我不確定要準確搜尋什麼,所以請原諒重複的問題。
當從上一個命令通過管道輸入時,如何將變數“拉入”到正確的位置?我試圖找到一個 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}''
(再次,請原諒不正確的反引號),我該如何做我想做的事情?
該
lsof
實用程序需要命令行上的 PID,而不是其標準輸入。您可以使用
lsof -p "$( pgrep IINA )"
這將作為其參數執行
pgrep
,IINA
並且其輸出將lsof
作為選項參數傳遞給-p
使用命令替換的選項。如果
IINA
不是命令的名稱,而是用於啟動程序的命令行的一部分,則將-f
標誌添加到pgrep
.如果您獲得多次點擊,
pgrep
您可能希望使用-n
(獲取最近開始的匹配過程)或-o
(獲取最舊的匹配過程),如果您的pgrep
實現支持這一點,或者您可以使用lsof -p "$( pgrep IINA | tr '\n' ',' )"
為
lsof -p
.