Копирование и удаление файлов
Перемещение и переименование файлов
Создание файлов
Создание символических ссылок
Краткое введение в подстановочные символы
В предыдущей главе мы рассмотрели информацию, знание которой необходимо для эффективного использования Linux. Вы знаете, что каждая команда - это отдельная программа (выполняемый файл). Вы научились выполнять операции с файлами, изучая различные варианты применения команды Is для вывода на экран списка файлов.
В этой главе мы подробнее рассмотрим применение команд для операций с файлами и каталогами, в том числе для их копирования, удаления, перемещения и создания. В конце главы мы рассмотрим применение подстановочных символов, например звездочки, широко используемой в DOS и Windows.
Любой, у кого есть хотя бы небольшой опыт работы в DOS или окне DOS системы Windows, знает, что перетаскивание файлов из окна в окно— не единственный способ их копирования. Команда DOS copy предоставляет дополнительные возможности - например, использование подстановочных символов, - которые могут ускорить, упростить процесс и сделать его более эффективным, чем в Диспетчере файлов или Проводнике.
В Linux для копирования применяется команда ср (/bin/cp).
Основные операции копирования
Безусловно, простейшее применение команды ср - копирование файла из одного каталога в другой или создание дубликата в том же каталоге. Например, чтобы создать копию файла ThisFile, поместив ее в том же каталоге под именем ThisFile-Acopy, необходимо ввести следующую команду:
$ ср ThisFile ThisFile-Acopy
Если теперь заглянуть в указанный каталог при помощи команды 1s -1, то в нем окажется два файла абсолютно одинакового объема, но с разными датами создания. Дата создания нового
файла совпадет с датой копирования, первоначальный же останется неизменным. Изменение файлаThisFile-Acopy не затронет файл ThisFile.
Аналогично, можно копировать файл ThisFile в каталог /tmp (например, чтобы предоставить к нему доступ другому пользователю). Для этого воспользуйтесь следующей командой.
$ ср ThisFile /tmp
Если файл, копируемый в другой каталог, требуется еще и переименовать, следует ввести команду:
$ ср ThisFile /tmp/NewFileName
Не записывайте поверх существующего файла
Все дистрибутивы Linux имеют один существенный недостаток: при копировании файлов существует опасность записи копии поверх существующего файла, Предположим, у вас есть два файла- ThisF%le и NewFile. Если вы решите создать копию одного из них, введя команду
$ ср ThisFile NewFile
копия запишется поверх файла NewFile, что приведет к его утрате (если, конечно, вы не были настолько предусмотрительны, чтобы позаботиться о резервной копии).
Чтобы избежать неприятностей, вводите команду ср с флажком -i. В этом случае система потребует подтверждения копирования поверх существующего файла.
Краткая форма |
Длинная форма |
||
-I |
— interactive (интерактивное) |
||
-R |
--recursive (рекурсивное) |
||
-Р |
— preserve (предохранить) |
||
-а |
— no-dereference (без разыменования) |
||
-а |
— archive (архивное) |
||
-Ь |
— backup (резервное) |
||
-S |
--suffix (суффикс) |
||
Копирование и перемещение - наиболее распространенные файловые операции. Вам регулярно придется заниматься репликацией файлов на всем диске или их копированием на дискеты для создания резервных копий или передачи на другой компьютер самым дешевым сетевым методом -на своих двоих. Другая ситуация - поиск ненужных файлов, которые надо удалить с переполненного диска.
Копирование файлов
Любой, у кого есть хотя бы небольшой опыт работы в DOS или окне DOS системы Windows, знает, что перетаскивание файлов из окна в окно— не единственный способ их копирования. Команда DOS copy предоставляет дополнительные возможности - например, использование подстановочных символов, - которые могут ускорить, упростить процесс и сделать его более эффективным, чем в Диспетчере файлов или Проводнике.
В Linux для копирования применяется команда ср (/bin/cp).
Основные операции копирования
Безусловно, простейшее применение команды ср - копирование файла из одного каталога в другой или создание дубликата в том же каталоге. Например, чтобы создать копию файла ThisFile, поместив ее в том же каталоге под именем ThisFile-Acopy, необходимо ввести следующую команду:
$ ср ThisFile ThisFile-Acopy
Если теперь заглянуть в указанный каталог при помощи команды 1s -1, то в нем окажется два файла абсолютно одинакового объема, но с разными датами создания. Дата создания нового
файла совпадет с датой копирования, первоначальный же останется неизменным. Изменение файлаThisFile-Acopy не затронет файл ThisFile.
Аналогично, можно копировать файл ThisFile в каталог /tmp (например, чтобы предоставить к нему доступ другому пользователю). Для этого воспользуйтесь следующей командой.
$ ср ThisFile /tmp
Если файл, копируемый в другой каталог, требуется еще и переименовать, следует ввести команду:
$ ср ThisFile /tmp/NewFileName
Не записывайте поверх существующего файла
Все дистрибутивы Linux имеют один существенный недостаток: при копировании файлов существует опасность записи копии поверх существующего файла, Предположим, у вас есть два файла- ThisF%le и NewFile. Если вы решите создать копию одного из них, введя команду
Краткая форма |
Длинная форма |
||
-I |
— interactive (интерактивное) |
||
-R |
--recursive (рекурсивное) |
||
-Р |
— preserve (предохранить) |
||
-а |
— no-dereference (без разыменования) |
||
-а |
— archive (архивное) |
||
-Ь |
— backup (резервное) |
||
-S |
--suffix (суффикс) |
||
Рассмотрим еще одну важную тему, посвященную
подстановочным символам.
Подробно она
изложена в гл. 16 при изучении оболочки Unix, но поскольку мы уже неоднократно использовали эту технику, разумно будет сказать о ней несколько слов.
Подстановочные символы применяются для указания в одном компактном выражении имен нескольких файлов или каталогов. Мы уже неоднократно использовали звездочку (*), заменяющую любое число (включая нуль) произвольных символов. Например, выражение * . txt соответствует всем перечисленным ниже именам файлов.
.txt
a.txt
file.txt
txt.txt
По умолчанию богатый синтаксис применения подстановочных символов обеспечивает оболочка Bash. Эту оболочку нам еще предстоит рассмотреть, пока же рассмотрим несколько простейших подстановочных символов:
?. Соответствует любому одному символу, так что выражению file.? соответствует файл file, с, но не file. txt.
[Список]. Соответствует любому одному символу, указанному в списке, так что выражению file, [abc] соответствуют файлы file.a, file.b и file.с, ноне file.d или file.txt.
Рассмотрим основную операцию перемещения.
$ mv FlleOne /tmp
По этой команде файл FileOne перемещается в каталог /trap.
Одновременно с перемещением в каталог /tmp, файл можно переименовать, воспользовавшись следующей командой.
$ mv FileOne /tmp/NewFileName
Отсюда следует, что для переименования файла достаточно переместить его в собственный каталог с новым именем.
$ mv FileOne NewFileName
Как видим, перемещение и переименование - одна и та же операция.
Перемещение и переименование файлов - операции родственные, поэтому мы рассмртрим их в одном параграфе. В отличие от систем DOS/Windows и Macintosh, где эти операции вполне независимы, в Linux переименование файлов рассматривается как частный случай перемещения.
Перемещение, как и копирование, может производиться сразу над несколькими файлами, поскольку в команде mv допустимо наличие более двух аргументов. В этом случае последний аргумент указывает каталог назначения (перемещать, как и копировать, несколько файлов в один нельзя). Рассмотрим ситуацию, в которой необходимо переместить в каталог /tmp все файлы текущего каталога с расширениями .bak, .tmp и .old. Воспользуемся командой
$ mv *.bak *.tmp *.old /tmp
По этой простой команде все файлы текущего каталога с расширениями . bak, .tmp и .old будут перемещены в каталог / tmp.
Командой mv можно перемещать целые каталоги, причем для этого не надо устанавливать флажки. Если в текущем каталоге есть подкаталог TheDir, который надо переместить в каталог / tmp, введите команду
$ mv TheDir//tmp
Аналогично, каталог TheDir превращается в подкаталог каталога NewDir:
$ mv TheDir/ /NewDir
Примечание
Как и для двух команд, рассмотренных выше, для команды mv необходимо установить алиас mv -i, чтобы предотвратить случайную запись перемещаемых файлов поверх уже .существующих. Для этого введите команду $ alias mv='mv -i'. В учетной записи суперпользователя такой алиас для команд ер, rm и mv установлен по умолчанию.
Копирование и удаление файлов
Перемещение и переименование файлов
Создание файлов
Создание символических ссылок
Краткое введение в подстановочные символы
В предыдущей главе мы рассмотрели информацию, знание которой необходимо для эффективного использования Linux. Вы знаете, что каждая команда - это отдельная программа (выполняемый файл). Вы научились выполнять операции с файлами, изучая различные варианты применения команды Is для вывода на экран списка файлов.
В этой главе мы подробнее рассмотрим применение команд для операций с файлами и каталогами, в том числе для их копирования, удаления, перемещения и создания. В конце главы мы рассмотрим применение подстановочных символов, например звездочки, широко используемой в DOS и Windows.
Вы уже знаете несколько способов создания файлов. В операции копирования как раз это и происходит. Это же относится и к операции перемещения. Наконец, новый файл появляется при создании документа в текстовом редакторе, сохранении приложения сообщения электронной почты или создании копии экрана.
Но иногда требуется создать пустой файл нулевого объема. Пример такой ситуации - создание пустого файла сценарием для отметки особого состояния или прием программирования, называемый захватом файла
(file locking).
Суть его в следующем. Если сценарий открывает файл для внесения изменений, он одновременно создает специальный блокировочный файл
(lock file).
Блокировочный файл показывает другим программам и сценариям, что данный файл открыт для редактирования, а потому не может редактироваться другими программами или сценариями. Завершив редактирование файла и закрыв его, сценарий уничтожает блокировочный файл, вновь открывая доступ к отредактированному файлу.
Чтобы быстро и эффективно создавать блокировочные файлы, не выделяя значительный дисковый объем, нужен рациональный способ создания пустого файла. Для этого применяется команда touch. Например, по команде
$ touch
NewFile
создается файл нулевого объема NewFile.
-rw-rw-r-- 1 armand armand 0 Apr 6 21:06 NewFile
Еще одно распространенное применение команды touch - изменение даты модификации существующего файла. Поведение многих программ определяется датами модификации файлов, с которыми они работают. Команда touch позволяет менять даты модификации файлов, не открывая и не редактируя их.
Каталоги относятся к числу специальных разновидностей файлов в Linux. Их специфика в том, что они содержат другие файлы. Для каталога вы можете установить такие ограничения на доступ, что другие пользователи даже не смогут посмотреть, какие файлы в нем содержатся Примерами каталогов может служить корневой каталог верхнего уровня (/) или ваш личный (домашний) каталог (например, /home/mj).
Но создать каталог той же командой, которой вы создаете файлы, нельзя. Для этого предусмотрены специальные команды mkdir и rmdir. Если вы хотите создать подкаталог для документов в вашем каталоге, можете воспользоваться следующей командой:
$ mkdir documents
Но эта команда не даст ожидаемого результата, если вы не находитесь в своем каталоге. Для пущей уверенности задайте полный путь создаваемого каталога:
$ mkdir /home/mj/documents
Будет ли эта команда работать или нет, зависит от предоставленных вам прав и доступности корневого каталога. К примеру, как рядовой пользователь вы, вероятно, не сможете создать новый каталог /golf, но корневому пользователю эта задача по силам.
Конечно, каталоги можно и удалять. Например, следующая команда удаляет созданный выше каталог:
$ rmdir /home/mj/documents
Будет ли эта команда работать, зависит от ваших прав для каталога /home/mj и от того, есть ли что-нибудь в этом каталоге. Конечно, можно использовать рассмотренную выше в этой главе команду rm -r для удаления непустого каталога.
Иногда приходится создавать не файлы, а символические ссылки.
Символические ссылки -
это указатели на реальные файлы в других каталогах. Обычно они используются системными администраторами и разработчиками прикладных программ. Представьте себе программиста, работающего над несколькими версиями одной программы. В конкретный момент времени тестирование проходит версия progS, progS или proglO - в зависимости от того, на какой стадии разработки находится проект. Чтобы гарантировать запуск для тестирования последней версии, можно создать на нее символическую ссылку prog. Каждый запуск prog будет приводить к запуску последней версии программы.
Есть два способа создания символических ссылок. Первый - ввод команды In с флажком
-s,
задающим создание символической ссылки, и двумя аргументами - файлом, на который указывает ссылка, и именем самой ссылки.
Например, чтобы создать в текущем каталоге ссылку МуСору на файл /bin/cp, введите следующую команду.
$ 1n
-a
/bin/ср МуСору
После этого команда 1s -1 покажет наличие символической ссылки.
1rwxrwxrwx 1 armand armand 7 Apr 6 22:50 МуСору -> /bin/cp
Несколько реже применяется другой способ создания символических ссылок - командой ср с флажком-s.
$ ср
-8
/bin/cp МуСору
Конечно же, Linux предоставляет не менее надежное средство удаления файлов. Это команда rm с соответствующим выполняемым файлом /bin/rm.
В простейшей форме команда применяется для удаления одного или нескольких файлов из текущего каталога. Командой
$ rm ThisFile
из текущего каталога удаляется файл ThisFile. Если из текущего каталога надо удалить все текстовые файлы, введите следующую команду.
$ rm *.txt
Подобно команде копирования, rm может иметь несколько аргументов. Например, две предыдущие команды можно заменить одной.
$ rm ThisFile *.txt
Как и команда копирования, rm несет в себе не только удобство, но и опасность. Нетрудно представить последствия случайного ввода команды
$ rm thesis.doc
вместо
$ rm thesis. bak
Как бы невероятным ни казался этот кошмар, он случается сплошь и рядом, принося массу ненужной работы и головную боль.
Чтобы избежать этого, установите в команде rm флажок -i, известный нам по команде ср, для вывода предупреждений об удалении файлов.
$ rm
-i
thesis.doc
rm: remove 'thesis.doc'?
Можно также создать псевдоимя команды rm, обеспечив вывод предупреждений по умолчанию.
$ alias rm='rm-i'
Пользователям часто приходится удалять целиком каталоги. Предположим, у вас есть каталог, созданный в результате разархивирования файла, загруженного из Internet. После установки и тестирования программы, содержавшейся в загруженном файле, вы решите этот каталог удалить, для чего в команде rm необходимо установить флажок -r. Например, команда удаления каталога
$ rm -r Templnstall
Помнится, вы определили псевдоимя команды rm для вывода предупреждений об удалении файлов. При удалении больших каталогов это может оказаться некстати.
$ rm -r Templnstall
rm: descend directory 'templnstall'? у
rm: remove
v
TempInstall/File1'? у
rm: remove 'Templnstall/File2'? у
rm: remove directory 'Templnstall'? у
Представьте, что вам предстоит удалить несколько сот файлов. Невыполнимая задача. Для этих случаев предусмотрен флажок -f . Если вы уверены, что при удалении всего каталога не удалите ничего лишнего, отмените вывод предупреждений об удалении, установив в команде rm флажок -f.
$ rm -rf Templnstall
Напоминание
К использованию флажка -f следует относиться осторожно. Это средство не только мощное, но и опасное.
Учетная запись суперпользователя конфигурирована с установкой алиаса (псевдоимени) команды rm по умолчанию rm -i. Эта установка очень важна, поскольку малейшая ошибка суперпользователя может иметь катастрофические последствия для системы. Нетрудно догадаться чтo произойдет, если при попытке удалить каталог /tmp между "/" и "tmp" каким-то образом
окажется пробел.
$ rm -r / tmp
Это команда удаления всех файлов и каталогов диска. И еще одно подтверждение важности алиаса команды rm -i.
Естественно, использование флажка - f требует от суперпользователя большой осторожности, да и само использование учетной записи суперполъзователя следует свести к минимуму. В конце концов, команда
$ rm -rf / tmp
опасна даже при наличии нужного алиаса.
По большому счету существует две достойных альтернативы утилиты Printconf: PrintTool и Apsfilter. PrintTool представляет собой утилиту, использовавшуюся в Red Hat вплоть до версии 7.0. Apsfilter рассматривается в гл. 18. Если вы ранее пользовались Red Hat Linux, вероятно, вы будете увереннее чувствовать себя с PrintTool. Чтобы установить PrintTool, сначала удалите Printconf. Для этого можно воспользоваться следующими rpm-командами в режиме корневого пользователя:
#
rpm -e printconf-gui
#
rpm -в printconf
Установить PrintTool можно с диска Red Hat Linux 7.0 CD-ROM или загрузив его исходные тексты с узла www. rpmf ind. net. Необходимы следующие два пакета:
rhs-printfilters-1.81-1.1386.rpm
pnnttool-3 .54-1.1386.rpm
Загрузив эти пакеты в каталог / tmp, можно затем установить их с помощью следующих rpm-команд в режиме корневого пользователя:
#
rpm -i /tmp/rhs-printfilters-1.81-1.1386.rpm
#
rpm -i /tmp/printtool-3.54-1.1386.rpm
При первом «запуске утилиты Linuxconf доступны не все необходимые средства. Процедура добавления модулей, впрочем, достаточно проста. Чтобы увидеть доступные модули, щелкните на вкладке Control (Управление), а затем выберите Control Files And Systems/Configure Linuxconf Modules (Файлы и системы управления/Конфигурирование модулей Linuxconf), чтобы открыть вкладку List Of Modules (Список модулей), показанную на рис. 15.7.
Необходимо добавить, по крайней мере, инструмент конфигурирования модема modemconf, поскольку он потребуется вам далее в этой главе. Для активизации этого инструмента, выберите modemconf и щелкните на кнопке Accept (Принять), расположенной под вкладкой List Of Modules
(Список модулей). Затем на панели инструментов следует выбрать File/Act Changes (Файл/Изменить), после чего выбрать File/Quit (Файл/Выход). После перезапуска утилиты Linuxconf, на вкладке Config (Конфигурация) в группе Peripherals (периферийные устройства) появится опция Modem (Модем).
Рис. 15.7.
Вкладка List Of Modules утилиты Linuxconf
Примечание
Предусмотрены две команды выхода из Linuxconf: File/Quit (Файл/Выход) и File/Quit (no check) (Файл/Выход (без проверки)). Вторая команда выполняет перекрестную проверку конфигурации на соответствие состоянию системы Linux. Если обнаруживаются различия, то Linuxconf предлагает обновить систему.
Для запуска процедуры щелкните на кнопке New (Новый) в панели инструментов Printconf. В результате откроется окно диалога Edit Queue (Редактирование очереди), показанное на рис. 15.2. В текстовом поле Queue Name (Имя очереди) введите имя вашего принтера. Если необходимо несколько имен, можете задать один или несколько псевдонимов (алиасов). Щелкните на кнопке Add (Добавить) и введите соответствующий псевдоним. Повторите операцию для других псевдонимов, если они необходимы. На рис. 15.2 в качестве имени принтера задано test, а в качестве псевдонима указан hp I j 4.
Рис. 15.2.
Задание имен и псевдонимов
Рассмотрим использование программы LinuxConf для управления пользователями и группами пользователей. Соответствующие параметры находятся в подразделе Normal (Обычные) подраздела Users Accounts (Учетные записи пользователей) вкладки Config (Конфигурация) дерева разделов в левой панели окна программы LinuxConf.
Следующий шаг ставит себе целью конфигурирование драйвера, обеспечивающего обмен системы Linux с принтером. В диалоговом окне Edit Queue (Редактирование очереди) щелкните на опции Printer Driver (Драйвер принтера) и выберите одну из четырех разновидностей принтеров, три из которых показаны на рис. 15.4.
Postscript Printer (Postscript-принтер).
В большинстве случаев для работы с различными Postscript-принтерами вполне подходит стандартный Postscript-драйвер.
Text Only Printer (Text Only-принтер).
Если необходима только распечатка текстовой информации из стандартных текстовых файлов, или если ваш принтер может обрабатывать только стандартные текстовые ASCII-коды, следует выбрать эту опцию.
Raw Print Queue (Raw Print Queue-принтер).
Этой опции не соответствует никакой реальный драйвер. Если ваша программа сама конвертирует подлежащие печати данные в формат, используемый принтером, воспользуйтесь этой опцией.
Brand Specific (Brand Specific-принтер).
Утилита Printconf включает множество принтерных драйверов, ориентированных на обслуживание соответствующих моделей принтеров. Если у вас не Postscript-принтер, то следует выбрать в списке фирму и модель подключенного к компьютеру- принтера.
Рис. 15.4.
Выбор драйвера принтера
Примечание
Некоторые принтеры ассоциируются с несколькими драйверами. В большинстве случаев используемый по умолчанию драйвер работает нормально. Но при появлении проблем рекомендуется щелкнуть мышью на имени используемого драйвера для получения списка альтернативных драйверов (если таковые существуют) для вашего принтера.
Можно даже установить один и тот же принтер с разными драйверами. Например, если одна из используемых вами программ выдает на печать данные уже непосредственно в формате принтера, то принтер для нее не нужен, и вы можете воспользоваться опцией raw print queue. Для остальных программ можно установить тот же самый принтер с подходящим драйвером. Не забудьте при этом использовать для разных установок разные имена, псевдонимы и принтерные устройства.
С помощью утилиты Linuxconf можно также сконфигурировать модем. Откройте окно Linuxconf. воспользовавшись описанным выше способом. Если модуль modemconf установлен так, как это описано ранее, то можно использовать утилиту Linuxconf для конфигурирования модема. На вкладке Config выберите элемент Peripherals/Modem (Периферийные устройства Модем), в
результате будет открыта вкладка Modem Configurator, показанная на рис. 15.17.
Рис. 15.17.
Вкладка конфигурирования модема
В этом окне нет обилия параметров: надо лишь указать порт подключения модема (для встроенного модема - порт конфигурирования). Так создается необходимая связь между логическим устройством /dev/modem и физическим адресом модема.
Можно также поручить утилите Linuxconf определить порт, к которому подключен ваш модем. Подсоедините модем к телефонной линии и щелкните на кнопке Detect (Разыскать). Как только модем обнаружен, об этом выдается соответствующее сообщение с указанием порта, в противном случае появляется сообщение No Modem Detected (Модем не обнаружен).
Этот процесс не зависит от конфигурации программ, использующих модем для доступа в Internet или пересылки факсов. (Они рассмотрены в гл. 22).
Совет
Если Modem Configurator утилиты Linuxconf не может распознать ваш модем, проверьте, подключен ли он к телефону и есть ли сигнал станции на линии. В противном случае используйте описанные в гл. 22 средства, чтобы помочь системе распознать модем.
Пожалуй, самая сложная задача в Unix - заставить работать принтер, вручную редактируя системные конфигурационные файлы. Особенно, если это принтер стандарта PCL (Printer Control Language - Язык управления печатью).
Компания Red Hat добилась замечательного результата, сделав эту задачу выполнимой (даже нетрудной) с помощью утилиты Printconf. Эта утилита запускается выбором в главном меню GNOME команды Programs/System/Printer Configuration (Профаммы/Системные/Конфигурирование принтера). Если вы вошли в систему не как корневой пользователь, то появляется запрос пароля корневого пользователя.
В результате на экран выводится окно утилиты конфигурирования принтеров, показанное на рис. 15.1.
Рис. 15.1.
Окно утилиты конфигурирования принтеров
Примечание
Эту утилиту можно также вызвать из КDЕ, выбором опции System/Printer Configuration в главном меню КDЕ.
Утилита Printconf представляет собой наиболее удобное средство настройки конфигурационного файла /etc/printcap. Фактически, используя Printconf, вы избавляетесь от необходимости ручного редактирования файла /etc/printcap. Если же вы работаете с принтерами, которые поддаются только ручной настройке, можете задать их параметры в файле /etc/printcap. local.
Процедура установки нового принтера состоит из четырех шагов: вначале задается имя. Оно может включать алиасы (псевдонимы) для упрощения запоминания имени нового принтера. Далее устанавливается очередь. Она может быть локальной или удаленной (в сети). Созданная очередь ассоциируется с принтером. Третий шаг посвящен установке драйвера, который обеспечит обмен системы Linux с принтером. В завершение необходимо сохранить внесенные настройки и перезапустить Демон Line Printer Daemon, вызываемый как lpd.
Конфигурирование принтеров
Запуск программы LinuxConf
Добавление модулей
Управление пользователями и группами пользователей
Конфигурирование модема
Установка даты и времени
Если искушенным пользователям и системным администраторам не терпится, засучив рукава, приняться за редактирование файлов, управляющих поведением системы, обычный пользователь, для которого Linux - не более чем эффективный инструмент, находит это занятие безнадежно
трудным.
Ручное редактирование конфигурационных файлов - крайне сложный процесс, и именно это послужило причиной оценки Linux, в отличие от Windows, как недружественной пользователю системы.
Однако компания Red Hat уже не первый год работает над тем, чтобы оградить пользователя от конфигурационных файлов основной рабочей станции Linux. На сегодняшний день доступен ряд утилит конфигурирования, позволяющих управлять пользователями, принтерами, системными часами, модемами, сетями, пакетами программ и т.п.
Наиболее совершенной из подобных утилит является Linuxconf, Она предоставляет пользователю все необходимые возможности конфигурирования посредством ряда простых диалоговых окон.
Примечание
В других дистрибутивах Linux также предусмотрены конфигурационные утилиты с графическим интерфейсом, подобные Linuxconf, например, Control Center фирмы Corel, WebMin от Caldera, YaST от S.u!S.E.
В этой главе рассмотрены функции графических конфигурационных утилит Red Hat Linux 7.1, в частности, Printconf и Linuxconf, причем ряд особенностей утилиты Linuxconf разобран детально.
Перед тем, как приступать к тестированию конфигурации, ее следует сохранить в конфигурационном файле /etc/printcap. Вернувшись в основное окно утилиты Printconf, выберите команду File/Save Changes (Файл/Сохранить изменения), чтобы сохранить изменения в указанном файле. Затем выберите команду File/Restart/Lpd (Файл/Перезапустить/Lpd), чтобы демон Line Printer Daemon прочитал этот конфигурационный файл.
Теперь можно приступать к тестированию конфигурации. В меню Test (Тест) содержатся три опции:
Print Postscript Test Page (Печатать тестовую страницу Postscript).
Стандартная тестовая Postscript-страница Red Hat включает текст, цветной фрагмент и рамки на расстоянии 0,5 и 1,0 дюйма от края страницы размером 8,5 х 11 дюймов.
Print А4 Postscript Test Page (Печатать тестовую страницу А4 Postscript).
Это стандартная тестовая Postscript-страница Red Hat, ориентированная на бумагу формата А4, являющуюся стандартной в Европе.
Print ASCII Test Page (Печатать тестовую страницу ASCII).
Это стандартная тестовая страница, которая содержит только текст без графики.
Другой аспект управления пользователями и группами - управление группами пользователей, осуществляемое на вкладке Config в подразделе /Users Accounts/Normal/Group Definitions (Определение групп) дерева разделов в левой панели окна программы LinuxConf. На вкладке конфигурирования групп приведен их список и ряд функциональных кнопок (рис. 15.13). Подробнее группы рассмотрены в гл. 17.
Рис. 15.13.
Управление группами
Создание группы
Чтобы добавить новую группу в список, щелкните на кнопке Add (Добавить). Откроется вкладка, показанная на рис. 15.14.
Рис. 15.14.
Создание группы
Эта вкладка выглядит как уменьшенный вариант вкладки создания учетной записи пользователя. На ней указываются следующие параметры.
Имя группы.
Идентификатор группы (если не нравится присваиваемый системой).
В поле Alternate Members (Члены группы) - список членов группы, разделенных пробелами.
Редактирование или просмотр групп
Для редактирования или просмотра группы щелкните на ее имени в списке. Откроется вкладка, показанная на рис. 15.15.
Обратите внимание: по существу, это та вкладка, в которой происходило создание группы. Единственное отличие - заполненные поля. Если необходимо, измените идентификатор группы или список членов, хотя лучше этого не делать, особенно для административных групп с номерами менее 100.
Для управления пользователями перейдите в LinuxConf а вкладку Config, на ней выберите элемент Users Accounts, в нем - Normal, а в нем - Users Accounts. В правой части окна откроется вкладка управления пользователями (рис. 15.8) со списком пользователей и рядам функциональных КНОПОК.
На этой панели можно выполнять следующие операции.
Ввод новых пользователей.
Просмотр и редактирование свойств существующих пользователей.
Временное блокирование и разблокирование пользователей.
Удаление пользователей из системы.
Рис. 15.6.
Панель управления пользователями
Ввод новых пользователей
Чтобы добавить в список нового пользователя, щелкните на кнопке Add (Добавить). Откроется вкладка User Account Creation (Создание учетной записи пользователя), показанная на рис. 15.9, Большинство полей этой вкладки пусты: в них надо ввести сведения о новом пользователе. Покончив с заполнением полей, создайте учетную запись щелчком на кнопке Accept (Принять).
Ниже описаны поля вкладки User Account Creation.
Login Name (Имя пользователя)
Введите в это поле имя, которое пользователь должен указывать при входе в систему (не совпадающее с его полным именем). Имя пользователя начинается с буквы или цифры и не содержит пробелов.
Например, пользователю Арману Данешу (Arrnan Danesh) подошло бы одно из следующих имен:
armand
adanesh
arman
danesh
arman_danesh
ArmanDanesh
Все они ассоциируются с именем, которое пользователь получил при рождении.
Рис. 15.9.
Ввод нового пользователя
Full Name (Полное имя)
В это поле вводится полное имя пользователя, которое указывается, например, в поле сообщений электронной почты "От", вместе с адресом, формируемым по имени пользователя. Это имя может содержать пробелы.
Group (Группа) и Supplementary Groups (Дополнительные группы)
В этом поле пользователь включается в определенную группу. Если это поле не заполнено, то Linux Red Hat создает для данного пользователя отдельную группу, идентификационный номер которой совпадает с его идентификационным номером. Численные значения, установленные программой LinuxConf, лучше не менять.
После установки принтера внесение изменений в его конфигурацию не составляет трудностей. Выберите необходимый принтер и щелкните на Edit (Изменить) на панели инструментов. Появится уже знакомое вам диалоговое окно.
С помощью утилиты Linuxconf можно настроить часы и календарь вашего компьютера. Откройте окно Linuxconf, воспользовавшись описанным выше способом. На вкладке Control выберите элемент Date & Time. В результате появится вкладка Workstation Date & Time Configurator, показанная на рис. 15.18.
Время и дата указаны в средней и нижней части окна. Для установки даты или времени щелкните на любой части значения даты или времени (часах, минутах, секундах, месяце, дне или годе).
В системе Linux используется стандартное время по Гринвичу Greenwich Mean Time (GMT). Это позволяет упростить синхронизацию Linux-серверов, расположенных в различных часовых поясах. Чтобы выполнить такую синхронизацию на вашем компьютере, система Linux должна знать его часовой пояс. Указать этот пояс можно с помощью меню, вызываемого щелчком на кнопке, расположенной справа от поля Zone.
Если на вашем компьютере установлена только система Linux, выберите опцию Store Date In CMOS (Сохранить данные в CMOS). В результате GMT-версия времени, установленного вами будет занесена в аппаратные часы компьютера. В противном случае вам придется вручную изме
нять время системы Linux при изменении времени в вашем часовом поясе (например, при переходе на летнее/зимнее время).
Рис. 15.18.
Вкладка Workstation Date & Time Configurator
Этот инструментарий также можно использовать для синхронизации часов вашего компьютера с часами сервера, который указывается в поле Get Date From Server(s) (Получить данные с сервера). Этот механизм базируется на команде netdate или сервере времени xntp. Ни одна из этих утилит не входит в состав Red Hat Linux 7.1.
Завершив установку параметров, щелкните на кнопке Accept (Принять) и выполните активизацию внесенных изменений так, как это описано выше в данной главе.
Примечание
При работе на нескольких компьютерах с приложениями, требующими одинакового времени, для синхронизации часов каждого из таких компьютеров с сервером можно воспользоваться утилитой ntpdate. Более подробные сведения о ней расположены на веб-странице по адресу
http://www.eecis.udel.edu/
~ntp/ntp_spool/html/ntpdate.htm.
Теперь необходимо установить очередь для настраиваемого принтера. В диалоговом окне Edit Queue (Редактирование очереди) щелкните на кнопке Queue Type (Тип очереди). Как показано на рис. 15.3, подлежат конфигурированию два параметра: дислокация принтера и связанное с принтером устройство.
Рис. 15.3.
Выбор очереди и устройства
Существует пять разновидностей очередей. Простейшая - Local Printer (Локальный принтер), когда принтер непосредственно подключен в вашему компьютеру через параллельный или USB-порт. После щелчка на Local Printer (Локальный принтер), утилита Printconf показывает все пять
доступных опций Queue Type (Тип очереди). Остальные четыре опции предполагают, что принтер подключен через сеть одним из следующих способов:
UNIX Printer (Ipd Queue) (UNIX-принтер).
Если устанавливаемый принтер подключен в сети к компьютеру, управляемому системой Unix или Linux, и ваш компьютер использует протокол Network File System (NFS) для связи с ним, то вам нужна именно эта опция. Вам потребуется имя принт-серверного компьютера и имя очереди подключаемого принтера на нем.
Windows Printer (SMB Share) (Windows-принтер).
Если устанавливаемый принтер подключен в сети к компьютеру, управляемому системой Microsoft Windows, или системой Linux и/или Unix с использованием Samba, то вам следует выбрать эту опцию для установки принтера. Вам потребуется имя, используемое для доступа к принтеру, и IP-адрес, назначенный компьютеру, к которому подключен принтер. Для получения доступа к принтеру вам, в зависимости от способа организации сетевого доступа, может потребоваться имя рабочей группы Windows, имя пользователя и/или пароль.
Совет
Имя, используемое для доступа к принтеру, состоит из полного пути принтера, подключенного к компьютеру, управляемому Microsoft Windows. Например, если имя Windows-компьютера Mswi.nl, а имя, используемое для доступа к принтеру HPLaser j, то необходимое вам имя будет выглядеть так / /MSWinl/HPLaser J.
Novell Printer (NCP
Завершив все конфигурационные операции в LinuxConf, необходимо выйти из этой программы, активизировав изменения конфигурационных параметров. Для этого выберите команду File/Act|Changes (Файл/Активизировать изменения). Если потребуются дополнительные изменения, то появится окно подтверждения, подобное изображенному на рис. 15.16. В этом окне указано, что необходимо сделать для сохранения внесенных изменений в системных файлах Linux.
Рис. 15.16.
Выход из LinuxConf В окне подтверждения можно выбрать один из следующих вариантов.
Задействовать внесенные изменения кнопкой Do It.
Отменить выход из LinuxConf щелчком на кнопке Do Nothing (He выходить). Теперь выйдите из программы LinuxConf, выполнив команду File/Quit (Файл/Выход).
Начиная с Red Hat Linux 7.1, Linuxconf больше не устанавливается по умолчанию. Фактически, соответствующие rpm-пакеты даже не включены в CD-ROM, поставляемый с книгой. Но если вы располагаете полным дистрибутивом на двух или более CD-ROM, можете установить пакет Linuxconf, linuxconf-1.24r2-10.1386. rpm со второго дистрибутивного диска CD-ROM.
В некоторых из конфигураций CD-ROM может монтироваться автоматически после установки компакт-диска в привод. Чтобы проверить, так ли эти, наберите команду mount. Если в ответ вы получаете что-либо наподобие следующей строки, то CD-ROM уже смонтирован:
/dev/hdb on /mnt/cdrom type iso9660
Если необходимо, смонтируйте CD-ROM в каталоге /mnt/cdrom. Выполнив монтирование, можно установить Linuxconf с помощью следующих команд:
$ rpm -I /mnt/cdrom/RedHat/RPMS/linuxconf-1.24r2-10.1386.rpm
$ rpm -i /mnt/cdrom/RedHat/RPMS/gnome-linuxconf-0.64-1.1386.rpm
Примечание
Если второй дистрибутивный диск Red Hat Linux 7.1 вам недоступен, можно загрузить эти пакеты из Интернета, например, с узлов ftp. redhat. com или www. rpmfind. net.
После установки Linuxconf можно запустить эту утилиту из командной строки, введя следующую команду в ответ на подсказку в окне xterm:
$ linuxconf-auth
Если вы не корневой пользователь, Red Hat Linux 7.1 выдаст запрос пароля корневого пользователя перед запуском Linuxconf.
После запуска Linuxconf на экране появляется окно, подобное показанному на рис. 15.6.
Рис. 15.6.
Окно утилиты Linuxconf
Примечание
При первом запуске утилиты Linuxconf, появляется окно приветствия. Для перехода к работе с Linuxconf следует нажать Quit (Выход), как это ни странно звучит.
Утилиту Linuxconf можно использовать для управления многими параметрами Linux, включая сетевую конфигурацию и контроль пользователей и групп. Эти и другие секции можно выбрать в окне Linuxconf из иерархии параметров, расположенной в центре окна. Эта иерархия представлена в виде дерева, отдельные ветви которого можно разворачивать/сворачивать, подобно тому, как вы разворачиваете/сворачиваете папки в Проводнике Windows 98/Ме и NT/2000.
Установка алиасов (псевдоимен) команд - мощное средство, позволяющее пользователю создавать собственные команды. Например, частые проверки всех процессов в системе можно проводить при помощи следующей команды.
$ ps -aux | more
Чтобы не набирать каждый раз довольно длинную команду, можно определить ее алиас. Допустим, мы ходим создать алиас с именем psa для проверки всех выполняемых процессов. Это можно сделать командой
$ alias psa="ps aux | more"
После этого ввод в командной строке Bash команды psa будет аналогичен вводу ps aux | more. Алиас остается в памяти до конца текущего сеанса оболочки Bash. После выхода из оболочки все алиасы теряются.
Чтобы алиасы не утрачивались с окончанием сеансов, их следует определять в файле . bashrc, аналогично тому, как ранее мы устанавливали текстовый редактор по умолчанию emacs.
Применение алиасов позволяет не только облегчить работу с командной строкой, но и избежать множества опасных ошибок. Например, если войти в систему как корневой пользователь, становятся опасными самые простые операции копирования, перемещения или удаления файлов и каталогов. Любая ошибка может привести к удалению файлов, каталогов и даже файловых систем, причем виновник может этого не заметить. Поэтому в оболочке Bash учетная запись корневого пользователя конфигурирована с установкой по умолчанию следующих алиасов.
alias cp='cp -i' alias mv='mv -i' alias rm='rm -i
1
Флажок -i указывает на необходимость подтверждения удаления или перезаписи файлов во всех трех операциях. Отменить действие флажка - i можно только установкой другого флажха i например, rm - f ).
Это оболочка, устанавливаемая в дистрибутивах Linux чаще других. Известная как Bash, она является производной от Bourne Shell (что следует из названия), но имеет дополнительные функции: редактирование командной строки, хронологический список и дополнение частично введенных имен файлов. В Bash можно писать сложные сценарии на синтаксисе, близком к синтаксису Bourne Shell. Поскольку в настоящее время Bash - наиболее распространенная оболочка Linux, большая часть главы посвящена именно ей. Она же подразумевается во всех примерах, приводимых в книге.
Bourne Shell (sh) считается исходной оболочкой Unix. Во многих отношениях эта довольно ограниченная оболочка, в которой недостает таких средств, как хронологический список или редактирование командной строки. Но многие средства Bourne Shell, именно как исходной версии, входят в ряд современных оболочек. Пример - основной набор команд. В современных системах Bourne Shell, как оболочка по умолчанию, применяется редко. В большинстве дистрибутивов Linux установлены Bourne Again Shell или Enhanced С Shell.
Оболочка Bourne Shell - источник множества концептуальных новшеств: например, проверки успешного или аварийного завершения работы программ, что позволяет писать сложные сценарии. Теперь это средство - стандарт оболочек Unix.
Это простое, но очень полезное средство, действующее следующим образом. Если набрать в командной строке достаточное число символов, чтобы указать уникальное имя файла, команды или каталога, то Bash может дополнить недостающую его часть. Предположим, вы набрали
$ /usr/lo
В большинстве систем этого достаточно для идентификации единственного объекта - каталога /usr/local/. Нажмите клавишу Tab, и Bash попытается дополнить недостающую часть имени. Если существует единственный объект (файл, каталог или команда) с именем, начинающимся с /usr/lo, то Bash дополнит это имя. В нашем случае до /usr/local/.
Конечно, в некоторых случаях введенной части имени недостаточно для определения единственного объекта. Тогда Bash выводит список возможных имен. Например, если набрать
$ /usr/1
это может соответствовать /usr/local/ или /usr/lib/. Если нажать клавишу Tab, оболочка Bash будет не в состоянии выбрать единственный вариант и выдаст список всех возможных.
lib local
Пользователь может набрать еще несколько символов и снова нажать Tab. В данном примере достаточно набрать "о". После нажатия клавиши Tab Bash дополнит имя до /usr/local / .
Вероятно, вам не дает покоя вопрос: что произойдет, если набрать неполное имя файла, находящегося в локальном каталоге или любом другом, включенном в путь по умолчанию, без указания полного пути? Сможет ли Bash дополнить его? Ответ - да. При дополнении имени файла или каталога, указанных без полного пути, как в команде
Bash проводит поиск имен, совпадающих с введенной частью строки, в каталогах, указанных в пути по умолчанию. В большинстве систем для дополнения указанной команды найдется лишь несколько имен, в том числе grep и groff , так что предложенный список возможных вариантов будет выглядеть примерно так:
grep groff grotty
Чтобы выбрать команду grep, достаточно набрать букву "е" и нажать Tab.
Существует множество других оболочек, каждая из которых обеспечивает интерфейс командной строки, обладающий уникальными свойствами. Но ни одна из них не завоевала достаточной популярности, чтобы быть включенной в большинство дистрибутивов Linux. Среди них можно упомянуть Adventure Shell (ash), представляющую подмножество Bourne Shell, полностью перепрограммируемую Extensible Shell (es), эргономичную ERGO Shell (esh), Z Shell (zsh), объединившую, подобно оболочке Bash, функции многих оболочек, что, в конце концов, привело к некоторому подобию Korn Shell.
Совет
Превосходным источником альтернативных оболочек для системы Linux служит архив Linux SunSite с каталогом оболочек
ftp://metalab.unc.edu/pub/Linux/system/sheiIs
.
Здесь можно найти все распространенные оболочки, а также и малоизвестные ish, pash или pdksh.
Идея, положенная в основу этого средства, крайне проста. После ввода каждой команды (после нажатия Enter, а не Ctrl+C), последняя заносится в список, из которого команды можно извлекать в порядке, обратном вводу.
Простейший способ доступа к хронологическому списку - просмотр его записей нажатием клавиши со стрелкой вверх, пока не будет найдена нужная команда. У хронологического списка есть два основных назначения: поиск ошибочно введенных команд и повторный ввод команд.
Рассмотрим первое. Предположим, вы предприняли попытку просмотреть содержимое файла testf ile, для чего ввели команду
$ moer testfile
После нажатия Enter, на экране появится сообщение об ошибке.
bash: moer: command not found.
Для быстрого исправления ситуации достаточно вернуть команду в командную строку нажатием клавиши со стрелкой вверх, исправить moer на more (воспользовавшись функциями редактирования командной строки) и нажать Enter.
Другая ситуация - конфигурирование некоторой программы. При этом обычно приходится несколько раз подряд редактировать конфигурационный файл и запускать программу. А для таких повторов нет средства лучше хронологического списка.
Существует быстрый способ доступа к хронологическому списку - при помощи восклицательного знака (!). Если ввести восклицательный знак с несколькими следующими за ним начальными буквами одной из команд из хронологического списка, то эта команда будет выполнена (будет повторено последнее обращение к ней).
Например, если ранее была выполнена команда
$ ps aux | grep httpd | more
ее выполнение можно повторять вводом
$ !ps
если только после нее не вводилась другая команда, начинавшаяся с "ps". После ввода ! ps выполняется последняя команда из хронологического списка, начинающаяся с "ps".
Для хронологического списка также существует ряд полезных функциональных комбинаций клавиш. Некоторые из них перечислены в табл. 16.2.
Из перечисленных комбинаций наиболее интересна Ctrl+R. Это динамичный, интерактивный обратный поиск в списке. По мере набора строки Bash ищет в хронологическом списке команду с совпадающим фрагментом, введенную последней. Чем длиннее набранная строка, тем меньше область поиска нужной команды.
Комбинация клавиш |
Функция |
||
Ctrl+P Ctrl+N Esc, < Esc,> Ctrl+R Ctrl+O |
Переход к предыдущей команде в хронологическом списке Переход к следующей команде в хронологическом списке Переход к началу хронологического списка (команде, введенной первой) Переход в конец хронологического списка (к команде, введенной последней) Поиск по списку в обратном направлении Выполнение текущей команды хронологического списка и вывод ( следующей для редактирования или выполнения |
||
Вероятно, вам уже интересно, как опробовать все эти оболочки, не устанавливая каждую по умолчанию. Оболочка запускается как обычная программа в среде оболочки по умолчанию. Например, Enhanced С Shell устанавливается при установке системы, но по умолчанию всеми пользователями используется Bash. Чтобы запустить Enhanced С Shell, введите следующую команду.
$ tcsh
В этой команде подразумевается, что программа tcsh находится в одном из каталогов пути по умолчанию, в противном случае придется указывать путь к оболочке, например /bin/ tcsh. После ввода команды запускается оболочка Enhanced С Shell, и работа продолжается уже в среде ее командной строки. Возврат в оболочку по умолчанию происходит после ввода команды exit.
В большинстве систем Linux есть.символическая ссылка /bin/sh на /bin/tcsh, так что оболочку Enhanced С Shell можно запустить следующей командой.
$ csh
Этим методом можно воспользоваться для проверки различных оболочек, прежде чем установить одну из них по умолчанию. Чтобы сменить оболочку по умолчанию, устанавливаемую при входе в систему, необходимо внести изменения в одну из записей файла паролей Unix, введя команду chsh.
Представьте ситуацию, в которой пользователь someuser работает с установленной по умолчанию оболочкой /bin/bash (Bourne Again Shell). Соответствующая запись в файле паролей имеет примерно следующий вид.
someuser::790:103:Some User:/home/someuser:/bin/bash
В ее конце указана оболочка по умолчанию /bin/bash. После ввода команды
$ chsh
-a
/bin/tcsh someuser
оболочка по умолчанию меняется на /bin/tcsh, и запись в файле паролей становится следующей:
someuser::790:103:Some User:/home/someuser:/bin/tcsh
При следующем входе в систему вместо оболочки Bourne Again Shell будет запущена Enhanced С Shell.
Еще одна оболочка, производная от Bourne Shell. По некоторым оценкам, это наиболее популярная оболочка Unix, но в дистрибутивах Linux она редко устанавливается по умолчанию. Оболочка Korn Shell была, вероятно, одной из первых, в которой впервые появилось множество популярных функций, реализованных в настоящее время в Bash, в том числе редактирование командной строки. Она же помогла перенести в мир Bourne Shell многие функции, введенные в С Shell.
Рассмотрим наиболее популярную оболочку Linux - Bash. Для понимания ее места в мире Linux важно понять сам процесс входа в систему. В результате ввода имени и пароля пользователя происходит несколько важных процессов. Прежде всего, запуск оболочки (в нашем случае Bash), затем - считывание конфигурационного файла, созданного для создания собственной среды Bash.
Чтобы обеспечить персонифицированную конфигурацию Bash, необходимо создать в исходном каталоге файл с именем .bashrc. Это простейший текстовый файл, выполняемый оболочкой Bash при ее запуске (обычно при входе в систему).
Примечание
В Red Hat Linux 7.1 параметры персонифицированной конфигурации входят также в состав файла .bash_prof lie, который хранится в исходном каталоге пользователя.
Файл . bashrc может содержать любой разрешенный набор команд и функций оболочки Bash, которые можно вводить в командной строке, а также сложные команды, применяемые в сценариях.
Именно в файле .bashrc конфигурируются параметры оболочки, устанавливаются переменные среды (например, путь по умолчанию) и запускаются программы, предназначенные для автоматического запуска с оболочкой Bash. Ниже приведены команды, образующие простой файл . bashrc, который задает оригинальную подсказку командной строки, устанавливает алиас команды с именем which и некоторые переменные среды.
PS1=" [\u@\h \W]\\$ " alias which="type -path" export PATH=$PATH:.:~/bin export EDITOR=emacs
В этом простом примере задействованы несколько важных функций оболочки Bash.
Установка переменных среды.
Алиасы команд.
Подстановочные символы.
Все это мы рассмотрим в оставшейся части главы вместе со следующими функциями оболочки Bash.
Переадресация ввода и вывода.
Дополнение частично введенных имен.
Полный набор функций редактирования командной строки.
Хронологический список.
Управление заданиями.
Оболочка ранних версий Unix была довольно примитивной, без хронологического списка, средств редактирования командной строки и управления заданиями. Однако в семидесятые годы, с появлением Bourne Shell и С Shell, оболочки стали превращаться в объекты серьезного внимания в мире Unix. Сейчас пользователям Unix предлагается на выбор множество оболочек, каждая из которых имеет уникальный набор средств.
Существует два основных семейства оболочек. Одно из них берет начало от оболочки Bourne Shell, другое - от С Shell. Прежде чем приступить к основательному изучению оболочки Bourne Again Shell, устанавливаемой по умолчанию в большинстве дистрибутивов Linux, рассмотрим основные оболочки Unix.
Совет
Чтобы быть в курсе новейших разработок в области оболочек Unix, подпишитесь на группу новостей сотр.unix.shell.
Одна из наиболее полезных концепций в мире Unix - стандартный ввод/вывод. Невзаимодействующие программы могут получать данные от стандартного устройства ввода, как правило, клавиатуры. Результаты выводятся на стандартное устройство вывода (обычно, это экран). ,
Однако в большинстве оболочек предусмотрена возможность переадресации стандартного ввода или вщвода, что позволяет создавать сложные командные конструкции на основе большого количества команд и файлов данных. В гл. 13 мы рассмотрели конвейеризацию команд, при помощи которой можно переадресовать стандартный вывод на стандартный ввод. Например, в команде
$ ls -1 | more
результаты выполнения команды Is -1 направляются не на стандартное устройство вывода, а на стандартный ввод команды more.
Другой способ переадресации стандартного ввода/вывода в оболочке Bash - при помощи символов переадресации "<" и ">". Рассмотрим ситуацию, когда надо записать в файл список содержимого каталога. Для этого можно воспользоваться следующей командой.
$ ls -1 > filelist
По этой команде стандартный вывод команды Is -1 будет переадресован в файл с именем filelist. В следующей команде происходит переадресация ввода.
$ mail user@juxta.com < filelist
Здесь файл filelist используется в качестве стандартного устройства ввода для команды mail, образуя текст сообщения электронной почты.
Одно из мощных средств современных оболочек (в том числе Bash) - подстановочные символы, позволяющие задавать несколько имен команд или файлов в одном выражении. Рассмотрим простой пример. Если ввести команду,
$ ls -1
ответом на нее будет полный список файлов текущего каталога. Предположим, что нам надо найти файл, о котором известно только то, что его имя начинается на букву "z". Введем команду,
$ Is -1 z*
в которой аргумент z * означает все файлы, имена которых начинаются на букву "z". Пользователям
DOS
или Windows такое применение звездочки, вероятно, знакомо. После ввода команды оболочка Bash составляет список всех файлов, имена которых начинаются на "z" и заменяет аргумент z * этим списком. Имена файлов из списка передаются в качестве аргументов команде Is -1. В оболочке Bash возможности подстановочного символа "*" значительно шире, чем в DOS или окне DOS системы Windows.
Подстановочные символы в обозначении каталогов и файлов
Одно из применений
подстановочных символов -
обозначение каталогов и файлов. Здесь, кроме звездочки, применяются еще два символа. Все символы, а также их значения, перечислены в табл. 16.3.
Табл. 16.3.
Применение подстановочных символов в обозначении каталогов и файлов
Символ |
Описание |
||
? [...] [A-F] [ .. .] или [!...] [ A A-F] или [IA-F] |
Любой единичный символ Любой единичный символ, заключенный в скобки Любой единичный символ, попадающий в указанный диапазон Любой единичный символ, кроме заключенных в скобки Любой единичный символ, не попадающий в указанный диапазон |
||
Рассмотрим несколько примеров.
Предположим, надо составить список всех файлов с именами длиной в три символа, первый из которых "а", а последний - "z". Это можно сделать, введя команду
$ Is -1 a?z
Если заменить вопросительный знак звездочкой, получим список файлов, имена которых просто начинаются на "а" и оканчиваются "z".
Одна из возможностей Bash, отсутствовавшая в более ранних оболочках (Bourne Shell или С Shell) - редактирование командной строки. Без этого допущенную в наборе команды ошибку можно было исправить, только удалив все символы после нее. Например, если в команде
$ /usr/kocal/bin/mycommand
ошибочно набрано "kocal" вместо "local", то вернуть курсор к "k" можно только удалив все последующие символы, которые придется набрать вновь после исправления ошибки. Надо ли объяснять, насколько это неэффективно!
В современных оболочках, в том числе и Bash, предусмотрен полный набор средств редактирования командной строки. Курсор можно перемещать по строке при помощи клавиш со стрелками, при необходимости удаляя или вставляя символы. Ввод команды нажатием клавиши Enter можно выполнять, не перемещая курсор в конец строки. По умолчанию, командная строка Bash находится в режиме вставки, так что набираемые символы не замещают существующие, а вставляются между ними.
Чтобы ускорить редактирование командной строки, особенно при наборе длинных команд, в Bash предусмотрено несколько функциональных комбинаций клавиш, перечисленных в табл. 16.1.
Табл. 16.1.
Функциональные комбинации клавиш для редактирования командной строки
Комбинация клавиш |
Функция |
||
Ctrl+A |
Переход в начало строки |
||
Ctrl+E |
Переход в конец строки |
||
Ctrl+B |
Переход на один символ влево |
||
Ctrl+F |
Переход на один символ вправо |
||
Esc, В |
Переход на одно слово влево |
||
Esc,F |
Переход на одно слово вправо |
||
Ctrl+L |
Очистка экрана с выводом командной строки вверху |
||
Ctrl+D |
Удаление символа в текущей позиции курсора |
||
Backspace |
Удаление символа слева от курсора |
||
Ctrl+T |
Поменять местами символ в позиции курсора с символом слева от него |
||
Esc, Т |
Поменять местами слово в позиции курсора со словом слева от него |
||
Esc, U |
Перевод текущего слова в верхний регистр |
||
Esc.L |
Перевод текущего слова в нижний регистр |
||
Esc, С |
Перевод текущего слова в нижний регистр с заглавной первой буквой |
||
Ctrl+K |
Удаление символов от позиции курсора до конца строки |
||
Тот, кто работает в редакторе emacs, сразу обратит внимание, что в приведенной таблице перечислены функциональные комбинации клавиш именно этого редактора. Действительно, набор функциональных клавиш оболочки Bash позаимствован из emacs. Можно установить альтернативный набор из редактора vi, но последний, как и его набор функциональных клавиш, менее популярен среди программистов и опытных системных администраторов, поэтому в данной книге не рассматривается.
Список команд из табл. 16.1 - лишь незначительная часть всех команд редактирования, предоставляемых оболочкой Bash. Однако это основные функции, необходимые большинству пользователей для эффективной работы. Более подробный список функций редактирования можно найти в разделе HEADLINE страницы руководства оболочки Bash, для вывода которой необходимо ввести в командной строке man bash.
С Shell (csh) - ранняя оболочка Unix с набором команд и языком сценариев на основе синтаксиса популярного языка программирования С. Как и в ранней Bourne Shell, в С Shell отсутствуют некоторые важные функции, наподобие редактирования командной строки. Однако в этой оболочке впервые реализовано несколько важных идей, например, алиасы команд и хронологические списки. Усовершенствованный вариант Enhanced С Shell (tcsh) с редактированием командной строки и другими функциями, позаимствованными из Bash, входит в большинство дистрибутивов Linux как альтернативная оболочка.
Оболочка С Shell известна рядом концептуальных нововведений, вошедших даже в оболочки, производные от Bourne Shell. Среди прочих, идея реализации в оболочке некоторых арифметических функций и сравнительной проверки. В Bourne Shell для этого требовалось обращение к внешним программам.
У каждой оболочки свой синтаксис установки переменных среды. Обычно в Bash это выполняется в два этапа: присвоение переменной значения и экспорт переменной в среду. Например, чтобы задать по умолчанию текстовый редактор emacs, можно присвоить переменной среды EDITOR значение emac s:
$ EDITOR=emacs
затем экспортировать ее следующей командой.
$ export EDITOR
Обе команды можно объединить в одну.
$ export EDITOR=emacs
При рассмотрении подстановочных символов мы покажем, что на значение переменной среды можно сослаться, указав символ "$" как префикс имени этой переменной в командной строке Bash. Так можно дополнять значение переменной среды. Например, если переменная пути по умолчанию PATH равна
/bin:/usr/bin:/usr/X11R6/bin
к ней можно добавить составляющую /usr / local/bin, введя следующую команду.
$ export PATH=$PATH:/usr/local/bin
В этой команде текущее значение переменной PATH представлено выражением $РАТН. Новое значение переменной следующее:
/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin
Обзор оболочек
Оболочка Bash
После изучения основных команд Unix, полезно освоить среду командной строки, в которой эти команды используются, -
оболочку.
Оболочка аналогична окну DOS в системе Windows 3.1 или Windows 98, в котором можно вводить команды, запускать программы и выполнять операции с файлами.
В отличие от окон DOS, представляющих собой среду с ограниченной гибкостью, оболочки Unix - это небольшие программы, запускаемые как процессы при входе в систему и обеспечивающие богатый набор средств в соответствии с потребностями различных пользователей и программ.
В мире Unix - следовательно, и Linux - большой выбор оболочек, каждая из которых имеет собственный набор средств и возможностей, зачастую и собственный язык сценариев для создания сложных, самостоятельно выполняемых, программ, аналогичных bat-файлам DOS (с привычным расширением . ВАТ), но более мощным. »
В начале главы дан обзор основных оболочек Unix, в том числе Bourne Shell, С Shell и Korn Shell, затем мы перейдем к углубленному изучению оболочки Bourne Again Shell, известной как Bash, устанавливаемой по умолчанию в большинстве дистрибутивов Linux.