Frage

ich ein Teil der Ausgabe eines Befehls Lauf von der Kommandozeile in einem anderen xterm verwenden möchten, oder als Teil eines anderen Befehl. Zum Beispiel:

> grep error error.log
error: can't find file ~/<some very long path>/thisfile

und ich möchte, dies zu tun:

>ls ~/<some very long path>/

Ich kenne zwei Möglichkeiten, dies zu tun:
1. Kopie ~/<some very long path>/ mit der Maus.
2. verwenden eine Kombination aus head / tail / awk / sed / perl / cut / etc ... extrahieren nur das, was ich von dem Ausgang benötigen und dann mit , die innerhalb Backticks.

Gibt es eine Möglichkeit, Text zu kopieren, ohne mit der Maus? Das Beispiel, das in dem Sinne kommt, ist visueller Modus innerhalb VIM, aber ich weiß nicht, wie das in der xterm zu tun.

War es hilfreich?

Lösung

Sie können GNU-Bildschirm Befehle Kopieren und Einfügen verwenden.

Schnell Tutorial:

  1. Öffnen Bildschirm: screen (oder screen myprog my args here)
  2. Führen Sie Ihr Programm, zum Erzeugen von Ausgangs Sie wollen kopiert
  3. Geben Sie den Kopiermodus: Kontrolle + a + [
  4. Bewegen Sie den Cursor auf den Startpunkt
  5. Hit Enter
  6. Bewegen Sie den Cursor an den Endpunkt
  7. Hit Enter
  8. Einfügen: Kontrolle + a + ]

Der Bildschirm ist viel mächtiger als die (ich benutze es auf die Registerkarte mehrere virtuelle Terminals ohne die Notwendigkeit für einen speziellen Terminal-Emulator, und auch so, dass ich nicht verlieren meine Sitzungen, wenn X abstürzt oder etwas). Um aus dem Bildschirm zu erhalten, indem Sie die Shell-Sitzung beenden, oder geben Sie Strg + a , Strg + \ .

Andere Tipps

Ich finde XSel in ähnlichen Situationen nützlich ist. Es ist ein Werkzeug, das die X Auswahl manipuliert. Zum Beispiel speichert dieses den Ausgang Ihres Befehl in die Zwischenablage:

grep error error.log | xsel -bi

Sie können auch tmux verwenden, die ähnliche Fähigkeiten screen hat. Sobald Sie in tmux sind und Sie haben die Ausgabe, die Sie kopieren möchten, können Sie folgendermaßen vorgehen kopieren und dann einfügen:

  1. Geben Sie den Kopiermodus mit Strg + B , [
  2. Bewegen Sie den Cursor mit den Pfeiltasten und dann Auswahl beginnen mit Strg + Leertaste
  3. Sie den Cursor Bewegen Sie den Text / Region auszuwählen, die mit zu kopieren und dann kopieren Alt + W (dies wird sofort verlassen Sie den Kopiermodus)
  4. Sie können jetzt einfügen (innerhalb tmux nur) mit Strg + B , ]

Diese instructiuons nehmen Emacs sind Tastenbelegungen aktiviert. Für die vi Bindungen dieses Vergleich sehen oder einfach nur einen href folgen <= "https: // awhan. wordpress.com/2010/06/20/copy-paste-in-tmux/“rel = "nofollow noreferrer"> diese Schritt-für-Schritt-Anleitung.

Die OP sagte er, dies nicht zu tun haben will, aber hier ist ein Unix-utils, wie es für die Nachwelt zu tun. Wenn Sie diese kleinen Unix-Werkzeugen lernen, können sie sehr mächtig sein.

  

ls $ (dirname $ (grep Fehler error.log | head -1 | cut -d "" -f 5-))

Hinweis: Syntax aus dem Speicher

Sie können Ausgang direkt mit dem betreffenden xterm mit xterm Gerät nicht senden. Hier ist der Befehl.

xyz$ls /home/ankit/documents/etc/x/y/z > /dev/pts/0 

(oder watever der Gerätename ist, können Sie es Befehl ‚w‘ für geöffnet xterm bekommen verwenden)

Versuchen Sie es und hoffen, dass dies Ihr Problem lösen kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top