ПР 4. Основы работы в текстовом режиме
Цель работы
Получить начальные навыки работы с интерфейсом командной строки (текстовый, он же консольный, режим) и использования команд Linux.
Указания к выполнению
По умолчанию, загрузка текстового режима в Astra Linux реализована из окна графического входа в систему (пиктограмма «Меню» → Консольный вход). При выборе этой опции авторизация пользователя выполняется через интерфейс командной строки. Авторизованный пользователь получает доступ к оболочке (по умолчанию – bash) и может вводить команды.
Внешние команды, доступные непривилегированному пользователю, расположены в каталоге /usr/bin/, административные утилиты, доступные суперпользователю, – в каталогах /sbin/ и /usr/sbin/. Для внешних команд имеется развернутая справочная информация в формате man, многие команды также имеют справку в формате info (здесь не рассматривается). Краткую справку можно получить при вызове нужной команды с параметром --help (возможные варианты: вызов без параметров, параметры -h или --usage). Пример: ls --help.
Команды могут принимать ноль или более параметров, представленных в «коротком» (-h) и/или «длинном» (--help) виде. Как правило, «длинный» параметр имеет «короткий» аналог, но не всегда. Параметры разделяются одним или более пробелами, «короткие» параметры могут быть сгруппированы. Сравните: ls -a -R; ls -aR; ls --all --recursive
.
Оболочка bash (Bourne Again Shell) имеет несколько встроенных команд, не имеющих man-справки. Их список можно получить по команде help (кстати, это тоже встроенная команда оболочки), подробности о каждой – help имя_команды.
Результаты выполнения команды можно отображать не только на экране (stdout), но перенаправить в файл или на вход другой команды. В этом случае символы >, >>, < и | используются как команды перенаправления ввода/вывода и обеспечивают конвейерное выполнение. Для выполнения некоторой команды в зависимости от результатов предыдущей используются операторы && и ||. Сравните:
student@astra:~$ echo "Write to root home" > /root/file.txt && echo "Success"
student@astra:~$ echo "Write to root home" > /root/file.txt || echo "Denied"
Параллельный запуск нескольких команд осуществляется через одинарный амперсанд (&). Переключение между фоновыми задачами осуществляется командами fg и bg. Пример многозадачной работы (команда sleep здесь использована только для наглядности):
student@astra:~$ sleep 3 && echo "Three" & sleep 7 && echo "Seven"
Нажатие сочетания клавиш Ctrl+Z переводит активную задачу в фоновый режим. Сочетание клавиш Ctrl+C прерывает выполнение команды.
Команды, способные читать из stdin (например, cat), будут принимать данные до нажатия сочетания клавиш Ctrl+D. Попробуйте выполнить следующие действия:
student@astra:~$ clear && echo Hello, > file.txt && cat >> file.txt
World! ↵
student@astra:~$ cat file.txt
Система поддерживает многопользовательский режим как в графическом, так и в текстовом окружении. Для открытия новой консоли в текстовом режиме используется сочетание клавиш Alt+Fn, где Fn – функциональные клавиши F1…F6. В графическом режиме для этого применяется сочетание Ctrl+Alt+Fn при этом Ctrl+Alt+F7 возвращает в графическую среду. Если графическая среда не была запущена ранее, то из консоли ее можно запустить командой startx.
Для любого пользователя система создает предопределенную среду исполнения. Ее параметры хранятся в виде переменных окружения, которые можно считывать, переопределять и создавать новые (set, export). Для отображения всех переменных окружения используются команды env и/или set без параметров. Пример использования (переменные окружения начинаются с символа $):
student@astra:~$ echo "$HOSTNAME says: $USER works on a $OSTYPE"
Задания
- Выполнить вход в систему в текстовом режиме.
- Ознакомиться с возможностями встроенной справочной системы man (man man) и командами apropos и whatis.
- Получить справочную информацию о командах bash, help, type, clear, cat, more, less, echo, touch, sort, tail, head, mcedit, nano, uname, apt, cowsay, exit, logout, shutdown. Следует иметь ввиду, что команды могут иметь справку в нескольких разделах справочной системы или наоборот, отсутствовать, если пакет, содержащий программу/команду, не установлен.
- Очистить экран, вывести содержимое файла /etc/os-release.
- Вывести на экран файл /etc/services. Использовать постраничную разбивку с помощью подходящей команды.
- Записать информацию из файлов /etc/os-release, /etc/astra_version, /etc/debian_version и всю информацию, представляемую командой uname, в файл about.system.
- Открыть новую консоль и авторизоваться. С помощью редакторов mcedit или nano или команды touch создать файл hello.txt, содержащий текст «Hello». Сохранить изменения, закрыть файл и выйти из редактора.
- Вернуться в первую консоль, используя cat или echo, дописать в файл hello.txt строку «World!» и вывести на экран содержимое этого файла.
- Создать пустой файл с именем chat.
- Открыть еще одну, третью, консоль, запустить там команду tail -f chat и вернуться в первую консоль.
- Выполнить следующую команду: echo "$USER@TTY1: Hello all!" >> chat, переключиться во вторую консоль.
- Выполнить следующую команду: echo "$USER@TTY2: Hi there!" >> chat, переключиться в первую консоль.
- Повторить задания 10 и 11 еще 2–3 раза, изменяя строки в команде echo.
- Переключиться в третью консоль, завершить выполнение ранее запущенной команды и завершить сеанс.
- Завершить сеанс во второй консоли.
- Ответить на контрольные вопросы.
- Выключить компьютер командой shutdown (/sbin/shutdown).
Контрольные вопросы
- Перечислите справочные разделы, имеющиеся в руководстве man.
- Какие параметры нужно указать в команде man, чтобы получить результаты, эквивалентные выполнению команд apropos и whatis соответственно?
- Какая из перечисленных в задании № 3 команд обладает собственным встроенным набором команд?
- Как можно (если можно) использовать команду echo для вывода сообщения в несколько строк?
- Какая из команд, more или less, представляет больше возможностей и в чем они выражаются?
- Как связаны команда apt и коровы?
- Что произойдет после выполнения команды touch somefile.txt?
- Объясните, как работает указанная команда:
touch file.txt && echo "Some string" > file.txt && cat file.txt
- Объясните, как работает указанная команда:
echo -e "b\nd\nc\na\nd\ c" >> file.txt && sort -u < file.txt
- В чем отличия команд exit и logout?
CC-BY-CA Анатольев А.Г., 08.06.2022