Also benutze ich das upin meiner Shell (meistens Bash unter OSX oder Ubuntu), aber manchmal weiß ich, dass ich das Zeug nach der aktuellen Position des Cursors haben möchte . Gibt es eine Möglichkeit, die Zeile, in der ich mich befinde, mit der obigen Zeile zu vervollständigen ? Schlagen upund dann leftnerven.
Irgendwelche anderen Tricks wären auch cool, außer dem tab, worüber wir jetzt alle reden :)
Hier ist ein Beispiel (per ~ quack's Anfrage):
Ich tippe mkdir /where/the/hell/is/that/thing
und dann möchte ich in das gleiche Verzeichnis cd. Aber jetzt weiß ich über Meta-B :)
keyboard-shortcuts
bash
Dan Rosenstark
quelle
quelle
Antworten:
Versuche dies:
Drücken Sie dann alt+.
je nach Betriebssystem und Endgerät angezeigt werden müssen , könnte escdann.
Sie können auch alt+ 1+ drücken ., um ein bestimmtes vorheriges Argument auszuwählen.
Das ist viel besser als !! oder! $, weil Sie tatsächlich sehen können, was Sie gerade ausführen, und es trotzdem weniger Tastatureingaben erfordert.
edit: genau genommen ist es das metanicht alt, daher funktioniert es möglicherweise auch mit der "Windows" -Taste, abhängig davon, wie Ihre Tastatur eingerichtet ist.
quelle
Sie sollten man bash auf Ihrem System durchlesen , insbesondere den Abschnitt über Readline , da dies der interaktive Eingabemechanismus von bash ist. Das Bash-Handbuch auf gnu.org enthält einen schönen Abschnitt über die Befehlszeilenbearbeitung , mit dessen Hilfe einige Lücken geschlossen werden können.
Standardmäßig können Sie diese verwenden, um sich in der Befehlszeile zu bewegen (hier nur einige; eine vollständige Liste finden Sie unter dem Link):
Sie können diese verwenden, um Text aus einer Zeile zu "töten" (auch "ausschneiden") :
Sie können diese also kombinieren, um einen Teil einer Befehlszeile auszuwählen, die Sie wiederholen möchten, töten und dann bis zum Ende Ihres nächsten Befehls einfügen.
Lassen Sie uns nun die History-Erweiterung von bash betrachten, damit es noch mehr Spaß macht . Dies ist,
!!
was Studer in seiner Antwort erwähnt . Die Verlaufserweiterung gliedert sich in Ereignisbezeichner , Wortbezeichner und Modifizierer .Event- Bezeichner sehen so aus (siehe auch hier die Links für die vollständige Liste):
!
- Startet eine Historiensubstitution!n
- der n-te Befehl in der Bash-History-Liste für eine ganze Zahl n (funktioniert auch für Negative)!!
- der vorhergehende Befehl; gleichwertig!-1
!string
- Der letzte Befehl, der mit string beginntWortbezeichner wählen bestimmte Teile aus einem Ereignis aus. Verwenden Sie
:
diese Option , um das Ereignis vom Wortbezeichner zu trennen. Wörter werden beginnend am Zeilenanfang von 0 an nummeriert und durch einzelne Leerzeichen getrennt in die aktuelle Zeile eingefügt.$
- bezeichnet das letzte Argument (zB!!:$
ist das letzte Argument des letzten Befehls; kann abgekürzt werden!$
)n
- bezeichnet das n-te Wort (zB!str:2
ist das 2. Argument des letzten Befehls beginnend mit str ;!!:0
ist der Befehl des letzten Befehls)Wenn Ihr letzter Befehl also ausgeführt wird
mkdir /some/really/long/path
, um Ihrem Beispiel!!
nachzugehen, wird dieser Befehl erneut ausgeführt. Aber Sie möchtencd
stattdessen in diesen Pfad einsteigen:Nehmen wir nun an, Sie führen einige andere Befehle aus und möchten dann wieder auf diesen Pfad verweisen. Wenn dies der letzte mkdir- Befehl war, den Sie ausgeführt haben, können Sie diesen Pfad wiederholen:
quelle
bind -p
oderbind -P
Ihre aktuelle keybindings drucken; Das ist die ultimative Referenz für das, was Ihre Bash verwendet.Wenn Sie ein vi-Benutzer sind, können Sie die Shell durch Eingabe in den vi-Modus versetzen
set -o vi
.Nach der Eingabe können Sie auf der Befehlszeile alle möglichen wichtigen Aktionen ausführen
Esc + k
.Am häufigsten verwende ich
Esc+K
dann/
Text, der nach dem Schrägstrich eingegeben wird, um den Befehlszeilenverlauf zu durchsuchen.zB
Esc + k
/smbclient
gibt den letzten smbclient Befehl aus, den Sie eingegeben haben. Sie können mit den Standard-Tasten vi durch alle Suchanfragen scrollen (j
undk
nach oben und unten, aber ich denke, die Pfeile nach oben und unten funktionieren auch).Weitere Hilfe hier , es gibt auch einige eingebaute Bash-Dinge an diesem Link, die mehr sein könnten, wonach Sie suchen.
Prost, Stu.
quelle
Sie können verwenden,
!!
welches den letzten Befehl darstellt:quelle
!!
ist ein Synonym für!-1
: gnu.org/software/bash/manual/bashref.html#Event-DesignatorsVerwenden Sie in dem von Ihnen angegebenen Beispiel! $, Um den letzten Parameter des vorherigen Befehls darzustellen:
Sie können auch nummerierte Variationen verwenden, um bestimmte Parameter früherer Befehle abzurufen.
quelle
Ich fand vor kurzem dieses readline Spickzettel sehr nützlich. Viele Dinge, die ich nicht wusste. Früher habe ich die
!$
ganze Zeit verwendet, bis ich etwas über Alt+ herausgefunden habe ., das ich jetzt die ganze Zeit verwende. :)quelle