Ćwiczenie — korzystanie z powłoki Bash

Ukończone

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 użyjesz usługi Azure Cloud Shell po prawej stronie jako 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.

  1. Użyj polecenia ls, aby wyświetlić listę wszystkich plików i podkatalogów w bieżącym katalogu:

    ls
    
  2. 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.

  3. Ale zaraz, 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
    
  4. 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 znajdującym się w katalogu o nazwie home w katalogu głównym systemu plików Linux.

  5. Wygląda na to, że w naszym bieżącym katalogu jest niewiele. Użyjmy flagi powłoki Bash w celu wyświetlenia wszystkich ukrytych plików i katalogów, aby sprawdzić, czy rzeczywiście tak jest.

    ls -a
    
  6. Zaraz! 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
    
  7. 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. Gdziekolwiek jesteś, jeśli wyświetlisz wszystkie ukryte pliki i katalogi, zobaczysz wydrukowane katalogi . i ...
    • .bash_history to specjalny plik powłoki Bash, w którym przechowywane są wszystkie polecenia wprowadzane do powłoki. Powłoka Bash pamięta historię poleceń, co, jak zobaczymy później, jest przydatne.
    • .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ń

  1. Spróbuj wpisać to polecenie, które zawiera literówkę (203? zamiast 202?):

    ls -a .azure/commands/203?*.log
    
  2. 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
    
  3. Zamiast ponownie wprowadzać całe polecenie w celu poprawienia błędu, możesz przywołać wcześniej wprowadzone polecenia przy użyciu klawiszy Strzałka w górę i Strzałka w dół. Spróbuj użyć klawisza Strzałka w górę, aby przywołać nieprawidłowe polecenie. Następnie użyj klawisza Strzałka w lewo, aby rozwiązać ten problem, zastępując końcową cyfrę 3 cyfrą 2. Wybierz ponownie klawisz Enter, aby przesłać poprawione polecenie.

    Kilkakrotne użycie klawisza Strzałka w górę umożliwia przejście wstecz o wiele poleceń. Za pomocą klawisza Strzałka w dół możesz przejść do późniejszych poleceń.

  4. 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.

  1. 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
    
  2. 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 naciśnij klawisz Tab. Co się stanie?

  3. W poleceniu powinna pojawić się reszta słowa „azure/”:

    cat .azure/
    

    Kontynuuj wpisywanie początków wyrazów i używaj klawisza Tab do autouzupełniania. Pamiętaj, że jeśli występuje niejednoznaczność, powłoka Bash nie wypełni żadnych elementów. Możesz wybrać klawisz Tab dwa razy, aby powłoka Bash wydrukowała wszystkie pliki i katalogi w danej ścieżce, które pasują do wpisanych liter.

  4. Baw się, aż dojdziesz do prawdziwego pliku .log w katalogu polecenia. Następnie wybierz klawisz Enter, aby użyć polecenia cat do wydrukowania jego zawartości 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 już wpisano niepoprawną literę, powłoka Bash nie będzie w stanie poprawnie odgadnąć, jaka litera ma być wpisana.

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.

  1. 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!

  2. 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
    
    ...
    
  3. 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ę.

  1. Najpierw wpisz to polecenie, aby upewnić się, że jesteś we właściwym miejscu:

    cd ~
    

    To polecenie przenosi Cię z powrotem do Twojego specjalnego katalogu home w powłoce, jeśli jeszcze tam nie jesteś.

  2. Sprawdź to, jeszcze raz używając polecenia pwd:

    pwd
    
  3. 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ć znaku ~, aby odwołać się do lokalizacji /home/yourname bez względu na to, gdzie jesteś w powłoce.

  4. Przejdźmy do katalogu zawierającego pliki dziennika (gdzie byliśmy już wcześniej):

    cd .azure/commands/
    

    Możesz wpisać pełne polecenie samodzielnie lub użyć klawisza Tab do autouzupełniania.

    Teraz wiersz, w którym wprowadzasz polecenia, powinien wyglądać inaczej i pokazywać, gdzie jesteś w powłoce:

    yourname@Azure:~/.azure/commands$
    
  5. 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.

Sprawdź swoją wiedzę

1.

Do którego katalogu przełączysz się po wprowadzeniu polecenia cd . powłoki Bash?