在 xargs 中選擇位置參數

在 xargs 中選擇位置參數

我想打開python的安裝位置。檢查我使用的位置。

whereis python | xargs -n 1 echo

輸出 :


/usr/bin/python3.8

/usr/bin/python3.8-config

/usr/bin/python

/usr/lib/python2.7

/usr/lib/python3.8

/usr/lib/python3.9

/etc/python3.8

/usr/local/lib/python3.8

/usr/include/python3.8

雖然我可以複製 xdg 的位置,但我不想這樣做。我想使用管道運算符並使用xdg-open.然而,有一個問題。如何從上面的清單中選擇參數。假設我想選擇第三個位置。有什麼辦法可以做到嗎。

我想過關注,但沒有成功。

whereis python | xargs $3 xdg-open

答案1

只需在將輸出傳遞給 xargs 之前過濾輸出:

whereis python | awk '{print $3}' | xargs xdg-open

awk命令只會列印第三個單詞,因此這就是您將傳遞給 的所有內容xargs。當然,xargs當你只有一個參數時,使用是沒有意義的。也許你想要這個?

xdg-open $(whereis python | awk '{print $3}')

或者,簡單地使用which它將返回第一的搜尋字串出現在您的$PATH

xdg-open $(which python)

請注意,您不能使用 打開pythonxdg-open這是無意義的,因為沒有圖形程式可以有效地打開二進位文件,更不用說作為腳本語言的二進位檔案了。

答案2

我認為你做不到在 xargs 中- 但你可以用 shell 來做到這一點:

whereis python | xargs sh -c 'echo "$3"' sh

然而,您的特定用例並沒有真正意義,因為釩指出

答案3

xargs 的目的是重複向指令提供每一項輸入。它不會從輸入中“選擇”。如果你想這樣做,你應該使用其他工具,如 head、tail、grep。例如:

whereis python | fmt -1 | tail -n +3 | head -1

相關內容