Wie führe ich die Ausgabe von „ls“ von der Befehlszeile aus aus?

Wie führe ich die Ausgabe von „ls“ von der Befehlszeile aus aus?

Manchmal vergesse ich meine relativen Pfade und bis ich herausgefunden habe, wo sich die Datei befindet, habe ich Folgendes eingegeben:

Cris-Mac-Book-2:weird cris$ ls ../../../
Icon?       Research    Support
Cris-Mac-Book-2:weird cris$ ls ../../../Support
Fourganizical       PicoCryptical       SupportPlan.txt
MoneyProjectical    Qwontical       Testcomms
OSICAL          StanTechStatistical todo
Cris-Mac-Book-2:weird cris$ ls ../../../Support/PicoCryptical
S   cs  mini    php py  readme
Cris-Mac-Book-2:weird cris$ ls ../../../Support/PicoCryptical/py/StanTechPico.py

Um dieses Skript jetzt auszuführen, drücke ich, bis ich wieder zum Anfang des Befehls gelange, und ersetze es dann pythondurch ls.

Wenn ich diese lange Pause mache (was oft vorkommt), denke ich immer:Es muss eine schnellere Möglichkeit geben, die Befehlszeichenfolge zu bearbeiten oder die Ausgabe des vorherigen Befehls auszuführen.

Da ich nicht wirklich als Bash-Superuser qualifiziert bin, habe ich versucht,Rohrdie Ausgabe von ls an Python, die nicht wie beabsichtigt funktionierte:

Cris-Mac-Book-2:weird cris$ ls ../../../Support/PicoCryptical/py/StanTechPico.py | python
  File "<stdin>", line 1
    ../../../Support/PicoCryptical/py/StanTechPico.py
    ^
SyntaxError: invalid syntax
Cris-Mac-Book-2:weird cris$

Meine Frage lautet also: Wie kann ich die STDOUTAusgabe eines vorherigen Befehls an die Argumentposition eines neuen Befehls einfügen?

Antwort1

^ls^pythonwird Ihren unmittelbaren Bedarf decken (vorherigen Befehl wiederholen und pythonersetzen ls)

Antwort2

Ich bin nicht sicher, ob Sie das wirklich fragen

Aber was ich wirklich möchte, ist wohl zu wissen, wie man die STDOUT-Ausgabe eines Befehls von der Befehlszeile aus an die Argumentposition eines anderen Befehls setzt.

Ich denke, was Sie nützlich finden könnten, ist die Verwendung$_

$ ls /tmp/long/path/which/contains/file
/tmp/long/path/which/contains/file
$ python $_

Dies $_wird durch das letzte Argument des zuvor ausgeführten Befehls ersetzt.

Sehenhttp://tldp.org/LDP/abs/html/internalvariables.html

Wenn Sie jedoch wirklich die Standardausgabe als Argument für einen anderen Befehl verwenden möchten, können Sie xargsdafür verwenden (siehehttp://linux.die.net/man/1/xargs)

$ ls /tmp/long/path/which/contains/file | xargs python

Antwort3

Haben Sie schon einmal Backticks verwendet?

python `ls ../../../somefile`

pythonWird mit der Ausgabe von lsals Argument aufgerufen .

Allerdings bin ich nicht ganz sicher, ob Sie das wirklich fragen.

Antwort4

Abgesehen von Andrews Antwort gibt es einen guten Trick: Mit Ctrl+ aspringt der Cursor an den Zeilenanfang.

verwandte Informationen