10 niesamowitych i tajemniczych zastosowań (!) Symbol lub operator w poleceń Linux
- 2244
- 314
- Natan Cholewa
'!'
Symbol lub operator w Linux może być używany jako Logiczna negacja Operator, a także pobierać polecenia z historii za pomocą poprawek lub uruchamiać wcześniej uruchomić polecenie z modyfikacją. Wszystkie poniższe polecenia zostały wyraźnie sprawdzone w Bash Shell. Chociaż nie sprawdziłem, ale główny z nich nie będzie działał w innej powładzie. Tutaj wchodzimy w niesamowite i tajemnicze zastosowania '!'
symbol lub operator w poleceń Linux.
1. Uruchom polecenie z historii według numeru polecenia.
Możesz nie być świadomy faktu, że możesz uruchomić polecenie od swojego historia polecenie (już/wcześniej wykonane polecenia). Aby rozpocząć, najpierw znajdź numer polecenia, uruchamiająchistoria' Komenda.
$ History
Teraz uruchom polecenie z historia tylko według liczby, z jaką się pojawia, na wyjściu historia. Powiedz, uruchom polecenie, które pojawia się pod numerem 1551 na wyjściu 'historia' Komenda.
$ !1551
I uruchamia polecenie (polecenie górne w powyższym przypadku), które zostało wymienione pod numerem 1551. W ten sposób do odzyskania już wykonanego polecenia jest bardzo pomocne, szczególnie w przypadku tych poleceń, które są długie. Wystarczy nazwać to za pomocą ![Liczba, przy której pojawia się na wyjściu polecenia historii].
2. Uruchom wcześniej wykonane polecenie jako 2. ostatnie polecenie, 7. ostatnie polecenie itp.
Możesz uruchomić te polecenia, które wcześniej uruchomiłeś przez ich działającą sekwencję jako polecenie ostatniego uruchomienia, będzie reprezentowane jako -1, Drugi ostatni jak -2, Siódma ostatnia jak -7,… .
Pierwszy bieg historia polecenie, aby uzyskać listę ostatniego wykonanego polecenia. Konieczne jest uruchomienie historia polecenie, abyś mógł mieć pewność, że nie ma takiego polecenia Plik RM> Plik
i inni tylko po to, aby upewnić się, że nie uruchomisz żadnego niebezpiecznego dowodzenia przypadkowo. A następnie sprawdź szóste ostatnie polecenie, osiem ostatnich poleceń i dziesiąte ostatnie polecenie.
$ History $ !-6 $ !-8 $ !-10Uruchom ostatnie wykonane polecenia według liczb
3. Przekaż argumenty ostatniego polecenia, które uruchomimy do nowego polecenia bez retipowania
Muszę wymienić zawartość katalogu/home/$ użytkownik/binary/firefox- Więc zwolniłem.
$ ls/home/$ użytkownik/binarny/firefox
Potem zdałem sobie sprawę, że powinienem był zwolnićls -l„Aby zobaczyć, który plik jest tam wykonywalny? Więc powinienem ponownie wpisać całe polecenie! Nie, nie potrzebuję. Muszę tylko nosić ostatni argument do tego nowego polecenia jako:
$ ls -l !$
Tutaj !$
będzie nosić argumenty przekazane ostatniemu poleceniu do tego nowego polecenia.
4. Jak obsługiwać dwa lub więcej argumentów (!)
Powiedzmy, że utworzyłem plik tekstowy 1.tekst na pulpicie.
$ touch/home/avi/komputer/1.tekst
a następnie skopiuj to do '/home/avi/pobieranie„Używanie kompletnej ścieżki po obu stronach CP Komenda.
$ cp/home/avi/komputer/1.txt/home/avi/pobieranie
Teraz przeszliśmy dwa argumenty z CP Komenda. Pierwszy to '/home/avi/komputer/1.tekst„A drugi jest”/home/avi/pobieranie', radzimy sobie z nimi inaczej, po prostu wykonajmy echo [argumenty]
Aby inaczej wydrukować oba argumenty.
$ echo „1. argument to: !^”$ Echo„ 2. argument to: !CP: 2 ”
Uwaga 1st argument można wydrukować jako "!^”
a reszta argumentów można wydrukować poprzez wykonywanie "![Name_of_command]: [Number_of_argument] ”
.
W powyższym przykładzie pierwszym poleceniem było 'CP„I drugi argument był potrzebny do wydrukowania. Stąd "!CP: 2 ”
, Jeśli jakieś polecenie powie XYZ jest uruchomiony z 5 argumentami i musisz uzyskać czwarty argument, możesz użyć "!XYZ: 4 ”
, i użyj go tak, jak chcesz. Do wszystkich argumentów można uzyskać "!*”
.
5. Wykonaj ostatnie polecenie na podstawie słów kluczowych
Możemy wykonać ostatnie wykonane polecenie na podstawie słów kluczowych. Możemy to zrozumieć w następujący sposób:
$ ls/home>/dev/null [polecenie 1] $ ls -l/home/avi/teSktop>/dev/null [polecenie 2] $ ls -la/home/avi/pobrań>/dev/null [polecenie 3 3 ] $ ls -la /usr /bin> /dev /null [polecenie 4]
Tutaj użyliśmy tego samego polecenia (LS) ale z różnymi przełącznikami i dla różnych folderów. Ponadto wysłaliśmy do wyjścia każdego polecenia, aby/dev/null„Ponieważ nie zamierzamy radzić sobie z wynikami polecenia, konsola pozostaje czysta.
Teraz wykonaj polecenie ostatniego uruchomienia na podstawie słów kluczowych.
$ ! LS [polecenie 1] $ ! ls -l [polecenie 2] $ ! LS -LA [polecenie 3] $ ! LS -LA [polecenie 4]
Sprawdź wyjście, a będziesz zaskoczony, że uruchomiłeś już wykonane polecenia LS
słowa kluczowe.
6. Moc !! Operator
Możesz uruchomić/zmienić swoje polecenie ostatniego uruchomienia za pomocą (!!)
. Wywoła polecenie ostatniego uruchomienia z alter/ulepszenie w bieżącym poleceniu. Pokażmy scenariusz
Ostatniego dnia uruchamiam scenariusz jednolinowy, aby zdobyć mój prywatny adres IP, więc uruchomię,
$ ip addr show | GREP INET | grep -v „inet6” | GREP -V '127.0.0.1 '| awk 'drukuj 2 $' | Cut -f1 -d/
Nagle zorientowałem się, że muszę przekierować dane wyjściowe powyższego skryptu do pliku ip.tekst, więc co powinienem zrobić? Czy powinienem ponownie ponownie prześledzić całe polecenie i przekierować dane wyjściowe do pliku? Cóż, łatwe rozwiązanie jest użycie W GÓRĘ
Klucz nawigacyjny i dodaj '> ip.tekst'
Aby przekierować wyjście do pliku jako.
$ ip addr show | GREP INET | grep -v „inet6” | GREP -V '127.0.0.1 '| awk 'drukuj 2 $' | CUT -f1 -D> ip.tekst
Dzięki życiu Zbawiciela W GÓRĘ
Klucz nawigacji tutaj. Teraz rozważ poniższy warunek, następnym razem, gdy uruchomię poniżej scenariusza jednego linujące.
$ ifconfig | GREP „INET ADDR:” | awk 'drukuj 2 $' | GREP -V '127.0.0.1 '| CUT -f2 -D:
Jak tylko uruchomię skrypt, monit bash zwrócił błąd z komunikatem „Bash: ifconfig: nie znaleziono polecenia”
, Nie było mi trudno zgadnąć.
Więc jakie jest rozwiązanie? Trudno się zalogować, aby zrootować, a następnie ponownie wpisać całe polecenie! Również (Klucz nawigacji w górę) W ostatnim przykładzie nie przyszedł tu ratować. Więc? Musimy zadzwonić "!!"
bez cytatów, które wywoła ostatnie polecenie dla tego użytkownika.
$ su -c "!!" źródło
Tutaj Su jest użytkownikiem przełącznika, który jest rootem, -C
ma uruchomić określone polecenie jako użytkownika i najważniejsza część !!
zostanie zastąpione przez polecenie, a polecenie ostatniego uruchomienia zostanie tutaj zastąpione. Tak! Musisz podać hasło roota.
Używam !!
głównie w następujących scenariuszach,
1. Kiedy biegam apt-get polecenie jako normalny użytkownik, zwykle otrzymuję błąd, mówiąc, że nie masz zgody na wykonanie.
$ apt-get Upgrade && apt-get dist-upgrade
Błąd opps… nie martw się wykonaj poniżej polecenie, aby osiągnąć sukces…
$ su -c !!
Tak samo jak robię,
$ service apache2 start lub $ /etc /init.D/Apache2 Start lub $ Systemctl Start Apache2
Użytkownik ups nie upoważniony do noszenia takiego zadania, więc uruchamiam…
$ su -c 'service apache2 start' lub $ su -c '/etc/init.d/apache2 start 'lub $ su -c' Systemctl start apache2 '
7. Uruchom polecenie, które wpływa na cały plik, z wyjątkiem ![NAZWA PLIKU]
!
(Logiczne nie) może być używany do uruchamiania polecenia we wszystkich plikach/rozszerzeniu, z wyjątkiem tego, że jest z tyłu '!'
.
A. Usuń wszystkie pliki z katalogu, z wyjątkiem tego, którego nazwa jest 2.tekst.
$ rm !(2.tekst)
B. Usuń cały typ pliku z folderu, z wyjątkiem tego, którego rozszerzenie wynosi 'PDF'.
$ $ rm !(*.PDF)
8. Sprawdź, czy katalog (powiedz/home/avi/tecmint) istnieje, czy nie? Printf, jeśli wspomniany katalog istnieje, czy nie.
Tutaj użyjemy '! -D'
Aby potwierdzić, czy katalog istnieje, czy nie, a następnie logiczny i operator (&&)
Wydrukowanie tego katalogu nie istnieje, a logiczny lub operator (||)
do wydrukowania katalogu jest obecny.
Logika jest, gdy wyjście [[[ ! -d/home/avi/tecmint]
Jest 0, Wykonuje to, co leży poza logiką I w przeciwnym razie przejdzie do logicznego lub (||)
i wykonaj to, co leży poza logiką LUB.
$ [ ! -d/home/avi/tecMint] && printf '\ nno such/home/avi/tecmint Directory Istnieje \ n' || printf '\ n/home/avi/tecmint Directory Istnieje \ n'
9. Sprawdź, czy katalog istnieje, czy nie? Jeśli nie wyjdź z polecenia.
Podobne do powyższego warunku, ale tutaj, jeśli nie istnieje pożądany katalog, wyjdzie z polecenia.
$ [ ! -d/home/avi/tecmint] && exit
10. Utwórz katalog (powiedz test) w katalogu domowym, jeśli nie istnieje.
Ogólna implementacja w języku skrypowym, w którym jeśli pożądany katalog nie istnieje, utworzy jedną.
[[[ ! -d/home/avi/tecmint] && mkdir/home/avi/tecmint
To wszystko na teraz. Jeśli wiesz lub spotykasz jakiekolwiek inne użycie '!'
co warto wiedzieć, możesz udzielić nam sugestii w opinii. Keep Connected!
- « RHCSA Series Instalowanie, konfigurowanie i zabezpieczenie serwera Web i FTP - Część 9
- Jak używać WhatsApp w Linux za pomocą klienta „WhatsApp Web” »