Раздел объемный и пожалуй поделю его я на несколько частей, поехали:
Вопросы среднего уровня о Linux
Что делают нижеследующие команды и как бы вы их использовали?
(What do the following commands do and how would you use them?)
1) tee
Команда tee в Linux нужна для записи вывода любой команды в один или несколько файлов.
$ tee опции файл файл2
Опции команды:
- -a или -append – Используется для записи вывода в конец существующего файла.
- -i или -ignore-interrupts – Используется, чтобы игнорировать прерывающие сигналы.
- -help – Используется для показа всех возможных операций.
- -version – Используется для показа текущей версии этой команды.
Для сохранения вывода команды можно передать один или несколько файлов.
2) awk
awk – утилита для обработки и фильтрации текста
$ awk опции ‘условие {действие} условие {действие}‘
С помощью действия можно выполнять преобразования с обрабатываемой строкой.
опции утилиты:
- -F, –field-separator – разделитель полей, используется для разбиения текста на колонки;
- -f, –file – прочитать данные не из стандартного вывода, а из файла;
- -v, –assign – присвоить значение переменной, например foo=bar;
- -b, –characters-as-bytes – считать все символы однобайтовыми;
- -d, –dump-variables – вывести значения всех переменных awk по умолчанию;
- -D, –debug – режим отладки, позволяет вводить команды интерактивно с клавиатуры;
- -e, –source – выполнить указанный код на языке awk;
- -o, –pretty-print – вывести результат работы программы в файл;
- -V, –version – вывести версию утилиты.
Это основные опции awk, но их намного больше.
функций-действия
- print(строка) – вывод чего либо в стандартный поток вывода;
- printf(строка) – форматированный вывод в стандартный поток вывода;
- system(команда) – выполняет команду в системе;
- length(строка) – возвращает длину строки;
- substr(строка, старт, количество) – обрезает строку и возвращает результат;
- tolower(строка) – переводит строку в нижний регистр;
- toupper(строка) – переводить строку в верхний регистр.
Функций тоже намного больше, но этого достаточно чтобы оценить масштаб возможностей утилиты.
В функциях-действиях можно использовать различные переменные и операторы, вот несколько из них:
- FNR – номер обрабатываемой строки в файле;
- FS – разделитель полей;
- NF – количество колонок в данной строке;
- NR – общее количество строк в обрабатываемом тексте;
- RS – разделитель строк, по умолчанию символ новой строки;
- $ – ссылка на колонку по номеру.
Кроме этих переменных, есть и другие, а также можно объявлять свои.
Условие позволяет обрабатывать только те строки, в которых содержатся нужные нам данные, его можно использовать в качестве фильтра, как grep. А ещё условие позволяет выполнять определенные блоки кода awk для начала и конца файла, для этого вместо регулярного выражения используйте директивы BEGIN (начало) и END (конец).
3) tr
Команда tr – используется для замены, замещения или удаления символов из стандартного ввода, отправляя результат на стандартный вывод. Обрабатывает она текст посимвольно. По умолчанию у её синтаксиса следующий вид (квадратные скобки указывают, что аргумент не обязателен):
$ tr [КЛЮЧ]… НАБОР1 [НАБОР2]
Всего доступно 4 ключа для уточнения операции над символами:
Ключ | Длинный вариант | Значение |
-c, -C | –complement | Сначала получить дополнение НАБОРА1 |
-d | –delete | Удалить знаки из НАБОРА2, не превращать |
-s | –squeeze-repeats | Замещать последовательность знаков, которые повторяются, из перечисленных в последнем НАБОРЕ, на один такой знак |
-t | –truncate-set1 | Сначала сократить НАБОР1 до размеров НАБОРА2 |
НАБОРЫ указываются как символьные строки. В большинстве случаев символы представляют сами себя. Полный набор опций представлен в следующей таблице:
Опция | Значение |
HHH | Знак в восьмеричной кодировке (с трех цифр ННН) |
\ | Обратный слэш |
b | Забой |
f | Перевод страницы |
n | Начать с новой строки |
r | Возврат каретки |
t | Горизонтальная табуляция |
v | Вертикальная табуляция |
ЗНАК1-ЗНАК2 | Все знаки от ЗНАК1 до ЗНАК2 в порядке возрастания |
[ЗНАК*] | ЗНАК заполняет НАБОР2 до длины НАБОРА1 |
[ЗНАК*ЧИСЛО] | Указанное ЧИСЛО одинаковых ЗНАКОВ; ЧИСЛО восьмиричных, если начинается с 0 |
[:alnum:] | Все буквы и цифры |
[:alpha:] | Все буквы |
[:blank:] | Все горизонтальные пробельные символы |
[:cntrl:] | Все управляющие знаки |
[:digit:] | Все цифры |
[:graph:] | Все печатаемые знаки, исключая пробел |
[:lower:] | Все маленькие буквы |
[:print:] | Все печатаемые знаки, включая пробел |
[:punct:] | Все знаки пунктуации |
[:space:] | Все вертикальные и горизонтальные пробельные знаки |
[:upper:] | Все большие буквы |
[:xdigit:] | Все шестнадцатиричные цифры |
[=ЗНАК=] | Все знаки, эквивалентные ЗНАКУ |
Превращение осуществляется, если не указано -d для обоих НАБОРОВ. -t можно использовать только во время превращения. Если нужно, НАБОР2 будет расширен до размеров НАБОРА1 повторением последнего символа. Лишние символы НАБОРА2 будут пропущены. Гарантированно расширяются в порядке возрастания только [:lower:] и [:upper:]. Использованные символы в НАБОРЕ2 во время превращения можно применять для определения превращения регистра только в парах. -s использует последний указанный набор. Уплотнение происходит после превращения или удаления.
3) cut
Команда 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.
4) tac
tac – это команда Linux, которая позволяет вам просматривать файлы построчно, начиная с последней строки. (tac не изменяет содержимое каждой отдельной строки, а только порядок, в котором представлены строки.) Он назван по аналогии с cat.
$ tac опции файл
Опции:
Короткий флаг | Длинный флаг | Описание |
-b | –before | Этот параметр добавляет разделитель до, а не после. |
-r | –regex | Этот параметр будет интерпретировать разделитель как регулярное выражение |
-s | –separator=STRING | Этот параметр использует СТРОКУ в качестве разделителя вместо новой строки. |
– | –help | справка |
– | –version | выводит информацию о версии |
5) curl
curl – это набор библиотек, в которых реализуются базовые возможности работы с URL страницами и передачи файлов. Команда поддерживает работу с протоколами: FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, LDAP, а также POP3, IMAP и SMTP.
$ curl опции ссылка
опции:
- -# – отображать простой прогресс-бар во время загрузки;
- -0 – использовать протокол http 1.0;
- -1 – использовать протокол шифрования tlsv1;
- -2 – использовать sslv2;
- -3 – использовать sslv3;
- -4 – использовать ipv4;
- -6 – использовать ipv6;
- -A – указать свой USER_AGENT;
- -b – сохранить Cookie в файл;
- -c – отправить Cookie на сервер из файла;
- -C – продолжить загрузку файла с места разрыва или указанного смещения;
- -m – максимальное время ожидания ответа от сервера;
- -d – отправить данные методом POST;
- -D – сохранить заголовки, возвращенные сервером в файл;
- -e – задать поле Referer-uri, указывает с какого сайта пришел пользователь;
- -E – использовать внешний сертификат SSL;
- -f – не выводить сообщения об ошибках;
- -F – отправить данные в виде формы;
- -G – если эта опция включена, то все данные, указанные в опции -d будут передаваться методом GET;
- -H – передать заголовки на сервер;
- -I – получать только HTTP заголовок, а все содержимое страницы игнорировать;
- -j – прочитать и отправить cookie из файла;
- -J – удалить заголовок из запроса;
- -L – принимать и обрабатывать перенаправления;
- -s – максимальное количество перенаправлений с помощью Location;
- -o – выводить контент страницы в файл;
- -O – сохранять контент в файл с именем страницы или файла на сервере;
- -p – использовать прокси;
- –proto – указать протокол, который нужно использовать;
- -R – сохранять время последнего изменения удаленного файла;
- -s – выводить минимум информации об ошибках;
- -S – выводить сообщения об ошибках;
- -T – загрузить файл на сервер;
- -v – максимально подробный вывод;
- -y – минимальная скорость загрузки;
- -Y – максимальная скорость загрузки;
- -z – скачать файл, только если он был модифицирован позже указанного времени;
- -V – вывести версию.
6) wget
wget – утилита предназначенная для скачивания файлов в консоли Linux.
$ wget опции адрес_ссылки
Основные опции:
- -V (–version) – вывести версию программы
- -h (–help) – вывести справку
- -b (–background) – работать в фоновом режиме
- -o файл (–out-file) – указать лог файл
- -d (–debug) – включить режим отладки
- -v (–verbose) – выводить максимум информации о работе утилиты
- -q (–quiet) – выводить минимум информации о работе
- -i файл (–input-file) – прочитать URL из файла
- –force-html – читать файл указанный в предыдущем параметре как html
- -t (–tries) – количество попыток подключения к серверу
- -O файл (–output-document) – файл в который будут сохранены полученные данные
- -с (–continue) – продолжить ранее прерванную загрузку
- -S (–server-response) – вывести ответ сервера
- –spider – проверить работоспособность URL
- -T время (–timeout) – таймаут подключения к серверу
- –limit-rate – ограничить скорость загрузки
- -w (–wait) – интервал между запросами
- -Q (–quota) – максимальный размер загрузки
- -4 (–inet4only) – использовать протокол ipv4
- -6 (–inet6only) – использовать протокол ipv6
- -U (–user-agent)– строка USER AGENT отправляемая серверу
- -r (–recursive)- рекурсивная работа утилиты
- -l (–level) – глубина при рекурсивном сканировании
- -k (–convert-links) – конвертировать ссылки в локальные при загрузке страниц
- -P (–directory-prefix) – каталог, в который будут загружаться файлы
- -m (–mirror) – скачать сайт на локальную машину
- -p (–page-requisites) – во время загрузки сайта скачивать все необходимые ресурсы
7) watch
watch – позволяет запускать указанную пользователем команду через определенные промежутки времени и печатать вывод этой команды в окне терминала.
$ watch опции команда_для_вывода
опции:
- -d (–differences) — служит для выделения тех данных в выводе команды, которые отличаются от предыдущих.
- -n (–interval seconds) — позволяет установить желаемый интервал запуска команды.
- -t (–no-title) — выключает отображение заголовков.
- -b (–beep) — если при выполнении команды возникнет ошибка, будет подан звуковой сигнал.
- -e (–errexit) — при возникновении ошибки вывод данных будет заморожен, команда watch прекратит работу после нажатия комбинации клавиш.
- -g (–chgexit) — выход при условии, что в выводе команды обнаружатся изменения.
- -c (–color) — интерпретирует последовательность цветов и стилей ANSI.
- -x (–exec) — выполнение команды будет передано интерпретатору sh -c поэтому, возможно, вам придется использовать дополнительные кавычки чтобы добиться желаемого эффекта. При использовании полной версии написания (–exec) команда будет выполняться в с помощью утилиты exec.
8) head
Команда head выводит начальные строки (по умолчанию — 10) из одного или нескольких документов.
$ head опции файл
опции:
- -c (–bytes) — позволяет задавать количество текста не в строках, а в байтах. При записи в виде –bytes=[-]NUM выводит на экран все содержимое файла, кроме NUM байт, расположенных в конце документа.
- -n (–lines) — показывает заданное количество строк вместо 10, которые выводятся по умолчанию. Если записать эту опцию в виде –lines=[-]NUM, будет показан весь текст кроме последних NUM строк.
- -q (–quiet, –silent) — выводит только текст, не добавляя к нему название файла.
- -v (–verbose) — перед текстом выводит название файла.
- -z (–zero-terminated) — символы перехода на новую строку заменяет символами завершения строк.
Переменная NUM, упомянутая выше — это любое число от 0 до бесконечности, задаваемое пользователем.
9) tail
Команда tail, она позволяет выводить заданное количество строк с конца файла, а также выводить новые строки в интерактивном режиме.
$ tail опции файл
опции:
- -c – выводить указанное количество байт с конца файла;
- -f – обновлять информацию по мере появления новых строк в файле;
- -n – выводить указанное количество строк из конца файла;
- –pid – используется с опцией -f, позволяет завершить работу утилиты, когда завершится указанный процесс;
- -q – не выводить имена файлов;
- –retry – повторять попытки открыть файл, если он недоступен;
- -v – выводить подробную информацию о файле;
10) less
Команда less — позволяет перематывать текст не только вперёд, но и назад, осуществлять поиск в обоих направлениях, переходить сразу в конец или в начало файла.
$ less опции файл
опции:
- -a, –search-skip-screen — не осуществлять поиск в тексте, который в данный момент отображен на экране;
- -bn, –buffers=n — задать размер буфера памяти;
- -c, –clear-screen — листать текст, полностью стирая содержимое экрана (построчная прокрутка работать не будет);
- -Dxcolor, –color=xcolor — задать цвет отображаемого текста;
- -E, –QUIT-AT-EOF — выйти, когда утилита достигнет конца файла;
- -e, –quit-at-eof — выйти, когда утилита второй раз достигнет конца файла;
- -F, –quit-if-one-screen — выйти, если содержимое файла помещается на одном экране;
- -f, –force — открыть специальный файл;
- -hn, –max-back-scroll=n — задать максимальное количество строк для прокрутки назад;
- -yn, –max-forw-scroll=n — задать максимальное количество строк для прокрутки вперёд;
- -i, –ignore-case — игнорировать регистр;
- -I, –IGNORE-CASE — игнорировать регистр, даже если паттерн для поиска содержит заглавные буквы;
- -jn, –jump-target=n — указать, в какой строке должна быть выведена искомая информация;
- -J, –status-column — пометить строки, соответствующие результатам поиска;
- -n, –line-numbers — не выводить номера строк;
- –N, –LINE-NUMBERS — вывести номера строк;
- -s, –squeeze-blank-lines — заменить множество идущих подряд пустых строк одной пустой строкой;
- -w, –hilite-unread — выделить первую строку нового фрагмента текста.
Во время просмотра текста утилитой можно управлять при помощи внутренних команд, набирая их на клавиатуре компьютера:
- h, H — справка;
- Space, Ctrl+V, f, Ctrl+F — прокрутить текст на один экран вперёд;
- Enter, Return, Ctrl+N, e, Ctrl+E, j, Ctrl+J — прокрутить текст на n строк вперед, по умолчанию n=1;
- y, Ctrl+Y, Ctrl+P, k, Ctrl+K — прокрутить текст на n строк назад, по умолчанию n=1;
- Ctrl+→ — прокрутить текст по горизонтали в конец строки;
- Ctrl+← — прокрутить текст по горизонтали в начало строки;
- :d — удалить текущий файл из списка файлов;
- Ctrl+G, :f — вывести основную информацию о файле;
- q, Q, :q, :Q, ZZ — выход.
11) cat
Команда cat – читает данные из файла или стандартного ввода и выводит их на экран.
$ cat опции файл1 файл2 …
опции:
- -b – нумеровать только непустые строки;
- -E – показывать символ $ в конце каждой строки;
- -n – нумеровать все строки;
- -s – удалять пустые повторяющиеся строки;
- -T – отображать табуляции в виде ^I;
- -h – отобразить справку;
- -v – версия утилиты.
12) touch
Команда touch – используется в Linux для создания файлов.
$ touch опции файл
Опции:
-a | Отвечает за изменение времени доступа к указанному файлу |
-m | Изменяет время модификации |
-c | Определяет, что объект с указанным именем создан не будет |
-r | Позволит использовать время доступа и модификации указанного файла |
-t | Предназначена для изменения даты и времени путем ручного ввода |
-d | Использует дату и время, заданные в виде строки |
–help | Даст возможность прочесть официальную документацию |
–version | Отобразит текущую версию утилиты |
13) sar
С помощью sar можно наблюдать за производительностью различных подсистем Linux (Процессор, Память, Ввод-Вывод) в реальном времени. Sar является частью пакета sysstat.
$ sar опции interval(in seconds) number of records
Опции:
–u – Создание отчета ЦП
–r – Создание отчета по памяти
–d –p – Создание отчета о устройстве – «-d», используется с «-p», чтобы сделать отчет в удобочитаемом формате
–S – Создание отчета по использованию SWAP
–b – Проверка активности ввода-вывода всей системы.
–n ‘Keyword’ (or ‘ALL’) – Просмотр сетевой статистики. Используется с ключевым словом, или «ALL» чтобы просмотреть всю сетевую статистику.
Ключевые слова:
-
- DEV – для статистики сетевого интерфейса,
- EDEV – отображение статистики отказов сетевого устройства
- IP – для сетевого трафика IPv4
- EIP – для сетевых ошибок IPv4
- ICMP – для сетевого трафика ICMPv4
- EICMP – для сетевых ошибок ICMPv4
- TCP – для сетевого трафика TCPv4
- ETCP – для сетевых ошибок TCPv4
- UDP – для сетевого трафика UDPv4
- NFS – для действий клиента NFS
- NFSD – для активности сервера NFS
- SOCK – для сокетов, используемых для IPv4 SOCK6, IP6, EIP6, ICMP6, UDP6 для IPv6
14) netstat
Команда netstat – выводит информацию о сетевых подключениях, таблицах маршрутизации, статистике интерфейса, маскарадных подключениях и членстве в многоадресной рассылке.
По умолчанию netstat отображает список открытых сокетов. Если не указывать никаких семейств адресов, то будут напечатаны активные сокеты всех настроенных семейств адресов.
$ netstat опции
Опции:
-a | Показывать состояние всех сокетов; |
-o | Показывать таймен |
-i | Показывает состояние сетевых интерфейсов |
-n | Показывать ip адрес, а не сетевое имя |
-r | Показать таблицы маршрутизации. При использовании с опцией -s показывает статистику маршрутизации. |
-s | Показать статистическую информацию по протоколам. При использовании с опцией -r показывает статистику маршрутизации. |
-f семейство_адресов | Ограничить показ статистики или адресов управляющих блоков только указанным семейством_адресов, в качестве которого можно указывать:inet Для семейства адресов AF_INET, или unix Для семейства адресов AF_UNIX. |
-I интерфейс | Показывать информацию о конкретном интерфейсе. |
-p | Отобразить идентификатор/название процесса, создавшего сокет (-p, —programs display PID/Program name for sockets) |
15) tcpdump
Утилита tcpdump – инструмент для перехвата и анализа сетевых пакетов. Позволяет просматривать все входящие и исходящие из определенного интерфейса пакеты и работает в командной строке.
$ tcpdump опции -i интерфейс фильтры
Опции:
- -A – выводить все пакеты в формате ASCII;
- -c – закрыть программу после перехвата n-ого количества пакетов;
- -C – при записи пакетов в файл, проверять размер файла, и если он больше заданного – создать новый файл;
- -D – вывести список доступных сетевых интерфейсов;
- -e – выводить информацию уровня соединения для каждого пакета, это может быть полезно, например, для отображения MAC адреса;
- -f – выводить доменное имя для ip адресов;
- -F – читать пакеты из файла, а не интерфейса;
- -G – создавать новый файл лога через указанный промежуток времени;
- -H – обнаруживать заголовки 802.11s;
- -i – имя интерфейса для перехвата пакетов. Вы можете захватывать пакеты со всех интерфейсов, для этого укажите any;
- -I – переключить интерфейс в режим монитора для захвата всех проходящих пакетов;
- -j – установить формат Timestamp для записи пакетов;
- -J – посмотреть доступные Timestamp;
- -K – не проверять контрольные суммы пакетов;
- -l – добавить поддержку прокрутки к выводу;
- -L – вывести поддерживаемые протоколы подключения для интерфейса;
- -n – не отображать доменные имена;
- -r – прочитать пакеты из файла, созданного с помощью -w;
- -v, -vv, -vvv – более подробный вывод;
- -q – выводить минимум информации;
- -w – записать вывод в файл;
- -Z – пользователь, от имени которого будут создаваться файлы.
16) lsof
lsof – команда Unix/Linux, которая отображает все открытые файлы или идентифицирует процессы, открытые конкретными файлами.
По умолчанию: без параметров lsof выводит список всех открытых файлов для активных процессов.
$ lsof опции
Опции:
-a – И результаты (вместо ИЛИ)
-l – показать идентификатор пользователя вместо имени пользователя в выводе
-h – получить помощь
-t – получить только идентификаторы процессов
-U – получить адрес сокета UNIX
-F – вывод готов к другой команде, которую можно отформатировать различными способами, например, -F pcfn (для идентификатора процесса, имени команды, дескриптора файла и имени файла с нулевым терминатором)