Szukaj…


Wprowadzenie

Powłoka wykonuje program w odpowiedzi na monit. Po wydaniu polecenia powłoka szuka programu, a następnie wykonuje go. Na przykład po wydaniu polecenia ls powłoka szuka narzędzia / programu o nazwie ls, a następnie uruchamia go w powłoce. Argumenty i opcje udostępniane przez narzędzia mogą mieć wpływ na uzyskany wynik. Powłoka znana jest również jako interfejs wiersza polecenia lub interfejs wiersza poleceń.

Zmiana domyślnej powłoki

Większość współczesnych dystrybucji będzie miała zainstalowaną i skonfigurowaną domyślną powłokę BASH ( B naszne A gain SH ell).

Polecenie (w rzeczywistości wykonywalny plik binarny, ELF) odpowiedzialne za zmianę powłok w Linuksie to chsh ( ch ange sh ell).

Możemy najpierw sprawdzić, które powłoki są już zainstalowane i skonfigurowane na naszym komputerze za pomocą komendy chsh -l , która wyświetli wynik podobny do następującego:

[user@localhost ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/usr/bin/fish

W niektórych dystrybucjach Linuksa chsh -l jest nieprawidłowy. W takim przypadku listę wszystkich dostępnych powłok można znaleźć w pliku / etc / shells. Możesz wyświetlić zawartość pliku za pomocą cat :

[user@localhost ~]$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/usr/bin/fish

Teraz możemy wybrać naszą nową domyślną powłokę, np. fish , i skonfigurować ją za pomocą chsh -s ,

[user@localhost ~]$ chsh -s /usr/bin/fish
Changing shell for user.
Password: 
Shell changed.

Teraz pozostaje tylko wykonać cykl wylogowywania i logowania i cieszyć się naszą nową domyślną powłoką.

Jeśli chcesz zmienić domyślną powłokę dla innego użytkownika i masz uprawnienia administracyjne na komputerze, będziesz mógł to zrobić, używając chsh jako root . Więc zakładając, że chcemy zmienić user_2 „s domyślną powłokę dla ryb, będziemy korzystać z tego samego polecenia, jak poprzednio, ale z dodaniem nazwy użytkownika na innego użytkownika, chsh -s /usr/bin/fish user_2 .

Aby sprawdzić, jaka jest bieżąca domyślna powłoka, możemy wyświetlić zmienną środowiskową $SHELL , która wskazuje ścieżkę do naszej domyślnej powłoki, więc po naszej zmianie spodziewalibyśmy się wyniku podobnego do tego,

 ~  echo $SHELL                                 
/usr/bin/fish

opcje chsh :

-s shell

Ustawia powłokę jako powłokę logowania.

-l , --list-shells

Wydrukuj listę powłok wymienionych w / etc / shells i zakończ.

-h , --help

Wydrukuj komunikat o użytkowaniu i wyjdź.

-v , --version

Wydrukuj informacje o wersji i wyjdź.

Podstawowe narzędzia powłoki


Dostosowywanie zachęty powłoki

Domyślny wiersz polecenia można zmienić, aby wyglądał inaczej i był krótki. Jeśli bieżący katalog jest długi, domyślny wiersz polecenia staje się zbyt duży. Korzystanie z PS1 staje się przydatne w takich przypadkach. Krótkie i spersonalizowane polecenie, ładne i eleganckie. W poniższej tabeli użyto PS1 z wieloma argumentami, aby pokazać różne formy monitów powłoki. Domyślny wiersz polecenia wygląda bruce@gotham ~ $ tak: user@host ~ $ w moim przypadku wygląda to tak: bruce@gotham ~ $ . Można to zmienić zgodnie z poniższą tabelą:

Komenda Użyteczność
PS1 = „\ w $” ~ $ shell zachęta jako nazwa katalogu. W tym przypadku katalogiem głównym jest root.
PS1 = „\ h $” gotham $ powłoki gotham $ jako gotham $ hosta
PS1 = „\ u $” bruce $ shell zachęca jako nazwę użytkownika
PS1 = „\ t $” 22:37:31 $ monit powłoki w formacie 24-godzinnym
PS1 = „@ $” 10:37 PM powłokę w formacie 12-godzinnym
PS1 = „! $ ' 732 pokaże numer historii polecenia zamiast znaku zachęty powłoki
PS1 = „koleś $” dude $ pokaże powłokę tak, jak lubisz

Kilka podstawowych poleceń powłoki

Komenda Użyteczność
Ctrl-k cut / kill
Ctrl-y szarp / wklej
Ctrl-a przeniesie kursor na początek linii
Ctrl-e przeniesie kursor na koniec linii
Ctrl-d usunie znak za / przy kursorze
Ctrl-l wyczyści ekran / terminal
Ctrl-u wyczyści wszystko pomiędzy pytaniem a kursorem
Ctrl-_ cofnie ostatnią rzecz wpisaną w linii poleceń
Ctrl-c przerwie / zatrzyma zadanie / proces działający na pierwszym planie
Ctrl-r wyszukiwanie wsteczne w historii
~/.bash_history przechowuje 500 ostatnich poleceń / zdarzeń używanych w powłoce
history pokaże historię poleceń
history | grep <key-word> pokaże wszystkie polecenia w historii ze słowem kluczowym <słowo-klucz> (przydatne w przypadkach, gdy pamiętasz część polecenia używanego w przeszłości)

Utwórz własny alias polecenia

Jeśli masz dość używania długich poleceń w bash, możesz utworzyć własny alias poleceń.

Najlepszym sposobem na to jest zmodyfikowanie (lub utworzenie, jeśli nie istnieje) pliku o nazwie .bash_aliases w folderze domowym. Ogólna składnia to:

alias command_alias='actual_command'

gdzie actual_command jest polecenie, które są zmiany nazwy i command_alias to nowa nazwa dałeś go. Na przykład

alias install='sudo apt-get -y install'

odwzorowuje nowy alias polecenia install na rzeczywiste polecenie sudo apt-get -y install . Oznacza to, że kiedy używasz install w terminalu, jest to interpretowane przez bash jako sudo apt-get -y install .

Znajdź plik w systemie

Za pomocą bash możesz łatwo zlokalizować plik za pomocą polecenia locate . Powiedzmy na przykład, że szukasz pliku mykey.pem:

locate mykey.pem

Czasami pliki mają dziwne nazwy, na przykład możesz mieć plik taki jak random7897_mykey_0fidw.pem . Powiedzmy, że szukasz tego pliku, ale pamiętasz tylko części mykey i pem. Możesz połączyć polecenie locate z grep za pomocą potoku takiego jak ten:

locate pem | grep mykey

Który przyniósłby wszystkie wyniki, które zawierają oba te elementy.

Pamiętaj, że nie we wszystkich systemach jest zainstalowane narzędzie locate , a wiele z nich go nie włącza. locate jest szybka i wydajna, ponieważ okresowo skanuje system i buforuje nazwy i lokalizacje dla każdego pliku w nim zawartego, ale jeśli gromadzenie danych nie jest włączone, nie może ci nic powiedzieć. Możesz użyć updatedb aby ręcznie zainicjować skanowanie systemu plików, aby zaktualizować buforowane informacje o plikach w systemie plików.

Jeśli nie masz działającej locate , możesz skorzystać z narzędzia find :

find / -name mykey.pem -print

jest mniej więcej równoważne z locate mykey.pem ale musi skanować system (systemy) plików za każdym razem, gdy uruchamiasz go w poszukiwaniu pliku, zamiast używać danych w pamięci podręcznej. Jest to oczywiście wolniejsze i mniej wydajne, ale bardziej w czasie rzeczywistym. Narzędzie find może zrobić znacznie więcej niż tylko wyszukiwanie plików, ale pełny opis jego możliwości wykracza poza zakres tego przykładu.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow