Готовый перевод bash Cookbook / bash: Сборник рецептов: Chapter 1. Beginning bash / Глава 1. Основы bash

Что такое shell, и зачем он нужен?

Все последние операционные системы (т.е., выходившие примерно с 1970х) имеют некоторый пользовательский интерфейс - то, каким образом операционной системе подаются команды на выполнение. В большинстве операционных систем этот командный интерфейс встроен в них, и он является единственным способом общаться с компьютером. Кроме того, командный интерфейс операционной системы позволяет вам выполнять команды, и только. В конце концов, может нам больше ничего и не надо?

В ОС Unix популяризировали идею отделения оболочки (часть системы, позволяющую вводить команды) от всего остального: системы ввода/вывода, планировщика, управления памятью и других вещей, которые делает ОС сама (о чём большинство пользователей заботиться не должны).
Оболочка shell стала просто одной из программ, работа которой - запуск других программ по требованию пользователя.

Но это стало началом революции. Оболочка - просто одна из программ, работающих в Unix, и если стандартный shell вам не нравится, можно создать собственную. К концу первого десятилетия Unix в ней было уже две конкурирующих оболочки: Bourne Shell и sh (потомок Thomson shell), плюс C shell, csh. К концу второго десятилетия Unix стало еще больше альтернатив: Korn shell (ksh), и первые версии bash. К концу третьего десятилетия Unix создано около десятка различных оболочек.

Вероятно, Вы не сидите ровно, говоря: "А не использовать ли мне csh? Или bash? Или ksh, чёрт возьми!" Вы, возможно были бы счастливы иметь одну стандартную оболочку в своей Linux (BSD, Mac OS X, Solaris или HP/UX). Но независисмость оболочки от системы облегчает работу программистам (например Брайану Фоксу, создателю bash, и Чету Рамею, нынешнему заведующему развитием bash) писать лучший и лучший shell - можно создавать новые оболочки без изменения самой ОС. Очень легко достать новый shell, так как не нужно уговаривать производителя добавить в его поставку новый shell, всё, что надо, это установить в систему новый shell как и любую другую программу.

Пока это для некоторых - пустые звуки. Всё, что им надо - дать команду и чтобы она выполнялась. И они правы - shell всего лишь позволяет Вам набрать команды, остальное не должно быть неинтересно. Однако, два фактора движут эволюцию shell в Unix: пользовательский зуд и программирование. В результате современный shell позволяет больше, чем простой ввод команд.

Современные оболочки очень удобны. К примеру, они запоминают команды, которые набирались ранее, и позволяют использовать их снова. Современные оболочки также позволяют менять эти команды, и они могут быть всякий раз иными. Ещё современные оболочки позволяют назначить собственные командные и клавиатурные сокращения и имеют другие возможности. Для опытных пользователей ввод команд (к примеру с клавиатурными сокращениями и автодополнением команд) намного результативнее и эффективнее, чем перетаскивание чего-либо мышью по красивому оконному интерфейсу.

Но кроме простого усовершенствования ввода, оболочка ещё позволяет программировать. Множество последовательностей команд требуется выполнять снова и снова. И Вы набираете их снова и снова. Однако, делая что-либо второй раз, Вы должны спросить себя: "А не написать ли мне программку, которая будет это делать за меня?" Можно. Shell также суть и язык программирования, специально созданный для работы с системными командами компьютера. Например, если нужно сконвертировать тысячу файлов mp3 из файлов wav, то пишем программу на shell (т.е. скрипт). Если нужно упаковать все системные журналы, можно написать скрипт для этого. Всегда, когда требуется делать повторяющиеся задания, пишем скрипт. Конечно, существуют более мощные (способные) скриптовые языки - Perl, Pithon, Ruby, но оболочка Unix shell (в зависимости от того, какую именно используете) - самое верное для начинания. После того, как Вы освоили простой ввод команд, зачем усложнять?

Переведено на Нотабеноиде
http://notabenoid.org/book/750/3514

Переводчики: alz

Настройки

Готово:

100.00% КП = 1.5