Widziałem, jak ktoś pisze
apt-get install !!
Robił to kilka razy i za każdym razem instalowany był inny program. Wygląda na to, że automatycznie zorientował się, co jest potrzebne dalej.
Jednak gdy wypróbowałem to na mojej maszynie wirtualnej Ubuntu 14.04.1 LTS, po prostu pokazałem kilka instrukcji użytkowania. Googling apt-get install !!
nie wydaje się działać zbyt dobrze. Wiele wyników wyszukiwania nie zawiera podwójnego wykrzyknika.
Co robi apt-get install !!
i czego może brakować na moim komputerze, że nie działa?
command-line
bash
Thomas Weller
źródło
źródło
Odpowiedzi:
!!
jest skrótem w bash, który oznacza ostatnie wykonane polecenie.Spróbuj tego:
W tym kontekście
!!
zostanie on rozszerzony na innyecho hello
.Wyobrażam sobie, co się stało, gdy próbowali uruchomić polecenie, które się nie powiodło i narzekało, że nie zostało zainstalowane. Więc wpisali,
sudo apt-get install !!
ponieważ nazwa pakietu była przypadkowo taka sama jak nazwa polecenia, które próbowali uruchomić. Wynikowe polecenie spróbuje zainstalować pakiet o tej samej nazwie, co polecenie, które właśnie próbowali wykonać.źródło
lynx
, zobacz, że nie jest zainstalowany, a następnie uruchomapt-get install !!
instaluje Lynx. Nie działało to dla mnie, ponieważ próbowałemapt-get install !!
jako jedyne polecenie.sudo
, na przykładapt-get install
coś.apt-get install some-program
, a kiedy zdajesz sobie sprawę, że nie masz uprawnień, po prostu sięsudo !!
rozwijasudo apt-get install some-program
.!!
to pseudonim!-1
oznaczający ostatni element w historii bash.!-2
jest przedostatni i tak dalej.!!
nie ma z tym nic wspólnegoapt-get
. Jest to słowo kluczowe powłoki, które zostanie rozwinięte do poprzedniego polecenia. To rozszerzenie jest wykonywane przez powłokę przed interpretacją bieżącego polecenia.Od
man bash
:Na przykład, jeśli uruchomisz polecenie:
Następnie, jeśli uruchomisz:
zostanie rozszerzony do:
Jak widać, jest on rozszerzony na dwa pakiety, a
echo
drugi jestfoo
. Nie ma samodzielnego pakietu o nazwiefoo
iecho
. Oprócz wbudowanej powłokiecho
istnieje/bin/echo
plik wykonywalny będący częścią pakietu GNU-coreutils. Pojawią się więc błędy informujące, że żadne takie pakiety nie są dostępne.Z drugiej strony druga osoba może robić coś takiego:
Jak widać
cowsay
jest instalowany.Sugeruję, abyś tego nie robił (o ile nie masz pewności), ponieważ wyrażanie się wprost nie szkodzi.
źródło
!!
. Wiedziałem, co to znaczy, ale podoba mi się sposób, w jaki to opisałeś.!!
: Patrz poprzednie polecenie. To jest synonim!-1
( Źródło ).Na przykład, jeśli wykonam:
wtedy pamiętaj, że muszę być rootem, a następnie mógłbym po prostu wpisać:
to to samo, co pisanie:
Jest to przydatne, gdy twoje ostatnie polecenie zawiera wiele znaków.
źródło
sudo !!
poleceniu; to, co robię od lat, to naciśnij raz klawisz w górę, a następnie przesuń kursor do końca w lewo i dodajsudo
.sudo
.Ctrl+A
lub przynajmniejHome
?Na pytanie już udzielono odpowiedzi, więc nie będę się powtarzać. Chciałbym jednak zauważyć, że istnieje wiele takich skrótów w różnych powłokach, które pomagają powtarzać / znajdować / edytować polecenia. Niektóre z tych, których używam to:
!$
następnie ENTERwpisz ostatnie słowo ostatniego polecenia. Na przykład,To cię wyląduje
/let/me/in
vi /home/mycoolproject.sh
a następnie go z niektórych przypadkowych poleceń takich jakls
,cd
,pwd
itp następnie wpisanie Ctrl- Rnastępniecool
będzie ciągnąć się, żevi
polecenie.Wystarczy wyszukać skróty klawiaturowe bash (csh lub cokolwiek innego), a będzie to najlepsza rzecz, jaką zrobiłeś dzisiaj!
źródło