RuLibrary.com

ГЛАВНАЯ | ПОИСК | ТОП | КАРТА САЙТА      

 
 


 

Сейдж Рассел >> Приемы профессиональной работы в UNIX (страница 3)


Каталог doc - это корень всех видов документации. Подкаталогами здесь могут быть формы, письма, записки, разнообразная информация и отчеты. Каждый подкаталог содержит определенные файлы в этих областях.

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

/.profile

/etc/bcheckrc

brc

checklist

gettydefs

group

inittab

motd

mountable

unmountable

passwd

profile

rc

/usr/lib/crontab

/usr/lib/uucp/L.sys

USERFILE

uudemon.day

uudemon.hr

uudemon.wk
или любой другой информации о системе.

Каталог proj предназначен для специальных проектов, которые у вас есть. Скорее всего, вы назовете этот каталог не proj, а по имени про- екта, например, dev для разработки (development) или qa для чистовой шлифовки (quality assurance). Все данные, корреспонденция, документа- ция и исходный код для каждой работы направляются в главный каталог проекта. Конечно, у вас может быть более одного каталога проекта.

Следующий каталог - mail. Это хорошее место для размещения вашей почтовой корреспонденции от других людей, использующих систему. Имена файлов в этом каталоге являются пользовательскими. Например, если бы я получил почту от Боба, то она находилась бы в файле с именем bob.

Каталог src - для всего исходного кода. Логически сгруппируйте ваш исходный код по подкаталогам, чтобы облегчить его поиск в будущем. Возможными подкаталогами являются asm для ассемблерного кода, c для исходного кода на Си, games (игры), misc (разное), script для команд- ных файлов и sys для любого исходного кода, относящегося к системе. (Если вы держите исходные тексты ваших личных инструментов в каталоге /bin/src, то здесь вы, возможно, продублируете их.)

Каталог sys - это склад информации, имеющей отношение к системе. Здесь могут быть резервные копии критических системных файлов, доку- ментация по областям системы, куски выводимой информации команд who, ps, uucp, регистрационных файлов или что-либо иное.

Последний каталог - tmp, который является рабочей областью для размещения временных файлов. В основном все, что находится в tmp, вы можете в любое время удалить, и средство can, описанное в главе 3, по- могает вам в этом.

Отметим, что регистрационный каталог имеет минимальное количество обычных файлов. Это уменьшает путаницу, которая может происходить с плоскими файловыми системами. Каждый файл должен быть на своем месте, но может быть размещен не только здесь. Если возникает какой-либо род задач, когда файлы, связанные с этой задачей, могут быть перепутаны с другими файлами, создайте отдельный каталог.

 

АНАЛИЗ ПРИМЕРА ФАЙЛА НАСТРОЙКИ СИСТЕМЫ

Файл .profile, как следует из его названия (профилирование - фор- мирование контура, очертаний), функционирует для установки и инициали- зации параметров системы, которые вам нужны. Сюда входит установка терминалов, определение переменных, запуск программ и конфигурирование исполняющей системы. Пример файла настройки можно найти в описании ко- манды profile(4). Рассмотрим .profile, используемый автором. Мы вклю- чили его на столь ранней стадии, чтобы предложить вам коснуться поня- тий, которые более подробно раскрываются далее в этой книге. Не за- ботьтесь о понимании работы каждой части примера. Пока что просто сде- лайте мысленную отметку возможностей. Ваш .profile может быть проще и почти наверняка будет другим.
1 # @(#).profile v1.0 Defines "home" on the system

Author: Russ Sage
3 CHOICE="ushort" 4 case $CHOICE in 5 ufull) PS1="`uuname -l`> ";; 6 ushort) PS1="`uuname -l|cut -c1-3`> ";; 7 graphic) PS1="^[[12mj^[[10m ";; 8 esac
10 LOGNAME=`logname` 11 HOME=`grep "^$LOGNAME:" /etc/passwd | cut -d: -f6` 12 MAIL=/usr/spool/mail/$LOGNAME 13 export LOGNAME HOME MAIL
15 HA=$HOME/adm 16 HBB=$HOME/bbs 17 HB=$HOME/bin 18 HD=$HOME/doc 19 HE=$HOME/etc 20 HM=$HOME/mail 21 HP=$HOME/proj 22 HSR=$HOME/src 23 HSY=$HOME/sys 24 HT=$HOME/tmp 25 HDIRS="HA HBB HB HD HE HM HP HSR HSY HT" 26 export $HDIRS HDIRS
28 P=/usr/spool/uucppublic/$LOGNAME; export P
30 CDPATH=.:..:$HOME:$HDIRS 31 PATH=.:/bin/:/usr/bin:/etc:$HOME/bin 32 SHELL=`grep "^$LOGNAME:" /etc/passwd|cut -d: -f7` 33 export CDPATH PATH SHELL
35 case "`basename \`tty\``" in 36 console) eval `tset -m ansi:ansi -m :\?ansi -r -s -Q`;; 37 tty00) eval `tset -m ansi:ansi -m :\?ansi -r -s -Q`;; 38 tty01) eval `tset -m ansi:ansi -m :\?ansi -r -s -Q`;; 38 esac
41 echo TERM = $TERM 42 TERMCAP=/etc/termcap 43 export TERM TERMCAP
45 HZ=20 46 TZ=PST8PDT 47 export HZ TZ
49 umask 0022
51 echo "\nTime of this login : `date`" 52 lastlog -l
54 RED="^[[31m" 55 GREEN="^[[32m" 56 YELLOW="^[[33m" 57 BLUE="^[[34m" 58 CYAN="^[[35m"
60 case "`date|cut -d' ' -f1`" in 61 Mon) echo "$RED";; 62 Tue) echo "$GREEN";; 63 Wed) echo "$YELLOW";; 64 Thu) echo "$BLUE";; 65 Fri) echo "$CYAN";; 66 esac

 

КАК РАБОТАЕТ .profile

Когда вы входите в систему, регистрационная программа выполняет интерпретатор shell с параметром '-' (например, -sh). Это сигнализиру- ет интерпретатору shell, что сейчас момент регистрации и что должен быть выполнен файл настройки. Сначала выполняется /etc/profile - общий файл настройки, установленный системным администратором для всех поль- зователей, а затем файл .profile пользователя. Каждый интерпретатор shell после этого больше не запускает эти установочные программы. В файле /etc/ profile интересно проверить машинно-зависимую информацию и посмотреть, какие умолчания были для вас установлены. Если вы хотите выполнить ваш .profile в любой момент после входа в систему, наберите ". .profile" (можно писать и ".profile", проверено, что обе формы ра- ботают - Прим. переводчика).

Для поддержки вашего регистрационного каталога, используйте пере- менные командного процессора (переменные shell), чтобы облегчить пе- редвижение и сократить количество нажатий клавиш при работе с маршрут- ными именами. Переменные shell всегда являются строками и, будучи один раз определенными, не исчезают, пока вы не выйдете из системы.

При использовании переменные shell являются локальными для рабо- тающего в данный момент интерпретатора shell. Их можно передать ин- терпретаторам shell более глубокого уровня путем их "экспортирования". Следовательно, если вы создаете новый командный процессор, все ваши экспортированные переменные будут по-прежнему определены для этого ин- терпретатора shell. Исчерпывающий список переменных shell, установлен- ных по умолчанию и используемых системой, см. в приложении 1.

Отметим, что в нашем примере файла настройки для каждого подката- лога первого уровня, который есть в нашем регистрационном каталоге, мы также имеем переменные shell, связанные с именем этого подкаталога. Таким образом, мы можем легко обращаться к различным областям нашего регистрационного каталога.
 

ПОСТРОЧНЫЙ РАЗБОР ПРИМЕРА ФАЙЛА НАСТРОЙКИ

Строки 3-8 делают хитрую установку главной подсказки - переменной PS1. В строке 3 инициализируется переменная, которая выбирает подсказ- ку. Значение ushort жестко закодировано в файле, но вы всегда можете запросить его или установить его в зависимости от файла.

Первой альтернативой является ufull, используемая для установки подсказки в виде полного имени узла uucp в локальной системе. Вы выби- раете такую подсказку, если используете несколько машин и для доступа к одной машине применяете другую. Отличительная подсказка напоминает вам, какой машиной вы пользуетесь. Отметим, что подсказка имеет одина- ковое число символов и для короткой строки, и для длинной. Если же вам нужно имя узла uucp, но не нужна длинная строка для подсказки, вы мо- жете выбрать ushort, что дает первые три символа имени узла. Как пока- зано в строке 6, имя получается применением команды uuname для получе- ния локального имени узла (опция -l). Затем это имя пропускается через команду cut, которая вырезает символы с первого по третий. Результат присваивается переменной подсказки.

Последняя альтернатива для тех из вас, кто имеет графические сим- волы. Назначение в строке 7 есть греческий символ. Его можно получить применением специальных управляющих последовательностей, которые ука- зывают терминалам отображение специальных символов. Символы ^[ явля- ются визуальным представлением управляющего символа в программе vi. Вы можете получить этот символ в программе vi, набрав control-v, а затем ESC. Последовательность ESC[12m означает, что следующий символ будет напечатан как графический. Символ j является вашей подсказкой и прев- ращается в графический символ, который выдается на ваш экран. Исполь- зуя различные символы алфавита, вы можете иметь в виде вашей подсказки почти любой графический символ. ESC[10m возвращает ваш терминал в ре- жим обычного текста, так что все символы, печатаемые после того, как вы набрали ESC[10m, являются нормальными.

Если вы хотите сохранить вашу пользовательскую подсказку для всех подчиненных интерпретаторов shell, экспортируйте ее. Иначе вы получите $ для всех интерпретаторов shell нижнего уровня.

Строка 10 присваивает переменной LOGNAME выход команды logname(1). Команда logname - это обычная команда системы UNIX, кото- рая печатает ваше регистрационное имя из файла /etc/passwd. Обычно эта переменная установлена для вас системой, но данный пример показывает, как вы можете установить ее вручную.

Строка 11 инициализирует переменную HOME. Она тоже устанавлива- ется для вас системой, но мы хотим показать, как делать эти вещи осоз- нанно, а не по умолчанию. Сначала мы ищем в файле паролей запись, соответствующую переменной LOGNAME. Мы ищем от начала строки имя, ко- торое завершается символом :, чтобы убедиться, что найдено только кор- ректное соответствие имени пользователя. Затем вся запись посылается команде cut, которая вырезает шестое поле - регистрационный каталог. Преимущество такой стратегии в том, что регистрационный каталог авто- матически меняется, если меняется запись в файле /etc/passwd.

Строка 12 инициализирует переменную MAIL. Определяя MAIL, вы ука- зываете, что вы должны быть уведомлены о посылке вам новой почты, если вы находитесь в режиме on line. Строка 13 экспортирует эти переменные, так что они доступны нам в порожденных интерпретаторах shell.

Строки 15-24 определяют все каталоги первого уровня в нашем ре- гистрационном каталоге. Большинство имен состоят из двух букв, некото- рые из трех. Теперь мы можем применять команды такого вида:
$ cd $HD $ ls -R $HSR $ cu -ltty00 dir | tee $HBB/board/session$$

Строка 25 присваивает переменной HDIRS все имена каталоговых пе- ременных, что облегчает подключение всех каталогов без повторного вво- да их имен. Мы можем просмотреть все каталоги и напечатать размер используемого дискового пространства:
$ for DIR in $HDIRS > do > echo "disk usage for $DIR: `du -s $DIR`" > done

Строка 26 экспортирует переменные так, чтобы мы могли всегда их использовать. Отметим, что мы экспортировали $HDIRS и HDIRS. Перед тем, как выполнить экспортирование, $HDIRS было распространено на все различные имена переменных. Следовательно, фактически мы экспортирова- ли все имена плюс саму переменную HDIRS.

Строка 28 инициализирует P так, чтобы это был ваш каталог в PUBDIR, то есть /usr/spool/uucppublic. Теперь у нас есть простой способ ссылаться на наши файлы при работе с командой uucp.

Строка 30 устанавливает CDPATH. Это путь, который проверяется, когда вы выполняете команду cd. Сначала проверяется текущий каталог (.) на предмет того, есть ли в нем имя каталога, в который вы хотите попасть. Затем проверяется .. (родительский каталог). После этого просматривается ваш регистрационный каталог. Последним назначением CDPATH является $HDIRS, что подключает имена всех подкаталогов. Цель этих имен - позволить команде cd искать в соответствующем каталоге введенное вами имя.

Например, если бы вы были в /etc и набрали "cd doc", вы бы попали в $HOME/doc, поскольку CDPATH содержало в себе $HOME. Аналогично, если бы вы имели подкаталог $HOME/doc/status и ввели "cd status" откуда-ли- бо из другого места в системе, вы бы пришли в $HOME/doc/status, так как корень $HOME/doc был в CDPATH.

Порядок поиска в каталогах такой же, как объявлено в переменной CDPATH. Если вы вводите имя каталога, которое встречается более чем в одном месте, вы попадаете в первый каталог, обнаруженный при последо- вательном поиске. Например, если бы вы сказали "cd sys", то попали бы в $HOME/sys прежде, чем в $HOME/ src/sys.

В табл. 1-1 приведен пример эквивалентных команд cd, представлен- ных в трех различных формах, которые понимает UNIX. То, какую форму вы используете, зависит от того, что считается наиболее удобным и требует как можно меньше нажатий клавиш.

Таблица 1-1

Три способа использования команды cd
 

Абсолютный CDPATH Относительно

переменной

cd /usr/russ cd cd $HOME cd /usr/russ/src/asm cd asm cd $HSR/asm cd /usr/russ/doc/paper/conf cd paper/conf cd $HD/paper/conf cd /usr/russ/tmp cd tmp cd $HT

Строка 31 инициализирует переменную PATH. PATH работает таким же образом, как CDPATH. Она ищет программы, которые нужно запустить, в каждом каталоге, указанном в переменной PATH. Если имя не найдено ни в одном из этих каталогов, печатается сообщение ": not found" ("<имя-файла>: не найдено").

Поскольку мы можем установить наш PATH как угодно, можно указать все таинственные места в системе, в которых расположены исполняемые модули. Когда мы хотим их выполнить, мы не обязаны их искать и наби- рать полное маршрутное имя. Чтобы дополнить PATH, введите, например, следующее:
PATH=$PATH:/usr/lib/uucp

Команда paths, представленная далее в этой книге, использует $PATH, чтобы сообщить нам, в каком каталоге размещен исполняемый мо- дуль.

Строка 32 инициализирует переменную SHELL. Эту переменную могут использовать не более чем одна или две утилиты. Обычно она устанавли- вается системой, когда вы регистрируетесь. Строка 33 экспортирует пе- ременные CDPATH, PATH и SHELL.

Название книги: Приемы профессиональной работы в UNIX
Автор: Сейдж Рассел
Просмотрено 36046 раз

1234567891011121314151617181920212223242526272829303132


 
Page generation 0.003 seconds