Kodomo

Пользователь

Интерфейс командной строки

Кроме привычного многим графического пользовательского интерфейса (graphical user interface, GUI) существует и другой метод взаимодействия с операционной системой компьютера – интерфейс командной строки (command line interface, CLI). В этом случае пользователь вводит текстовые команды, которые обрабатывает специальная программа-интепретатор, называемая командной оболочкой (shell). Каждая команда – строка текста – содержит указание, какую программу надо запустить, какие параметры и входные данные ей передать, как настроить её "окружение" перед запуском и т.д.

Для целого ряда задач CLI подходит значительно лучше, чем GUI. Поэтому, в частности, многие биоинформатические программы являются т.н. "консольными", т.е. предполагают взаимодействие с пользователем только посредством CLI и могут быть запущены только через командную оболочку.

Один из наиболее популярных интерпретаторов команд для Unix-подобных операционных систем называется Bash.

Интерпретатор команд Bash

В самом простом случае, команда Bash – это одна строка текста. Процесс интерпретации команды начинается с разбиения команды на "слова", которые называют аргументами командной строки. В качестве разделителей аргументов выступают пробелы или символы табуляции. Полученные после разбиения аргументы нумеруются слева направо, начиная с 0. Нулевой аргумент, как правило, является именем программы, которую требуется запустить.

приглашение интерпретатора (его печатает bash)
       |             команда (вводится пользователем, состоит из аргументов)
-------^------- --------^---------
                арг0  арг1   арг2 v----- разделитель команд (перенос строки)
login@kodomo:~$ одна строка текста
                 |  ^------^------------ разделители аргументов (пробелы или табуляция)         
                 ^--- название программы или путь к исполняемому файлу (аргумент 0)

Некоторые символы Bash воспринимает особенным образом, такие символы называются "специальными символами Bash". Примером специальных символов являются символ переноса строки (служит разделителем команд), пробел и символ табуляции (разделяют аргументы). После разбиения команды на аргументы Bash проверяет каждый из них на предмет наличия спец. символов и, если находит, осуществляет соответствующие преобразования, которые будут описаны ниже. После окончания интерпретации всех специальных символов Bash запускает программу, указанную в нулевом аргументе командной строки, и передает ей все аргументы в виде списка строк. Запущенная программа сама определяет, что с этими аргументами делать. Например, программа echo просто выводит все свои аргументы через пробел и завершает вывод символом переноса строки.

  любое количество пробелов/табов считается одним разделителем
                        --^--
login@kodomo:~$ echo one     two 3
one two 3
login@kodomo:~$

Аргументы, передаваемые программе, можно разделить на два типа: позиционные аргументы и опции. Позиционные аргументы не имеют названий, их назначение определяется только по порядку следования (позиции) в команде. Например, программа grep нужна для поиска строк, содержащих определенные слова, в текстовых файлах. Первый позиционный аргумент этой программы должен быть словом, которое требуется найти, а второй позиционный аргумент – именем файла.

login@kodomo:~$ grep слово file.txt      # работает правильно
Какая-то строка текста, содержащая слово
login@kodomo:~$ grep file.txt слово      # выдает ошибку
grep: слово: No such file or directory
login@kodomo:~$

В отличие от позиционных аргументов, назначение опции определяется её именем, а не позицией (их было бы логичнее называть именованными аргументами). Опции бывают короткие и длинные. Короткие опции начинаются с символа -, за которым следует один символ (обычно буква) – название опции. Длинные опции начинаются с двух минусов и имеют более длинное название. Часто для короткой опции есть синонимичная длинная, и наоборот. Считается, что длинные опции проще запоминать, а короткие – проще вводить. В качестве примера можно привести опцию -h и/или --help. Эта опция есть у многих программ, она обычно заставляет программу выводить краткое справочное сообщение, вместо обычных действий.

login@kodomo:~$ grep --help
Usage: grep [OPTION]... PATTERNS [FILE]...
Search for PATTERNS in each FILE.
... и еще около сотни строк справки

Указанная опция --help является так называемым флагом – она не принимает никакого значения, а просто изменяет поведение программы, если присутствует в списке аргументов при запуске. Существуют опции, которые принимают значение – оно должно быть указано в следующем за опцией аргументе.

Как правило, значение опций можно указать в том же аргументе командной строки, что и название. В случае коротких опций значение указывается сразу после названия опции, а в случае длинных опций – отделяется от названия символом =.

Файловая система GNU/Linux

Работа с файлами и каталогами

HowTo/Bash (последним исправлял пользователь is_rusinov 2023-09-18 21:48:36)