Wählen Sie ein Positionsargument in xargs aus

Wählen Sie ein Positionsargument in xargs aus

Ich möchte den Speicherort öffnen, an dem Python installiert ist. Um den von mir verwendeten Speicherort zu überprüfen.

whereis python | xargs -n 1 echo

Ausgabe :


/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

Obwohl ich den Speicherort für xdg kopieren kann, möchte ich das nicht tun. Ich möchte den Pipe-Operator verwenden und den Speicherort mit öffnen xdg-open. Es gibt jedoch ein Problem. Wie wähle ich das Argument aus der obigen Liste aus? Angenommen, ich möchte den 3. Speicherort auswählen. Gibt es eine Möglichkeit, dies zu tun?

Ich habe darüber nachgedacht, es zu befolgen, aber es hat nicht funktioniert.

whereis python | xargs $3 xdg-open

Antwort1

Filtern Sie einfach die Ausgabe, bevor Sie sie an xargs übergeben:

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

Dieser awkBefehl druckt nur das 3. Wort, also ist das alles, was Sie an übergeben xargs. Natürlich xargsist die Verwendung sinnlos, wenn Sie nur ein einziges Argument haben. Vielleicht möchten Sie stattdessen dies?

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

Oder verwenden Sie einfach, whichwodurch dieErsteVorkommen des Suchbegriffs in Ihrer $PATH:

xdg-open $(which python)

Beachten Sie, dass Sie nicht pythonmit öffnen können xdg-open. Das ist unsinnig, da es kein grafisches Programm gibt, das eine Binärdatei sinnvoll öffnen kann, geschweige denn eine Binärdatei, die eine Skriptsprache ist.

Antwort2

Ich glaube nicht, dass du das schaffstin xargs- aber Sie könnten es mit einer Shell tun:

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

Ihr konkreter Anwendungsfall macht jedoch nicht wirklich Sinn, davon Vanadium hervorgehoben

Antwort3

Der Zweck von xargs besteht darin, jedes Eingabeelement wiederholt an einen Befehl weiterzugeben. Es führt keine „Auswahl“ aus den Eingaben durch. Wenn Sie das tun möchten, sollten Sie andere Tools wie head, tail, grep verwenden. Beispiel:

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

verwandte Informationen