Tips'n'tricks юниксоида Andrey Matveev Хакер, номер #103, стр. 103-097-1 (andrushock@real.xakep.ru) Доблестный юниксоид! Представляю твоему вниманию очередную подборку различных трюков, рекомендаций и советов, касающихся *nix-систем. Shell Вот так можно очень быстро создать пустой файл: : > foobar.txt Пример создания десяти файлов с именами от 1 до 10: $ for i in $(seq 1 10); do touch $i.txt; done Простейший калькулятор: $ perl -l -e 'print 1024 * 1024 * 1024' Включить NumLock на всех консолях при загрузке Linux-системы: # vi /etc/rc.d/rc.local for tty in /dev/tty[0-9]*; do setleds -D +num < $tty done Завершаем работу с программой, работающей с каталогом /mnt: # kill `lsof -t /mnt` Выбрасываем пользователя из терминала p3 (при условии, что в качестве умолчального командного интерпретатора он использует bash): # killall -t p3 -9 bash Прерывание по таймеру (в данном случае через 60 секунд): TIME=60 trap 'exit' ALRM (sleep $TIME && kill -ALRM "$$") & Не выводить предупреждения при компиляции фортрановских файлов: $ f77 project.f 2>&1 | grep -v "^Warning" Перенапраляем вывод нескольких команд: $ { date; uptime; last; df -h } | mail -s "my report" andrushock@domain.ru Сбросить характеристики терминала (достаточно одной команды, я просто привел различные варианты для всех *nix-систем): $ clear $ tput clear $ tput reset $ tput init $ reset $ stty sane $ eval `resize` Отсортировать файлы по увеличению их размера: $ ls -l | sort +4n | tail Копирование содержимого текущего каталога в /tmp с помощью tar: $ tar -cf - . | (cd /tmp; tar -xf - ) Разбиваем большой файл, чтобы он поместился на дискету/компакт: $ split -b 1400k bigfile.tar.gz bigfile. $ split -b 700m bigfile.tar.gz bigfile. Для восстановления архива из кусочков набираем: $ cat bigfile.* > bigfile.tar.gz Простой способ шифрования файлов (примечание: работает не на всех *nix-системах): $ compress -c file | dd bs=3 skip=1 | crypt > encrypted $ (compress -cf /dev/null; crypt < encrypted) | zcat > file Распаковать библиотеку: $ ar xv libfoobar.a Посмотреть связанные объекты в библиотеке: $ nm -g libfoobar.a Найти пакеты, начинающиеся с определенной последовательности символов: $ rpm -qa | grep ^kde Чтобы определить, в каком rpm-пакете дистрибутива находится нужный файл, можно создать список файлов во всех rpm'ках в дистрибутиве и прогрепить полученный результат: $ find /mnt/cdrom/Mandrake/RPMS -name "*.rpm" -exec rpm -qpil {} > ~/mandrake.lst \; $ grep -B100 искомый_файл ~/mandrake.lst | less FreeBSD Корректное отключение sendmail в FreeBSD: # vi /etc/rc.conf sendmail_enable="NONE" # vi /etc/crontab #1 3 * * * root periodic daily #15 4 * * 6 root periodic weekly #30 5 1 * * root periodic monthly Оптимизация под конкретную архитектуру при пересборке FreeBSD из исходников: # vi /etc/make.conf CFLAGS= -O2 -pipe -march=pentium4 COPTFLAGS= -O2 -pipe -march=pentium4 CPUTYPE?=pentium4 Пересборка FreeBSD: # cd /usr/src # make buildkernel && make buildworld && make installkernel # reboot # mergemaster -p # cd /usr/src && make installworld # mergemaster Заводим отдельную учетную запись для демона: # pw adduser -d /dev/null -s /usr/sbin/nologin -c "tinydns pseudouser" tinydns |