Zredagowałem mój poprzedni post, zapomniałem miejsca, jak powiedziałeś!
Pier-Alexandre Bouchard,
Och, nigdzie nie widziałem tego skrótu!
Pier-Alexandre Bouchard
29
To rzeczywiście sudo !!, który składa się z polecenia sudo, z których na pewno znają, i oznaczenie zdarzenie , !!, który odnosi się do ostatniego wprowadzonego polecenia. Możesz znaleźć więcej na bashstronie man, w Event Designatorssekcji.
Event Designators
An event designator is a reference to a command line entry in the his‐
tory list. Unless the reference is absolute, events are relative to
the current position in the history list.
! Start a history substitution, except when followed by a blank,
newline, carriage return, = or ( (when the extglob shell option
is enabled using the shopt builtin).
!n Refer to command line n.
!-n Refer to the current command minus n.
!! Refer to the previous command. This is a synonym for `!-1'.
!string
Refer to the most recent command preceding the current position
in the history list starting with string.
!?string[?]
Refer to the most recent command preceding the current postition
in the history list containing string. The trailing ? may be
omitted if string is followed immediately by a newline.
^string1^string2^
Quick substitution. Repeat the previous command, replacing
string1 with string2. Equivalent to ``!!:s/string1/string2/''
(see Modifiers below).
!# The entire command line typed so far.
Ten rozdział funkcjonalności jest jedną z najpiękniejszych zasad projektowania, dzięki czemu Linux / Unix jest o wiele potężniejszy niż inne alternatywy, w których każdy program stanowi oddzielną niezależną wyspę konwencji i możliwości.
„każ każdemu programowi zrobić jedną rzecz i zrób to dobrze”
Zamiast wdrażania !! wewnątrz sudo (lub dowolnego innego polecenia), które może skorzystać z powtórzenia poprzedniego polecenia - jest ono realizowane raz (w powłokach) i wszystkie polecenia mogą z niego korzystać. Możesz więc zrobić:
$ echo !!# will echo the last command
$ time !!# will repeat and time the last command
$ strace !!# will repeat the last program while system-call tracing it
i tak dalej.
Ale to nie koniec. Powłoka robi znacznie więcej niż rozszerzanie historii za pomocą! oznaczniki zdarzeń. Przed wykonaniem polecenia wykonuje on ekspansję zmiennych, interpretację symboli wieloznacznych nazwa-pliku (globbing), zastępowanie poleceń, przekierowywanie plików / operacji we / wy i wiele innych. Wszystkie z nich można wykorzystać i wykorzystać w dowolnym poleceniu wywoływanym z powłoki.
Kolejną dużą zaletą jest to, że jeśli poświęcasz trochę czasu na naukę swojej powłoki (w tym przypadku „man bash”), musisz się jej nauczyć raz i możesz korzystać z tych potężnych możliwości wszędzie, przez cały czas. O wiele łatwiej jest nauczyć się jednego zestawu potężnych zasad i konwencji, niż ponownie nauczyć się, w jaki sposób agr wiersza poleceń jest obsługiwany w każdym programie lub narzędziu.
Odpowiedzi:
To tylko skróty bash. Nawiasem
sudo!!
mówiąc, nie jest. Tosudo !!
(zwróć uwagę na spację).!!
W bash jest w zasadzie rozwinięciem poprzedniego polecenia.Zajrzyj do sekcji „Rozszerzenie historii” na stronie podręcznika bash:
http://www.gnu.org/software/bash/manual/bashref.html#Event-Designators
źródło
To rzeczywiście
sudo !!
, który składa się z poleceniasudo
, z których na pewno znają, i oznaczenie zdarzenie ,!!
, który odnosi się do ostatniego wprowadzonego polecenia. Możesz znaleźć więcej nabash
stronie man, wEvent Designators
sekcji.źródło
Ten rozdział funkcjonalności jest jedną z najpiękniejszych zasad projektowania, dzięki czemu Linux / Unix jest o wiele potężniejszy niż inne alternatywy, w których każdy program stanowi oddzielną niezależną wyspę konwencji i możliwości.
„każ każdemu programowi zrobić jedną rzecz i zrób to dobrze”
Zamiast wdrażania !! wewnątrz sudo (lub dowolnego innego polecenia), które może skorzystać z powtórzenia poprzedniego polecenia - jest ono realizowane raz (w powłokach) i wszystkie polecenia mogą z niego korzystać. Możesz więc zrobić:
i tak dalej.
Ale to nie koniec. Powłoka robi znacznie więcej niż rozszerzanie historii za pomocą! oznaczniki zdarzeń. Przed wykonaniem polecenia wykonuje on ekspansję zmiennych, interpretację symboli wieloznacznych nazwa-pliku (globbing), zastępowanie poleceń, przekierowywanie plików / operacji we / wy i wiele innych. Wszystkie z nich można wykorzystać i wykorzystać w dowolnym poleceniu wywoływanym z powłoki.
Kolejną dużą zaletą jest to, że jeśli poświęcasz trochę czasu na naukę swojej powłoki (w tym przypadku „man bash”), musisz się jej nauczyć raz i możesz korzystać z tych potężnych możliwości wszędzie, przez cały czas. O wiele łatwiej jest nauczyć się jednego zestawu potężnych zasad i konwencji, niż ponownie nauczyć się, w jaki sposób agr wiersza poleceń jest obsługiwany w każdym programie lub narzędziu.
źródło