Wykonuję samouczek, w którym wspomniano o uruchomieniu tego polecenia:
sudo chmod 700 !$
Nie jestem zaznajomiony z !$
. Co to znaczy?
bash
command-history
Andrzej
źródło
źródło
echo
czegoś, jeśli nie jesteś pewien, co to zrobi.echo $(rm -rf /)
--no-preserve-root
opcji, a jeśli zobaczysz w programie słowa „nie zachowuj”, lepiej dokładnie się zastanów.Odpowiedzi:
Zasadniczo jest to ostatni argument do poprzedniego polecenia.
( Źródło ; poręczny przewodnik, przy okazji)
Nie warto nic odróżniać od tego
!$
tokena od specjalnej zmiennej powłoki$_
. Rzeczywiście, oba rozwijają się do ostatniego argumentu poprzedniego polecenia. Jednak!$
jest rozszerzany podczas rozszerzania historii , natomiast$_
jest rozszerzany podczas rozszerzania parametrów . Jedną z ważnych konsekwencji tego jest to, że kiedy używasz!$
, rozszerzone polecenie jest zapisywane w twojej historii.Weźmy na przykład naciśnięcia klawiszy
echo Foo
Enterecho !$ Jar
Enter Up Enter; iecho Foo
Enterecho $_ Jar
Enter Up Enter.(Jedyne zmienione znaki to
$!
i$_
na środku.)W pierwszym przypadku, gdy naciśniesz Up, wiersz poleceń czyta
echo Foo Jar
, więc ostatni wiersz zapisany na stdout toFoo Jar
.W drugim przypadku, gdy naciśniesz Up, linia poleceń czyta
echo $_ bar
, ale teraz$_
ma inną wartość niż poprzednio - rzeczywiście$_
jest terazJar
, więc ostatni wiersz zapisany na stdout toJar Jar
.Inną konsekwencją jest to, że
_
można go użyć w innych rozszerzeniach parametrów, na przykład w sekwencji poleceńodbitki
isomorphism isosceles
. Ale nie ma analogicznego${!$%morphism}
rozszerzenia.Aby uzyskać więcej informacji na temat faz ekspansji w Bash, zobacz
EXPANSION
sekcjęman 1 bash
(nazywa się to Shell Expansions w wydaniu online).HISTORY EXPANSION
Sekcji jest oddzielona.źródło
!$
insert-last-argument
, zwykle związany zM-.
.Ściśle mówiąc,
!$
jest to ostatnie słowo ostatniego polecenia z listy historii.Przykłady:
źródło
!$
poda ostatnie polecenie użyte dla tego konkretnego użytkownika ....możesz także znaleźć historię poleceń używanych wcześniej za pomocą
history
polecenia ... wypróbuj ...UWAGA: W przypadku konkretnego użytkownika wszystkie wcześniej użyte polecenia zostaną zapisane w pliku historii bash.
źródło