Tips'n'tricks юниксоида Andrey Matveev Хакер, номер #107, стр. 107-106-1 Доблестный юниксоид! Представляю твоему вниманию очередную подборку различных трюков, рекомендаций и советов, касающихся *nix-систем. Маленький скрипт для запуска терминалки rxvt с разными картинками в качестве бэкграунда: #!/bin/sh run_rxvt () { shift $((RANDOM%$#)) exec rxvt -pixmap ~/.wallpapers/$1 } run_rxvt `ls ~/.wallpapers/` Чтобы всегда иметь под рукой системный журнал, имеет смысл в ~/.xsession или ~/.xinitrc добавить вызов: xterm -ls -geometry 80x5+45+705 -rv -sb -name "System logz" \ -fn 5x7 -T "System logz" -e tail -f /var/log/messages & С помощью нехитрого скрипта swap_logs журнальные записи можно резервировать и обнулять каждый день: # vi /root/cron/swap_logs #!/bin/sh cp /var/log/messages /var/log/messages.`date +%d-%m-%y_%T` cat /dev/null >/var/log/messages # chmod +x /root/cron/swap_logs # crontab -e 59 23 * * * /root/cron/swap_logs Быстро закомментировать в файле ~/procmail.conf 20 строк текста, начиная, скажем, с третьей строки, можно с помощью следующей команды: $ vi ~/procmail.conf :3,20s/^/# / В zsh есть встроенное средство для приведения имен файлов к нижнему/верхнему регистру (lowercase/uppercase): $ for i in *(.); mv $i ${i:l} $ for i in *(.); mv $i ${i:u} Утилиту less можно научить читать заархивированные текстовые файлы (например, less kernel-howto.txt.gz), и вот каким способом: $ vi ~/lesspipe.sh #! /bin/sh case "$1" in *.Z) uncompress -c $1 2>/dev/null ;; *.gz) gunzip -c $1 2>/dev/null ;; esac $ chmod +x ~/lesspipe.sh $ export LESSOPEN='| ~/lesspipe.sh %s' Простейший калькулятор на базе связки командного интерпретатора и языка awk (вызов: calc (12+7)*2/4): $ vi ~/.zshrc function _calc () { awk "BEGIN { print $* ; }" } alias calc="noglob _calc" Вообще говоря, с помощью awk можно выполнять самые разные операции, например, подсчитывать объем файлов в текущем каталоге: % ls -l | awk 'BEGIN{a=0} {if (index($1,"d") == 0) a=a+$5 } END{print a}' Внешний IP-адрес домашнего роутера Linksys можно получить с помощью такого запроса: $ lynx -auth=login:password http://192.168.1.1/Status.htm -dump | \ sed "1,/WAN/d" | awk -F: '/IP Address/{print $2}' Сортировка файла /etc/passwd по первой букве поля комментариев, где обычно хранится ФИО пользователя: % sort -t : -k 5 /etc/passwd С помощью команды at можно сэмулировать работу crontab и batch (например, в том случае, когда администратор ограничил к ним доступ): (crontab)% at -f <файл сценария> now + 1 day (batch)% at -q b -m now Комбинация команд для быстрого переключения между двумя процессами: % bg; fg %- Заключить все строки из файла filename в скобки и перенаправить вывод в newfilename: % sed 's/.*/(&)/' filename > newfilename Поменять все слова YES на NO: # sed 's/YES/NO/g' /etc/rc.conf > /etc/rc.conf.local Удалить из файла все пустые строки, а также строки, содержащие только пробелы или табуляторы: % sed '/^[_<TAB>]*$/d' filename > newfilename Посмотреть содержимое библиотеки в отсортированном виде: % ar -t /usr/lib/libc.a | sort | less Чтобы получить данные о времени выполнения профилирования каналов, использования процессора и времени, затраченном системой на операции ввода/вывода, следует использовать следующую конструкцию: % time sh -c "<имя программы> | <имя программы>" Сишный препроцессор можно использовать и для создания шаблонов: $ vi mail.template Доброго времени суток, редактор журнала MAGAZINE! Я хотел бы написать статью в рубрику COLUMN. % cpp -DMAGAZINE='Xakep' -DCOLUMN='Unixoid' mail.template Для создания в Linux дополнительного swap-файла размером 512 Мб набираем: # dd if=/dev/zero of=/usr/tmp/extra_swap bs=1024 count=524288 # mkswap /usr/tmp/extra_swap # swapon /usr/tmp/extra_swap Если во время компиляции программы используется несколько параметров -O, то активным является последний из них. |