18 отборных однострочных команд Bash

от автора


В этой статье я опишу ряд функциональных, полезных, а порой и опасных команд, чтобы продемонстрировать потенциал использования оболочки Bash в Linux.Некоторые из них, действительно, потребуют соблюдения осторожности, так как иначе можно потерять все свои данные. Другие же, наоборот, окажутся очень покладистыми и полезными для повышения эффективности работы.

Приступим!

Опасные команды

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

1. fork-бомба

Эта «команда» при выполнении на ПК не представляет особой угрозы, но вот ее запуск на сервере может привести к отказу в обслуживании.

Выглядит она как странный набор символов, хотя на деле это реальное определение функции bash.

В bash допускается использовать в качестве имени функции :. И в случае выполнения команды :(){ :|:& };: именно такую функцию мы и создаем. Внутренне она рекурсивно вызывает сама себя, то есть выполняется бесконечно, а с помощью & мы инструктируем процесс выполняться фоново.

$ -- :(){ :|: & };: --

2. Прямая запись на жесткий диск

Вы легко повредите файловую систему, если при выполнении любой команды сохраните ее вывод на диск. Так кому же это может понадобиться?

$ -- "a command" > /dev/sda --

Запись на диск случайных данных
Эта команда может пригодиться, например, для перезаписи секторов диска с целью исключения возможности восстановления данных. Напомню, что при наличии правильного инструмента вернуть данные после форматирования диска трудностей не составит.

Если использовать эту команду в цикле и выполнить ее 3-4 раза, то она в достаточной степени гарантирует невозможность восстановления удаленной информации.

$ -- dd if=/dev/urandom of=/dev/disk -- //for i in {1..10}; do dd if=/dev/urandom of=/dev/disk; done

3. Удалить все

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

С помощью флага rf мы инструктируем ее выполняться рекурсивно и удалять все файлы без запроса разрешения.

Символ / указывает, что начинать нужно с корневого каталога, который содержит все файлы и все смонтированные устройства с данными, включая удаленные файловые ресурсы и съемные диски. (прим. пер.: современные дистрибутивы не дают просто так удалить /, надо либо добавить --no-preserve-root, либо удалять /* (все файлы в корневом каталоге).

$ -- rm -rf / --

Регулярные команды

4. Определение самых используемых команд

Эта однострочная инструкция удобна, когда мы хотим узнать, какие команды чаще всего используем. С помощью -n X указывается количество, которое нужно вывести. Например, n -10 отобразит 10.

cat ~/.bash_history | tr "\|\;" "\n" | sed -e "s/^ //g" | cut -d " " -f 1 | sort | uniq -c | sort -n | tail -n 10

5. Вывод из файла списка уникальных слов

Следующая команда используется для вывода слов, содержащих символы алфавита. Данная инструкция tr преобразует все не алфавитные символы в символы новой строки, после чего команда sed эти пустые строки удаляет. В завершении с помощью sort выполняется уникальная сортировка результатов с исключением повторений.

tr -c a-zA-Z '\n' < someFile.txt  | sed '/^$/d' | sort | uniq -i -c

6. Выделение цветом вывода ps

Эта команда окрашивает вывод ps, показывая службы красным, а ведущие процессы сеанса зеленым.

Цвета Ascii: http://es.tldp.org/COMO-INSFLUG/COMOs/Bash-Prompt-Como/Bash-Prompt-Como-5.html

ps ajxf | awk '{ if($2 == $4) { if ($1 == 1) { print "\033[35m" $0"\033[0m"}  else print "\033[1;32m" $0"\033[0m" } else print $0 }'

7. Переход в предыдущий рабочий каталог

Суперполезная, но редко используемая команда. Если вам нужно вернуться в предыдущий каталог, просто выполните:

cd -

8. Комбинация Traceroute и ping

Эта команда сочетает в себе инструкции ping и traceroute, представляя диагностический инструмент, который непрерывно отправляет пакеты, отражая время выполнения каждого опроса.

mtr google.com

9. Поиск последней команды, начинающейся с “xxx”, без ее выполнения

В этом примере мы ищем первую команду, начинающуюся с «cp».

!cp:p

10. Выполнение команды N раз

Тут все довольно очевидно: мы используем цикл и команду, которая должна выполняться при каждой его итерации.

for i in {1..10}; do command; done

11. Добавление часов в терминал

Выполнение следующих команд приведет к добавлению в терминал часов, которые останутся активны до его закрытия.

while sleep 1;do tput sc;tput cup 0 $(($(tput cols)-29));date;tput rc;done & 

12. Поиск повторяющихся файлов

Удобный способ поиска дубликатов файлов, при котором команда получает и сравнивает их хэш-значения.

find -not -empty -type f -printf "%s " |  sort -rn |  uniq -d |  xargs -I{} -n1  find -type f -size {}c -print0 |  xargs -0  md5sum |  sort |  uniq -w32 --all-repeated=separate

13. Установка звукового уведомления об активации IP-адреса

Эта инструкция пригождается во многих ситуациях. Например, она может давать звуковое оповещение при возвращении сервера в онлайн.

Флаг -i 120 указывает, сколько секунд ожидать между запросами.
Флаг -a включает звуковое уведомление при получении сервером пакета.

ping -i 120 -a IP_address

14. Удаление всех файлов каталога, не соответствующих заданному расширению

Как часто у вас бывали случаи, когда нужно было очистить каталог не от всех файлов? Вместо того, чтобы делать это поэтапно, можно провернуть операцию в один шаг, указав файлы, которые нужно оставить.

rm !(*.xls|*.slsx|*.csv)

15. Удалить все файлы, кроме одного

Эта команда аналогична предыдущей, но здесь мы обозначаем всего один файл, который нужно оставить.

rm -f !(theFile.txt)

16. Генерация случайного пароля заданной длины

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

Нужная длина при этом устанавливается флагом -c.

date +%s | sha256sum | base64 | head -c 8; echo

17. Рекурсивное удаление всех пустых каталогов

Находит и удаляет все пустые каталоги.

find . -type d -empty -delete

18. Копирование разрешений файла

Инструкция ниже скопирует для file1 все разрешения, установленные для file2.

chmod --reference file2 file1

▍Напоследок

Командная строка – удивительная вещь, с помощью которой можно выполнять невероятно много разных действий. Надеюсь, что статья оказалась для вас полезной, и благодарю за уделенное внимание!


ссылка на оригинал статьи https://habr.com/ru/company/ruvds/blog/671428/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *