Tips'n'tricks юниксоидаAndrey Matveev Хакер, номер #109, стр. 102 Доблестный юниксоид! Представляю твоему вниманию очередную подборку различных трюков, рекомендаций и советов, касающихся *nix-систем. Подсчет количества строк в текстовом файле с помощью утилиты sed: $ sed -ne '$=' ~/.vimrc В zsh вот так можно просмотреть содержимое файла, не прибегая к утилитам вроде more и less: $ < ~/.viminfo При большой многовложенности каталогов, возможно, стоит отказаться от использования команды cd: $ vi ~/.zshrc setopt autocd alias -g ...='../..' alias -g ....='../../..' $ . ~/.zshrc Теперь, чтобы вернуться на три директории вверх, достаточно набрать «....». Сокращенный вывод при подсчете размера текущего каталога (исключаем перечисление всех файлов, оставляем только подкаталоги): $ du -h . | grep -v '/.*/' | sort -n Одна из самых маленьких реализаций форк-бомбы: $ :(){:|:&};: В состав практически любой *nix-системы входит мощный калькулятор, который может использоваться в интерактивном режиме или обрабатывать сценарии, написанные на языке, похожем на С. Для примера превратим его в конвертор валют: % echo "scale=2; 1000/24.92" | bc 40.12 Также с помощью bc удобно выполнять перевод между различными системами исчисления. Например, переведем 20 из dec в hex и обратно: $ echo "obase=16;20" | bc 14 $ echo "ibase=16;20" | bc 32 Показать календарь на текущий месяц: $ cal 12 2007 Просматриваем разницу между двумя версиями файла со скроллингом и в цвете: (~/devel/www)% cvs -fq -d andrey@cvs.openbsd.ru:/cvs diff -u -p \ -r1.23 -r1.24 docs/howto-bridge.html | vim - Запрет обращения к doubleclick.com с помощью демона named (этот способ позволяет ускорить загрузку некоторых web-страниц): # vi /var/named/conf/named.conf: zone "doubleclick.com" { type master; file "master/doubleclick.com"; }; # vi /var/named/master/doubleclick.com: [[ здесь идет стандартная SOA-запись ]] ad.doubleclick.com. IN A 127.0.0.1 *.doubleclick.com. IN A 127.0.0.1 # rndc reload Чтобы в OpenBSD выполнить полный и быстрый бэкап файловой системы /var на раздел d второго диска, следует ввести следующую комбинацию команд: # newfs wd1d # mkdir /mnt/var # mount -o async /dev/wd1d /mnt/var # dump 0f - /var | (cd /mnt/var; restore rf -) Если нужно скопировать только часть файловой системы (в данном случае каталог /var/named), можно воспользоваться командой tar: # cd /var # tar cf - named | (cd /mnt/var; tar xpf -) Используем псевдографику для отображения аптайма: % uptime | awk '{ while($3--) a=a"="; print "|" a ">"}' |=====================> Для того чтобы определить, к какому установленному пакету относится файл foobar, набираем одну из следующих команд: fedora$ rpm -qf foobar gentoo$ equery belongs foobar debian$ dpkg -S foobar freebsd$ pkg_info -W foobar openbsd$ pkg_info -E foobar Обновление в FreeBSD всех установленных пакетов в автоматическом, неинтерактивном режиме: # export BATCH=yes; portupgrade -a Вот так в иксах можно копировать в буфер обмена содержимое файлов и вывод различных утилит без выделения мышью и использования комбинации <Ctrl-C>: $ xclip /etc/passwd $ uptime | xclip Пример вставки из буфера (здесь мы пастим URL из другой программы): $ firefox 'xclip -o' Кстати, чтобы в терминалке при выделении двойным кликом мыши спецсимволы не считались разделителем слова (то есть выделялись вместе с нужным словом), добавь в файл ~/.Xdefaults или ~/.Xresources запись: ;; для xterm CharClass: 33:48,37:48,45-47:48,58:48,64:48,126:48,161-255:48 ;; для rxvt Rxvt*cutchars: "`'&()*,;=?@[]{|}>< Чтобы быстро вытащить из груды окон IRC-клиент: $ wmctrl -R xchat |