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 awk
Befehl druckt nur das 3. Wort, also ist das alles, was Sie an übergeben xargs
. Natürlich xargs
ist 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, which
wodurch dieErsteVorkommen des Suchbegriffs in Ihrer $PATH
:
xdg-open $(which python)
Beachten Sie, dass Sie nicht python
mit ö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