Консольные хитрости #2
Продолжаем публикацию “однострочников” для bash, которые выполняют полезные и интересные действия :)
Список установленных расширений для Firefox
grep -hIr -m 1 em:name ~/.mozilla/firefox/*.default/extensions|sed 's#\s*##'|tr '<>=' '"""'|cut -f3 -d'"'|sort -u
Список установленных расширений для Chromium (с адресом страницы)
for i in $(find ~/.config/chromium/*/Extensions -name 'manifest.json'); do n=$(grep -hIr name $i| cut -f4 -d '"'| sort);u="https://chrome.google.com/extensions/detail/";ue=$(basename $(dirname $(dirname $i))); echo -e "$n:\n$u$ue\n" ; done
Уровень сигнала wifi
/sbin/iwconfig wlan0 | grep Quality | cut -d = -f2 | awk '{print $1}'
Оптимизация sqlite-баз, в которых Firefox хранит всякую служебную информацию. Позволяет немного ускорить его работу
find ~/.mozilla/firefox -name '*.sqlite' -print -exec sqlite3 {} "VACUUM; REINDEX;" \;
Количество процессов для пользователя (Linux only)
pgrep -cu boombick
Сравнить вывод двух команд
diff <(tail -10 file1) <(tail -10 file2)
Удалить все файлы, кроме одного :) Часто пригождается, чтобы не писать rm тут_куча-имен-файлов
ls -Q | grep -v "not-for-delete-file" | xargs rm -r
Собрать несколько тарболлов в один
cat 1.tar.gz 2.tar.gz | tar zxvif -
Размер окна терминала
echo $COLUMNS x $LINES
Вывести man-страницу как обычный текст. Удобно для распечатки
man need-man | col -bx
Пара занудских замечаний:
По поводу удаления файлов:
1) С именами всё плохо на самом деле из-за того, что согласно POSIX в именах запрещено только появление символа с кодом 0, и ls -Q будет работать только в простых случаях.
2) У шеллов есть ограничение на количество аргументов комстроки либо на их общую длину (не буду врать, но вспоминается цифра примерно в 4k).
В итоге бронебойным скриптам следует поступать примерно так:
$ find . -maxdepth 1 -type f -not -name foo -print0 | xargs -0 -n 30 rm -f
а поскольку “гнутый” find прекрасно умеет удалять сам, это вырождается в
$ find . -maxdepth 1 -type f -not -name foo -delete
По поводу распечатки: можно и сразу в постскрипт выгнать:
$ man -Tps woman >/tmp/woman.ps
Для распечатки манов удобнее делать так
man -t > man.ps
Пиргодилось удаление “всех кроме одного”, спасибо.
В копилку знаний cli пойдет. Особенно про выводы в текст маны неплохо