Was nutzt '! #' in der Bash?

8

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
  • ab
  • !# scheint die aktuelle Zeile
  • abzurufen

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.

    
Ari Sweedler 16.08.2017, 18:10
quelle

2 Antworten

3

Wie bereits erwähnt, können Sie den Abschnitt von man bash leicht finden:

%Vor%

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 :

%Vor%

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:

%Vor%

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.

    
Will Barnwell 16.08.2017, 19:20
quelle
3

!# ist Die gesamte eingegebene Befehlszeile . Von man bash :

%Vor%

Ein Anwendungsbeispiel:

%Vor%

Erstellt das Verzeichnis foo und ändert es in

    
ryanpcmcquen 16.08.2017 18:18
quelle

Tags und Links