Wie führe ich einen Linux-Befehl aus, während ich den Befehl less verwende oder innerhalb der Manpages?

9

Ich leite den Befehl im Allgemeinen lsmit lessund möchte einen Befehl ausführen, während er pingt, z. B. stoße ich auf eine Datei, die ich löschen möchte, damit ich den Befehl ausführen kann, rm {filename}während ich noch pagere. Ich würde auch gerne hoffen, dass ich beim Durchsuchen von Manpages dieselbe Methode anwenden kann. Wenn nicht, wie ist es anders?

PeanutsMonkey
quelle

Antworten:

8

Sie können mit bang ( !) innerhalb von weniger auf die Befehlszeile zugreifen .

Wenn Sie beispielsweise Folgendes eingeben:

touch temp.txt
ls | less
!rm temp.txt

Und temp.txt sollte weg sein.

Bearbeiten: Standardmäßig scheint es, dass der Mensch jetzt weniger zum Blättern verwendet (aus irgendeinem Grund dachte ich, dass es verwendet wird more, vielleicht in der Vergangenheit). Sie können denselben Trick verwenden, benötigen jedoch den vollständigen Pfad (z. B. / home / user / ...), damit er funktioniert.

Dies liegt daran, dass das Aufrufen von man das aktuelle Arbeitsverzeichnis ändert. Auf meinem Rechner (xubuntu, using xfce-terminal) geht es zu /usr/share/man. Wenn Ihre Konsole das CWD anzeigt, können Sie sehen, dass es sich ändert, oder Sie können es von innen sehen, manindem Sie Folgendes eingeben:

!pwd
Asche
quelle
Mann ändert tatsächlich CWD, so dass Sie den vollständigen Pfad verwenden müssten.
Rob
@Rob - Was meinst du das man actually changes CWD?
PeanutsMonkey
Ich habe tmux so eingerichtet, dass mein CWD in meiner Statusleiste angezeigt wird. Wenn man manich etwas tue (oder irgendetwas anderes), ändert sich mein CWD, solange der Mann offen ist. Mein Linux-Rechner ist momentan nicht verfügbar, und ich bin mir nicht sicher, wie ich CWD auf andere Weise überprüfen kann, aber für mich scheint es so zu sein.
Rob
@Rob - Sie wollen also sagen, dass nur weil Sie tmux verwenden, das aktuelle Arbeitsverzeichnis geändert wird, wenn Sie den Befehl man {command}von say /home/{user}an einen Speicherort des Befehls ausführen man?
PeanutsMonkey
Das würde das Verhalten erklären, das ich sah. Nun, warum es das CWD ändert, das ist eine andere Frage ...
Ash
4

Die allgemeine Möglichkeit hierfür besteht darin, den aktuellen Job anzuhalten, den Befehl auszuführen und den alten Job fortzusetzen.

ls | less (Text lesen, Dateinamen beachten)
Control-z, um den aktuell aktiven Befehl anzuhalten

Sie sollten eine ähnliche Zeile erhalten: [1]+ Stopped ls | less
([1] ist die Jobnummer.)

rm testfile

fgoder fg %1 (die 1 die Auftragsnummer)

Sie können mehrere Prozesse gleichzeitig anhalten. ZB
ls | less
Control-z (output: [1]+ Stopped ls | less)
man rm
Control-z (output: [2]+ Stopped man rm)
rm -i testfile*

fg %1um Job 1 fortzusetzen (die Manpage im Hintergrund offen zu lassen) oder
fg %2um Job 2 fortzusetzen (man rm)

Wenn Sie mehrere angehaltene Prozesse haben, können Sie diese auflisten jobs.

Hennes
quelle