Gibt es irgendeine Bash-Magie, um auf den zuvor eingegebenen Parameter zu verweisen?

Gibt es irgendeine Bash-Magie, um auf den zuvor eingegebenen Parameter zu verweisen?

Diese Frage ist eine Variante einerzuvor gefragt Wie wiederhole ich aktuell eingegebene Parameter auf der Bash-Konsole?


Häufig ertappe ich mich dabei, dass ich einen Dateinamen in der Shell leicht umbenennen möchte, zum Beispiel:

$ mv test_1.py _test_1.py

oder

$ mv test_1.py test_1.py.org

Ich könnte die Vorschläge inWie wiederhole ich aktuell eingegebene Parameter auf der Bash-Konsole?, Aber

gibt es irgendwelcheMagie verprügelnkann ich dadurch einfach auf den zuvor eingegebenen Parameter verweisen?

zB, wenn die Magie $M,dann ist - für das oben genannte - würde ich verwenden:

$ mv test_1.py _$M.py
$ mv test_1.py $M.org

Antwort1

Die Magie funktioniert in zwei Teilen.

Erstens wird echo als Alias ​​für e verwendet (echo funktioniert auch, wenn Sie keinen Alias ​​möchten); zweitens verwenden wir die „Klammernerweiterung“:

$ e mv {,_}test_1.py              # Try to see if it works as expected.
mv test_1.py _test_1.py

          # If the arguments are what you want:

$ mv {,_}test_1.py                # Press ↑ (up arrow), remove `e`

$ !*                              # OR: Type `!*` --> last line after arg 0.
$ mv {,_}test_1.py                # If `histverify` is set.

Das !* kann mit einem Leerzeichen erweitert werden, wenn SieMagic-Space aktivierenoder wenn SieSatzshopt -s histverifyNachdem Sie die Eingabetaste gedrückt haben, haben Sie die Möglichkeit, die Wirkung der Verlaufserweiterung zu überprüfen, bevor Sie zur Ausführung (erneut) die Eingabetaste drücken.

Das andere Beispiel:

$ e mv test_1.py{,.org}
mv test_1.py test_1.py.org        # The result of the brace expansion.
                                  # Review it, and if it is ok:
$ !*                              # type !* (use either space or enter)
                                  # That will depend on how you setup it.

$ mv test_1.py{,.org}        # The command appear again (enter to execute).
$

Es gibt auch die Verlaufserweiterung, !#die die bisher eingegebene Befehlszeile anzeigt, und die Auswahl des ersten Befehls :1. Wenn Sie Magic-Space aktiviert haben, geben Sie ein mv test1.py !#:1und drücken die Leertaste. Der Befehl ändert sich:

$ mv test_1.py !#:1                # Press space.
$ mv test_1.py test_1.py           # The command line change to this.
$ mv test_1.py test_1.org          # Edit and press enter to execute.

verwandte Informationen