Ćwiczenie — korzystanie z powłoki Bash
- 8 min
Na własnym komputerze z systemem Linux możesz uruchamiać polecenia powłoki Bash lokalnie. Jeśli masz dostęp do serwerów Linux, możesz z nimi połączyć zdalnie i tam uruchamiać polecenia Bash. Ale nikt nie chce eksperymentować z systemem produkcji na żywo, szczególnie w pierwszym dniu w Northwind.
W tej lekcji będziesz używać usługi Azure Cloud Shell po prawej stronie jako swojego terminalu systemu Linux. Usługa Azure Cloud Shell to powłoka, do której można uzyskać dostęp za pośrednictwem witryny Azure Portal lub pod adresem https://shell.azure.com. Nie musisz nic instalować na swoim komputerze czy laptopie, aby z niej korzystać.
Zapoznanie z usługą Cloud Shell
Najpierw zbadajmy, co znajduje się w usłudze Cloud Shell, korzystając z poznanych poleceń Bash.
Użyj polecenia
ls
, aby wyświetlić listę wszystkich plików i podkatalogów w bieżącym katalogu:ls
Wyświetlone dane wyjściowe powinny wyglądać mniej więcej tak:
yourname@Azure:~$ ls clouddrive
clouddrive to podkatalog bieżącego katalogu. Jest to zainstalowany udział plików, który pozostaje, jeśli używasz usługi Cloud Shell na własnym koncie. W tej chwili używasz go w piaskownicy usługi Microsoft Learn.
Ale poczekaj, jaki jest bieżący katalog? Użyjmy
pwd
polecenia , aby dowiedzieć się.pwd
Oznacza to "drukowanie katalogu roboczego". Wyświetla długą ścieżkę do katalogu, w którym jesteś teraz.pwd
Powinny pojawić się następujące dane wyjściowe:
yourname@Azure:~$ pwd /home/yourname
Te dane wyjściowe oznaczają, że jesteś w katalogu o nazwie yourname w katalogu o nazwie home w katalogu głównym systemu plików Linux.
Wygląda na to, że w naszym bieżącym katalogu jest niewiele. Użyjmy flagi Bash, aby wydrukować wszystkie ukryte pliki i katalogi, dla potwierdzenia, że wszystko jest poprawne.
ls -a
Te dane wyjściowe pokazały nam, że w tym katalogu jest o wiele więcej elementów, niż początkowo sądziliśmy.
yourname@Azure:~$ ls -a . .. .azure .bash_history .bash_logout .bashrc clouddrive .profile .tmux.conf .viminfo
Czym są te wszystkie pliki i podkatalogi? Niektóre to pliki w tle umożliwiające działanie usługi Cloud Shell. Pomówmy o kilku pozostałych.
-
.
odnosi się do bieżącego katalogu, a..
odnosi się do katalogu nadrzędnego. Wszędzie tam, gdzie jesteś, jeśli drukujesz wszystkie ukryte pliki i katalogi, zobaczysz.
i..
wydrukowasz. -
.bash_history
to specjalny plik powłoki Bash, w którym przechowywane są wszystkie polecenia wprowadzane do powłoki. Powłoka Bash zapamiętuje historię poleceń, która, jak widać później, jest przydatna. -
.bash_logout
to inny specjalny plik powłoki Bash, który jest odczytywany i uruchamiany za każdym razem, gdy istnieje powłoka logowania. Superużytkownicy systemu Linux mogą go modyfikować, aby dostosować środowisko. -
.bashrc
to ważny plik konfiguracji powłoki Bash, który jest uruchamiany za każdym razem, gdy uruchamiasz nową powłokę. Jeśli zdecydujesz się otworzyć ten plik, aby go obejrzeć, uważaj na wprowadzanie zmian, ponieważ mogą one mieć niezamierzone konsekwencje.
-
Przywoływanie historii i autouzupełnianie poleceń
Podczas wprowadzania skomplikowanych poleceń, takich jak to, łatwo jest popełnić błąd:
ls -a .azure/commands/202?*.log
Na szczęście powłoka Bash oferuje kilka funkcji, które mogą Ci pomóc.
Przywoływanie poprzednich poleceń
Spróbuj wpisać to polecenie, które zawiera literówkę (
203?
zamiast202?
):ls -a .azure/commands/203?*.log
Powinny zostać wyświetlone następujące dane wyjściowe informujące o tym, że nie ma żadnych plików pasujących do tego wzorca:
ls: cannot access '.azure/commands/203?*.log': No such file or directory
Zamiast ponownie wprowadzać całą sprawę w celu poprawienia błędu, możesz odwołać wcześniej wprowadzone polecenia za pomocą strzałki w górę i strzałki w dół . Spróbuj użyć strzałki w górę , aby przywrócić nieprawidłowe polecenie. Następnie użyj strzałki w lewo , aby rozwiązać ten problem, zastępując finał
3
symbolem2
. Wybierz ponownie Enter, aby przesłać poprawione polecenie.Użycie strzałki w górę wiele razy w wierszu powoduje przywrócenie wielu poleceń. Użyj strzałki w dół , aby przejść do kolejnych poleceń.
Teraz powinny zostać wyświetlone dane wyjściowe podobne do następujących. Ten wynik informuje, że polecenie zadziałało poprawnie, aby wyświetlić listę plików pasujących do podanego wzorca.
.azure/commands/2020-01-29.21-56-35.login.103.log .azure/commands/2020-01-29.21-56-38.account_set.112.log
Autouzupełnianie
Załóżmy, że chcesz przeczytać zawartość jednego z właśnie znalezionych plików. Możesz użyć polecenia cat
(skrót od „catenate” — „połącz”), aby wyświetlić zawartość pliku na ekranie.
Aby użyć tego polecenia, możesz użyć pełnej nazwy pliku, na przykład:
cat .azure/commands/2020-01-29.21-56-35.login.103.log
Jednak to dużo tekstu do wpisania i łatwo popełnić błąd. Zamiast tego możesz użyć podstawowej funkcji autouzupełniania powłoki Bash, która wykona większość pracy za Ciebie. Spróbuj wpisać to:
cat .a
Następnie wybierz Tab . Co się stanie?
W poleceniu powinna pojawić się reszta słowa „azure/”:
cat .azure/
Kontynuuj wpisywanie początków wyrazów i używanie Tab do autouzupełniania. Pamiętaj, że jeśli istnieje niejednoznaczność, powłoka Bash nie wypełni niczego. Możesz dwukrotnie nacisnąć Tab, aby powłoka Bash wyświetliła wszystkie pliki i katalogi w danej ścieżce, które pasują do wcześniej wpisanych liter.
Baw się, aż dotrzesz do rzeczywistego pliku .log w katalogu poleceń. Następnie wybierz Enter , aby użyć
cat
polecenia , aby wydrukować jego zawartość na ekranie. Może to wyglądać mniej więcej tak:CMD-LOG-LINE-BEGIN 103 | 2020-01-29 21:56:35,426 | INFO | az_command_data_logger | command args: login --identity CMD-LOG-LINE-BEGIN 103 | 2020-01-29 21:56:37,604 | INFO | az_command_data_logger | exit code: 0
Pamiętaj, że jeśli wpisał już nieprawidłową literę, powłoka Bash nie będzie mogła poprawnie odgadnąć, jakiej litery chcesz wpisać.
Korzystanie z polecenia man
Właśnie użyliśmy polecenia cat
, ale wciąż jeszcze niewiele o nim wiesz. Użyj polecenia man
, aby uzyskać więcej informacji o poleceniu cat
.
Wpisz następujące polecenie, aby dowiedzieć się więcej o tym, czym jest polecenie
cat
i jak go używać:man cat
Właśnie tak. Polecenia powłoki Bash mogą być zarówno tajemnicze, jak i zabawne!
Powinny pojawić się następujące dane wyjściowe:
CAT(1) User Commands CAT(1) NAME cat - concatenate files and print on the standard output SYNOPSIS cat [OPTION]... [FILE]... DESCRIPTION Concatenate FILE(s) to standard output. With no FILE, or when FILE is -, read standard input. -A, --show-all equivalent to -vET -b, --number-nonblank number nonempty output lines, overrides -n -e equivalent to -vE ...
Użyj strzałek w górę i w dół, aby przewinąć stronę podręcznika i wprowadź polecenie
q
, aby wyjść.
Zmiana katalogów
Przećwiczmy jeszcze jedno podstawowe polecenie powłoki Bash: cd
.
Podczas używania powłoki zawsze jesteś wewnątrz katalogu — tak jak w folderze na komputerze PC lub Mac. Aby zmienić foldery, użyj polecenia cd
(zmień katalog).
To proste, ale poćwiczmy trochę.
Najpierw wpisz to polecenie, aby upewnić się, że jesteś we właściwym miejscu:
cd ~
To polecenie przenosi cię z powrotem do specjalnego katalogu home w powłoce, jeśli nie jesteś już tam.
Sprawdź to, jeszcze raz używając polecenia
pwd
:pwd
Powinny pojawić się następujące dane wyjściowe:
/home/yourname
~
to kolejny znak specjalny w powłoce Bash, który odnosi się do tego katalogu macierzystego. Możesz użyć~
, aby odwołać się do lokalizacji /home/yourname bez względu na to, gdzie jesteś w powłoce.Przejdźmy do katalogu zawierającego pliki dziennika (gdzie byliśmy już wcześniej):
cd .azure/commands/
Możesz samodzielnie wprowadzić pełne polecenie lub użyć Tab do funkcji autouzupełniania.
Teraz wiersz, w którym wprowadzasz polecenia, powinien wyglądać inaczej i pokazywać, gdzie jesteś w powłoce:
yourname@Azure:~/.azure/commands$
Spróbuj użyć specjalnej składni
..
, aby przejść o jeden katalog w górę:cd ..
Powinno to spowodować przejście o jeden poziom wyżej w strukturze katalogów, a wiersz polecenia powinien wyglądać następująco:
yourname@Azure:~/.azure$
Dobra robota! Za Tobą pierwsze kroki na drodze do stania się ekspertem w zakresie powłoki Bash. Uczmy się dalej.