Упражнение. Знакомство с Bash

Завершено

На своем компьютере Linux можно выполнять команды Bash локально. Если у вас есть доступ к серверам Linux, вы можете удаленно подключаться к ним и выполнять команды Bash там. Но никто не захочет экспериментировать с работающей производственной системой, особенно в первый день работы в Northwind.

В этом уроке вы будете использовать Azure Cloud Shell справа в качестве терминала Linux. Azure Cloud Shell — это оболочка, к которой можно получить доступ на портале Azure или по адресу https://shell.azure.com. Чтобы ее использовать, не нужно ничего устанавливать на ваш ПК или ноутбук.

Знакомство с Cloud Shell

Для начала давайте попробуем исследовать Cloud Shell с помощью уже изученных нами команд Bash.

  1. Получите список всех файлов и подкаталогов в текущем каталоге с помощью команды ls:

    ls
    
  2. Результат должен выглядеть примерно так:

    yourname@Azure:~$ ls
    clouddrive
    

    clouddrive — это подкаталог в текущем каталоге. Это подключенная общая папка, которая присутствует, если вы используете Cloud Shell в собственной учетной записи. Прямо сейчас вы используете эту оболочку в песочнице Microsoft Learn.

  3. Но что же является текущим каталогом? Давайте рассмотрим pwd команду, чтобы узнать. pwd Это означает "печать рабочего каталога". Он выводит длинный путь к каталогу, в который вы находитесь сейчас.

    pwd
    
  4. Вы должны увидеть такие выходные данные:

    yourname@Azure:~$ pwd
    /home/yourname
    

    Эти выходные данные означают, что вы находитесь в каталоге с именем ваше_имя, который находится в каталоге home в корне файловой системы Linux.

  5. Наш текущий каталог выглядит пустым. Давайте воспользуемся флагом Bash, чтобы отобразить все скрытые файлы и каталоги и убедиться, что все правильно.

    ls -a
    
  6. Эти выходные данные показали нам, что содержимое данного каталога гораздо больше, чем мы думали.

    yourname@Azure:~$ ls -a
    .  ..  .azure  .bash_history  .bash_logout  .bashrc  clouddrive  .profile  .tmux.conf  .viminfo
    
  7. Что из себя представляют все эти файлы и подкаталоги? Часть из них — фоновые файлы, позволяющие Cloud Shell работать. Давайте рассмотрим некоторые другие.

    • . ссылается на текущий каталог, а .. — на родительский каталог. Везде, где вы находитесь, если вы печатаете все скрытые файлы и каталоги, вы видите . и .. печатаете.
    • .bash_history — это специальный файл Bash, в котором хранятся все команды, введенные вами в оболочку. Bash запоминает журнал команд, который, как мы видим позже, полезен.
    • .bash_logout — это другой специальный файл Bash, который считывается и выполняется при каждом наличии оболочки входа. Суперпользователи Linux могут изменять его для настройки среды.
    • .bashrc — важный файл конфигурации Bash, который запускается при каждом запуске новой оболочки. Если вы собираетесь открыть этот файл, чтобы просмотреть его, будьте внимательны при внесении изменений, так как они могут иметь непредвиденные последствия.

Вызов журнала и автозавершение команд

При вводе сложных команд, подобных приведенной ниже, можно легко сделать ошибку.

ls -a .azure/commands/202?*.log

Но в Bash предусмотрено несколько функций, которые помогут в таких случаях.

Повторный вызов предыдущих команд

  1. Попробуйте ввести следующую команду с опечаткой (203? вместо 202?):

    ls -a .azure/commands/203?*.log
    
  2. Должен появиться следующий результат, показывающий, что файлов, соответствующих этому шаблону, нет:

    ls: cannot access '.azure/commands/203?*.log': No such file or directory
    
  3. Чтобы не вводить всю команду заново для исправления ошибки, можно повторно вызывать введенные ранее команды, используя клавиши со стрелкой вверх и стрелкой вниз. Попробуйте с помощью клавиши со стрелкой вверх вернуть неправильную команду. Затем с помощью клавиши со стрелкой влево исправьте команду, заменив последнюю цифру 3 на 2. Снова нажмите ВВОД, чтобы выполнить исправленную команду.

    Использование клавиши СТРЕЛКА ВВЕРХ несколько раз в строке перемещает несколько команд. Чтобы перейти к более поздним командам, используйте клавишу со стрелкой вниз.

  4. Теперь вы должны увидеть примерно следующий результат. Он позволяет убедиться, что команда сработала правильно и вы получили список файлов, соответствующих указанному шаблону.

    .azure/commands/2020-01-29.21-56-35.login.103.log
    .azure/commands/2020-01-29.21-56-38.account_set.112.log
    

Автозавершение

Предположим, вам нужно прочитать содержимое одного из только что найденных файлов. Для вывода содержимого файла на экран можно использовать команду cat (сокращение от "catenate").

  1. С этой командой следует использовать полное имя файла, например:

    cat .azure/commands/2020-01-29.21-56-35.login.103.log
    
  2. В этом случае приходится вводить много символов, и вероятность ошибки очень велика. Но вы можете воспользоваться функцией элементарного автозавершения Bash, и за вас будет выполнена большая часть работы. Попробуйте ввести:

    cat .a
    

    Затем нажмите клавишу Tab. Что происходит?

  3. В команде должна появиться остальная часть слова "azure/":

    cat .azure/
    

    Продолжайте вводить начала слов и используйте клавишу Tab для автозавершения. Имейте в виду, что если есть неоднозначность, Bash не будет заполнять ничего. Вы можете дважды выбрать tab , чтобы Bash распечатал все файлы и каталоги в заданном пути, соответствующие буквам, которые вы уже ввели.

  4. Играйте вокруг, пока не получите реальный .log файл в каталоге команд. Затем нажмите ВВОД, чтобы с помощью команды cat вывести его содержимое на экран. Оно должно выглядеть примерно следующим образом:

    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
    

    Помните, что если вы уже ввели неправильное письмо, Bash не сможет правильно угадать, какую букву вы намеревались ввести.

Использование man

Мы только что использовали команду cat, но вы еще мало о ней знаете. С помощью команды man можно получить больше информации о команде cat.

  1. Чтобы узнать больше о команде cat и ее использовании, введите следующую команду:

    man cat
    

    Да, вы ввели в оболочку "man cat". Команды Bash могут быть и понятными, и забавными!

  2. Вы должны увидеть такие выходные данные:

    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. Для прокрутки страницы руководства используйте стрелки вверх и вниз, а для выхода введите q.

Изменение каталогов

Давайте попробуем еще одну базовую команду Bash: cd.

При использовании оболочки вы всегда находитесь в каталоге — так же, как в папке на ПК или Mac. Чтобы изменить папку, используйте команду cd (change directory — изменить каталог).

Это просто, но давайте немного поупражняемся.

  1. Сначала введите следующую команду, чтобы убедиться, что вы находитесь в правильном месте:

    cd ~
    

    Эта команда переместит вас обратно в специальный домашний каталог в оболочке, если вы находились в другом месте.

  2. Повторите проверку, выполнив команду pwd еще раз:

    pwd
    
  3. Вы должны увидеть такие выходные данные:

    /home/yourname
    

    ~ — еще один специальный символ в Bash, который ссылается на этот домашний каталог. Вы можете использовать ~ для ссылки на расположение /home/ваше_имя, в каком бы каталоге в оболочке вы ни находились.

  4. Давайте перейдем в каталог, где хранятся файлы журнала (где мы были раньше):

    cd .azure/commands/
    

    Введите полную команду самостоятельно или используйте клавишу Tab для автозавершения.

    Теперь строка, в которой вводятся команды, должна выглядеть иначе и показывать, где в оболочке вы находитесь:

    yourname@Azure:~/.azure/commands$
    
  5. Попробуйте использовать специальный синтаксис .., чтобы переместиться на один каталог выше:

    cd ..
    

    Теперь вы должны находиться на один уровень выше в структуре каталогов, и командная строка должна выглядеть следующим образом:

    yourname@Azure:~/.azure$
    

Отлично! Вы сделали первые шаги на пути к званию эксперта Bash. Продолжайте обучение.

Проверьте свои знания

1.

Какой каталог вы переключитесь, если вы ввели cd . команду Bash?