# Команды Ubuntu

## Работа с файлами и директориями

| Команда | Описание |
| --- | --- |
| `ls` | список файлов и каталогов |
| `ls -al` | форматированный список со скрытыми каталогами и файлами
| `cd dir` | сменить директорию на dir
| `cd` | сменить на домашний каталог
| `pwd` | показать текущий каталог
| `mkdir dir` | создать каталог dir
| `rm file` | удалить file
| `rm -r dir` | удалить каталог dir
| `rm -f file` | удалить форсированно file
| `rm -rf dir` | удалить форсированно каталог dir
| `cp file1 file2` | скопировать file1 в file2
| `cp -r dir1 dir2` | скопировать dir1 в dir2; создаст каталог dir2, если он не существует
| `mv file1 file2` | переименовать или переместить file1 в file2. если file2 существующий каталог - переместить file1 в каталог file2
| `ln -s file link` | создать символическую ссылку link к файлу file
| `touch file` | создать file
| `cat > file` | направить стандартный ввод в file
| `more file` | вывести содержимое file
| `head file` | вывести первые 10 строк file
| `tail file` | вывести последние 10 строк file
| `tail -f file` | вывести содержимое file по мере роста, начинает с последних 10 строк
| `cd /home` | перейти в директорию '/home'
| `cd ..` | перейти в директорию уровнем выше
| `cd ../..` | перейти в директорию двумя уровнями выше
| `cd ~user` | перейти в домашнюю директорию пользователя user
| `cd` | перейти в директорию, в которой находились до перехода в текущую директорию
| `pwd` | показать текущюю директорию
| `ls -F` | отобразить содержимое текущей директории с добавлением к именам символов, храктеризующих тип
| `ls -l` | показать детализированое представление файлов и директорий в текущей директории
| `ls -a` | показать скрытые файлы и директории в текущей директории
| `ls *[0-9]*` | показать файлы и директории содержащие в имени цифры
| `tree` | показать дерево файлов и директорий, начиная от корня (/)
| `lstree` -
| `mkdir dir1` | создать директорию с именем `dir1`
| `mkdir dir1 dir2` | создать две директории одновременно
| `mkdir -p /tmp/dir1/dir2` | создать дерево директорий
| `rmdir dir1` | удалить директорию с именем `dir1`
| `mv dir1 new_dir` | переименовать или переместить файл или директорию
| `cp dir/* .` | копировать все файлы директории dir в текущую директорию
| `cp -a /tmp/dir1 .` | копировать директорию dir1 со всем содержимым в текущую директорию
| `cp -a dir1 dir2` | копировать директорию dir1 в директорию dir2
| `ln -s file1 lnk1` | создать символическую ссылку на файл или директорию
| `ln file1 lnk1` | создать "жёсткую" (физическую) ссылку на файл или директорию
| `touch -t 0712250000 fileditest` | модифицировать дату и время создания файла, при его отсутствии, создать файл с указанными датой и временем (YYMMDDhhmm)

## Просмотр содержимого файлов

| Команда | Описание |
| --- | --- |
| `cat file1` | вывести содержимое файла file1 на стандартное устройсво вывода
| `tac file1` | вывести содержимое файла file1 на стандартное устройсво вывода в обратном порядке (последняя строка становиться первой и т.д.)
| `more file1` | постраничный вывод содержимого файла file1 на стандартное устройство вывода
| `less file1` | постраничный вывод содержимого файла file1 на стандартное устройство вывода, но с возможностью пролистывания в обе стороны (вверх-вниз), поиска по содержимому и т.п.
| `head -2 file1` | вывести первые две строки файла file1 на стандартное устройство вывода. По-умолчанию выводится десять строк
| `tail -2 file1` | вывести последние две строки файла file1 на стандартное устройство вывода. По-умолчанию выводится десять строк
| `tail -f /var/log/messages` | выводить содержимое файла /var/log/messages на стандартное устройство вывода по мере появления в нём текста.

## Сеть

| Команда | Описание |
| --- | --- |
| `ping host` | пропинговать host и вывести результат
| `whois domain` | получить информацию whois для domain
| `dig domain` | получить DNS информацию domain
| `dig -x host` | реверсивно искать host
| `wget file` | скачать file
| `wget -c file` | продолжить остановленную закачку
| `ifconfig eth0` | показать конфигурацию сетевого интерфейса eth0
| `ifup eth0` | активировать (поднять) интерфейс eth0
| `ifdown eth0` | деактивировать (опустить) интерфейс eth0
| `ifconfig eth0 192.168.1.1 netmask 255.255.255.0` | выставить интерфейсу eth0 ip-адрес и маску подсети
| `ifconfig eth0 promisc` | перевести интерфейс eth0 в promiscuous-режим для "отлова" пакетов (sniffing)
| `ifconfig eth0 -promisc` | отключить promiscuous-режим на интерфейсе eth0
| `dhclient eth0` | активировать интерфейс eth0 в dhcp-режиме.
| `route -n` | вывести локальную таблицу маршрутизации
| `netstat -rn` | 
| `netstat -ant \| awk '{print $6}' \| sort \| uniq -c \| sort -n` | показ количества соединений по типу
| `route add -net 0/0 gw IP_Gateway` | задать ip-адрес шлюза по умолчанию (default gateway)
| `route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1` | добавить статический маршрут в сеть 192.168.0.0/16 через шлюз с ip-адресом 192.168.1.1
| `route del 0/0 gw IP_gateway` | удалить ip-адрес шлюза по умолчанию (default gateway)
| `echo "1" > /proc/sys/net/ipv4/ip_forward` | разрешить пересылку пакетов (forwarding)
| `hostname` | отобразить имя компьютера
| `host www.linuxguide.it` | разрешить имя www.linuxguide.it хоста в ip-адрес и наоборот
| `host 62.149.140.85` | 
| `ip link show` | отобразить состояние всех интерфейсов
| `mii-tool eth0` | отобразить статус и тип соединения для интерфейса eth0
| `ethtool eth0` | отображает статистику интерфеса eth0 с выводом такой информации, как поддерживаемые и текущие режимы соединения
| `netstat -tupn` | отображает все установленные сетевые соединения по протоколам TCP и UDP без разрешения имён в ip-адреса и PID'ы и имена процессов, обеспечивающих эти соединения
| `netstat -tupln` | отображает все сетевые соединения по протоколам TCP и UDP без разрешения имён в ip-адреса и PID'ы и имена процессов, слушающих порты
| `tcpdump tcp port 80` | отобразить весь трафик на TCP-порт 80 (обычно - HTTP)
| `iwlist scan` | просканировать эфир на предмет, доступности беспроводных точек доступа
| `iwconfig eth1` | показать конфигурацию беспроводного сетевого интерфейса eth1

## Microsoft Windows networks(SAMBA)

| Команда | Описание |
| --- | --- |
| `nbtscan ip_addr` | разрешить netbios-имя nbtscan не во всех системах ставится по-умолчанию, возможно, придётся доустанавливать вручную. nmblookup включен в пакет samba.
| `nmblookup -A ip_addr` | 
| `smbclient -L ip_addr/hostname` | отобразить ресурсы, предоставленные в общий доступ на windows-машине
| `smbget -Rr smb://ip_addr/share` | подобно wget может получить файлы с windows-машин через smb-протокол
| `mount -t smbfs -o username=user,password=pass //winclient/share /mnt/share` | смонтировать smb-ресурс, предоставленный на windows-машине, в локальную файловую систему

## Управление процессами

| Команда | Описание |
| --- | --- |
| `ps` | вывести ваши текущие активные процессы
| `top` | показать все запущенные процессы
| `kill pid` | убить процесс с id pid
| `killall proc` | убить все процессы с именем proc
| `bg` | список остановленных и фоновых задач; продолжить выполнение остановленной задачи в фоне
| `fg` | выносит на передний план последние задачи
| `fg n` | вынести задачу n на передний план

## Права доступа на файлы

| Команда | Описание |
| --- | --- |
| `ls -lh` | просмотр полномочий на файлы и директории в текущей директории
| `ls /tmp \| pr -T5 -W$COLUMNS` | вывести содержимое директории /tmp и разделить вывод на пять колонок
| `chmod ugo+rwx directory1` | добавить полномочия на директорию directory1 ugo(User Group Other)+rwx(Read Write eXecute) - всем полные права. Аналогичное можно сделать таким образом `chmod 777 directory1`
| `chmod go-rwx directory1` | отобрать у группы и всех остальных все полномочия на директорию directory1.
| `chown user1 file1` | назначить владельцем файла file1 пользователя user1
| `chown -R user1 directory1` | назначить рекурсивно владельцем директории directory1 пользователя user1
| `chgrp group1 file1` | сменить группу-владельца файла file1 на group1
| `chown user1:group1 file1` | сменить владельца и группу владельца файла file1
| `find / -perm -u+s` | найти, начиная от корня, все файлы с выставленным SUID
| `chmod u+s /bin/binary_file` | назначить SUID-бит файлу /bin/binary_file. Это даёт возможность любому пользователю запускать на выполнение файл с полномочиями владельца файла.
| `chmod u-s /bin/binary_file` | снять SUID-бит с файла /bin/binary_file.
| `chmod g+s /home/public` | назначить SGID-бит директории /home/public.
| `chmod g-s /home/public` | снять SGID-бит с директории /home/public.
| `chmod o+t /home/public` | назначить STIKY-бит директории /home/public. Позволяет удалять файлы только владельцам
| `chmod o-t /home/public` | снять STIKY-бит с директории /home/public

## Специальные атрибуты файлов

| Команда | Описание |
| ------- | -------- |
| `chattr +a file1` | позволить открывать файл на запись только в режиме добавления
| `chattr +c file1` | позволяет ядру автоматически сжимать/разжимать содержимое файла.
| `chattr +d file1` | указавет утилите dump игнорировать данный файл во время выполнения backup'а
| `chattr +i file1` | делает файл недоступным для любых изменений: редактирование, удаление, перемещение, создание линков на него.
| `chattr +s file1` | позволяет сделать удаление файла безопасным, т.е. выставленный атрибут s говорит о том, что при удалении файла, место, занимаемое файлом на диске заполняется нулями, что предотвращяет возможность восстановления данных.
| `chattr +S file1` | указывает, что, при сохранении изменений, будет произведена синхронизация, как при выполнении команды sync
| `chattr +u file1` | данный атрибут указывает, что при удалении файла содержимое его будет сохранено и при необходимости пользователь сможет его восстановить
| `lsattr` | показать атрибуты файлов

## SSH

| Команда | Описание |
| --- | --- |
| `ssh user@host` | подключится к host как user
| `ssh -p port user@host` | подключится к host на порт port как user
| `ssh-copy-id user@host` | добавить ваш ключ на host для user чтобы включить логин без пароля и по ключам

## Поиск

| Команда | Описание |
| --- | --- |
| `grep pattern files` | искать pattern в files
| `grep -r pattern dir` | искать рекурсивно pattern в dir
| `command \| grep pattern` | искать pattern в выводе command
| `locate file` | найти все файлы с именем file
| `find / -name file1` | найти файлы и директории с именем file1. Поиск начать с корня (/)
| `find / -user user1` | найти файл и директорию принадлежащие пользователю user1. Поиск начать с корня (/)
| `find /home/user1 -name "*.bin"` | Найти все файлы и директории, имена которых оканчиваются на '. bin'. Поиск начать с '/ home/user1'
| `find /usr/bin -type f -atime +100` | найти все файлы в '/usr/bin', время последнего обращения к которым  более 100 дней
| `find /usr/bin -type f -mtime -10` | найти все файлы в '/usr/bin', созданные или изменённые в течении последних 10 дней
| `find / -name *.rpm -exec chmod 755 '{}' \;` | найти все фалы и директории, имена которых оканчиваются на '.rpm', и изменить права доступа к ним
| `find / -xdev -name "*.rpm"` | найти все фалы и директории, имена которых оканчиваются на '.rpm', игнорируя съёмные носители, такие как cdrom, floppy и т.п.
| `locate "*.ps"` | найти все файлы, сожержащие в имени '.ps'. Предварительно рекомендуется выполнить команду 'updatedb'
| `whereis halt` | показывает размещение бинарных файлов, исходных кодов и руководств, относящихся к файлу 'halt'
| `which halt` | отображает полный путь к файлу 'halt'

## Системная информация

| Команда | Описание |
| --- | --- |
| `date` | вывести текущую дату и время
| `cal` | вывести календарь на текущий месяц
| `uptime` | показать текущий аптайм
| `w` | показать пользователей онлайн
| `whoami` | имя, под которым вы залогинены
| `finger user` | показать информацию о user
| `uname -a` | показать информацию о ядре
| `cat /proc/cpuinfo` | информация ЦПУ
| `cat /proc/meminfo` | информация о памяти
| `man command` | показать мануал для command
| `df` | показать инф. о использовании дисков
| `du` | вывести “вес” текущего каталога
| `free` | использование памяти и swap
| `whereis app` | возможное расположение программы app
| `which app` | какая app будет запущена по умолчанию
| `arch` | отобразить архитектуру компьютера
| `uname -m` | 
| `uname -r` | отобразить используемую версию ядра
| `dmidecode -q` | показать аппаратные системные компоненты - (SMBIOS / DMI)
| `hdparm -i /dev/hda` | вывести характеристики жесткого диска
| `hdparm -tT /dev/sda` | протестировать производительность чтения данных с жесткого диска
| `cat /proc/cpuinfo` | отобразить информацию о процессоре
| `cat /proc/interrupts` | показать прерывания
| `cat /proc/meminfo` | проверить использование памяти
| `cat /proc/swaps` | показать файл(ы) подкачки
| `cat /proc/version` | вывести версию ядра
| `cat /proc/net/dev` | показать сетевые интерфейсы и статистику по ним
| `cat /proc/mounts` | отобразить смонтированные файловые системы
| `lspci -tv` | показать в виде дерева PCI устройства
| `lsusb -tv` | показать в виде дерева USB устройства
| `date	` | вывести системную дату
| `cal 2007` | вывести таблицу-календарь 2007-го года
| `date 041217002007.00` | установить системные дату и время ММДДЧЧммГГГГ.СС (МесяцДеньЧасМинутыГод.Секунды)
| `clock -w` | сохранить системное время в BIOS

## Остановка системы

| Команда | Описание |
| --- | --- |
| `shutdown -h now` | Остановить систему
| `init 0` | 
| `telinit 0` | 
| `shutdown -h hours:minutes` | запланировать остановку системы на указанное время
| `shutdown -c` | отменить запланированную по расписанию остановку системы
| `shutdown -r now` | перегрузить систему
| `reboot` | 
| `logout` | выйти из системы

## Архивация

| Команда | Описание |
| --- | --- |
| `tar cf file.tar files` | создать tar-архив с именем file.tar содержащий files
| `tar xf file.tar` | распаковать file.tar
| `tar czf file.tar.gz files` | создать архив tar с сжатием Gzip
| `tar xzf file.tar.gz` | распаковать tar с Gzip
| `tar cjf file.tar.bz2` | создать архив tar с сжатием Bzip2
| `tar xjf file.tar.bz2` | распаковать tar с Bzip2
| `gzip file` | сжать file и переименовать в file.gz
| `gzip -d file.gz` | разжать file.gz в file
| `bunzip2 file1.bz2` | разжимает файл 'file1.gz'
| `gunzip file1.gz` | 
| `gzip file1` | сжимает файл 'file1'
| `bzip2 file1` | 
| `gzip -9 file1` | сжать файл file1 с максимальным сжатием
| `rar a file1.rar test_file` | создать rar-архив 'file1.rar' и включить в него файл test_file
| `rar a file1.rar file1 file2 dir1` | создать rar-архив 'file1.rar' и включить в него file1, file2 и dir1
| `rar x file1.rar` | запаковать rar-архив
| `unrar x file1.rar` | распаковать rar-архив
| `tar -cvf archive.tar file1` | создать tar-архив archive.tar, содержащий файл file1
| `tar -cvf archive.tar file1 file2 dir1` | создать tar-архив archive.tar, содержащий файл file1, file2 и dir1
| `tar -tf archive.tar` | показать содержимое архива
| `tar -xvf archive.tar` | распаковать архив
| `tar -xvf archive.tar -C /tmp` | распаковать архив в /tmp
| `tar -cvfj archive.tar.bz2 dir1` | создать архив и сжать его с помощью bzip2(Прим.переводчика. ключ -j работает не во всех *nix системах)
| `tar -xvfj archive.tar.bz2` | разжать архив и распаковать его(Прим.переводчика. ключ -j работает не во всех *nix системах)
| `tar -cvfz archive.tar.gz dir1` | создать архив и сжать его с помощью gzip
| `tar -xvfz archive.tar.gz` | разжать архив и распаковать его
| `zip file1.zip file1` | создать сжатый zip-архив
| `zip -r file1.zip file1 file2 dir1` | создать сжатый zip-архив и со включением в него нескольких файлов и/или директорий
| `unzip file1.zip` | разжать и распаковать zip-архив

## Клавиатурные сочетания

| Команда | Описание |
| --- | --- |
| `Ctrl+C` | завершить текущую команду
| `Ctrl+Z` | остановить текущую команду, продолжть с fg на переднем плане или bg в фоне
| `Ctrl+D` | разлогиниться, тоже самое, что и exit
| `Ctrl+W` | удалить одно слово в текущей строке
| `Ctrl+U` | удалить строку

## Монтирование файловых систем

| Команда | Описание |
| --- | --- |
| `mount /dev/hda2 /mnt/hda2` | монтирует раздел 'hda2' в точку монтирования '/mnt/hda2'. Убедитесь в наличии директории-точки монтирования '/mnt/hda2'
| `umount /dev/hda2` | размонтирует раздел 'hda2'. Перед выполнением, покиньте '/mnt/hda2'
| `fuser -km /mnt/hda2` | принудительное размонтирование раздела. Применяется в случае, когда раздел занят каким-либо пользователем
| `umount -n /mnt/hda2` | выполнить размонитрование без занесения информации в /etc/mtab. Полезно когда файл имеет атрибуты "только чтение" или недостаточно места на диске
| `mount /dev/fd0 /mnt/floppy` | монтировать флоппи-диск
| `mount /dev/cdrom /mnt/cdrom` | монтировать CD или DVD
| `mount /dev/hdc /mnt/cdrecorder` | монтировать CD-R/CD-RW или DVD-R/DVD-RW(+-)
| `mount -o loop file.iso /mnt/cdrom` | смонтировать ISO-образ
| `mount -t vfat /dev/hda5 /mnt/hda5` | монтировать файловую систему Windows FAT32
| `mount -t smbfs -o username=user,password=pass //winclient/share /mnt/share` | монтировать сетевую файловую систему Windows (SMB/CIFS)
| `mount -o bind /home/user/prg /var/ftp/user` | "монтирует" директорию в директорию (binding). Доступна с версии ядра 2.4.0. Полезна, например, для предоставления содержимого пользовательской директории через ftp при работе ftp-сервера в "песочнице" (chroot), когда симлинки сделать невозможно. Выполнение данной команды сделает копию содержимого /home/user/prg в /var/ftp/user

## Дисковое пространство

| Команда | Описание |
| --- | --- |
| `df -h` | отображает информацию о смонтированных разделах с отображением общего, доступного и используемого пространства (Прим.переводчика. ключ -h работает не во всех *nix системах)
| `ls -lSr \| more` | выдаёт список файлов и директорий рекурсивно с сортировкой по возрастанию размера и позволяет осуществлять постраничный просмотр
| `du -sh dir1` | подсчитывает и выводит размер, занимаемый директорией 'dir1' (Прим.переводчика. ключ -h работает не во всех *nix системах)
| `du -sk * \| sort -rn` | отображает размер и имена файлов и директорий, с соритровкой по размеру
| `rpm -q -a --qf '%10{SIZE}t%{NAME}n' \| sort -k1,1n` | показывает размер используемого дискового пространства, занимаемое файлами rpm-пакета, с сортировкой по размеру (fedora, redhat и т.п.)

## Пользователи и группы

| Команда | Описание |
| --- | --- |
| `groupadd group_name` | создать новую группу с именем group_name
| `groupdel group_name` | удалить группу group_name
| `groupmod -n new_group_name old_group_name` | переименовать группу old_group_name в new_group_name
| `useradd -c "Nome Cognome" -g admin -d /home/user1 -s /bin/bash user1` | создать пользователя user1, назначить ему в качестве домашнего каталога /home/user1, в качестве shell'а /bin/bash, включить его в группу admin и добавить комментарий Nome Cognome
| `useradd user1` | создать пользователя user1
| `userdel -r user1` | удалить пользователя user1 и его домашний каталог
| `usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1` | изменить атрибуты пользователя
| `passwd` | сменить пароль
| `passwd user1` | сменить пароль пользователя user1 (только root)
| `chage -E 2005-12-31 user1` | установить дату окончания действия учётной записи пользователя user1
| `pwck` | проверить корректность системных файлов учётных записей. Проверяются файлы /etc/passwd и /etc/shadow
| `grpck` | проверяет корректность системных файлов учётных записей. Проверяется файл/etc/group
| `newgrp [-] group_nam` | изменяет первичную группу текущего пользователя. Если указать "-", ситуация будет идентичной той, в которой пользователь вышил из системы и снова вошёл. Если не указывать группу, первичная группа будет назначена из /etc/passwd

## DEB пакеты (Debian, Ubuntu и тому подобное)

| Команда | Описание |
| --- | --- |
| `dpkg -i package.deb` | установить / обновить пакет
| `dpkg -r package_name` | удалить пакет из системы
| `dpkg -l` | показать все пакеты, установленные в систему
| `dpkg -l \| grep httpd` | среди всех пакетов, установленных в системе, найти пакет содержащий в своём имени "httpd"
| `dpkg -s package_name` | отобразить инфрмацию о конкретном пакете
| `dpkg -L package_name` | вывести список файлов, входящих в пакет, установленный в систему
| `dpkg --contents package.deb` | отобразить список файлов, входящих в пакет, который ешё не установлен в систему
| `dpkg -S /bin/ping` | найти пакет, в который входит указанный файл.
| `apt` | средство управление пакетами (Debian, Ubuntu и тому подобное)
| `apt-get install package_name` | установить / обновить пакет
| `apt-cdrom install package_name` | установить / обновить пакет с cdrom'а
| `apt-get update` | получить обновлённые списки пакетов
| `apt-get upgrade` | обновить пакеты, установленные в систему
| `apt-get remove package_name` | удалить пакет, установленный в систему с сохранением файлов конфигурации
| `apt-get purge package_name` | удалить пакет, установленный в систему с удалением файлов конфигурации
| `apt-get check` | проверить целостность зависимостей
| `apt-get clean` | удалить загруженные архивные файлы пакетов
| `apt-get autoclean` | удалить старые загруженные архивные файлы пакетов

## Манипуляции с текстом

| Команда | Описание |
| --- | --- |
| `cat file_originale \| [operation: sed, grep, awk, grep и т.п.] > result.txt` | общий синтаксис выполнения действий по обработке содержимого файла и вывода результата в новый
| `cat file_originale \| [operazione: sed, grep, awk, grepи т.п.] >> result.txt` | общий синтаксис выполнения действий по обработке содержимого файла и вывода результата в существующий файл. Если файл не существует, он будет создан
| `grep Aug /var/log/messages` | из файла '/var/log/messages' отобрать и вывести на стандартное устройство вывода строки, содержащие "Aug"
| `grep ^Aug /var/log/messages` | из файла '/var/log/messages' отобрать и вывести на стандартное устройство вывода строки, начинающиеся на "Aug"
| `grep [0-9] /var/log/messages` | из файла '/var/log/messages' отобрать и вывести на стандартное устройство вывода строки, содержащие цифры
| `grep Aug -R /var/log/*` | отобрать и вывести на стандартное устройство вывода строки, содержащие "Aug", во всех файлах, находящихся в директории /var/log и ниже
| `sed 's/stringa1/stringa2/g' example.txt` | в файле example.txt заменить "string1" на "string2", результат вывести на стандартное устройство вывода.
| `sed '/^$/d' example.txt` | удалить пустые строки из файла example.txt
| `sed '/ *#/d; /^$/d' example.txt` | удалить пустые строки и комментарии из файла example.txt
| `echo 'esempio' \| tr '[:lower:]' '[:upper:]'` | преобразовать символы из нижнего регистра в верхний
| `sed -e '1d' result.txt` | удалить первую строку из файла example.txt
| `sed -n '/string1/p'` | отобразить только строки содержашие "string1"
| `sed -e 's/ *$//' example.txt` | удалить пустые символы в в конце каждой строки
| `sed -e 's/string1//g' example.txt` | удалить строку "string1" из текста не изменяя всего остального
| `sed -n '1,8p;5q' example.txt` | взять из файла с первой по восьмую строки и из них вывести первые пять
| `sed -n '5p;5q' example.txt` | ывести пятую строку
| `sed -e 's/0*/0/g' example.txt` | заменить последовательность из любого количества нулей одним нулём
| `cat -n file1` | пронумеровать строки при выводе содержимого файла
| `cat example.txt \| awk 'NR%2==1'` | при выводе содержимого файла, не выводить чётные строки файла
| `echo a b c \| awk '{print $1}'` | вывести первую колонку. Разделение, по-умолчанию, по проблелу/пробелам или символу/символам табуляции
| `echo a b c \| awk '{print $1,$3}'` | вывести первую и треью колонки. Разделение, по-умолчанию, по проблелу/пробелам или символу/символам табуляции
| `paste file1 file2` | объединить содержимое file1 и file2 в виде таблицы: строка 1 из file1 = строка 1 колонка 1-n, строка 1 из file2 = строка 1 колонка n+1-m
| `paste -d '+' file1 file2` | объединить содержимое file1 и file2 в виде таблицы с разделителем "+"
| `sort file1 file2` | отсортировать содержимое двух файлов
| `sort file1 file2 \| uniq` | отсортировать содержимое двух файлов, не отображая повторов
| `sort file1 file2 \| uniq -u` | отсортировать содержимое двух файлов, отображая только уникальные строки (строки, встречающиеся в обоих файлах, не выводятся на стандартное устройство вывода)
| `sort file1 file2 \| uniq -d` | отсортировать содержимое двух файлов, отображая только повторяющиеся строки
| `comm -1 file1 file2` | сравнить содержимое двух файлов, не отображая строки принадлежащие файлу 'file1'
| `comm -2 file1 file2` | сравнить содержимое двух файлов, не отображая строки принадлежащие файлу 'file2'
| `comm -3 file1 file2` | сравнить содержимое двух файлов, удаляя строки встречающиеся в обоих файлах

## Анализ файловых систем

| Команда | Описание |
| --- | --- |
| `badblocks -v /dev/hda1` | проверить раздел hda1 на наличие bad-блоков
| `fsck /dev/hda1` | проверить/восстановить целостность linux-файловой системы раздела hda1
| `fsck.ext2 /dev/hda1` | проверить/восстановить целостность файловой системы ext2 раздела hda1
| `e2fsck /dev/hda1` | проверить/восстановить целостность файловой системы
| `e2fsck -j /dev/hda1` | проверить/восстановить целостность файловой системы ext3 раздела hda1 с указанием, что журнал расположен там же
| `fsck.ext3 /dev/hda1` | проверить/восстановить целостность файловой системы ext3 раздела hda1
| `fsck.vfat /dev/hda1` | проверить/восстановить целостность файловой системы fat раздела hda11
| `fsck.msdos /dev/hda1` | 
| `dosfsck /dev/hda1` | 

## Форматирование файловых систем

| Команда | Описание |
| --- | --- |
| `mkfs /dev/hda1` | создать linux-файловую систему на разделе hda1
| `mke2fs /dev/hda1` | создать файловую систему ext2 на разделе hda1
| `mke2fs -j /dev/hda` | создать журналирующую файловую систему ext3 на разделе hda1
| `mkfs -t vfat 32 -F /dev/hda1` | создать файловую систему FAT32 на разделе hda1
| `fdformat -n /dev/fd0` | форматирование флоппи-диска без проверки
| `mkswap /dev/hda3` | создание swap-пространства на разделе hda3 swap-пространства
| `mkswap /dev/hda3` | создание swap-пространства на разделе hda3
| `swapon /dev/hda3` | активировать swap-пространство, расположенное на разделе hda3
| `swapon /dev/hda2 /dev/hdb3` | активировать swap-пространства, расположенные на разделах hda2 и hdb3

## Создание резервных копий (backup)

| Команда | Описание |
| --- | --- |
| `dump -0aj -f /tmp/home0.bak /home` | создать полную резервную копию директории /home в файл /tmp/home0.bak
| `dump -1aj -f /tmp/home0.bak /home` | создать инкрементальную резервную копию директории /home в файл /tmp/home0.bak
| `restore -if /tmp/home0.bak` | восстановить из резервной копии /tmp/home0.bak
| `rsync -rogpav --delete /home /tm` | синхронизировать /tmp с /home
| `rsync -rogpav -e ssh --delete /home ip_address:/tmp` | синхронизировать через SSH-туннель
| `rsync -az -e ssh --delete ip_addr:/home/public /home/local` | синхронизировать локальную директорию с удалённой директорией через ssh-туннель со сжатием
| `rsync -az -e ssh --delete /home/local ip_addr:/home/public` | синхронизировать удалённую директорию с локальной директорией через ssh-туннель со сжатием
| `dd bs=1M if=/dev/hda \| gzip \| ssh user@ip_addr 'dd of=hda.gz'` | сделать "слепок" локального диска в файл на удалённом компьютере через ssh-туннель
| `tar -Puf backup.tar /home/user` | создать инкрементальную резервную копию директории '/home/user' в файл backup.tar с сохранением полномочий
| `(cd /tmp/local/ && tar c . ) \| ssh -C user@ip_addr 'cd /home/share/ && tar x -p'` | копирование содержимого /tmp/local на удалённый компьютер через ssh-туннель в /home/share/
| `(tar c /home ) \| ssh -C user@ip_addr 'cd /home/backup-home && tar x -p'` | копирование содержимого /home  на удалённый компьютер через ssh-туннель в /home/backup-home
| `tar cf - . \| (cd /tmp/backup ; tar xf - )` | копирование одной директории в другую с сохранением полномочий и линков
| `find /home/user1 -name '*.txt' \| xargs cp -av --target-directory=/home/backup/ --parents` | поиск в /home/user1 всех файлов, имена которых оканчиваются на '.txt', и копирование их в другую директорию
| `find /var/log -name '*.log' \| tar cv --files-from=- \| bzip2 > log.tar.bz2` | поиск в /var/log всех файлов, имена которых оканчиваются на '.log', и создание bzip-архива из них

## IPTABLES (firewall)

| Команда | Описание |
| --- | --- |
| `iptables -t filter -nL` | отобразить все цепочки правил
| `iptables -nL` | 
| `iptables -t nat -L` | отобразить все цепочки правил в NAT-таблице
| `iptables -t filter -F` | очистить все цепочки правил в filter-таблице
| `iptables -F` | 
| `iptables -t nat -F` | очистить все цепочки правил в NAT-таблице
| `iptables -t filter -X` | удалить все пользовательские цепочки правил в filter-таблице
| `iptables -t filter -A INPUT -p tcp --dport telnet -j ACCEPT` | позволить входящее подключение telnet'ом
| `iptables -t filter -A OUTPUT -p tcp --dport http -j DROP` | блокировать исходящие HTTP-соединения
| `iptables -t filter -A FORWARD -p tcp --dport pop3 -j ACCEPT` | позволить "прокидывать" (forward) POP3-соединения
| `iptables -t filter -A INPUT -j LOG --log-prefix "DROP INPUT"` | включить журналирование ядром пакетов, проходящих через цепочку INPUT, и добавлением к сообщению префикса "DROP INPUT"
| `iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE` | включить NAT (Network Address Translate) исходящих пакетов на интерфейс eth0. Допустимо при использовании с динамически выделяемыми ip-адресами.
| `iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp -m tcp --dport 22 -j DNAT --to-destination 10.0.0.2:22` | перенаправление пакетов, адресованных одному хосту, на другой хост

## Мониторинг и отладка

| Команда | Описание |
| --- | --- |
| `top` | отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (с автоматическим обновлением данных)
| `ps -eafw` | отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (единожды)
| `ps -e -o pid,args --forest` | вывести PID'ы и процессы в виде дерева
| `pstree` | отобразить дерево процессов
| `kill -9 98989` | "убить" процесс с PID 98989 "на смерть" (без соблюдения целостности данных)
| `kill -KILL 98989` | 
| `kill -TERM 98989` | Корректно завершить процесс с PID 98989
| `kill -1 98989` | заставить процесс с PID 98989 перепрочитать файл конфигурации
| `kill -HUP 98989` | 
| `lsof -p 98989` | отобразить список файлов, открытых процессом с PID 98989
| `lsof /home/user1` | отобразить список открытых файлов из директории /home/user1
| `strace -c ls >/dev/null` | вывести список системных вызовов, созданных и полученных процессом ls
| `strace -f -e open ls >/dev/null` | вывести вызовы бибилотек
| `watch -n1 'cat /proc/interrupts'` | отображать прерывания в режиме реального времени
| `last reboot` | отобразить историю перезагрузок системы
| `last user1` | отобразить историю регистрации пользователя user1 в системе и время его нахождения в ней
| `lsmod` | вывести загруженные модули ядра
| `free -m` | показать состояние оперативной памяти в мегабайтах
| `smartctl -A /dev/hda` | контроль состояния жёсткого диска /dev/hda через SMART
| `smartctl -i /dev/hda` | проверить доступность SMART на жёстком диске /dev/hda
| `tail /var/log/dmesg` | вывести десять последних записей из журнала загрузки ядра
| `tail /var/log/messages` | вывести десять последних записей из системного журнала

























