Учебно-методические материалы для студентов кафедры АСОИУ

ПР 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"

Задания

  1. Выполнить вход в систему в текстовом режиме.
  2. Ознакомиться с возможностями встроенной справочной системы man (man man) и командами apropos и whatis.
  3. Получить справочную информацию о командах bash, help, type, clear, cat, more, less, echo, touch, sort, tail, head, mcedit, nano, uname, apt, cowsay, exit, logout, shutdown. Следует иметь ввиду, что команды могут иметь справку в нескольких разделах справочной системы или наоборот, отсутствовать, если пакет, содержащий программу/команду, не установлен.
  4. Очистить экран, вывести содержимое файла /etc/os-release.
  5. Вывести на экран файл /etc/services. Использовать постраничную разбивку с помощью подходящей команды.
  6. Записать информацию из файлов /etc/os-release, /etc/astra_version, /etc/debian_version и всю информацию, представляемую командой uname, в файл about.system.
  7. Открыть новую консоль и авторизоваться. С помощью редакторов mcedit или nano или команды touch создать файл hello.txt, содержащий текст «Hello». Сохранить изменения, закрыть файл и выйти из редактора.
  8. Вернуться в первую консоль, используя cat или echo, дописать в файл hello.txt строку «World!» и вывести на экран содержимое этого файла.
  9. Создать пустой файл с именем chat.
  10. Открыть еще одну, третью, консоль, запустить там команду tail -f chat и вернуться в первую консоль.
  11. Выполнить следующую команду: echo "$USER@TTY1: Hello all!" >> chat, переключиться во вторую консоль.
  12. Выполнить следующую команду: echo "$USER@TTY2: Hi there!" >> chat, переключиться в первую консоль.
  13. Повторить задания 10 и 11 еще 2–3 раза, изменяя строки в команде echo.
  14. Переключиться в третью консоль, завершить выполнение ранее запущенной команды и завершить сеанс.
  15. Завершить сеанс во второй консоли.
  16. Ответить на контрольные вопросы.
  17. Выключить компьютер командой shutdown (/sbin/shutdown).

Контрольные вопросы

  1. Перечислите справочные разделы, имеющиеся в руководстве man.
  2. Какие параметры нужно указать в команде man, чтобы получить результаты, эквивалентные выполнению команд apropos и whatis соответственно?
  3. Какая из перечисленных в задании № 3 команд обладает собственным встроенным набором команд?
  4. Как можно (если можно) использовать команду echo для вывода сообщения в несколько строк?
  5. Какая из команд, more или less, представляет больше возможностей и в чем они выражаются?
  6. Как связаны команда apt и коровы?
  7. Что произойдет после выполнения команды touch somefile.txt?
  8. Объясните, как работает указанная команда:
    touch file.txt && echo "Some string" > file.txt && cat file.txt
  9. Объясните, как работает указанная команда:
    echo -e "b\nd\nc\na\nd\ c" >> file.txt && sort -u < file.txt
  10. В чем отличия команд exit и logout?

CC-BY-CA Анатольев А.Г., 08.06.2022