Базовые команды в Linux

Базовые команды в 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

 

Leave a Reply

Your email address will not be published. Required fields are marked *