Pull to refresh
2788.7
RUVDS.com
VDS/VPS-хостинг. Скидка 15% по коду HABR15

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

Reading time4 min
Views37K
Original author: Kesk

В этой статье я опишу ряд функциональных, полезных, а порой и опасных команд, чтобы продемонстрировать потенциал использования оболочки 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

▍Напоследок


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

Tags:
Hubs:
+37
Comments55

Articles

Information

Website
ruvds.com
Registered
Founded
Employees
11–30 employees
Location
Россия
Representative
ruvds