Ich spreche nicht über das UNIX shebang , das dem geben sollte Weg eines Dolmetschers. Tatsächlich hat der Shebang es ziemlich schwer gemacht, diese Frage erfolgreich zu googeln ...
Ich spreche von bash
Expansion:
!!
ruft den unmittelbar vorhergehenden Befehl ab (ähnlich wie der Pfeil nach oben, aber nützlicher) !$
ruft das letzte Wort des letzten Befehls !#
scheint die aktuelle Zeile Aber Was sind eigentlich nützliche Anwendungen von !#
?
echo !#
wird auf echo echo
erweitert
echo echo !#
wird auf echo echo echo echo
erweitert
ls !#
wird auf ls ls
erweitert. All das scheint überwältigend sinnlos. Alles, was ich über den Befehl !#
weiß, ist, was ich daraus gelernt habe - ich bin mir nicht sicher, ob ich seine wahre Funktionalität kenne.
Wie bereits erwähnt, können Sie den Abschnitt von man bash
leicht finden:
Was nicht explizit in den man-Seiten oder anderen Dokumentationen erwähnt wird und Sie möglicherweise zu einer nützlichen Verwendung für !#
führt, ist, dass bash event designators in Kombination mit dem Wort designators und modifiers (gefunden gerade unter Ereignisbezeichnungen auf der Manpage). Die Use Cases sind auch sinnvoller, wenn Sie Befehle zusammen mit Pipes verketten, ;
oder &
/ &&
Zum Beispiel:
Ich könnte den Substitutionsmodifikator verwenden, um ein Skript foo.sh
gegen zwei Eingaben auszuführen bar
und baz
:
wird zu folgender Form erweitert:
%Vor% Oder ein Beispiel aus den unten wiedergegebenen Docs (R.I.P. Docs) zeigt, wie man mit dem Wortselektor :N
das erste Argument des Befehls, wie es bisher eingegeben wurde, auswählt und in das eben erstellte Verzeichnis einfügt:
Diese Beispiele sind ziemlich trivial, aber ich hoffe, sie zeigen, wie !#
wirklich jemanden retten kann, der während der Herstellung mächtiger Einzeiler ernsthaft redundante Eingaben macht.
!#
ist Die gesamte eingegebene Befehlszeile . Von man bash
:
Ein Anwendungsbeispiel:
%Vor% Erstellt das Verzeichnis foo
und ändert es in