У цій статті я вирішив розповісти тобі про цікаві опціях різних команд 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 😉