Базовые команды в Linux
В операционной системе (ОС) на базе Linux большинство задач выполняются с помощью команд. В данном посте рассматриваются основные базовые команды, используемые в ОС на основе Linux. Будут рассмотрены следующие вопросы:
- Основные операции в ОС Linux
- Управление файлами
- Работа с текстом
- Управление процессами
- Окружение пользователя
- Просмотр документации
Основные операции в ОС Linux
pwd – печатает имя текущей рабочей директории (print working directory), то есть выводит на консоль текущее месторасположение в иерархии файловой системы ОС (абсолютную путь).
[rustam@dushanbe ~]$ pwd /home/rustam
сd – позволяет перейти из текущей директории (в Linux системах понятие директория равносильно понятию папка в ОС Windows) в указанную (change directory). Если запустить без параметров, то возвращает в домашнюю директорию пользователя – в /home/<username>. Аналогом может служить вызов команды cd вместе со знаком тильда (~). Вызов с двумя точками возвращает на уровень вверх относительно текущей директории. Вызов с тире (cd -) возвращает к предыдущей директории. Ниже приведены примеры команды cd с описанными опциями:
[rustam@dushanbe ~]$ cd /tmp [rustam@dushanbe tmp]$ pwd /tmp [rustam@dushanbe tmp]$ cd ~ [rustam@dushanbe ~]$ pwd /home/rustam [rustam@dushanbe ~]$ cd .. [rustam@dushanbe home]$ pwd /home
ls – утилита для просмотра содержимого директорий (list). По умолчанию показывает содержимое текущей директории. Если в параметрах указать путь, то она перечислит содержимое конечной директории. Часто используемые опции -l (List) и -a (All). Первая форматирует вывод в виде списка с более подробной информацией, а вторая включает показ скрытых файлов.
[rustam@dushanbe ~]$ ls exam_prep.txt file1 file2 pics [rustam@dushanbe ~]$ ls -la total 408 drwx------. 3 rustam rustam 4096 Feb 7 19:21 . drwxr-xr-x. 3 root root 19 Feb 7 16:39 .. -rw-r--r--. 1 rustam rustam 18 Jan 26 2018 .bash_logout -rw-r--r--. 1 rustam rustam 193 Jan 26 2018 .bash_profile -rw-r--r--. 1 rustam rustam 231 Jan 26 2018 .bashrc -rw-rw-r--. 1 rustam rustam 309869 Feb 7 19:20 exam_prep.txt -rw-rw-r--. 1 rustam rustam 3055 Feb 7 19:20 file1 -rw-rw-r--. 1 rustam rustam 79436 Feb 7 19:20 file2 -rw-------. 1 rustam rustam 46 Feb 7 19:07 .lesshst drwxrwxr-x. 2 rustam rustam 6 Feb 7 19:21 pics
cp – копирование файлов и директорий (copy). Она не копирует директории по умолчанию рекурсивно (то есть все поддиректории и все файлы в поддиректориях), поэтому не забудьте добавить опцию -r или -R (Recursive). Опция –i (interactive) запрашивает подтверждения перед перезаписью файла (если файл с таким именем существует в директории назначения), ключ –f (force) принудительное копирование без подтверждения.
[rustam@dushanbe ~]$ ls -l pics total 0 [rustam@dushanbe ~]$ cp file1 file2 exam_prep.txt pics/ [rustam@dushanbe ~]$ ls -l pics total 388 -rw-rw-r--. 1 rustam rustam 309869 Feb 7 19:26 exam_prep.txt -rw-rw-r--. 1 rustam rustam 3055 Feb 7 19:26 file1 -rw-rw-r--. 1 rustam rustam 79436 Feb 7 19:26 file2
Далее копируем все файлы из директории /home/rustam/1 в /home/rustam/2 с расширением txt.
[rustam@dushanbe ~]$ cp /home/rustam/1/*.txt /home/rustam/2/
Во время использования опции -i система запросить подтвердить копирование файла. Если в директории назначения существует файл с таким именем, то для продолжения копирования с заменой файла необходимо нажать yes или y:
[rustam@dushanbe ~]$ cp -i /home/rustam/file1 2/ [rustam@dushanbe ~]$ cp -i /home/rustam/file1 2/ cp: overwrite ‘2/file1’? y
mv – перемещение или переименование файлов и директорий (move). Примечательно, что в Linux это одна и та же операция. Переименование – это перемещение файла в ту же директорию с другим именем.
[rustam@dushanbe pics]$ mv file1 super_file [rustam@dushanbe pics]$ ls -l total 388 -rw-rw-r--. 1 rustam rustam 309869 Feb 7 19:26 exam_prep.txt -rw-rw-r--. 1 rustam rustam 79436 Feb 7 19:26 file2 -rw-rw-r--. 1 rustam rustam 3055 Feb 7 19:26 super_file [rustam@dushanbe pics]$ mv file2 /tmp/ [rustam@dushanbe /tmp]$ ls /tmp file2
rm – удаляет файлы и директории (remove). Если нужно рекурсивное удаление, используйте опцию -r. Еще одна часто используемая опция при удалении, помогающая удалить все файлы и директории, это -f (force). Действия оператора rm необратимы.
[rustam@dushanbe pics]$ rm super_file [rustam@dushanbe pics]$ ls -l total 304 -rw-rw-r--. 1 rustam rustam 309869 Feb 7 19:26 exam_prep.txt
Управление файлами
mkdir – создание новых директорий (make directory). Опция –p позволяет создавать каталог с подкаталогами.
[rustam@dushanbe ~]$ mkdir test_dir [rustam@dushanbe ~]$ mkdir -p dir1/dir2 [rustam@dushanbe ~]$ ls dir1/ dir2
rmdir – удаление директории (remove directory). Если директория не пустая – удалить ее можно будет используя команду rm с опцией –r.
[rustam@dushanbe ~]$ rmdir test_dir [rustam@dushanbe dir1]$ rmdir dir2 rmdir: failed to remove ‘dir2’: Directory not empty [rustam@dushanbe dir1]$ rm -r dir2
file – показывает тип файла. В Linux файлы не обязаны всегда иметь расширения для того, чтобы с ними работать. Поэтому пользователю иногда трудно определить, с каким файлом он работает. Данная утилита может решить эту задачу.
[rustam@dushanbe ~]$ file exam_prep.txt exam_prep.txt: UTF-8 Unicode text
ln – создает жёсткие или символические ссылки на файлы (link). Символические или программные ссылки (-s) – это что-то похожее на ярлыки в ОС Windows. Они предоставляют удобный способ доступа к определённому файлу. Символические ссылки указывают на файл, но не имеют никаких метаданных. Жёсткие ссылки, в отличие от символических, указывают на физический адрес области диска, где хранятся данные файла.
[rustam@dushanbe ~]$ ln -s dir1/dir2/somefile.txt [rustam@dushanbe ~]$ ls -l somefile.txt lrwxrwxrwx. 1 rustam rustam 22 Feb 7 19:49 somefile.txt -> dir1/dir2/somefile.txt
touch – создает пустой файл.
[rustam@dushanbe ~]$ touch empty_file [rustam@dushanbe ~]$ ls -l empty_file -rw-rw-r--. 1 rustam rustam 0 Feb 7 19:51 empty_file
chmod – изменяет права доступа к файлу (change mode). Это чтение, запись и выполнение. Каждый пользователь может изменять права для своих файлов. Эта команда будет рассмотрена подробнее в последующих постах.
chown – изменяет владельца файла (change owner). Только привилегированные пользователи могут изменять владельцев. Эта команда будет рассмотрена подробнее в последующих постах.
echo – выводит строку текста на консоль ОС.
[rustam@dushanbe ~]$ echo Hello, students! Hello, students!
find – поиск по всей файловой системе – файлах и директориях. Общий синтаксис команды выглядит следующим образом:
команда find, затем, где осуществлять поиск и по какому атрибуту. В примере ниже, мы ищем в текущей директории и всех поддиректориях файл с названием “empty_file”.
[rustam@dushanbe ~]$ find . -name "empty_file"
Работа с текстом
cat – печатает содержимое файла, переданного в параметре, на стандартный вывод\консоль (concatenate). Если передать несколько файлов, команда склеит их.
[rustam@dushanbe dir2]$ cat somefile.txt HELLO [rustam@dushanbe dir2]$ cat somefile_2.txt WORLD [rustam@dushanbe dir2]$ cat somefile.txt somefile_2.txt HELLO WORLD
less – команда позволяет просматривать текстовые файлы, перемещаясь как вперёд так и назад (существует устаревшая альтернатива more, которая перемещение назад не поддерживает). В примере ниже файл big_file.txt содержит большое количество текста. Для удобного просмотра содержимого данного файла мы и используем команду less.
[rustam@dushanbe ~]$ less big_file.txt
tail и head – по умолчанию выводят последние и первые 10 строк файла соответственно. Это можно изменить с помощью опции -n. Ещё один полезный параметр -f, это сокращение от follow (следовать). Утилита постоянно выводит изменения в файле на экран. Например, если вы хотите следить за лог файлом, вместо того, чтобы постоянно открывать и закрывать его, используйте команду tail -f. В примере ниже файл not_empty_file содержит записи строк от line 1 до line 20. Чтобы просмотреть первый и последние 3 строки в данном файле используем команды head и tail соответственно.
[rustam@dushanbe ~]$ head -n 3 not_empty_file line 1 line 2 line 3 [rustam@dushanbe ~]$ tail -n 3 not_empty_file line 18 line 19 line 20
grep – поиск текста по шаблону в файле или на стандартном вводе\консоле (search globally for lines matching the regular expression, and print them). Общий синтаксис команды выглядит следующим образом – команда grep, затем что ищем (может быть строка, часть строки, буквы и т.д.) и в каком файле. В примере ниже мы ищем строку “line 13” в уже упомянутом файле not_empty_file.
[rustam@dushanbe ~]$ grep "line 13" not_empty_file line 13
Для работы с содержимым текстовых файлов используются текстовые редакторы. Самые распространённые редакторы в Linux дистрибутивах nano и vim.
Управление процессами
ps – выводит информацию о запущенных процессах (process status). Это только снимок состояния на момент вызова, и информация не будет обновляться. Команда ps с опциями -aux выводит полную информацию о процессах.
[rustam@dushanbe ~]$ ps PID TTY TIME CMD 8892 pts/0 00:00:00 bash 9231 pts/0 00:00:00 ps [rustam@dushanbe ~]$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.8 128324 8472 ? Ss 16:43 0:01 /usr/lib/systemd/systemd --swit root 2 0.0 0.0 0 0 ? S 16:43 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 16:43 0:00 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S< 16:43 0:00 [kworker/0:0H] root 6 0.0 0.0 0 0 ? S 16:43 0:00 [kworker/u4:0] root 7 0.0 0.0 0 0 ? S 16:43 0:01 [rcu_sched] root 8 0.0 0.0 0 0 ? S 16:43 0:00 [rcu_bh] root 9 0.0 0.0 0 0 ? S 16:43 0:01 [rcuos/0] root 10 0.0 0.0 0 0 ? S 16:43 0:00 [rcuob/0] root 11 0.0 0.0 0 0 ? S 16:43 0:00 [migration/0] root 12 0.0 0.0 0 0 ? S 16:43 0:00 [watchdog/0] root 13 0.0 0.0 0 0 ? S 16:43 0:00 [watchdog/1]
Команда ps выводит много важной информации о процессах. Следует обратить внимание на параметр отображающийся в колонке PID (Process ID) Это идентификатор, который выдается процессу при его создании.
top – показывает динамически в режиме реального времени список процессов и базовую системную информацию (table of processes). Процессы можно сортировать по количеству потребляемой памяти, загрузке процессора и т.д.
[rustam@dushanbe ~]$ top
kill – посылает процессу различные сигналы. Каждый сигнал, для удобства, обладает своим кодом. Примерами сигналов могут быть сигнал на завершение (9), на остановку (23), остановку (20) и др. Все сигналы можно просмотреть командой kill –l. В примере ниже, мы отправим сигнал на завершение процессу с PID 1002.
[rustam@dushanbe ~]$ kill -9 1002
free – показывает количество общей, используемой и свободной памяти в системе. Опция –h используется для отображения значений в читаемом виде.
[rustam@dushanbe ~]$ free -h total used free shared buff/cache available Mem: 990M 114M 703M 7.1M 173M 721M Swap: 1.5G 0B 1.5G
Окружение пользователя
id – выводит ID пользователя и ID его групп(ы) (uid и gid).
[rustam@dushanbe ~]$ id uid=1000(rustam) gid=1000(rustam) groups=1000(rustam) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
who – показывает имена активных пользователей, находящихся на данный момент в системе.
[rustam@dushanbe ~]$ who root tty1 2019-02-07 16:43 root pts/0 2019-02-07 16:46 (192.168.1.119)
groups – выводит список групп в которых состоит пользователь. В нашем примере пользователь rustam находится в группе rustam, что мы и видим на выводе команды.
[rustam@dushanbe ~]$ groups rustam
su – сменить пользователя (switch user). Для смены не только пользователя, но и всего пользовательского окружения\настроек, используем su – . Эта команда будет рассмотрена подробнее в последующих постах.
sudo – выполняет команду от имени привилегированного пользователя (super user do). Эта команда будет рассмотрена подробнее в последующих постах.
df – анализатор дискового пространства (disk free). По умолчанию вывод достаточно подробный: перечислены все файловые системы, их размер, количество использованного и свободного пространства. Для удобства есть опция -h, делающая размеры легко читаемыми.
[rustam@dushanbe ~]$ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 476M 0 476M 0% /dev tmpfs 496M 0 496M 0% /dev/shm tmpfs 496M 7.1M 489M 2% /run tmpfs 496M 0 496M 0% /sys/fs/cgroup /dev/mapper/ol-root 13G 1.2G 12G 10% / /dev/sda1 1014M 159M 856M 16% /boot tmpfs 100M 0 100M 0% /run/user/0
date – выводит дату.
[rustam@dushanbe ~]$ date Thu Feb 7 20:15:12 +05 2019
hostname – выводит имя хоста (имя компьютера), указанное в момент установки ОС. Название имени хоста можно изменить также и после завершения установки ОС.
[rustam@dushanbe ~]$ hostname dushanbe
uptime – показывает текущее время, время работы после старта ОС, а также количество пользователей и среднюю загрузку процессора за 1, 5 и 15 минут.
[rustam@dushanbe ~]$ uptime 16:12:36 up 45 min, 2 users, load average: 0.00, 0.01, 0.05
uname – выводит основную информацию о системе. Без параметров она покажет название ядра – Linux, если задать параметр -a (All), можно получить информацию о ядре, имени хоста, дате релиза ядра и узнать архитектуру процессора.
[rustam@dushanbe ~]$ uname -a Linux dushanbe 4.1.12-112.16.4.el7uek.x86_64 #2 SMP Mon Mar 12 23:57:12 PDT 2018 x86_64 x86_64 x86_64 GNU/Linux
Управление пользователями
useradd, usermod, userdel – Команды для добавления, изменения и удаления пользователей в системе. Эти команды будут рассмотрены подробнее в последующих постах.
passwd – эта команда позволяет изменить пароль учетной записи пользователя (password). Эта команда будет рассмотрена подробнее в последующих постах.
Просмотр документации
man – команда man открывает руководство по определённой команде (manual). Для всех основных команд Linux есть man страницы. Например, ниже открывается документация по команде cp.
[rustam@dushanbe ~]$ man cp
info – открывает руководство о командах в гипертекстовом формате.
[rustam@dushanbe ~]$ info cp