Работа с командной строкой в Red Hat Enterprise Linux

LinuxBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы совершите первое знакомство с основами работы в командной строке Linux, в частности в среде Red Hat Enterprise Linux (RHEL). Вы получите практический опыт использования базовых команд для получения информации о пользователе и системе, управления паролями пользователей и проверки различных типов файлов.

С помощью практических упражнений вы научитесь просматривать содержимое файлов с помощью cat, head и tail, подсчитывать статистику файлов и эффективно перемещаться по истории команд. Кроме того, вы освоите важнейшие сочетания клавиш для редактирования в командной строке, что повысит вашу продуктивность и уверенность при управлении системами Linux.

Определение пользователя и системного времени

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

Сначала давайте узнаем, под каким именем пользователя вы сейчас вошли в систему. Для этого используется команда whoami. Она выводит эффективное имя текущего пользователя.

Введите следующую команду в терминале:

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

Скриншот вывода команд whoami и date

Управление паролями пользователей и просмотр типов файлов

На этом этапе вы научитесь менять пароль пользователя и определять тип файла с помощью команды 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. Текст от курсора до начала строки будет удален.
  • Ctrl+K: Очистка текста от текущего положения курсора до конца командной строки.
    • Введите команду снова. Поместите курсор где-нибудь в середину строки (например, после слова "very"). Нажмите Ctrl+K. Текст от курсора до конца строки будет удален.
  • Ctrl+СтрелкаВлево (или Alt+B): Переход к началу предыдущего слова в командной строке.
    • Введите команду снова. Поместите курсор в конец строки. Нажимайте Ctrl+СтрелкаВлево несколько кураз, чтобы перемещаться по словам влево.
  • Ctrl+СтрелкаВправо (или Alt+F): Переход к концу следующего слова в командной строке.
    • Поместите курсор в начало строки. Нажимайте Ctrl+СтрелкаВправо несколько раз, чтобы перемещаться по словам вправо.
  • Ctrl+R: Поиск шаблона в истории команд.
    • Нажмите Ctrl+R. Появится приглашение (reverse-i-search). Начните вводить часть команды, которую вы выполняли ранее, например date. Терминал покажет наиболее подходящую недавнюю команду из истории. Продолжайте нажимать Ctrl+R, чтобы перебирать более старые совпадения. Нажмите Enter, чтобы выполнить найденную команду, или стрелки влево/вправо, чтобы отредактировать ее.

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

Резюме

В этой лабораторной работе вы изучили фундаментальные команды Linux для получения информации о пользователе и системе. Вы попрактиковались в использовании команды whoami для определения текущего вошедшего в систему пользователя и команды date для отображения текущей даты и времени системы, включая различные параметры форматирования, такие как +%R для времени и +%x для даты. Кроме того, вы узнали, как выполнять несколько команд в одной строке с помощью точки с запятой, что повышает эффективность работы в командной строке.