Полезные однострочники для Linux

Неочевидные связки из консольных команд на все случаи жизни

Настройки отображения темы Показывать по сообщений с сортировкой .
Выводить , отправленные .
Одна страница
Распечатать
4X_Pro
Создатель форума
Всего сообщений: 1063
Зарегистрирован: 9 дек 2015, 19:20
Рейтинг пользователя: 484

0
25 декабря 2018, 23:17. Редактировалось 1 раз, последний — 25 декабря 2018, 23:24#1
В этой теме буду собирать различные полезные однострочники для Linux.

4X_Pro
Создатель форума
Всего сообщений: 1063
Зарегистрирован: 9 дек 2015, 19:20
Рейтинг пользователя: 484

0
25 декабря 2018, 23:23. Редактировалось 1 раз, последний — 25 декабря 2018, 23:24#2
Итак, начнем. Вот подсчет количества суммарного количества строк в файлах определенного типа во всех подкаталогах:
find ./ -name '*.php' -exec wc -l {} \;| awk '{ SUM += $1 } END {print SUM}'
Работает следующим образом: find, начиная с текущего каталога (./) ищет все файлы, маска для которых указана в параметре -name (в данном примере — *.php). Для каждого из найденных файлов запускается команда wc с параметром -l, чтобы считалось только число столбцов (без него еще считается число слов и символов). Получившийся результат из строк вида "число имя_файла" передается в awk, который производит суммирование по первому столбцу в переменную SUM, значение которой и выдается по окончанию работы.
В частности, с помощью такой команды можно подсчитывать общее число строк в том или ином программном продукте.

10geek
Новичок
Всего сообщений: 60
Зарегистрирован: 29 июн 2018, 09:36
Рейтинг пользователя: 1

1
2 февраля 2019, 11:02. Редактировалось 2 раза, последний — 2 февраля 2019, 11:07#3
Рекурсивный подсчёт большого количества файлов в каталоге:
find -L путь_к_каталогу -type f -printf \\n | awk 'BEGIN { count = 0 } { if(!(++count % 1000)) printf("%s\r", count) } END { print count }'
Показывает в реальном времени, сколько уже насчитано файлов через каждые 1000 файлов.
Опция -L нужна в случае, если требуется подсчитывать символические ссылки, указывающие на файлы. Имейте ввиду, что если указана опция -L, find будет рекурсивно переходить в каталоги, на которые указывают символические ссылки.

4X_Pro
Создатель форума
Всего сообщений: 1063
Зарегистрирован: 9 дек 2015, 19:20
Рейтинг пользователя: 484

1
20 сентября 2019, 15:07. Редактировалось 1 раз, последний — 20 сентября 2019, 15:12#4
Вывод списка всех видеовыходов (взято из документации по ArchLinux):
for p in /sys/class/drm/*/status; do con=${p%/status}; echo -n "${con#*/card?-}: "; cat $p; done
Полезно для использования в командной строке ядра video=выход:d для отключения ненужных портов.

10geek
Новичок
Всего сообщений: 60
Зарегистрирован: 29 июн 2018, 09:36
Рейтинг пользователя: 1

0
9 октября 2019, 01:05. Редактировалось 1 раз, последний — 9 октября 2019, 04:08#5
Вывод информации об IOMMU-группах PCI-устройств:
find /sys/kernel/iommu_groups -type l -exec sh -c 'IFS=/; set -- $0; printf '\''IOMMU Group %-4s '\'' "$5"; lspci -nns "$7"' {} \; | sort -n -k3
Может понадобиться для проброса PCI-устройств в виртуальные машины на KVM, Xen и других гипервизорах. Для проброса любого из устройств пробрасывать нужно все устройства из группы, в которой находится пробрасываемое устройство.

Одна страница
Распечатать

У вас нет прав для отправки сообщений в эту тему.

Задать вопрос

Здесь можно задать мне вопрос или спросить совета по любой теме, затронутой в блогах или на форуме. После того, как я отвечу, вопрос и ответ появятся в соответствующем разделе. Но не забываем, что я — сторонник slow life, поэтому каких-либо сроков ответов не обещаю. Самые интересные вопросы станут основой для новых тем на форуме или записей в блоге.
Сразу предупреждаю: глупости, провокации, троллинг и тому подобное летит прямо в /dev/null.