GNU/Linux
Muszla
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.