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

1. /bin/ls

Интересными опциями, о которых мало кто знает для команды ls являются например, такие как "-d", "-R" или "-1". Они могут быть полезны в некоторых случаях, как:

ls -lad dir позволяет просмотреть директорию без просмотра ее содержимого, то есть права на саму папку.
ls -R - рекурсивный просмотр всех каталогов (например, если тебе нужно найти все .bash_history на машине, тебе будет достаточно команды: cp `ls -Ra / | grep .bash_history` /tmp/hist)
ls -1 - зарисует тебе все файлы в один столбец (очень удобно для формирования массива в Perl без использования opendir() и readdir() )

2. /usr/bin/grep

Grep по своей сути - поиск шаблона в файле. Но нередко его используют в
конвейере для поиска шаблона, например cat /etc/passwd | grep root, хотя можно было бы обойтись командой grep root /etc/passwd. У grep также есть замечательные опции, которыми можно воспользоваться:

grep -v string file - выведет все строки, которые НЕ содержат string. Отсюда приходит мысль: чистка логов обойдется всего лишь в 2 команды (убираем все строки из /var/log/messages содержащие ip-адрес 127.0.0.1) # grep -v '127.0.0.1' /var/log/messages > /var/log/mess; mv /var/log/mess /var/log/messages
Все обходится без специальных логвайперов (кстати, оные тоже юзают grep -v).
grep -r - рекурсивный поиск. С опцией -E, выводящей все совпадения прямо на экран можно поискать Credit Cards на заломанной машине 😉 Слюнки потекли? Показываю как:
# grep -iEr visa /var/lib/mysql >/tmp/cc.log 2>&1
Записываем все совпадения в /tmp/cc.log.

3. /usr/bin/perl 😉

Perl имеет очень занятную опцию -e. С помощью нее можно писать шедевры в командной строке. Например: следует удалить файлы в директории если их размер равен 0 байт. /bin/rm && grep не справятся с задачей если файлов очень много. На помощь придет Perl :]
# perl -e 'opendir(DIR,"/usr/jpg"); @jpg=readdir(DIR); closedir(DIR); foreach (@jpg) { chomp; if (-z "/usr/jpg/$_") { unlink("/usr/jpg/$_") } }'
Perl решит эту проблему за несколько секунд 😉 Просто и удобно.

4. awk && grep

Задача: нужно убить процесс pppd, с заданным ttyS устройства. Это можно выполнить в одну строку, при помощи awk 😉
# kill -9 `ps -t ttyS0 | grep pppd | awk {'print($1)'}`
Вызовем простую функцию print() из языка awk и напечатаем процесс pppd (первая часть
/bin/ps).

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

Да... чуть не забыл. Никогда не свети свою историю команд - поверь - может быть плохо. Либо сделай: export HISTFILE=/dev/null, либо, чтобы не мучаться, сразу ln -sf /dev/null /home/yourlogin/.bash_history 😉

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии