1444 lines
79 KiB
Markdown
1444 lines
79 KiB
Markdown
|
### Материал для подготовки к RHCSA
|
|||
|
|
|||
|
#### ls
|
|||
|
`ls` - list, просмотр содержимого каталогов
|
|||
|
```
|
|||
|
ls опции /путь/к/папке
|
|||
|
```
|
|||
|
-l - выводить подробный список, в котором будет отображаться владелец, группа, дата создания, размер и другие параметры;
|
|||
|
-a - отображать все файлы, включая скрытые, это те, перед именем которых стоит точка;
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ ls -l
|
|||
|
total 4
|
|||
|
-rw-rw-r--. 2 da2001 da2001 0 May 24 09:59 connectedfile
|
|||
|
lrwxrwxrwx. 1 da2001 da2001 10 May 24 09:59 hosts -> /etc/hosts
|
|||
|
-rw-rw-r--. 2 da2001 da2001 0 May 24 09:59 newfile
|
|||
|
drwxrwxr-x. 2 da2001 da2001 6 May 24 08:57 oldfiles
|
|||
|
lrwxrwxrwx. 1 da2001 da2001 11 May 24 09:58 passwd -> /etc/passwd
|
|||
|
-rw-rw-r--. 1 da2001 da2001 0 May 24 08:55 unhidden
|
|||
|
drwxr-xr-x. 2 da2001 da2001 6 May 16 09:17 Видео
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### cat / tac
|
|||
|
`cat` - catenate, вывод содержимого файла
|
|||
|
`tac` - вывод содержимого файла с обратной сортировкой строк
|
|||
|
```
|
|||
|
cat опции файл1 файл2 ...
|
|||
|
```
|
|||
|
-b - нумеровать только непустые строки;
|
|||
|
-E - показывать символ $ в конце каждой строки;
|
|||
|
-n - нумеровать все строки;
|
|||
|
-s - удалять пустые повторяющиеся строки;
|
|||
|
-T - отображать табуляции в виде ^I.
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ cat welcome
|
|||
|
Добро пожаловать в Linux!
|
|||
|
Развивайтесь.
|
|||
|
```
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ tac welcome
|
|||
|
Развивайтесь.
|
|||
|
Добро пожаловать в Linux!
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### cd
|
|||
|
`cd` - change directory, смена рабочей директории
|
|||
|
```
|
|||
|
cd опции папка_назначения
|
|||
|
```
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ cd /var/log
|
|||
|
[da2001@co1 log]$
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### chmod
|
|||
|
`chmod` - change mode, изменение прав доступа к файлу/папке
|
|||
|
```
|
|||
|
chmod опции права /путь/к/файлу
|
|||
|
```
|
|||
|
**Три варианта записи прав пользователя**
|
|||
|
```
|
|||
|
двоичная восьмеричная символьная права на файл права на каталог
|
|||
|
000 0 --- нет нет
|
|||
|
001 1 --x выполнение чтение файлов и их свойств
|
|||
|
010 2 -w- запись нет
|
|||
|
011 3 -wx запись и выполнение всё, кроме чтения списка файлов
|
|||
|
100 4 r-- чтение чтение имён файлов
|
|||
|
101 5 r-x чтение и выполнение доступ на чтение
|
|||
|
110 6 rw- чтение и запись чтение имён файлов
|
|||
|
111 7 rwx все права все права
|
|||
|
```
|
|||
|
```
|
|||
|
Reference Class Описание
|
|||
|
u user Владелец файла
|
|||
|
g group Пользователи, входящие в группу владельца файла
|
|||
|
o others Остальные пользователи
|
|||
|
a all Все пользователи (или ugo)
|
|||
|
```
|
|||
|
```
|
|||
|
Operator Описание
|
|||
|
+ добавить определённые права
|
|||
|
- удалить определённые права
|
|||
|
= установить определённые права
|
|||
|
```
|
|||
|
```
|
|||
|
Mode Name Описание
|
|||
|
r read чтение файла или содержимого каталога
|
|||
|
w write запись в файл или в каталог
|
|||
|
x execute выполнение файла или чтение содержимого каталога
|
|||
|
X special execute выполнение, если файл является каталогом или уже имеет право на выполнение для какого-нибудь пользователя
|
|||
|
s setuid/gid установленные атрибуты SUID или SGID позволяют запускать файл на выполнение с правами владельца файла или группы соответственно
|
|||
|
t sticky устанавливая t-бит на каталог, мы меняем это правило таким образом, что удалить файл может только владелец этого файла
|
|||
|
```
|
|||
|
|
|||
|
Разрешение | Применяется к файлам | Применяется к каталогам
|
|||
|
---------- | -------------------------- | -----------------------
|
|||
|
Read | Открыть файл | Просмотр содержимого каталога
|
|||
|
Write | Изменить содержимое файла | Создавать и удалять файлы
|
|||
|
Execute | Выполнить программный файл | Перейти в каталог
|
|||
|
|
|||
|
Разрешение | Числовое представление
|
|||
|
---------- | :---------------------:
|
|||
|
Read | 4
|
|||
|
Write | 2
|
|||
|
Execute | 1
|
|||
|
|
|||
|
**Примеры**
|
|||
|
Установить права «rwxr-rx-x» (0755) для файла:
|
|||
|
`chmod u=rwx,g=rx,o=x filename`
|
|||
|
|
|||
|
Установить права на выполнение для владельца файла, удалить права на выполнение у группы, удалить права на запись и выполнение у остальных пользователей:
|
|||
|
`chmod u+x,g-x,o-wx filename`
|
|||
|
|
|||
|
Установить рекурсивно права на чтение для всех пользователей:
|
|||
|
`chmod -R a+r directory`
|
|||
|
|
|||
|
Рекурсивно удалить атрибуты SUID и SGID:
|
|||
|
`chmod -R u-s,g-s directory`
|
|||
|
|
|||
|
**Особенности**
|
|||
|
Значениями по умолчанию являются:
|
|||
|
для файлов: `644 (-rw-r--r--)`
|
|||
|
для каталогов: `755 (drwxr-xr-x)`
|
|||
|
_Значения разные для файлов и каталогов потому, что флаг «выполнения» по-разному действует на файлы и каталоги. Для обычных файлов «выполнение» означает открытие файлов, для исполняемых файлов — их запуск, а для каталогов — просмотр содержимого._
|
|||
|
|
|||
|
Следующая команда выполнит рекурсивное применение правил для всех файлов в каталоге «/home/test», а также для всех файлов во всех подкаталогах:
|
|||
|
```bash
|
|||
|
find /home/test -type f -exec chmod 644 {} \;
|
|||
|
```
|
|||
|
Следующая команда выполнит рекурсивное применение правил для всех каталогов в каталоге «/home/test», а также для всех каталогов во всех подкаталогах:
|
|||
|
```bash
|
|||
|
find /home/test -type d -exec chmod 755 {} \;
|
|||
|
```
|
|||
|
Того же результата можно добиться и без использования find (обратите внимание на заглавную X):
|
|||
|
```bash
|
|||
|
chmod -R go=rX,u=rwX /home/test
|
|||
|
```
|
|||
|
Установить для file1 разрешения аналогичные file2
|
|||
|
```bash
|
|||
|
chmod --reference file1 file2
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### SUID, SGID и Sticky Bit
|
|||
|
Разрешение | Числовое значение | Относительное значение | Применительно к файлам | Применительно к каталогам
|
|||
|
---------- | :---------------: | :--------------------: | ---------------------- | -------------------------
|
|||
|
SUID | 4 | u+s | пользователь запускает файл с разрешениями владельца файла | не имеет смысла
|
|||
|
SGID | 2 | g+s | пользователь запускает файл с разрешениями владельца группы | Файлы, созданные в каталоге, получают одного и того же владельца группы
|
|||
|
Sticky bit | 1 | +t | не имеет смысла | запрещает пользователям удалять файлы других пользователей, даже если есть права на запись
|
|||
|
|
|||
|
Установка SGID для каталога sales (группа sales) позволит создавать все новые файлы, группой которых будет группа sales, а назначение Sticky Bit запретит пользователям удалять файлы, созданные другими пользователями, даже если есть права на запись
|
|||
|
```bash
|
|||
|
chmod g+s,o+t /data/sales
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### chown
|
|||
|
`chown` - change owner, утилита, изменяющая владельца и/или группу для указанных файлов.
|
|||
|
```
|
|||
|
chown [-cfhvR] [--dereference] [--reference=rfile] пользователь[:группа] файл…
|
|||
|
```
|
|||
|
-c, --changes Подробно описывать действие для каждого файла, владелец которого действительно изменяется.
|
|||
|
-f, --silent, --quiet Не выдавать сообщения об ошибках для файлов, чей владелец не может быть изменён.
|
|||
|
-h, --no-dereference Работать с самими символьными ссылками, а не с файлами, на которые они указывают. Данная опция доступна, только если имеется системный вызов lchown.
|
|||
|
-R, --recursive Рекурсивное изменение владельца каталогов и их содержимого.
|
|||
|
-v, --verbose Подробное описание действия (или отсутствия действия) для каждого файла.
|
|||
|
--dereference Изменить владельца файла, на который указывает символьная ссылка, вместо самой символьной ссылки.
|
|||
|
--reference=rfile Изменить владельца файла на того, который является владельцем файла.
|
|||
|
|
|||
|
**Примеры использования**
|
|||
|
Изменить владельца (owner) для `/var/run/httpd.pid` на `root`
|
|||
|
```bash
|
|||
|
chown root /var/run/httpd.pid
|
|||
|
```
|
|||
|
Поменять владельца для `strace.log` в `rob` и идентификатор группы в `developers`
|
|||
|
```bash
|
|||
|
chown rob:developers strace.log
|
|||
|
```
|
|||
|
*разделителем также может быть точка*
|
|||
|
Поменять имя владельца для `/tmp` и `/var/tmp` на `nobody` + поменять группу для `/tmp` и `/var/tmp` на `nogroup`
|
|||
|
```bash
|
|||
|
chown nobody.nogroup /tmp /var/tmp
|
|||
|
```
|
|||
|
Поменять идентификатор группы на `newgroup` для `/home`
|
|||
|
```bash
|
|||
|
chown :newgroup /home
|
|||
|
```
|
|||
|
или
|
|||
|
```bash
|
|||
|
chown .newgroup /home
|
|||
|
```
|
|||
|
Поменять имя владельца для `base` на `us` и выполнить это рекурсивно, т.е. всех вложенных в каталог `base` файлов (-R).
|
|||
|
```bash
|
|||
|
chown -R us base
|
|||
|
```
|
|||
|
Поменять владельца для `noodlefrytasticy` на `mein`
|
|||
|
```bash
|
|||
|
chown mein noodlefrytasticy
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### newgrp
|
|||
|
`newgrp` - изменение основной группы пользователя в текущей сессии
|
|||
|
*при создании нового файла/каталога он создаётся от имени пользователя и основной группы этого пользоватля*
|
|||
|
```bash
|
|||
|
[da2001@co1 mydir]$ touch file
|
|||
|
[da2001@co1 mydir]$ ll
|
|||
|
total 0
|
|||
|
-rw-rw-r--. 1 da2001 da2001 0 Jun 8 08:43 file
|
|||
|
```
|
|||
|
*группы, в которых состоит пользователь*
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ groups
|
|||
|
da2001 wheel sales
|
|||
|
```
|
|||
|
Чтобы все новые файлы в текущей сессии создавались от группы sales
|
|||
|
```bash
|
|||
|
[da2001@co1 mydir]$ newgrp sales
|
|||
|
[da2001@co1 mydir]$ touch file2
|
|||
|
[da2001@co1 mydir]$ ll
|
|||
|
total 0
|
|||
|
-rw-rw-r--. 1 da2001 da2001 0 Jun 8 08:43 file
|
|||
|
-rw-r--r--. 1 da2001 sales 0 Jun 8 08:50 file2
|
|||
|
```
|
|||
|
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### cp
|
|||
|
`cp` - copy, копировать файлы и директории
|
|||
|
```
|
|||
|
$ cp опции файл-источник файл-приемник
|
|||
|
```
|
|||
|
или
|
|||
|
```
|
|||
|
$ cp опции файл-источник директория-приемник/
|
|||
|
```
|
|||
|
--attributes-only - не копировать содержимое файла, а только флаги доступа и владельца;
|
|||
|
-f, --force - перезаписывать существующие файлы;
|
|||
|
-i, --interactive - спрашивать, нужно ли перезаписывать существующие файлы;
|
|||
|
-L - копировать не символические ссылки, а то, на что они указывают;
|
|||
|
-n - не перезаписывать существующие файлы;
|
|||
|
-P - не следовать символическим ссылкам;
|
|||
|
-r - копировать папку Linux рекурсивно;
|
|||
|
-s - не выполнять копирование файлов в Linux, а создавать символические ссылки;
|
|||
|
-u - скопировать файл, только если он был изменён;
|
|||
|
-x - не выходить за пределы этой файловой системы;
|
|||
|
-p - сохранять владельца, временные метки и флаги доступа при копировании;
|
|||
|
-t - считать файл-приемник директорией и копировать файл-источник в эту директорию.
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### dd
|
|||
|
`dd` - dataset definition, копирование побайтово
|
|||
|
https://habr.com/ru/post/117050/
|
|||
|
больше примеров в файле `Образ_SD_dd.md`
|
|||
|
```
|
|||
|
dd if=источник_копирования of=место_назначения параметры
|
|||
|
```
|
|||
|
bs - указывает сколько байт читать и записывать за один раз;
|
|||
|
cbs - сколько байт нужно записывать за один раз;
|
|||
|
count - скопировать указанное количество блоков, размер одного блока указывается в параметре bs;
|
|||
|
conv - применить фильтры к потоку данных;
|
|||
|
ibs - читать указанное количество байт за раз;
|
|||
|
obs - записывать указанное количество байт за раз;
|
|||
|
seek - пропустить указанное количество байт в начале устройства для чтения;
|
|||
|
skip - пропустить указанное количество байт в начале устройства вывода;
|
|||
|
status - указывает насколько подробным нужно сделать вывод;
|
|||
|
iflag, oflag - позволяет задать дополнительные флаги работы для устройства ввода и вывода, основные из них: nocache, nofollow.
|
|||
|
|
|||
|
**Примеры**
|
|||
|
Создание образа диска:
|
|||
|
```bash
|
|||
|
dd if=/dev/cdrom of=image.iso
|
|||
|
```
|
|||
|
игнорировать ошибки чтения
|
|||
|
```bash
|
|||
|
dd if=/dev/cdrom of=image.iso conv=noerror
|
|||
|
```
|
|||
|
создать образ диска и отправить по ssh, заранее нужно настроить доступ по ключам
|
|||
|
```bash
|
|||
|
dd if=/dev/DEVICE | ssh user@host «dd of=/home/user/DEVICE.img»
|
|||
|
```
|
|||
|
записать на диск 0
|
|||
|
```bash
|
|||
|
dd if=/dev/zero of=/dev/DEVICE
|
|||
|
```
|
|||
|
создать файл с записанными 0
|
|||
|
```bash
|
|||
|
dd if=/dev/zero of=zerofile bs=1M count=100
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### df
|
|||
|
`df` - disk free, показать свободное место на диске
|
|||
|
```
|
|||
|
df опции устройство
|
|||
|
```
|
|||
|
-a, --all - отобразить все файловые системы, в том числе виртуальные, псевдо и недоступные;
|
|||
|
-B - изменить размер одного блока перед выводом данных, например, можно использовать BM, чтобы вывести все данные в мегабайтах;
|
|||
|
-h - выводить размеры в читаемом виде, в мегабайтах или гигабайтах;
|
|||
|
-H - выводить все размеры в гигабайтах;
|
|||
|
-i - выводить информацию об inode;
|
|||
|
-k - выводить размеры в килобайтах;
|
|||
|
--output - использовать специальный формат вывода, если не задано, выводит все поля. Доступны такие варианты: `source`, `fstype`, `itotal`, `iused`, `iavail`, `ipcent`, `size`, `used`, `avail`, `pcent`, `file` и `target`;
|
|||
|
-P - использовать формат вывода POSIX;
|
|||
|
--total - выводить всю информацию про использованное и доступное место;
|
|||
|
-t, --type - выводить информацию только про указанные файловые системы;
|
|||
|
-x - выводить информацию обо всех, кроме указанных файловых систем;
|
|||
|
```bash
|
|||
|
df -h
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### diff
|
|||
|
`diff` - сравнение текстовых файлов
|
|||
|
https://pingvinus.ru/note/compare-files-diff-in-linux
|
|||
|
```
|
|||
|
diff опции файл1 файл2
|
|||
|
```
|
|||
|
-q - выводить только отличия файлов;
|
|||
|
-s - выводить только совпадающие части;
|
|||
|
-с - выводить нужное количество строк после совпадений;
|
|||
|
-u - выводить только нужное количество строк после отличий;
|
|||
|
-y - выводить в две колонки;
|
|||
|
-e - вывод в формате ed скрипта;
|
|||
|
-n - вывод в формате RCS;
|
|||
|
-a - сравнивать файлы как текстовые, даже если они не текстовые;
|
|||
|
-t - заменить табуляции на пробелы в выводе;
|
|||
|
-l - разделить на страницы и добавить поддержку листания;
|
|||
|
-r - рекурсивное сравнение папок;
|
|||
|
-i - игнорировать регистр;
|
|||
|
-E - игнорировать изменения в табуляциях;
|
|||
|
-Z - не учитывать пробелы в конце строки;
|
|||
|
-b - не учитывать пробелы;
|
|||
|
-B - не учитывать пустые строки.
|
|||
|
**Примеры**
|
|||
|
Сравнение двух текстовых файлов
|
|||
|
```bash
|
|||
|
diff myfile1 myfile2
|
|||
|
```
|
|||
|
Перенаправление результата сравнения в файл
|
|||
|
```bash
|
|||
|
diff myfile1 myfile2 > changes.diff
|
|||
|
```
|
|||
|
Сравнение директорий, содержащих текстовые файлы
|
|||
|
```bash
|
|||
|
diff -r mydir1 mydir2 > changes.diff
|
|||
|
```
|
|||
|
Исключить файлы из сравнения
|
|||
|
Создадим файл `excludeFiles` и запишем в него шаблоны и названия файлов, которые мы не должны сравнивать. Например, содержимое `excludeFiles` может иметь вид:
|
|||
|
```
|
|||
|
*.o
|
|||
|
ChangeLog*
|
|||
|
*.bak
|
|||
|
*.exe
|
|||
|
```
|
|||
|
```bash
|
|||
|
diff -r -X excludeFiles mydir1 mydir2 > changes.diff
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### du
|
|||
|
`du` - disk usage, отображение использования диска
|
|||
|
```
|
|||
|
$ du опции /путь/к/папке
|
|||
|
```
|
|||
|
-a, --all - выводить размер для всех файлов, а не только для директорий, по умолчанию размер выводится только для папок;
|
|||
|
-B, --block-size - указать единицы вывода размера, доступно: K,M,G,T,P,E,Z,Y для 1024 и KB, MB и так далее для 1000;
|
|||
|
-c, --total - выводить в конце общий размер всех папок;
|
|||
|
-d, --max-depth - максимальная глубина вложенности директорий;
|
|||
|
-h, --human-readable - выводить размер в единицах измерения удобных для человека;
|
|||
|
--inodes - выводить информацию об использованию inode;
|
|||
|
-L, --dereference - следовать по всем символическим ссылкам;
|
|||
|
-l, --count-links - учитывать размер файла несколько раз для жестких ссылок;
|
|||
|
-P, --no-dereference - не следовать по символическим ссылкам, это поведение используется по умолчанию;
|
|||
|
-S, --separate-dirs - не включать размер подпапок в размер папки;
|
|||
|
--si - выводить размер файлов и папок в системе си, используется 1000 вместо 1024;
|
|||
|
-s, --summarize - выводить только общий размер;
|
|||
|
-t, --threshold - не учитывать файлы и папки с размером меньше указанного;
|
|||
|
--time - отображать время последней модификации для файла или папки, вместо времени модификации можно выводить такие метки: atime, access, use, ctime;
|
|||
|
-X, --exclude - исключить файлы из подсчёта;
|
|||
|
-x, --one-file-system - пропускать примонтированные файловые системы;
|
|||
|
--version - вывести версию утилиты.
|
|||
|
```bash
|
|||
|
du -h /var
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### echo
|
|||
|
`echo` - утилита bash, для вывода данных
|
|||
|
```
|
|||
|
echo опции строка
|
|||
|
```
|
|||
|
-n - не выводить перевод строки;
|
|||
|
-e - включить поддержку вывода Escape последовательностей;
|
|||
|
-E - отключить интерпретацию Escape последовательностей.
|
|||
|
|
|||
|
если включена опция -e, можно использовать такие Escape последовательности для вставки специальных символов:
|
|||
|
|
|||
|
\c - удалить перевод строки;
|
|||
|
\t - горизонтальная табуляция;
|
|||
|
\v - вертикальная табуляция;
|
|||
|
\b - удалить предыдущий символ;
|
|||
|
\n - перевод строки;
|
|||
|
\r - символ возврата каретки в начало строки.
|
|||
|
**Примеры**
|
|||
|
```bash
|
|||
|
echo Linux Open Source Software Technologies
|
|||
|
```
|
|||
|
```bash
|
|||
|
echo -e "Linux \nopen \nsource \nsoftware \ntechnologies"
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### file
|
|||
|
`file` - отобразить тип файла
|
|||
|
```bash
|
|||
|
da2001@Metromint:~$ file vim.pdf
|
|||
|
vim.pdf: PDF document, version 1.5
|
|||
|
|
|||
|
da2001@Metromint:~$ file vim.docx
|
|||
|
vim.docx: Microsoft Word 2007+
|
|||
|
|
|||
|
da2001@Metromint:~$ file явки
|
|||
|
явки: UTF-8 Unicode text
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### find
|
|||
|
`find` - поиск файлов по критериям с возможностью выполнения определённых действий с результатами поиска
|
|||
|
https://habr.com/ru/company/alexhost/blog/525394/
|
|||
|
https://losst.ru/komanda-find-v-linux
|
|||
|
```
|
|||
|
find [папка] [параметры] критерий шаблон [действие]
|
|||
|
```
|
|||
|
папка - каталог в котором будем искать
|
|||
|
параметры - дополнительные параметры, например, глубина поиска, и т д
|
|||
|
критерий - по какому критерию будем искать: имя, дата создания, права, владелец и т д.
|
|||
|
шаблон - непосредственно значение по которому будем отбирать файлы.
|
|||
|
**Основные параметры**
|
|||
|
-P никогда не открывать символические ссылки
|
|||
|
-L получает информацию о файлах по символическим ссылкам. Важно для дальнейшей обработки, чтобы обрабатывалась не ссылка, а сам файл.
|
|||
|
-maxdepth максимальная глубина поиска по подкаталогам, для поиска только в текущем каталоге установите 1.
|
|||
|
-depth искать сначала в текущем каталоге, а потом в подкаталогах
|
|||
|
-mount искать файлы только в этой файловой системе.
|
|||
|
-version показать версию утилиты find
|
|||
|
-print выводить полные имена файлов
|
|||
|
-type f искать только файлы
|
|||
|
-type d поиск папки в Linux
|
|||
|
**Критерии поиска**
|
|||
|
-name - поиск файлов по имени
|
|||
|
-perm - поиск файлов в Linux по режиму доступа
|
|||
|
-user - поиск файлов по владельцу
|
|||
|
-group - поиск по группе
|
|||
|
-mtime - поиск по времени модификации файла
|
|||
|
-atime - поиск файлов по дате последнего чтения
|
|||
|
-nogroup - поиск файлов, не принадлежащих ни одной группе
|
|||
|
-nouser - поиск файлов без владельцев
|
|||
|
-newer - найти файлы новее чем указанный
|
|||
|
-size - поиск файлов в Linux по их размеру
|
|||
|
Найти все файлы txt в папке dir
|
|||
|
```bash
|
|||
|
find /dir -name '*.txt'
|
|||
|
```
|
|||
|
Найти все файлы пользователя da2001
|
|||
|
```bash
|
|||
|
find / -user da2001
|
|||
|
```
|
|||
|
Найти все файлы, принадлежащие группе sales
|
|||
|
```bash
|
|||
|
find / -group sales
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### grep
|
|||
|
`grep` - global regular expression print, сортировка и фильтрация текста
|
|||
|
```
|
|||
|
$ grep [опции] шаблон [имя файла...]
|
|||
|
```
|
|||
|
или:
|
|||
|
```
|
|||
|
$ команда | grep [опции] шаблон
|
|||
|
```
|
|||
|
*`опции`* - это дополнительные параметры, с помощью которых указываются различные настройки поиска и вывода, например количество строк или режим инверсии.
|
|||
|
*`шаблон`* - это любая строка или регулярное выражение, по которому будет вестись поиск
|
|||
|
*`файл и команда`* - это то место, где будет вестись поиск. Как вы увидите дальше, grep позволяет искать в нескольких файлах и даже в каталоге, используя рекурсивный режим.
|
|||
|
возможность фильтровать стандартный вывод пригодится,например, когда нужно выбрать только ошибки из логов или найти PID процесса в многочисленном отчёте утилиты ps.
|
|||
|
|
|||
|
**опции**
|
|||
|
-b - показывать номер блока перед строкой;
|
|||
|
-c - подсчитать количество вхождений шаблона;
|
|||
|
-h - не выводить имя файла в результатах поиска внутри файлов Linux;
|
|||
|
-i - не учитывать регистр;
|
|||
|
-r - рекурсивный поиск;
|
|||
|
-l - отобразить только имена файлов, в которых найден шаблон;
|
|||
|
-n - показывать номер строки в файле;
|
|||
|
-s - не показывать сообщения об ошибках;
|
|||
|
-v - инвертировать поиск, выдавать все строки кроме тех, что содержат шаблон;
|
|||
|
-w - искать шаблон как слово, окружённое пробелами;
|
|||
|
-e - использовать регулярные выражения при поиске;
|
|||
|
-An - показать вхождение и n строк до него;
|
|||
|
-Bn - показать вхождение и n строк после него;
|
|||
|
-Cn - показать n строк до и после вхождения;
|
|||
|
**Примеры**
|
|||
|
`ls | grep 'My Documents'`
|
|||
|
|
|||
|
`grep 'Class 1' Students.txt`
|
|||
|
Поиск по нескольким параметрам
|
|||
|
`grep -e 'Class 1' -e Todd Students.txt`
|
|||
|
Поиск слова word во всех файлах директории directory и вложенных директориях
|
|||
|
`grep -rn word /directory`
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### head
|
|||
|
`head` - head выводит начальные строки (по умолчанию — 10) из одного или нескольких документов. Также она может показывать данные, которые передает на вывод другая утилита
|
|||
|
```
|
|||
|
head опции файл
|
|||
|
```
|
|||
|
опции — это параметр, который позволяет настраивать работу команды таким образом, чтобы результат соответствовал конкретным потребностям пользователя.
|
|||
|
Файл — это имя документа (или имена документов, если их несколько). Если это значение не задано либо вместо него стоит знак «-», команда будет брать данные из стандартного вывода.
|
|||
|
Чаще всего к команде head применяются такие опции:
|
|||
|
|
|||
|
-c (--bytes) — позволяет задавать количество текста не в строках, а в байтах. При записи в виде --bytes=[-]NUM выводит на экран все содержимое файла, кроме NUM байт, расположенных в конце документа.
|
|||
|
-n (--lines) — показывает заданное количество строк вместо 10, которые выводятся по умолчанию. Если записать эту опцию в виде --lines=[-]NUM, будет показан весь текст кроме последних NUM строк.
|
|||
|
-q (--quiet, --silent) — выводит только текст, не добавляя к нему название файла.
|
|||
|
-v (--verbose) — перед текстом выводит название файла.
|
|||
|
-z (--zero-terminated) — символы перехода на новую строку заменяет символами завершения строк.
|
|||
|
**Примеры**
|
|||
|
вывести первые 10 строк файла
|
|||
|
```bash
|
|||
|
head file-name.txt
|
|||
|
```
|
|||
|
вывод из нескольких файлов
|
|||
|
```bash
|
|||
|
head file-name1.txt file-name2.txt
|
|||
|
```
|
|||
|
отобразить название файла в выводе
|
|||
|
```bash
|
|||
|
head -v file-name.txt
|
|||
|
```
|
|||
|
изменить количество строк в выводе
|
|||
|
```bash
|
|||
|
head -n 20 file-name.txt
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### history
|
|||
|
`history` - история введенных команд
|
|||
|
**Примеры**
|
|||
|
Вывод всей истории команд
|
|||
|
`history`
|
|||
|
Вывод команды с номером 154
|
|||
|
`!154`
|
|||
|
Вывод истории с возможностью прокрутки
|
|||
|
`history | less`
|
|||
|
Последние 5 команд
|
|||
|
`history -5`
|
|||
|
Повторить последнюю команду
|
|||
|
`!!`
|
|||
|
полезно, если забыл указать `sudo`
|
|||
|
`sudo !!`
|
|||
|
сохранить список в файл `.bash_history`
|
|||
|
`history -w`
|
|||
|
дополнить файл сохранённой истории команд
|
|||
|
`history -a`
|
|||
|
очистить историю
|
|||
|
`history -c`
|
|||
|
удалить команды 102 131
|
|||
|
`history -d 102 131`
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### ln
|
|||
|
`ln` - link, создание ссылок на файлы
|
|||
|
Создать жесткую ссылку
|
|||
|
`ln target_file link_name`
|
|||
|
*жесткую ссылку можно создать на только на файл, который находится в этой же файловой системе*
|
|||
|
*жесткую ссылку нельзя создать на папку*
|
|||
|
Создать мягкую ссылку
|
|||
|
`ln -s target_file link_name`
|
|||
|
Обновить существующую мягкую ссылку
|
|||
|
`ln -sf new_file existing_soft_link`
|
|||
|
Показать оригинальный файл по цепочке ссылок
|
|||
|
`readlink -f soft_link`
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### locate
|
|||
|
`locate` - поиск файлов и каталогов по их именам
|
|||
|
Команда locate выполняет поиск заданного шаблона в файле базы данных, сгенерированном командой updatedb. Найденные результаты отображаются на экране, по одному на строку.
|
|||
|
|
|||
|
Во время установки пакета mlocate создается задание cron, которое запускает команду updatedb каждые 24 часа. Это гарантирует, что база данных регулярно обновляется. Для получения дополнительной информации о работе cron проверьте файл `/etc/cron.daily/mlocate`.
|
|||
|
|
|||
|
Базу данных можно обновить вручную
|
|||
|
`sudo updatedb`
|
|||
|
найти файл с именем .bashrc
|
|||
|
`locate .bashrc`
|
|||
|
Если список результатов длинный, можно направить вывод в команду less:
|
|||
|
`locate .bashrc | less`
|
|||
|
Найти все md файлы
|
|||
|
`locate *.md`
|
|||
|
Ограничить поиск 10 результатами
|
|||
|
`locate -n 10 *.py`
|
|||
|
Поиск без учёта регистра
|
|||
|
`locate -i readme.md`
|
|||
|
Отобразить количество найденных файлов
|
|||
|
`locate -c .bashrc`
|
|||
|
Чтобы отобразить только имена файлов, которые существуют в данный момент
|
|||
|
*По умолчанию locate не проверяет, существуют ли найденные файлы в файловой системе. Если файл был удалён после последнего обновления базы данных и он соответствует шаблону поиска, файл будет включен в результаты поиска.*
|
|||
|
`locate -e *.json`
|
|||
|
Поиск с применением регулярного выражения
|
|||
|
`locate -r -i "(\.mp4|\.avi)"`
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### mkdir
|
|||
|
`mkdir` - создание директорий
|
|||
|
`mkdir mydir`
|
|||
|
Создать несколько директорий
|
|||
|
`mkdir mydir1 mydir2 mydir3`
|
|||
|
Создание директории с указанием относительного пути
|
|||
|
`mkdir Downloads/torrents`
|
|||
|
Чтобы создать все директории, которые содержатся в пути, используется ключ -p:
|
|||
|
`mkdir -p subdir/somedir/mydir`
|
|||
|
Задать права доступа к папке при создании (синтаксис такой же как у chmod)
|
|||
|
`mkdir -m=765 mydir23`
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### mv
|
|||
|
`mv` - используется для перемещения одного или нескольких файлов (или директорий) в другую директорию, а также для переименования файлов и директорий
|
|||
|
Опции
|
|||
|
`-b`, `--backup`, `--backup=МЕТОД` - создать резервную копию существующих файлов, которые будут перезаписаны или удалены. Имя для резервной копии может создаваться по определенным правилам. В качестве значения МЕТОД можно указать:
|
|||
|
* `none` или `off` — не делать резервных копий, даже если включена опция --backup
|
|||
|
* `numbered` или `t` — имя резервной копии получит числовой индекс (пример: `myfile.txt~2~`).
|
|||
|
* `existing` или `nil` — если в директории уже есть резервные копии с числовыми индексами, то использовать числовые индексы для новых резервных копий, во всех остальных случаях использовать метод simple.
|
|||
|
* `simple` или `never` — делать обычные резервные копии (пример: `myfile.txt~`).
|
|||
|
`-f` или `--force` - при перезаписи существующих файлов не спрашивать разрешения пользователя.
|
|||
|
`-i` или `--interactive` - при перезаписи существующих файлов спрашивать разрешение пользователя на подтверждение операции.
|
|||
|
`-n` или `--no-clobber` - не перезаписывать существующие файлы.
|
|||
|
`--strip-trailing-slashes` - удалить завершающий символ слеш / (если он там есть) из имени файла-источника.
|
|||
|
`-S СУФФИКС` или `--suffix=СУФФИКС` - изменить символ суффикса, который добавляется к именам резервных копий (при использовании опции --backup). По умолчанию СУФФИКС равен значку тильды `~`
|
|||
|
`-t ДИРЕКТОРИЯ` или `--target-directory=ДИРЕКТОРИЯ` - переместить все исходные файлы в директорию, которая указана в аргументе опции.
|
|||
|
`-u` или `--update` - перемещать только если исходный файл новее, чем файл назначения или если файл-назначения отсутствует.
|
|||
|
`-v` или `--verbose` - выводить информацию о каждом файле, который обрабатывает команда mv.
|
|||
|
`-Z` или `--context` - установить контекст (метки) SELinux для файлов назначения в значение по умолчанию.
|
|||
|
**Примеры**
|
|||
|
Переместить файл myfile1.txt в директорию mydir/ (директория должна существовать)
|
|||
|
`mv myfile1.txt mydir/`
|
|||
|
Переименовать файл
|
|||
|
`mv myfile1.txt myfile2.txt`
|
|||
|
Переименовать директорию
|
|||
|
`mv mydir1 mydir2`
|
|||
|
Создавать резервные копии существующих файлов
|
|||
|
*Предположим, что нам нужно переименовать файл myfile1.txt в myfile2.txt, но файл myfile2.txt уже существует*
|
|||
|
`mv -b myfile1.txt myfile2.txt`
|
|||
|
*В результате сначала существующий файл myfile2.txt будет переименован в myfile2.txt~, то есть будет создана его резервная копия, и только потом файл myfile1.txt будет переименован в myfile2.txt.*
|
|||
|
Вместо значка тильда `~` можно добавлять к именам резервных копий произвольный суффикс. Например, `.bak`
|
|||
|
`mv -b -S ".bak" myfile1.txt myfile2.txt`
|
|||
|
Переместить несколько файлов в директорию mydir/
|
|||
|
`mv myfile1 myfile2 myfile3 mydir/`
|
|||
|
Переместить все файлы из текущей директории в директорию mydir/
|
|||
|
`mv * mydir/`
|
|||
|
Переместить только те файлы, которых нет в директории назначения
|
|||
|
`mv -n mydir1/* mydir2/`
|
|||
|
Переместить только те файлы, которые новее
|
|||
|
`mv -u mydir1/* mydir2/`
|
|||
|
Если в имени файла есть пробелы их нужно экранировать или брать в ковычки
|
|||
|
`mv "My file1.txt" "My file2.txt"`
|
|||
|
Или
|
|||
|
`mv My\ file1.txt My\ file2.txt`
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### pwd
|
|||
|
`pwd` - present working directory, отобразить текущую директорию
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ pwd
|
|||
|
/home/da2001
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### rm
|
|||
|
`rm` - remove, удаление файлов и папок
|
|||
|
-f или --force - игнорировать несуществующие файлы и аргументы. Никогда не выдавать запросы на подтверждение удаления
|
|||
|
-i - выводить запрос на подтверждение удаления каждого файла.
|
|||
|
-I - выдать один запрос на подтверждение удаления всех файлов, если удаляется больше трех файлов или используется рекурсивное удаление. Опция применяется, как более «щадящая» версия опции -i
|
|||
|
-r или -R или --recursive - удаление директорий и их содержимого. Рекурсивное удаление.
|
|||
|
-d или --dir - удалять пустые директории.
|
|||
|
**Примеры**
|
|||
|
Удалить файл
|
|||
|
`rm myfile.txt`
|
|||
|
Удалить несколько файлов
|
|||
|
`rm myfile1.txt myfile2.txt myfile3.txt`
|
|||
|
Удалить защищенный файл
|
|||
|
`rm -f myfile.txt`
|
|||
|
Удалить все файлы в текущей директории
|
|||
|
`rm *`
|
|||
|
Выдавать запрос перед удалением каждого файла
|
|||
|
`rm -i myfile*.txt`
|
|||
|
Выдать запрос на удаление один раз
|
|||
|
`rm -I myfile*.txt`
|
|||
|
Удалить директорию и её содержимое
|
|||
|
`rm -r mydir`
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### rmdir
|
|||
|
`rmdir` - удалить пустой каталог
|
|||
|
`rmdir test-dir`
|
|||
|
Удалить всю цепочку пустых каталогов
|
|||
|
`rmdir -p test/test-dir/`
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### tail
|
|||
|
`tail` - вывод нескольких последних строк файла. По умолчанию 10
|
|||
|
-c - выводить указанное количество байт с конца файла;
|
|||
|
-f - обновлять информацию по мере появления новых строк в файле;
|
|||
|
-s - частота обновления файла, применяется совместно с опцией -f, по умолчанию 1 секунда;
|
|||
|
-n - выводить указанное количество строк из конца файла;
|
|||
|
--pid - используется с опцией -f, позволяет завершить работу утилиты, когда завершится указанный процесс;
|
|||
|
-q - не выводить имена файлов;
|
|||
|
--retry - повторять попытки открыть файл, если он недоступен;
|
|||
|
-v - выводить подробную информацию о файле;
|
|||
|
*В качестве значения параметра -c можно использовать число с приставкой b, kB, K, MB, M, GB, G T, P, E, Z, Y*
|
|||
|
Вывод последних 10 строк
|
|||
|
`tail /var/log/syslog`
|
|||
|
Вывод последних 100 строк
|
|||
|
`tail -n 100 /var/log/syslog`
|
|||
|
Вывод новых строк по мере добавления их в файл
|
|||
|
`tail -f /var/log/syslog`
|
|||
|
Просмотр нескольких файлов
|
|||
|
`tail /var/log/syslog /var/log/Xorg.0.log`
|
|||
|
Изменить частоту обновления файла на 5 секунд
|
|||
|
`tail -f -s 5 /var/log/syslog`
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### tar
|
|||
|
**Создать архив**
|
|||
|
```bash
|
|||
|
tar -cvf archivename.tar /files-you-want-toarchive
|
|||
|
```
|
|||
|
-c, --create create a new archive
|
|||
|
-v, --verbose verbosely list files processed
|
|||
|
-f, --file=ARCHIVE use archive file or device ARCHIVE
|
|||
|
|
|||
|
|
|||
|
**Создать архив со сжатием**
|
|||
|
```bash
|
|||
|
tar -czvf archivename.tar.gz /files-you-want-toarchive
|
|||
|
```
|
|||
|
-j, --bzip2 filter the archive through bzip2
|
|||
|
-J, --xz filter the archive through xz
|
|||
|
-z, --gzip, --gunzip, --ungzip filter the archive through gzip
|
|||
|
|
|||
|
|
|||
|
**Добавить файл в существующий архив**
|
|||
|
```bash
|
|||
|
tar -rvf /root/homes.tar /etc/hosts
|
|||
|
```
|
|||
|
-r, --append append files to the end of an archive
|
|||
|
|
|||
|
|
|||
|
**Обновить файлы в существующем архиве**
|
|||
|
```bash
|
|||
|
tar -uvf /root/homes.tar /home
|
|||
|
```
|
|||
|
-u, --update only append files newer than copy in archive
|
|||
|
|
|||
|
|
|||
|
**Просмотр содержимого архива**
|
|||
|
```bash
|
|||
|
tar -tvf /root/homes.tar
|
|||
|
```
|
|||
|
-t, --list list the contents of an archive
|
|||
|
|
|||
|
|
|||
|
**Извлечь файлы из архива в текущий каталог**
|
|||
|
```bash
|
|||
|
tar -xvf /archivename
|
|||
|
```
|
|||
|
-x, --extract, --get extract files from an archive
|
|||
|
|
|||
|
|
|||
|
**Извлечь файлы из сжатого архива**
|
|||
|
```bash
|
|||
|
tar -xzvf archivename.tar.gz
|
|||
|
```
|
|||
|
|
|||
|
|
|||
|
**Извлечь файлы из архива в другой каталог**
|
|||
|
```bash
|
|||
|
tar -xvf /archivename -C /tmp
|
|||
|
```
|
|||
|
-C, --directory=DIR change to directory DIR
|
|||
|
|
|||
|
|
|||
|
**Извлечь определённый файл из архива**
|
|||
|
```bash
|
|||
|
tar -xvf /root/etc.tar etc/hosts
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### top
|
|||
|
`top` - table of processes, консольная команда, которая выводит список работающих в системе процессов и информацию о них. По умолчанию она в реальном времени сортирует их по нагрузке на процессор.
|
|||
|
*С помощью ключей можно гибко настроить вывод информации о запущенных процессах*
|
|||
|
```bash
|
|||
|
top - 09:14:09 up 3 days, 8 min, 1 user, load average: 0.02, 0.02, 0.00
|
|||
|
Tasks: 164 total, 1 running, 163 sleeping, 0 stopped, 0 zombie
|
|||
|
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
|
|||
|
MiB Mem : 1818.6 total, 569.6 free, 569.1 used, 679.9 buff/cache
|
|||
|
MiB Swap: 1024.0 total, 1024.0 free, 0.0 used. 1085.1 avail Mem
|
|||
|
|
|||
|
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
|
|||
|
1 root 20 0 180100 14216 9176 S 0.0 0.8 0:09.25 systemd
|
|||
|
2 root 20 0 0 0 0 S 0.0 0.0 0:00.17 kthreadd
|
|||
|
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
|
|||
|
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp
|
|||
|
6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-kblockd
|
|||
|
8 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq
|
|||
|
.................
|
|||
|
```
|
|||
|
*существует более удобная утилита `htop`*
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### ps
|
|||
|
`ps` - process status, вывод информации о запущенных процессах
|
|||
|
Некоторый опции
|
|||
|
-A, -e, (a) - выбрать все процессы;
|
|||
|
-a - выбрать все процессы, кроме фоновых;
|
|||
|
-d, (g) - выбрать все процессы, даже фоновые, кроме процессов сессий;
|
|||
|
-N - выбрать все процессы кроме указанных;
|
|||
|
-С - выбирать процессы по имени команды;
|
|||
|
-G - выбрать процессы по ID группы;
|
|||
|
-p, (p) - выбрать процессы PID;
|
|||
|
--ppid - выбрать процессы по PID родительского процесса;
|
|||
|
-s - выбрать процессы по ID сессии;
|
|||
|
-t, (t) - выбрать процессы по tty;
|
|||
|
-u, (U) - выбрать процессы пользователя.
|
|||
|
|
|||
|
Опции форматирования:
|
|||
|
-с - отображать информацию планировщика;
|
|||
|
-f - вывести максимум доступных данных, например, количество потоков;
|
|||
|
-F - аналогично -f, только выводит ещё больше данных;
|
|||
|
-l - длинный формат вывода;
|
|||
|
-j, (j) - вывести процессы в стиле Jobs, минимум информации;
|
|||
|
-M, (Z) - добавить информацию о безопасности;
|
|||
|
-o, (o) - позволяет определить свой формат вывода;
|
|||
|
--sort, (k) - выполнять сортировку по указанной колонке;
|
|||
|
-L, (H)- отображать потоки процессов в колонках LWP и NLWP;
|
|||
|
-m, (m) - вывести потоки после процесса;
|
|||
|
-V, (V) - вывести информацию о версии;
|
|||
|
-H - отображать дерево процессов;
|
|||
|
|
|||
|
**Примеры**
|
|||
|
Процессы текущей оболочки
|
|||
|
`ps`
|
|||
|
Все процессы кроме фоновых
|
|||
|
`ps -a`
|
|||
|
Вывести больше данных
|
|||
|
`ps -f`
|
|||
|
Опции можно комбинировать
|
|||
|
`ps -af`
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### touch
|
|||
|
`touch` - используется для изменения временных меток файлов, однако один из наиболее распространенных способов использования - создание нового пустого файла.
|
|||
|
Обновить метки времени существующего файла или создать новый, если файл с таким именем не существует
|
|||
|
`touch file.txt`
|
|||
|
Обновить метки времени/создать несколько файлов
|
|||
|
`touch file1.txt file2.txt file3.txt`
|
|||
|
Обновить временные метки, если файл не существует НЕ создавать его
|
|||
|
`touch -c file.txt`
|
|||
|
Обновить только время доступа к файлу
|
|||
|
`touch -a file.txt`
|
|||
|
Обновить только время изменения файла
|
|||
|
`touch -m file.txt`
|
|||
|
Использовать временные метки другого файла
|
|||
|
`touch -r file.txt`
|
|||
|
Задать конкретное время доступа и модификации в формате YYMMDDhhmm
|
|||
|
`touch -t 202105251224 file.txt`
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### time
|
|||
|
`time` - время выполнения команды/скрипта
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ time ls
|
|||
|
connectedfile link newfiles passwd test Видео Загрузки Музыка 'Рабочий стол'
|
|||
|
hosts newfile oldfiles symlinkfile unhidden Документы Изображения Общедоступные Шаблоны
|
|||
|
|
|||
|
real 0m0.002s
|
|||
|
user 0m0.001s
|
|||
|
sys 0m0.001s
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### which
|
|||
|
`which` - команда отображает путь к исполняемому файлу запрашиваемой программы
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ which time
|
|||
|
/usr/bin/time
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### PATH
|
|||
|
`$PATH` - переменная, в которой хранятся пути поиска исполняемых файлов
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ echo $PATH
|
|||
|
/home/da2001/.local/bin:/home/da2001/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### Перенаправление ввода/вывода
|
|||
|
```
|
|||
|
Название Использование при перенаправлении Значение дискриптора
|
|||
|
STDIN < или 0< 0
|
|||
|
STDOUT > или 1> 1
|
|||
|
STDERR 2> 2
|
|||
|
```
|
|||
|
`>` или `1>` - перенаправление вывода. Если указано перенаправление в файл, файл будет перезаписан.
|
|||
|
`>>` - допишет данные в конец файла
|
|||
|
`2>` - перенаправление потока ошибок
|
|||
|
`2>&1` или `&>` - перенаправление вывода и потока ошибок в одно место `ls test test2 > errout 2>&1`
|
|||
|
`> /dev/null` - перенаправление в пустоту
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### pipe |
|
|||
|
`pipe |` - перенаправление вывода первой команды на вход второй команды
|
|||
|
```
|
|||
|
[da2001@co1 ~]$ cat /etc/passwd | grep da2001
|
|||
|
da2001:x:1000:1000:da2001:/home/da2001:/bin/bash
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### uname
|
|||
|
`uname` - утилита командной строки, которая печатает основную информацию об имени операционной системы и системном оборудовании
|
|||
|
-s, ( –kernel-name) – печатает имя ядра. Значение по-умолчанию.
|
|||
|
-n, ( –nodename) – печатает имя узла системы (имя хоста). Это имя, которое система использует при общении по сети. При использовании с опцией -n uname показывает тот же вывод, что и команда hostname.
|
|||
|
-r, ( –kernel-release) – печатает выпуск ядра.
|
|||
|
-v, ( –kernel-version) – печатает версию ядра.
|
|||
|
-m, ( –machine) – печатает название аппаратного имени аппарата.
|
|||
|
-p, ( –processor) – печатает архитектуру процессора.
|
|||
|
-i, ( –hardware-platform) – печатает аппаратной платформы.
|
|||
|
-o, ( –operating-system) – распечатает название операционной системы. В системах Linux это «GNU/Linux»
|
|||
|
-a, ( –all) – при использовании опции -a uname ведет себя так же, как если бы были заданы опции -snrvmo.
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### wget
|
|||
|
`wget` - загрузка файлов из сети
|
|||
|
**Примеры**
|
|||
|
Загрузка одного файла
|
|||
|
`wget http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz`
|
|||
|
Сохранить файл с другим именем
|
|||
|
`wget -O wget.zip http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz`
|
|||
|
Скачать несколько файлов
|
|||
|
`wget http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz ftp://ftp.gnu.org/gnu/wget/wget-1.10.1.tar.gz.sig`
|
|||
|
Взять адрес из файла
|
|||
|
`wget -i /wget/url.txt`
|
|||
|
Продолжить прерванную загрузку
|
|||
|
`wget -c http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz`
|
|||
|
Загрузка в фоне
|
|||
|
*-b - background, загрузка в фоне
|
|||
|
-o - output-file, сохранение лога в файл*
|
|||
|
`wget -b -o ~/wget.log http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz`
|
|||
|
Ограничение скорости загрузки
|
|||
|
`wget --limit-rate=100k ftp://ftp.iinet.net.au/debian/debian-cd/8.4.0/amd64/iso-dvd/debian-8.4.0-amd64-DVD-1.iso`
|
|||
|
*k - килобит, m - мегабит, g - гигабит*
|
|||
|
Подключение по логину и паролю
|
|||
|
`wget --http-user=narad --http-password=password http://mirrors.hns.net.in/centos/6.3/isos/x86_64/CentOS-6.3-x86_64-LiveDVD.iso`
|
|||
|
или
|
|||
|
`wget --ftp-user=narad --ftp-password=password ftp://ftp.iinet.net.au/debian/debian-cd/6.0.5/i386/iso-dvd/debian-6.0.5-i386-DVD-1.iso`
|
|||
|
Указать директорию загрузки
|
|||
|
`wget -P ~/Downloads/ http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz`
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### zip/unzip
|
|||
|
Создать архив из `archive.zip` файлов `file1.txt file2.log`
|
|||
|
`zip archive.zip file1.txt file2.log`
|
|||
|
Добавить в существующий архив папку с файлами
|
|||
|
`zip archive.zip -r /var/log/`
|
|||
|
Установить пароль на архив можно с помощью ключа -P, а ключ -e скроет пароль при вводе
|
|||
|
`zip archive.zip -Pe /var/log/`
|
|||
|
Распаковать архив в текущую директорию
|
|||
|
`unzip archive.zip`
|
|||
|
Распаковать в другую директорию
|
|||
|
`unzip archive.zip -d /tmp`
|
|||
|
Просмотреть список файлов в архиве без распаковки
|
|||
|
`unzip archive.zip -l`
|
|||
|
Распаковать определённый файлы архива
|
|||
|
`unzip archive.zip 1.txt 2.txt`
|
|||
|
**Пример создания архива.**
|
|||
|
Заархивируем все файлы и папки в директории /var/log/ и директорию /var/spool/
|
|||
|
`zip -r -9 test-archive.zip /var/log/* /var/spool/* -x "/var/log/apt/*"`
|
|||
|
`-r` - архивировать рекурсивно
|
|||
|
`-9` - степень сжатия от 1 до 9. 0 - без сжатия.
|
|||
|
`test-archive.zip` - имя архива
|
|||
|
`/var/log/* /var/spool/*` - архивируемые директории через пробел
|
|||
|
`-x "/var/log/apt/*"` - опция, позволяющая исключить указанную папку или файл из архива
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### findmnt
|
|||
|
`findmnt` - показать точки монтирования
|
|||
|
Просмотр устройств и точек их монтирования
|
|||
|
`findmnt --real`
|
|||
|
- ключ `--real` появился недавно, в версии 2.32, кот. используется в CentOS 8 его еще нет, а в Mint 20, установлена версия 2.34, там уже есть.
|
|||
|
`findmnt` без опций покажет больше данных
|
|||
|
Отображать процесс монтирования/отмонтирования в реальном времени
|
|||
|
`findmnt -p`
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### mount
|
|||
|
`mount` - монтирование файловых систем
|
|||
|
-v - подробный режим;
|
|||
|
-a, --all - примонтировать все устройства, описанные в fstab;
|
|||
|
-F, --fork - создавать отдельный экземпляр mount для каждого отдельного раздела;
|
|||
|
-f, --fake - не выполнять никаких действий, а только посмотреть что собирается делать утилита;
|
|||
|
-n, --no-mtab - не записывать данные о монтировании в /etc/mtab;
|
|||
|
-l, --show-labels - добавить метку диска к точке монтирования;
|
|||
|
-c - использовать только абсолютные пути;
|
|||
|
-r, --read-only - монтировать раздел только для чтения;
|
|||
|
-w, --rw - монтировать для чтения и записи;
|
|||
|
-L, --label - монтировать раздел по метке;
|
|||
|
-U, --uuid - монтировать раздел по UUID;
|
|||
|
-T, --fstab - использовать альтернативный fstab;
|
|||
|
-B, --bind - монтировать локальную папку;
|
|||
|
-R, --rbind - перемонтировать локальную папку
|
|||
|
Показать все смонтированные ФС
|
|||
|
`mount`
|
|||
|
Смонтировать ФС, прописанные в `/etc/fstab`
|
|||
|
`sudo mount -a`
|
|||
|
Монтирование диска в папку
|
|||
|
`sudo mount /dev/sdb6 /mnt/`
|
|||
|
Монтирование с указанием файловой системы
|
|||
|
`sudo mount -t ext4 /dev/sdb6 /mnt`
|
|||
|
Монтирование только для чтения
|
|||
|
`sudo mount -r /dev/sdb6 /mnt`
|
|||
|
или
|
|||
|
`sudo mount -o ro /dev/sdb6 /mnt`
|
|||
|
**Дополнительные опции монтирования**
|
|||
|
Запрет запуска исполняемых файлов в примонтированной папке
|
|||
|
`sudo mount -o noexec /dev/sdb6 /mnt`
|
|||
|
Перемонтировать раздел в режим только для чтения
|
|||
|
`sudo mount -o rw,remount /dev/sdb6 /mnt`
|
|||
|
Перемонтировать корень файловой системы в режим чтения-записи
|
|||
|
`sudo mount -o rw,remount /`
|
|||
|
Монтирование одной папки в другую
|
|||
|
`sudo mount --bind /mnt/ /media/`
|
|||
|
Монтирование образа
|
|||
|
`sudo mount ~/file.iso /mnt`
|
|||
|
Зеркало папки
|
|||
|
`sudo mount /dev/sdb1 /home/user/Видео`
|
|||
|
`sudo mount --bind /home/user/Видео /home/user/Документы`
|
|||
|
*в итоге `/dev/sdb1` будет смонтирован сразу в две папки*
|
|||
|
|
|||
|
#### umount
|
|||
|
`umount` - размонтирование ФС
|
|||
|
`sudo umount /mnt`
|
|||
|
*иногда может возникнуть ошибка размонтирования. Система сообщит, что устройство занято: `umount: /mnt: target is busy`*
|
|||
|
Проблему можно решить закрыв все программы, которые могут использовать любой файл в этой папке. Какие именно это программы вы можете узнать с помощью команды `lsof`
|
|||
|
` lsof -w /mnt`
|
|||
|
`lsof -w /dev/sdb6`
|
|||
|
С опцией `-l`, файловая система будет отключена немедленно, несмотря на то, что она занята
|
|||
|
`sudo umount -l /mnt`
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### cut
|
|||
|
`cut` - вырезать часть текста
|
|||
|
-b (--bytes=LIST) — номер байта, набор или диапазон байтов, подлежащих вырезанию.
|
|||
|
-c (--characters=LIST) — символ, который следует вырезать. Также можно указывать набор либо диапазон символов.
|
|||
|
-d (--delimiter=DELIM) — с помощью этой опции пользователь устанавливает свой разделитель вместо стандартного TAB.
|
|||
|
-f (--fields=LIST) — перечень полей для вырезания.
|
|||
|
-s (--only-delimited) — если была применена эта опция, cut не выводит строки, где нет разделителя.
|
|||
|
--complement — задает байты, символы или поля, которые останутся в файле или тексте из стандартного ввода. Все остальное будет вырезано.
|
|||
|
--output-delimiter=STRING — по умолчанию выходной разделитель соответствует входному. Эта опция позволяет задать другой выходной разделитель.
|
|||
|
-z, --zero-terminated — вместо символа новой строки разделителем будет NULL.
|
|||
|
*для примеров создан файл*
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ cat cut_command_example.txt
|
|||
|
Winter: white: snow: frost
|
|||
|
Spring: green: grass: warm
|
|||
|
Summer: colorful: blossom: hot
|
|||
|
Autumn: yellow: leaves: cool
|
|||
|
```
|
|||
|
1. Работа с байтами (`-b`)
|
|||
|
*вырезать из текста 1 байт*
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ echo "The sky was yellow as brass." | cut -b 1
|
|||
|
T
|
|||
|
```
|
|||
|
*вырезать несколько конкретных байт и диапазон*
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ echo "I looked at my watch; not eight o'clock." | cut -b 5,8,17,18-21
|
|||
|
odatch;
|
|||
|
```
|
|||
|
*также можно работать с файлами*
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ cut -b 1,9 cut_command_example.txt
|
|||
|
Ww
|
|||
|
Sg
|
|||
|
Sc
|
|||
|
Ay
|
|||
|
```
|
|||
|
*вырезать все байты начиная с 5 и до конца строки*
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ cut -b 5- cut_command_example.txt
|
|||
|
er: white: snow: frost
|
|||
|
ng: green: grass: warm
|
|||
|
er: colorful: blossom: hot
|
|||
|
mn: yellow: leaves: cool
|
|||
|
```
|
|||
|
*вырезать байты 1-16*
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ cut -b -16 cut_command_example.txt
|
|||
|
Winter: white: s
|
|||
|
Spring: green: g
|
|||
|
Summer: colorful
|
|||
|
Autumn: yellow:
|
|||
|
```
|
|||
|
2. Работа с символами аналогична работе с байтами за исключением того, что необходимо использовать ключ `-c`
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ cut -c -16 cut_command_example.txt
|
|||
|
Winter: white: s
|
|||
|
Spring: green: g
|
|||
|
Summer: colorful
|
|||
|
Autumn: yellow:
|
|||
|
```
|
|||
|
3. Работа со столбцами (`-d` - разделитель, `-f` - номер столбца)
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ echo "From the inn issued a smell of frying liver." | cut -d ' ' -f 1
|
|||
|
From
|
|||
|
```
|
|||
|
*первый столбец файла с разделителем `:`*
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ cat cut_command_example.txt
|
|||
|
Winter: white: snow: frost
|
|||
|
Spring: green: grass: warm
|
|||
|
Summer: colorful: blossom: hot
|
|||
|
Autumn: yellow: leaves: cool
|
|||
|
|
|||
|
[da2001@co1 ~]$ cut -d ':' -f 1 cut_command_example.txt
|
|||
|
Winter
|
|||
|
Spring
|
|||
|
Summer
|
|||
|
Autumn
|
|||
|
```
|
|||
|
*вырезать несколько столбцов*
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ cut -d ':' -f 1,2,3 cut_command_example.txt
|
|||
|
Winter: white: snow
|
|||
|
Spring: green: grass
|
|||
|
Summer: colorful: blossom
|
|||
|
Autumn: yellow: leaves
|
|||
|
```
|
|||
|
Команда cut также пригодится при работе с массивными CSV-документами. Ее синтаксис и опции в этом случае остаются неизменными. Например, при таком написании будут вырезаны первые два столбца файла с названием file_example.csv:
|
|||
|
```bash
|
|||
|
cut -d ',' -f 1,2 file_example.csv
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### sort
|
|||
|
`sort` - сортировка текста
|
|||
|
Строки с цифрами размещаются выше других строк
|
|||
|
Строки, начинающиеся с букв нижнего регистра размещаются выше
|
|||
|
Сортировка выполняется в соответствии алфавиту
|
|||
|
Строки сначала сортируются по алфавиту, а уже вторично по другим правилам.
|
|||
|
-b - не учитывать пробелы
|
|||
|
-d - использовать для сортировки только буквы и цифры
|
|||
|
-i - сортировать только по ASCII символах
|
|||
|
-n - сортировка строк linux по числовому значению
|
|||
|
-r - сортировать в обратном порядке
|
|||
|
-с - проверить был ли отсортирован файл
|
|||
|
-o - вывести результат в файл
|
|||
|
-u - игнорировать повторяющиеся строки
|
|||
|
-m - объединение ранее отсортированных файлов
|
|||
|
-k - указать поле по которому нужно сортировать строки, если не задано, сортировка выполняется по всей строке.
|
|||
|
-f - использовать в качестве разделителя полей ваш символ вместо пробела
|
|||
|
-R - сортировка в случайном порядке
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ cat test.txt
|
|||
|
computer
|
|||
|
mouse
|
|||
|
LAPTOP
|
|||
|
data
|
|||
|
RedHat
|
|||
|
laptop
|
|||
|
debian
|
|||
|
laptop
|
|||
|
```
|
|||
|
Сортировка по алфавиту
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ sort test.txt
|
|||
|
computer
|
|||
|
data
|
|||
|
debian
|
|||
|
laptop
|
|||
|
laptop
|
|||
|
LAPTOP
|
|||
|
mouse
|
|||
|
RedHat
|
|||
|
```
|
|||
|
Сортировка в обратном порядке
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ sort -r test.txt
|
|||
|
RedHat
|
|||
|
mouse
|
|||
|
LAPTOP
|
|||
|
laptop
|
|||
|
laptop
|
|||
|
debian
|
|||
|
data
|
|||
|
computer
|
|||
|
```
|
|||
|
Сортировка вывода по 9-й колонке
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ ls -l | sort -k9
|
|||
|
total 16
|
|||
|
-rw-rw-r--. 2 da2001 da2001 0 May 24 09:59 connectedfile
|
|||
|
-rw-rw-r--. 1 da2001 da2001 114 May 28 13:49 cut_command_example.txt
|
|||
|
-rw-rw-r--. 1 da2001 da2001 59 May 24 15:58 errout
|
|||
|
lrwxrwxrwx. 1 da2001 da2001 10 May 24 09:59 hosts -> /etc/hosts
|
|||
|
drwxrwxrwx. 2 da2001 da2001 6 May 26 13:55 mydir
|
|||
|
drwxrw-r-x. 2 da2001 da2001 6 May 26 13:56 mydir2
|
|||
|
-rw-rw-r--. 2 da2001 da2001 0 May 24 09:59 newfile
|
|||
|
```
|
|||
|
Сортировка 5-й колонки по числовому значению `-n`
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ ls -l | sort -nk5
|
|||
|
lrwxrwxrwx. 1 da2001 da2001 7 May 24 10:08 symlinkfile -> newfile
|
|||
|
lrwxrwxrwx. 1 da2001 da2001 10 May 24 09:59 hosts -> /etc/hosts
|
|||
|
lrwxrwxrwx. 1 da2001 da2001 11 May 24 09:58 passwd -> /etc/passwd
|
|||
|
drwxrwxr-x. 2 da2001 da2001 37 May 24 08:55 newfiles
|
|||
|
-rw-rw-r--. 1 da2001 da2001 55 May 28 14:34 test.txt
|
|||
|
-rw-rw-r--. 1 da2001 da2001 59 May 24 15:58 errout
|
|||
|
-rw-rw-r--. 1 da2001 da2001 68 May 25 12:24 welcome
|
|||
|
drwxrwxr-x. 2 da2001 da2001 91 May 28 09:58 test
|
|||
|
-rw-rw-r--. 1 da2001 da2001 114 May 28 13:49 cut_command_example.txt
|
|||
|
drwxrwxrwx. 2 da2001 da2001 142 May 28 14:44 mydir
|
|||
|
```
|
|||
|
Сортировка со скрытием дублирующихся значений `-u`
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ sort -u test.txt
|
|||
|
computer
|
|||
|
data
|
|||
|
debian
|
|||
|
laptop
|
|||
|
LAPTOP
|
|||
|
mouse
|
|||
|
RedHat
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### w
|
|||
|
`w` - показать авторизованных пользователей в системе
|
|||
|
```bash
|
|||
|
[da2001@co1 ~]$ w
|
|||
|
08:22:28 up 7 days, 23:16, 1 user, load average: 0.00, 0.00, 0.00
|
|||
|
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
|
|||
|
da2001 pts/0 192.168.1.8 08:22 2.00s 0.11s 0.00s w
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### useradd
|
|||
|
`useradd` - создать нового пользователя
|
|||
|
основные параметры:
|
|||
|
```
|
|||
|
-c, --comment КОММЕНТАРИЙ поле GECOS новой учётной записи
|
|||
|
-d, --home-dir ДОМ_КАТ домашний каталог новой учётной записи
|
|||
|
-D, --defaults показать или изменить настройки по умолчанию для useradd
|
|||
|
-e, --expiredate ДАТА_УСТ дата устаревания новой учётной записи
|
|||
|
-f, --inactive НЕАКТИВНОСТЬ период неактивности пароля новой учётной записи
|
|||
|
-g, --gid ГРУППА имя или ID первичной группы новой учётной записи
|
|||
|
-G, --groups ГРУППЫ список дополнительных групп новой учётной записи
|
|||
|
-K, --key КЛЮЧ=ЗНАЧЕНИЕ заменить значение по умолчанию из /etc/login.defs
|
|||
|
-m, --create-home создать домашний каталог пользователя
|
|||
|
-M, --no-create-home не создавать домашний каталог пользователя
|
|||
|
-N, --no-user-group не создавать группу с тем же именем что и у пользователя
|
|||
|
-o, --non-unique разрешить создание пользователей с повторяющимися (не уникальными) UID
|
|||
|
-s, --shell ОБОЛОЧКА регистрационная оболочка новой учётной записи
|
|||
|
-u, --uid UID пользовательский ID новой учётной записи
|
|||
|
-U, --user-group создать группу с тем же именем что и у пользователя
|
|||
|
```
|
|||
|
Создать пользователя `linda`, id 1201 (`-u 1201`), `-m` создать домашний каталог, добавить пользователя в группы sales и ops (`-G sales,ops`)
|
|||
|
```bash
|
|||
|
useradd -m -u 1201 -G sales,ops linda
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### passwd
|
|||
|
`passwd` - пароль учётной записи
|
|||
|
основные параметры:
|
|||
|
```
|
|||
|
-d, --delete удалить пароль заданной учётной записи
|
|||
|
-e, --expire просрочить пароль заданной учётной записи
|
|||
|
-l, --lock заблокировать заданную учётную запись
|
|||
|
-n, --mindays МИН_ДНЕЙ установить минимальное число дней перед сменой пароля в МИН_ДНЕЙ
|
|||
|
-S, --status показать состояние пароля заданной учётной записи
|
|||
|
-u, --unlock разблокировать заданную учётную запись
|
|||
|
-w, --warndays ПРЕДУП_ДНЕЙ установить количество дней с выдачей предупреждения в ПРЕДУП_ДНЕЙ
|
|||
|
-x, --maxdays МАКС_ДНЕЙ установить максимальное число дней перед сменой пароля в МАКС_ДНЕЙ
|
|||
|
```
|
|||
|
Задать пароль для пользователя `linda`
|
|||
|
```bash
|
|||
|
passwd linda
|
|||
|
```
|
|||
|
Изменить свойства пароля. Срок действия пароля истекает через 90 дней (`-x 90`). За три дня до истечения срока действия пользователь получит предупреждение (`-w 3`), и пароль необходимо использовать не менее 30 дней, прежде чем (`-n 30`) его можно будет изменить.
|
|||
|
```bash
|
|||
|
passwd -n 30 -w 3 -x 90 linda
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### chage
|
|||
|
`chage` - изменяет информацию об устаревании пароля пользователя
|
|||
|
основные опции:
|
|||
|
```
|
|||
|
-d, --lastday ПОСЛ_ДЕНЬ установить последний день смены пароля в ПОСЛ_ДЕНЬ
|
|||
|
-E, --expiredate ДАТА_УСТ установить дату окончания действия учётной записи в ДАТА_УСТ
|
|||
|
-I, --inactive НЕАКТИВНОСТЬ установить неактивность пароля после устаревания в значение НЕАКТИВНОСТЬ
|
|||
|
-l, --list показать «возраст» учётной записи
|
|||
|
-m, --mindays МИН_ДНЕЙ установить минимальное число дней перед сменой пароля в МИН_ДНЕЙ
|
|||
|
-M, --maxdays МАКС_ДНЕЙ установить максимальное число дней перед сменой пароля в МАКС_ДНЕЙ
|
|||
|
-W, --warndays ПРЕДУП_ДНЕЙ установить количество дней с выдачей предупреждения в ПРЕДУП_ДНЕЙ
|
|||
|
```
|
|||
|
```bash
|
|||
|
sudo chage -l laura
|
|||
|
```
|
|||
|
```
|
|||
|
Last password change : Jun 03, 2021
|
|||
|
Password expires : Sep 01, 2021
|
|||
|
Password inactive : never
|
|||
|
Account expires : never
|
|||
|
Minimum number of days between password change : 0
|
|||
|
Maximum number of days between password change : 90
|
|||
|
Number of days of warning before password expires : 3
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### groupadd
|
|||
|
`groupadd` - создание группы
|
|||
|
Создать группу `sales`
|
|||
|
```bash
|
|||
|
groupadd sales
|
|||
|
```
|
|||
|
Создать группу `prod` и указать её GID
|
|||
|
```bash
|
|||
|
groupadd prod -g 1201
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### usermod
|
|||
|
`usermod` - изменяет учётную запись пользователя
|
|||
|
Добавить пользователя linda в группу sales
|
|||
|
```bash
|
|||
|
usermod -aG sales linda
|
|||
|
```
|
|||
|
Изменить основную группу пользователя на группу sales
|
|||
|
```bash
|
|||
|
usermod -g sales
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### id
|
|||
|
`id` - информация о пользователе
|
|||
|
```bash
|
|||
|
da2001@Metromint:~$ id da2001
|
|||
|
uid=1000(da2001) gid=1000(da2001) группы=1000(da2001),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(kvm),114(lpadmin),134(sambashare),136(wireshark),139(libvirt)
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### wc
|
|||
|
`wc` - подсчет количества строк, слов, символов, байт
|
|||
|
```
|
|||
|
-c, --bytes напечатать количество байт
|
|||
|
-m, --chars напечатать количество символов
|
|||
|
-l, --lines напечатать количество новых строк
|
|||
|
-w, --words напечатать количество слов
|
|||
|
```
|
|||
|
запуск команды без параметров выдаст количество строк, слов, байт
|
|||
|
```bash
|
|||
|
da2001@Metromint:~$ cat test.txt
|
|||
|
Привет
|
|||
|
как
|
|||
|
дела
|
|||
|
da2001@Metromint:~$ wc test.txt
|
|||
|
3 3 29 test.txt
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
#### less
|
|||
|
`less` - постраничный вывод текста на экран
|
|||
|
Опций очень много, навигация по файлу осуществляется аналогично vim
|
|||
|
```
|
|||
|
-c, --squeeze-blank-lines удалить лишние пустые строки
|
|||
|
```
|
|||
|
Поиск по открытому файлу
|
|||
|
/text - поиск слова text вперед
|
|||
|
?text - поиск слова text назад
|
|||
|
|
|||
|
***
|