Введение
В этой лабораторной работе вы совершите первое знакомство с основами работы в командной строке Linux, в частности в среде Red Hat Enterprise Linux (RHEL). Вы получите практический опыт использования базовых команд для получения информации о пользователе и системе, управления паролями пользователей и проверки различных типов файлов.
С помощью практических упражнений вы научитесь просматривать содержимое файлов с помощью cat, head и tail, подсчитывать статистику файлов и эффективно перемещаться по истории команд. Кроме того, вы освоите важнейшие сочетания клавиш для редактирования в командной строке, что повысит вашу продуктивность и уверенность при управлении системами Linux.
Определение пользователя и системного времени
На этом этапе вы научитесь определять текущего пользователя, вошедшего в систему, а также отображать текущую дату и время системы с помощью базовых команд Linux. Понимание этих фундаментальных команд имеет решающее значение для работы и администрирования любой среды Linux.
Сначала давайте узнаем, под каким именем пользователя вы сейчас вошли в систему. Для этого используется команда whoami. Она выводит эффективное имя текущего пользователя.
Введите следующую команду в терминале:
whoami

В качестве результата вы должны увидеть labex, что означает, что вы вошли в систему как пользователь labex.
labex
Далее мы рассмотрим команду date. Эта команда используется для отображения или установки даты и времени системы. Если использовать ее без каких-либо параметров, она выводит текущую дату и время в формате по умолчанию.
Выполните команду date:
date
В выводе будут показаны текущий день недели, месяц, число месяца, время (ЧЧ:ММ:СС), часовой пояс и год. Точный вывод будет зависеть от того, когда вы запустите команду.
Mon Jul 22 10:30:45 AM UTC 2024
Команда date очень гибкая и позволяет форматировать вывод различными способами с помощью спецификаторов формата. Например, чтобы отобразить только текущее время в 24-часовом формате (ЧЧ:ММ), вы можете использовать +%R.
Попробуйте вывести только время:
date +%R
Вывод будет выглядеть примерно так:
10:30
Чтобы отобразить только текущую дату в формате ММ/ДД/ГГГГ, вы можете использовать +%x.
Попробуйте вывести только дату:
date +%x
Вывод будет выглядеть примерно так:
07/22/2024
Наконец, вы можете выполнять несколько команд в одной строке, разделяя их точкой с запятой (;). Это может быть полезно для быстрого запуска последовательности команд.
Давайте попробуем запустить whoami и date в одной строке:
whoami; date
Вы увидите вывод обеих команд, одну за другой:
labex
Mon Jul 22 10:30:45 AM UTC 2024

Управление паролями пользователей и просмотр типов файлов
На этом этапе вы научитесь менять пароль пользователя и определять тип файла с помощью команды file. Понимание типов файлов крайне важно при работе с различными форматами данных и исполняемыми файлами в Linux.
Сначала давайте посмотрим, как начинается процедура смены пароля, не меняя при этом стандартный пароль для данной лабораторной работы. Команда passwd используется для смены паролей пользователей. Для пользователя labex она запрашивает текущий пароль, а затем новый пароль. Текущий пароль — labex.
Введите следующую команду в терминале:
passwd
В ответ на запрос текущего пароля введите labex и нажмите Enter. Когда появится запрос нового пароля, нажмите Ctrl+C, чтобы отменить команду и вернуться в оболочку. Не вводите новый пароль.
Changing password for user labex.
Current password:
New password: ^C
Примечание: Когда вы вводите пароли в Linux, в целях безопасности на экране ничего не отображается. Это нормальное поведение, и оно не означает, что виртуальная машина не отвечает. Система продолжает принимать ваш ввод, даже если вы не видите вводимых символов.
Далее мы рассмотрим команду file. Эта команда определяет тип файла. Она очень полезна для понимания того, какие данные содержатся в файле, особенно если расширение файла отсутствует или вводит в заблуждение.
Давайте проверим тип файла /etc/passwd. Этот файл содержит информацию обо всех учетных записях пользователей в системе.
file /etc/passwd
В выводе будет указано, что /etc/passwd — это текстовый файл ASCII.
/etc/passwd: ASCII text
Теперь давайте проверим тип исполняемого файла, например /bin/bash, который представляет собой программу оболочки (shell), используемую вами в данный момент.
file /bin/bash
Вывод покажет, что /bin/bash является исполняемым файлом, а также предоставит информацию об архитектуре и других свойствах.
/bin/bash: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=<omitted>, for GNU/Linux <omitted>, stripped
Наконец, давайте определим тип каталога. В качестве примера мы будем использовать каталог /home.
file /home
Вывод просто укажет, что /home является каталогом (directory).
/home: directory
Эти примеры демонстрируют, как команда file может помочь вам быстро идентифицировать природу различных файлов и каталогов в вашей системе Linux.
Просмотр содержимого файлов с помощью cat, head и tail
На этом этапе вы научитесь просматривать содержимое текстовых файлов с помощью трех основных команд Linux: cat, head и tail. Эти команды являются фундаментальными для просмотра содержимого файлов, особенно файлов конфигурации и логов.
Сначала давайте воспользуемся командой cat. Команда cat (сокращение от concatenate — объединить) в первую очередь используется для вывода содержимого файлов на экран. Ее также можно использовать для объединения нескольких файлов в один.
Давайте посмотрим все содержимое файла /etc/passwd. Этот файл содержит информацию об учетных записях пользователей.
cat /etc/passwd
Вы увидите полное содержимое файла /etc/passwd, выведенное в терминал. Вывод будет большим и покажет все записи пользователей.
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
...output omitted...
Теперь давайте создадим два простых текстовых файла в каталоге ~/project, чтобы продемонстрировать работу cat с несколькими файлами.
Создадим file1.txt:
echo "Hello World!!" > ~/project/file1.txt
Создадим file2.txt:
echo "Introduction to Linux commands." > ~/project/file2.txt
Теперь используйте cat для отображения содержимого обоих файлов:
cat ~/project/file1.txt ~/project/file2.txt
В выводе сначала будет показано содержимое file1.txt, а затем file2.txt.
Hello World!!
Introduction to Linux commands.
Далее мы воспользуемся командой head. Команда head выводит первые несколько строк файла. По умолчанию она показывает первые 10 строк.
Давайте посмотрим первые 10 строк файла /etc/passwd:
head /etc/passwd
Вы увидите первые 10 строк файла /etc/passwd.
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
Вы можете указать количество строк для отображения с помощью опции -n. Например, чтобы посмотреть первые 3 строки:
head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
Наконец, давайте воспользуемся командой tail. Команда tail выводит последние несколько строк файла. По умолчанию она также показывает последние 10 строк.
Давайте посмотрим последние 10 строк файла /etc/passwd:
tail /etc/passwd
Вы увидите последние 10 строк файла /etc/passwd.
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:998:996:systemd Resolver:/:/sbin/nologin
systemd-network:x:997:995:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System Message Bus:/:/sbin/nologin
polkitd:x:996:994:User for polkitd:/:/sbin/nologin
unbound:x:995:993:Unbound DNS resolver:/:/sbin/nologin
tss:x:59:59:TPM software stack:/:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:980:978::/run/gnome-initial-setup/:/sbin/nologin
dnsmasq:x:979:977:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin
Аналогично head, вы можете указать количество строк для отображения с помощью опции -n. Например, чтобы посмотреть последние 3 строки:
tail -n 3 /etc/passwd
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:980:978::/run/gnome-initial-setup/:/sbin/nologin
dnsmasq:x:979:977:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin
Эти команды неоценимы для быстрого ознакомления с содержимым файлов без их открытия в текстовом редакторе, что особенно полезно для больших файлов или когда вам нужно проверить только определенные части.
Подсчет статистики файлов и использование истории команд
На этом этапе вы научитесь использовать команду wc для подсчета строк, слов и символов в файлах, а также узнаете, как эффективно использовать функцию истории команд в терминале. Управление историей команд имеет решающее значение для повышения эффективности и быстрого вызова ранее выполненных команд.
Сначала давайте рассмотрим команду wc (подсчет слов — word count). Эта команда используется для подсчета количества строк, слов и символов в файле.
Давайте посчитаем строки, слова и символы в файле /etc/passwd:
wc /etc/passwd
В выводе будут показаны три числа, за которыми следует имя файла: количество строк, слов и символов. Точные числа могут немного отличаться в зависимости от конфигурации вашей системы.
41 98 2338 /etc/passwd
Вы можете использовать параметры, чтобы отображать только определенные показатели:
-lдля строк (lines)-wдля слов (words)-cдля символов (characters)
Давайте посчитаем только количество строк в /etc/passwd и /etc/group (который содержит информацию о группах пользователей). Мы можем сделать это в одной строке, используя точку с запятой.
wc -l /etc/passwd
wc -l /etc/group
Вы увидите количество строк для каждого файла:
41 /etc/passwd
63 /etc/group
Теперь давайте посчитаем только символы в /etc/group и /etc/hosts (в котором сопоставляются имена хостов и IP-адреса).
wc -c /etc/group /etc/hosts
Вывод покажет количество символов для каждого файла и общую сумму (total).
883 /etc/group
114 /etc/hosts
997 total
Далее мы познакомимся с историей команд. Ваша оболочка ведет учет всех выполненных вами команд. Это невероятно удобно для повторного запуска команд или восстановления хода ваших прошлых действий.
Чтобы вывести историю команд, используйте команду history:
history
Вы увидите пронумерованный список всех команд, которые вы вводили в текущей и предыдущих сессиях. Вывод будет сильно различаться в зависимости от вашей активности.
...output omitted...
23 clear
24 whoami
25 date
26 file /etc/passwd
27 cat /etc/passwd
28 head /etc/passwd
29 tail /etc/passwd
30 wc /etc/passwd
31 history
Вы можете повторно выполнить команду из истории, используя восклицательный знак (!), за которым следует номер команды или строка поиска.
Например, чтобы повторно выполнить команду под номером 26 (в примере выше это была file /etc/passwd, но у вас номер может отличаться), найдите ее номер в выводе history и используйте его:
!26 ## Замените 26 на актуальный номер команды 'file /etc/passwd' из вашей истории
Оболочка сначала отобразит команду, которую собирается выполнить, а затем ее результат:
file /etc/passwd
/etc/passwd: ASCII text
Вы также можете повторно запустить самую последнюю команду, начинающуюся с определенной строки. Например, чтобы перезапустить последнюю команду, начинающуюся с wc:
!wc
Это выполнит последнюю запущенную вами команду wc.
wc -c /etc/group /etc/hosts
883 /etc/group
114 /etc/hosts
997 total
Эти функции работы с историей могут значительно ускорить ваш рабочий процесс, позволяя быстро находить и заново выполнять сложные команды без необходимости вводить их повторно.
Практика использования горячих клавиш редактирования в командной строке
На этом этапе вы изучите и отработаете полезные сочетания клавиш для редактирования командной строки. Эти клавиши могут значительно повысить вашу эффективность при вводе и изменении команд в терминале, позволяя перемещаться по тексту и редактировать его, не тянусь постоянно за мышей.
Сначала давайте разберемся, как записать длинную команду на нескольких строках. Это может улучшить читаемость сложных команд. Вы можете использовать обратный слэш (\) в конце строки, чтобы указать, что команда продолжается на следующей строке.
Давайте попробуем вывести первые 3 строки двух файлов словарей с помощью многострочной команды. Эти файлы обычно присутствуют в системах Linux и содержат списки слов.
head -n 3 \
/home/labex/project/words \
/home/labex/project/linux.words
Когда вы нажмете Enter после первой строки, ваш терминал отобразит приглашение > (или аналогичное), указывая, что он ждет продолжения команды. Введите оставшуюся часть и снова нажмите Enter.
==> /home/labex/project/words <==
1080
10-point
10th
==> /home/labex/project/linux.words <==
1080
10-point
10th
Теперь давайте попрактикуемся в использовании сочетаний клавиш для редактирования командной строки. Эти комбинации работают в большинстве современных терминалов Linux (таких как Bash или Зsh).
Введите длинную команду, но пока не нажимайте Enter:
echo "This is a very long command that we will edit using shortcuts."
- Ctrl+A: Переход в начало командной строки.
- Введите указанную выше команду, затем нажмите
Ctrl+A. Ваш курсор переместится в начало строки.
- Введите указанную выше команду, затем нажмите
- Ctrl+E: Переход в конец командной строки.
- После нажатия
Ctrl+AнажмитеCtrl+E. Курсор переместится обратно в конец строки.
- После нажатия
- Ctrl+U: Очистка текста от текущего положения курсора до начала командной строки.
- Введите команду снова. Поместите курсор где-нибудь в середину строки (например, после слова "very"). Нажмите
Ctrl+U. Текст от курсора до начала строки будет удален.
- Введите команду снова. Поместите курсор где-нибудь в середину строки (например, после слова "very"). Нажмите
- Ctrl+K: Очистка текста от текущего положения курсора до конца командной строки.
- Введите команду снова. Поместите курсор где-нибудь в середину строки (например, после слова "very"). Нажмите
Ctrl+K. Текст от курсора до конца строки будет удален.
- Введите команду снова. Поместите курсор где-нибудь в середину строки (например, после слова "very"). Нажмите
- Ctrl+СтрелкаВлево (или Alt+B): Переход к началу предыдущего слова в командной строке.
- Введите команду снова. Поместите курсор в конец строки. Нажимайте
Ctrl+СтрелкаВлевонесколько кураз, чтобы перемещаться по словам влево.
- Введите команду снова. Поместите курсор в конец строки. Нажимайте
- Ctrl+СтрелкаВправо (или Alt+F): Переход к концу следующего слова в командной строке.
- Поместите курсор в начало строки. Нажимайте
Ctrl+СтрелкаВправонесколько раз, чтобы перемещаться по словам вправо.
- Поместите курсор в начало строки. Нажимайте
- Ctrl+R: Поиск шаблона в истории команд.
- Нажмите
Ctrl+R. Появится приглашение(reverse-i-search). Начните вводить часть команды, которую вы выполняли ранее, напримерdate. Терминал покажет наиболее подходящую недавнюю команду из истории. Продолжайте нажиматьCtrl+R, чтобы перебирать более старые совпадения. Нажмите Enter, чтобы выполнить найденную команду, или стрелки влево/вправо, чтобы отредактировать ее.
- Нажмите
Эти сочетания клавиш значительно ускорят вашу работу с командной строкой, как только вы к ним привыкнете. Регулярно практикуйте их, чтобы выработать мышечную память.
Резюме
В этой лабораторной работе вы изучили фундаментальные команды Linux для получения информации о пользователе и системе. Вы попрактиковались в использовании команды whoami для определения текущего вошедшего в систему пользователя и команды date для отображения текущей даты и времени системы, включая различные параметры форматирования, такие как +%R для времени и +%x для даты. Кроме того, вы узнали, как выполнять несколько команд в одной строке с помощью точки с запятой, что повышает эффективность работы в командной строке.



