Возвращаемся к вашей самой любимой рубрике с консольными костылями на bash. Судя по количеству репостов и просмотров, это самая популярная тематика. Начнём с самого интересного и полезного.
Просмотр в режиме реального времени за изменением файлов в каталоге. Частая потребность, но когда мне понадобилось это сделать, сразу не догадался каким образом через watch все это организовать.# watch -d -n 2 'ls -rtlh | tail'
Не забывайте, что по умолчанию tail без параметров выводит только 10 строк. Их число задаётся через ключ -n.
Рекурсивный листинг файлов. Очевидный способ вывести список файлов, в том числе с вложенными директориями следующий: ls -lR. Он не очень удобен, если список потом надо как-то обработать и использовать. Удобнее вывести через find:# find . -type f -ls
Поиск дубликатов файлов. На первый взгляд монструозная и страшная конструкция, но если разбить её на этапы, то все достаточно просто получается. Сначала идёт поиск файлов с одинаковым размером, потом у этих файлов проверяется md5sum. Если она одинаковая, то выводится список файлов. find -not -empty -type f -printf "%s\n" | sort -rn | uniq -d \
| xargs -I{} -n1 find -type f -size {}c -print0 \
| xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate
Быстрое переименование файла. Простой и удобный трюк, хотя я сам по привычке пишу полные имена.# mv filename.{old,new}
Список наиболее часто используемых команд. Парсится стандартный вывод history.# history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' \
| sort -rn | head
Запуск матрицы. Включаем и уходим на обед.# tr -c "[:print:]" " " < /dev/urandom \
| dd cbs=$COLUMNS conv=unblock \
2>/dev/null | GREP_COLOR="1;32" \
grep --color "[^ ]"
#bash #terminal
>>Click here to continue<<
