%2C%20!%24%3Ar%3Ar%20(Ausrufezeichen%20Dollar%20Doppelpunkt%20r)%2C%20!%23%3At%20(Ausrufezeichen%20Hash%20Doppelpunkt%20t)%20in%20den%20folgenden%20Bash-Befehlen%3F.png)
Ich habe versucht, ein Nagios-Paket zu installieren und bin auf diese seltsamen Bash-Erweiterungen in einem Leitfaden gestoßenHier. Kann mir jemand helfen zu verstehen, was die Erweiterungen bedeuten? Ein Wiki-Link wäre für zukünftige Referenzen ebenfalls hilfreich.
root@z:~> wget http://mathias-kettner.de/download/check_mk-1.1.7i5.tar.gz
root@z:~> tar zxvf !#:t
root@z:~> chown -R root:root !$:r:r && chmod -R o-w !$:r:r && cd !$:r:r
root@z:~/check_mk-1.1.7i5> ./setup.sh
Antwort1
Diese sindbash
Schlüsselwörter für Verlaufserweiterungen. Sie wählen eine Zeile aus dem Shell-Verlauf aus und fügen (Teile davon) erneut ein, möglicherweise nach einer Änderung. Die Site, auf die Sie verlinkt haben, erklärt sie ganz gut, aber sie beschreibt nicht alle.
tar zxvf !#:t
macht eigentlich keinen Sinn: !#
wählt die bisher eingegebene Zeile aus, aber das ist tar zxvf
und wir wollen nichts davon wiederverwenden. Es sollte sein
tar zxvf !$:t
Dadurch wird der letzte Teil der vorherigen Zeile ( !$
) ausgewählt, also die an übergebene URL wget
, und der Dateinamenteil ( :t
, für „tail“ – streng genommen ist dies alles, was nach dem letzten Verzeichnistrennzeichen, , übrig bleibt /
, was bei URLs zufällig gut funktioniert) übernommen.
Dann
chown -R root:root !$:r:r
wählt den letzten Teil der vorherigen Zeile aus, löscht die Dateierweiterung ( :r
— genau genommen entfernt es alles, was nach dem letzten steht .
, einschließlich des .
) zweimal, was den Verzeichnisnamen ergibt (vorausgesetzt, das Tarball enthält ein Verzeichnis mit demselben Namen wie der Basisname des Tarballs). Die Befehle chmod
und cd
gehen auf die gleiche Weise vor.