Администрирование Linux $ Командная оболочка



Рассмотрим джентельменский набор каждого, уважающего себя линуксоида:



cat - для просмотра файла

cat [файл]



tail - просмотр последних строк

tail [файла] - вывод 10 последних строк в файле

tail -n [номер] - вывод до указанной строки



head - аналогично tail, но ток сверху-вниз



wc - вывод количества:

wc -l [файл] - количество строк

wc -c [файл] - символов

wc -w [файл] - слов

Без передачи аргумент выводит в таком порядке (строки-слова-символы-файл)

Если по конвейеру результат перенаправляется на ввод (stdin) - то отображается лишь счетчик (без файла)



grep - джентельменский набор для фильтрации всего, даже поток текста, перенаправленный на ввод (stdin). Таким образом, можно проводить несколько фильтраций одной командой:

grep -v [аргумент] [файл] - фильтрация всего, что не равно аргументу

grep -i [аргумент] [файл] - учет без регистра (верхние-нижние)

grep -l [аргумент] [файл] - вывод файлов с указанным названием

grep -c [аргумент] [файл] - подсчет найденного образца

grep -r [аргумент] [файл] - рекурсивный поиск по директориям

grep -w [аргумент] [файл] - вывод только совпадающих значений



cut - срезает часть файла - 2 разделителя (d - для полей | f - для столбцов)

>> cut -d " " -f 5,6,7 < access.log

worker process 1076

worker process 1077

worker process 1078

worker process 1079

Вывод 5,6 и 7 столбцов из файла access.log (d в основном, оставляют пустым " ")



paste - объединяет файлы как колонки. По умолчанию, в качестве разделителя юзается табуляция, но можно заменить параметром -d[разделитель] -d:. Параметром -s объединяются значения из файла или stdin потока, разделитель указывается после -d

paste [файл] [...]



sort - просто сортирует данные (в файле или в входном потоке)

sort -r - реверсионная сортировка (наоборот)



uniq - вывод ток уникальные значения

uniq -c - к каждой строке указывается количество (сколько раз оно встречалось)

uniq -u - показывает только уникальные значения

Особенно полезно при сочетании в конвейере: cut -d " " -f 2 < err.log | sort | uniq



awk - язык программирования, но в 99% случаев он юзается для разбивки файлов на столбцы, причем даже при перемешенных табов и пробелов, лучше чем cut в своем роде



cat error.log | awk '{ print $5, "=> " $10, $11}'

worker => signal 9

worker => signal 9

worker => signal 9

worker => signal 9

Можно кастомизировать вывод, добавлять условные выражения, циклами баловаться и прочую хуйню делать.



tr - залупа для преобразования букв. Например заменить нижний регистр на верхний.

>> echo "xyu" | tr a-z A-Z

XYU



sed - интерактивный редактор для преобразования текста во входном потоке строка за строкой. Входным аргументом юзается файл или stdin, на выходе тот же файл или stdout (перенаправление результата на сохранение файла):

>> cat access.log | sed 's/worker/Служба/'

Вместо /, как разделитель можно юзать любой символ (@, :)



По умолчанию sed выдаёт результат в свой stdout, но может отредактировать и оригинальный файл с опцией -i



sed -i '' 's/C#/Pidar/' result.txt