Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР 109, ЯНВАРЬ 2008 г.

Tips'n'tricks юниксоида

Andrey Matveev

Хакер, номер #109, стр. 102

(andrushock@real.xakep.ru)

Доблестный юниксоид! Представляю твоему вниманию очередную подборку различных трюков, рекомендаций и советов, касающихся *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

Содержание
ttfb: 3.3779144287109 ms