книги хакеры / журнал хакер / 061_Optimized
.pdf
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|
|
||
|
F |
|
|
|
|
|
|
t |
|
|
||
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
r |
|
||
P |
|
|
|
|
|
NOW! |
o |
|
||||
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
||||
|
|
ЮНИКСОИД |
|
|||||||||
|
|
|
|
to |
BUY |
|
|
|
|
|
|
|
w Click |
|
|
|
|
|
|
m |
|
||||
|
|
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
e |
o |
|
Andrushock (andrushock@real.xakep.ru) |
|
|
. |
|
|
|
|
|
|
|
||||
|
|
p |
df |
|
|
|
g |
.c |
|
|
||
|
|
|
|
|
n |
|
|
|
|
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
ÊÓÐÑВЫЖИВАНИЯ
ВКОНСОЛИ
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
ХАКЕР/¹01(61)/2004 |
|
to |
|
|
|
|
|
|||
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
||
CENSORED |
|
|
|
|
|
|
|
|
|
|
Ä |
ай-ка я попробую угадать, как сейчас выглядит твой рабочий стол. Тэкс... Модный диспетчер окон, антиальясные шрифты, иконки с |
|
www.kdelook.org, транспарентные терминалки, gkrellm в правом углу, ну и, конечно же, полуобнаженная девица с томным взором в |
||
качестве обоев. Что, в десятку? И немудрено - сейчас именно так выглядит подавляющее большинство юниксоидных десктопов. |
||
|
Стоит отметить, что благодаря графическим оболочкам начался настоящий бум юниксов, который продолжается и сейчас. Но речь в этой статье пойдет совсем о других оболочках - оболочках командной строки, грамотно используя преимущества которых, ты сможешь выделиться из общей массы, почувствуешь истинную мощь *nix и в разы повысишь свои программерские навыки!
ИЗУЧАЕМ КОМАНДНЫЙ ИНТЕРПРЕТАТОР ZSH
ШЕЛЛ ШЕЛЛУ РОЗНЬ
Á Шелл aka командный интерпретатор - это программа, выполняющая без предварительной компиляции вводимые пользователем команды либо сценарии (скрипты), состоящие из набора последовательных команд. Основоположниками
оболочек были Стефен Бурн (Stephen R. Bourne) - создатель Bourne Shell (sh) и Уильям Джой (William N. Joy), разработавший C Shell (csh) в университете Беркли специально для версии BSD UNIX. За тридцать с лишним лет существования UNIX-систем было написано огромное количество различных
http://zsh.sunsite.dk/
www.faqs.org/faqs/unix-faq/shell/zsh/
www.acm.uiuc.edu/workshops/zsh/toc.html
http://adamspiers.org/computing/zsh/
http://freebsd.by.ru/refs/zsh00.html
http://linuxshop.ru/unix4all/?cid=26&id=209
www.daemonnews.org/199910/zsh.html
http://zsh.sourceforge.net/Guide/zshguide.html http://www-106.ibm.com/developerworks/library/l-
z.html
интерпретаторов командной строки. Все они работают примерно одинаково для большинства базовых действий и команд, а основные различия проявляются только в процессе работы. Это сделано для того, чтобы пользователи без особого труда могли переходить от использования одного шелла к другому. В современных дистрибутивах можно встретить такие оболочки, как ash, bash, csh, pdksh (общедоступная реализация Korn Shell), sash, tcsh и zsh. Разработка большинства из них происходит крайне медленно и сводится, как правило, к залатыванию дыр различного радиуса :).
ÎÄÀ ZSHELL'Ó
Zsh - это один из самых новых и быстроразвивающихся командных интерпретаторов с полностью программным интерфейсом (все, что есть в оболочке, может быть настроено по усмотрению пользователя), имеющий множество интересных возможностей. Изначально создаваемый как интерпретатор, совместимый с оболочкой Корна, zsh аккумулирует в себе все лучшее, что есть в bash, ksh и tcsh.
Ниже перечислю некоторые свойства и преимущества zsh по сравнению с другими оболочками:
-расширенное редактирование командной строки;
-настраиваемое автодополнение команд, опций, сообщений, man-страниц, доменных имен и чего душе угодно;
-улучшенное раскрытие имен файлов;
-хешированные каталоги;
-проверка правописания;
-множественные перенаправления (команду tee можно больше не использовать);
-гибкая работа с массивами (включая обратное индексирование);
-большие возможности по решению задач целочисленной арифметики;
-число встроенных команд примерно равно суммарному размеру команд в bash, ksh
ètcsh;
-модульная архитектура.
Этот список можно продолжать еще очень долго. Я уже не говорю про такие свойства, которые являются общими для bash, ksh и tcsh: управление заданиями, история введенных пользователем команд, биндинг клавиш, периодические события, работа с псевдонимами команд и конвейерами. Со всеми этими задачами также прекрасно справляется zsh.
80
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
ЗАЧЕМ НАМ НУЖНЫ ОБОЛОЧКИ?
Àнализируя и выполняя вводимые с терминала команды, оболочка предоставляет пользователю колоссальные возмож-
ности для взаимодействия с операционной системой. Такие функции оболочки, как управление потоками ввода/вывода, раскрытие и дополнение имен файлов, обеспечение доступа к ранее выполненным командам, управление заданиями, выполнение циклов и условных переходов позволяют существенно повысить эффективность работы.
Хомяк проекта
УКРОЩЕНИЕ СТРОПТИВОГО
Забираем с одного из многочисленных мирроров архив с последней (на момент написания статьи 4.1.1) версией zsh. Несмотря на то, что эта версия относится к ветке devel и предназначена для разработчиков (а значит, имеет самые новые и вкусные фичи), она достаточно стабильна в работе и полностью готова к применению.
$ wget ftp://ftp.fu-berlin.de/pub/unix/shells/zsh/zsh-4.1.1.tar.gz
Распаковываем и переходим в созданный каталог:
$ tar zxvf zsh-4.1.1.tar.gz $ cd zsh-4.1.1/
К процессу инсталляции zsh можно подойти с разных сторон. Первый путь предельно прост - особо не задумываясь, положиться на работу конфигурационного скрипта:
$ ./configure
Второй способ установки заключается в статической компоновке с совместно используемыми библиотеками (такая линковка необходима для работы программ в chroot()'ных средах) командной оболочки с подключением встроенных средств борьбы с утечками памяти:
$ env LDFLAGS="-static" ./configure --enable-zsh-mem --enable- zsh-secure-free --disable-dynamic
А третий предназначен для "счастливых" обладателей старых компов. Дело в том, что zsh работает заметно медленнее (расплата за широкие возможности) своих конкурентов, поэтому имеет смысл отключить из оболочки все что можно, а именно поддержку больших файлов и локали. Также можно отказаться от использования ограниченного режима оболочки, при работе в котором пользователям запрещено изменять каталоги и переменные окружения, с помощью вы-
Конфигуряй и властвуй
КУРС ВЫЖИВАНИЯ В КОНСОЛИ
зова exec запускать программы и осуществлять перенаправление вывода в файлы.
$ ./configure --disable-lfs --disable-locale --disable-restricted-r
Если же в системе вместо архаичного mbox'а используется почтовый формат Maildir, то не забудь скрипту configure передать дополнительный аргумент "--enable- maildir-support".
Далее компилируем и растасовываем свежеиспеченные бинарики по файловой системе:
$ make
# make install
Абсолютный путь до zsh прописываем в конец файла /etc/shells, где содержится список доступных в системе командных оболо- чек:
# echo "/usr/local/bin/zsh" >> /etc/shells
После внесения этого изменения у пользователей появится возможность командой chsh изменить свой стандартный командный интерпретатор на zsh:
$ chsh
Shell: /usr/local/bin/zsh
Full Name: Andrushock
ЧУДЕСА ХАРДКОРНОГО ТВИКИНГА
При запуске zsh пытается прочитать более десяти своих конфигурационных файлов. Такое обилие не случайно - все сделано для чрезвычайно гибкой настройки интерактивных и неинтерактивных шеллов, а также для большей совместимости с bash и tcsh. Не волнуйся, мы обойдемся написанием всего лишь одного конфига:
$ vi ~/.zshrc
Следующие переменные содержат списки каталогов, которые будут использованы обо-
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Вот так можно перечитать конфиг zsh: ". ~/.zshrc".
Будь осторожен с псевдонимами вида "alias rr='rm -rf'".
81