WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!

Pages:     | 1 || 3 | 4 |   ...   | 7 |

«Ubuntu® Linux® TOOLBOX 1000+ Commands for Ubuntu and Deblan Power Users Christopher Negus Franois Caen 81C8NT8NNIAL 1807 =WILEY = 2007 -. ...»

-- [ Страница 2 ] --

$ sudo dpkg -е rs c_2. 6. 9· 3ubuntu1. 1_i 386. deb /tmp/my_SRANDOМ $ l s - l art /tmp/my_25445/ tota l -rwxr - xr-x 1 root root 491 Aug 17 20 : 47 prerm -rwxr- xr- x 1 root root 110 Aug 17 20 : 47 postrm - rwxr- xr- x 1 root root 523 Aug 17 20 : 47 posti nst -rw- r- - r- - 1 root root 37 Aug 17 20 : 48 conffi l es - rw- r- - r - - 1 root root 926 Aug 17 20 : 48 control drwxr -xr-x 2 root root 4096 Aug 17 20 : 48.

Чтобы извлечь все неуправтпощие файлы, содержащиеся в О ЕВ-архиве, в пап­ ку, используйте параметр - х, как показано в следующем примере (здесь нужно знать, что права доступа к папке также будут возвращены в значение 0755):

$ sudo dpkg - х mi ni com_2. 2- 4bui l d1_i 386. deb /tmp/dx_SRANDOН S l s - l art /tmp/dx_4921/ total drwxr -xr- x 4 root root 4096 Ma r 7 09 : 10 usr drwxr - xr- x 3 root root 4096 Ma r 7 09 : 10 etc drwxr - xr- x 4 root root 4096 Ma r 7 09 : drwxrwxrwt 11 root root 4096 Sep 1 08 : 19..

Чтобы просмотреть устано енные файлы программк ого пакета, испо зуе­ мого системой, воспользуйтесь параметром - L:

$ dpkg ·L mi ni com 1.

/usr /usr/share /usr/sha re/man /usr/share/man/man /usr/sha re/man/man1/mi ni com. 1. gz /usr/share/man/man1/xmi ni com. 1. gz /usr/sha re/man/man1/asci i - xfr. 1. gz 56 Глава 2. У ановка Ubuntu и nрограммнаго обеспечения Если пакет не был полностью уд ен, вы увидите оставшиеся после него кон­ фигурационные файлы:

$ dpkg · L m1 n1 com /etc /etc/mi ni com /etc/mi ni com/mi ni com. users Эти примеры описывают лишь стандартные случаи использования dpkg, поэтому приведенный перечень нельзя назвать исчерпывающим. Среди других доступных функций можно назвать следующие: изменение конфигурации (dpkg - reconfi gure), выбор пакетов, которые следует игнорировать dpkg ( dpkg ho 1 d), и определение па­ раметров отбора. Для получения более полной информации ознакомьтесь с мате­ риалами, содержащимвся на МАN-странице, посвященной dpkg.

Упра пение н в е е е ем п мм ым об п ч ни рогра с aptitude щ ю пом с о ь Приложепия dpkg и АРТ применяются уже давно и хорошо себя зарекомендовали, но обе эти программы требуют от пользователя обладания достаточными знания­ ми, чтобы разбираться в Приложениях и правильно с ними работать. Приложеине aptitude упрощает работу, автоматизируя некоторые важные операции с программ­ ными пакетами (например, запуск команды apt- get update перед обновлением или установкой), и в то же время обладает достаточной гибкостью, чтобы быть полез­ ным. Именно поэтому мы рекомендуем по возможности всегда использовать в ко­ мандной строке именно данное приложение.

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

Стоит отметить, что большинство его параметров дублируют параметры команды apt -get.

я получения л подробной информации об испол овании графического интерфейса aptitude или других деталей, посетите раницу https://help.ubuntu.com/communlty/AptitudeSurvivaiGuide (Aptitude Survival Guide) или http://people.deЫan.org/,.,dburrows/aptitude-doC/en/ (Aptitude user's manual) или выполните в командной роке команду man aptitude.

Та ица 2.6. Некоторые общие учаи испол ования aptitude Команда ып няем де вие В sudo aptitude В ючает графический интерф йс. я получения доступа к меню е нажмите сочетание авиш Ctrl+Т, а я вых а - авишу q aptitude help Отображает тек ового помощника по работе в aptitude aptitude search < ючев Выводит пакеты, содержащие ючевое ово СЛОВО > Управление программным обеспечением с помощью aptitude Выn няем де вие Коман sudo aptitude update Обновляет доступные индексы программных пакетов на нове информации, содержащейся в и очниках Аf1Т й sudo aptitude upgrade Обновляет все используемые пакеты до посп них верси aptitude show <название Отображает информацию об указанном пакете (неважно, п граммнога пакета> у ановлен он или нет} sudo aptitude dowпload загружает заданный пакет, но не у анавливает его <название п граммнога пакета > sudo aptitude сlеап Удаля все загруженные DЕ8-архивы из папки /var/cache/arЦarchives sudo aptitude autocleaп Удаляет все у а вшие DЕВ-архивы из папки /var/cache/apt/ archives. Эта команда позволяет не допу ить перезаполнения дискового простран ва кэшираванными файлами sudo aptitude install У анавливает указанный п граммный пакет ( я вы ра <название п граммнога конк тных ве ий и испол ования специальных символов могут па к а > испол оваться различные параметры} sudo aptitude remove Удаляет из си емы указанный пакет <название п граммнога пакета > sudo aptitude dist-upgrade Обновляет все пакеты до самых по них ве ий, по необх им и удаляя или у анавливая пак ы. Парам р upgrade комендуется вводить че з dist-upgrade акетов овпение программных п Обн По умолчанию aptitude всегда перед установкой или обновлением пакетов выпол­ няет команду apt -get update, однако вы, если необходимо, все равно можете вы­ поJJНить только кома у update:

$ sudo apti tude update Get : l http : / /securi ty. ubuntu. com fei sty-securi ty Rel ease. gpg [ 1918] Ign http : / /securi ty. ubuntu. com fei sty - securi ty/mai n Trans l ati on - en_US Get : 2 http: //us. archi ve. ubuntu. com fei sty Rel ease. gpg [ 1918] Если вы хотите обновить все пакеты системы, то можете ввести параметр upgrade. В этом случае будут установлены все новые пакеты из репозиториев (в дан­ ном примере рассматривается ситуация, когда на жестком диске отсутствовали новые версии программных пакетов ).

$ sudo apti tude upgrade Readi ng package l i sts... Done Bui l di ng dependency tree Readi ng state i nformati on... Done Readi ng extended state i nformati on lniti al i zi ng package states... Done Bui l di ng tag database... Done No packages wi l l Ье i nstal l ed. upgraded. or removed.

О packages upgraded. О newl y i nstal l ed. О to remove and О not upgraded.

Need to get 08 of archi ves. After unpack i ng 08 wi l l Ье used.

58 Глава 2. У ановка Ubuntu и n граммнога nечения С rр бор информации о про аммн х ах ы пакет Используя ючевые слова или поJIНые названия пакетов, вы можете произво­ дить поиск в aptitude точно так же, как и в других приложениях, предназначенных для работы с программными пакетами. Следующий. пример демонстрирует поиск по ключевому слову minic•, с помощью которого можно отобразить информацию о пакете minicom и подключаемом расширени.и оконного менеджера xfce.

$ apti tude search mi nic i mi ni com - fri endl y menu dri ven seri al communi cati on program р xfce4 -mi ni cmd - pl ugi n - Mi ni - command l i ne pl ugi n for the Xfce4 panel $ apti tude show mi ni com Package : mi ni com State : not i nsta l l ed Versi on : 2. 2-4bui l dl Pri ori ty: opti onal Secti on : comm У ановка программн тов ых паке Ранее вы уже загруж и программный пакет, используя команду apt-get. Сейчас для этих же целей будет использована команда apti tude, которая позволяет загру­ зить программвый пакет, не устана ивая его:

$ sudo apti tude downl oad mi ni com Get : l http : / /us. archi ve. ubuntu. com fei sty/mai n mi ni com 2. 2-4bui l dl [168k8] Fetched 18 i n Os ( 28/s ) Если же вы хотите установ ь пакет minicom, то можете выполнить следующую команду:

$ sudo apti tude instal l mi ni com Need to get 08/265k8 of archi ves. After unpack i ng 140 1k8 wi l l Ье used.

Do you want to conti nue? [Y/n/? J n Если у вас есть несколько пакетов, которые нужно установить, можете вос­ пользоваться специ ьным символом. В данном случае будут установлены все программные пакеты, содержащие слово cminic• (как и в случае, описанном выше, когда производился поиск с помощью команды apti tude). Эта программа также определяет для каждого пакета все взаимозависимости, используя то, что на языке aptitude называется matcher ( собнаружителем совпадений• ). Чтобы установить все пакеты, содержащие слово cminic•, используйте matcher -n, поставив его в нач е ключевого слова:

$ sudo apti tude instal l "-nmi ni c" The fol l owi ng NEW packages wi l l Ье automati cal ly i nstal l ed :

l i bxfce4mcs -cl i ent3 l i bxfce4mcs -manager3 l i bxfce4uti l 4 l i bxfcegui4-4 l rzsz У пра ение программным печением с помощью aptitude xfce4- pane The fo1 1 owi ng NEW packages wi 1 1 Ье i nsta1 1 ed:

1 i bxfce4mcs -c1 i ent3 1 i bxfce4mcs-manager3 1 i bxfce4uti 1 4 1 i bxfcegui 4-4 1 rzsz mi ni com xfce4-mi ni cmd-p1 ugi n xfce4- pane О packages upgraded. 8 new1y i nsta1 1 ed. О to remove and О not upgraded.

Need to get 702kB/967kB of archi ves. After unpacki ng 4645kB wi 1 1 Ье used.

Do you want to conti nue? (Y/n/? J д У аление программных пакетов УдаJ1ИТЬ проrраммн ые пакеты с помощью aptitude даже проще, чем их установить.

Просто попробуйте это сделать следующим образом:

$ sudo apti tude remove mi ni com The fo1 1 owi ng packages are unused and wi 1 1 Ье REMOVED :

1 rzsz The fo1 1 owi ng packages wi 1 1 Ье REMOVED :

mi ni com О packages upgraded. О new1y 1 nsta1 1 ed. 2 to remove and О not upgraded.

Need to get ОВ of archi ves. After unpacki ng 140 1kB wi 1 1 Ье freed.

Do you want to conti nue? (Y/n/?] д чи ка иска О сr Каждый раз, когда вы будете устанавливать программы с помощью команды apti tude, будет загружаться DЕВ-архив и помещаться в папку /va r/cache/apt/ archi ves. Через какое-то время, возможно, вам понадобится уд эm кэширо­ ванные файлы, чтобы освободить место на диске. Для этого необходимо исполь­ зовать параметр c1 ean или autoc1 ean. Если вы посмотрите, то увидите, что в этой папке уже есть кэшираванные файлы:

$ 1 s /var/cache/apt/archi ves/ 1 ock 1 rzsz_O. l2. 21 -4 1_i 386. deb mi ni com_2. 2-4bui 1 dl_i 386. deb pa rti a Removi ng these wi th apti tude on1y requi res usi ng the c1 ean or autoc1 ean opti on :

$ sudo apti tude cl ean Readi ng package 1 i sts. Done Bui 1 di ng dependency tree Readi ng state i nformati on. Done Readi ng extended state i nformati on Ini ti a1 i zi ng package states. Done Bui 1 di ng tag database. Done Повторное выполнение команды 1 s покажет, что пакеты на самом деле уд ены, но если у вас низкая скорость интернет-соединения и вам необходима неделя, чтобы загрузить последние версии программных пакетов, то следует подумать дважды, прежде чем выполнять действия, описанные выше, либо воспользоваться параметром autoc1 ean, который уд яет только устаревшие пакеты.

60 Глава 2. Установ Ubuntu и программнога печения ка aptitude Полезные сочетания параметров Параметр - v расширяеt: возможности действий, выполняемых приложеннем aptitude. Используя его много раз, вы можете получить больше, чем просто ин­ формацию, выводимую на экран после выполнения той или иной операции. Если вы выполните команду apti tude с параметром - v, то будет отображен ключ md5sum программнога пакета - своего рода универс ьный цифровой отпечаток пальцев, который можно использовать, если пакет был подделан или поврежден. Исполь­ зование параметра -vv позволяет получить еще более подробную информа­ цию:

$ apti tude show - vv mi ni com Package : mi ni com State : i nstal l ed Fi l ename : pool /mai n/m/mi ni com/mi ni com 2. 2 -4bui l d1 -i 386. deb MD5sum : c408085cd37dfced2d3060b94ececd Чтобы еще до выполнения операции имитировать ее результат, можно вос­ пользоваться параметром - s, который работает независимо от типа исполняемой команды.

$ sudo apti tude - s i nstal l mi ni com Readi ng package l i sts... Done Do you want to conti nue? [Y/n/?J у Woul d downl oad/i nstal l / remove packages.

Сочетание параметров - v и - s позволяет получить еще больше данных:

$ sudo apti tude - vs instal l mi ni com Readi ng package l i sts... Done Do you want to conti nue? [Y/n/? J у I nst l rzsz ( 0. 12. 21 -4. 1 Ubuntu : 7. 04/ fei sty ) Inst mi ni com ( 2. 2 -4bui l d1 Ubuntu : 7. 04/ fei sty ) Conf l rzsz ( 0. 12. 21 -4. 1 Ubuntu : 7. 04/ fei sty ) Conf mi ni com ( 2. 2 -4bui l d1 Ubuntu : 7. 04/fei sty ) Если вам надоест каждый раз подтверждать выбор действия, отвечая на во­ прос «Хотите продолжить?•, то можете ответить на него заранее, добавив параметр -у в исполняемую команду:

$ sudo apti tude - vs -у i nstal l "-ni nc " Readi ng package l i sts... Done Bui l di ng dependency tree Readi ng state i nformati on... Done Readi ng extended state i nformati on I ni ti a l i zi ng package states... Done Используя параметр -у, будьте предельно осторожны, поскольку команда apti tude не предусматривает возможности отката.

Проверка устано енных пак ов с помощью программы debsums Наконец, параметр - h команды apti tude выводит отношение параметров, кото­ рое может быть использовано в любой момент, если требуется обновить информа­ цию. Стоит отметить, что нам уд ось найти недостаток в версии aptitude, исuоль­ зуемой в Ubuntu:

$ apti tude - h apti tude 0. 4. Thi s apti tude does not have Super Cow Powers.

Нет Super Cow Powers? Однако мы любопытны и спрашиваем aptitude с по­ мощью параметра moo:

$ aptitude moo There are no Easter Eggs i n thi s program.

· Easter eggs (дословно с пасх ьные яйца•) представляют собой скрытые эле­ менты программы. Хм. Может, попробуем воспользоваться параметром - v, чтобы получить более подробную информацию?

S apti tude · v moo There real ly are no Easter Eggs i n thi s program.

Возможно, нужны еще более узкие параметры. Мы уже давим на apt i tude, чтобы получить более подробную информацию:

$ aptitude · Vv moo Di dn ' t I al ready tel l you that there are no Easter Eggs i n thi s program?

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

пе в к в к а ано нных па о ро ер у ет в ь м щ ю п о программы debsums о Иногда возникают сомнения в качестве установленного на систему бинарного или открытого программнаго пакета. Они могут работать некорректно или вовсе не запускаться. Проблемы с поврежденными программными пакетами могут быть вызваны нестабильным интернет-соединением и перепадами в электропитании.

Помимо этого, встречаются пользователи, которые могут попытаться заменить ключевые команды своими собственными, чтобы в д ьнейшем наносить вред сис­ теме. Поэтому полезно сравнивать файлы файловой системы с информацией про­ граммнога пакета.

Программа debsums является утилитой Ubuntu и других операционных систем на базе Deblan, которая сверяет информацию чей MDS каждого устано ен­ ною пакета с файлами md5sum, найденными в папке /var/ 1 i Ыdpkg/i nf.

С помощью следующей команды вы можете установить эту прогрму:

$ sudo apti tude instal l debsums В табл. 2.7 приведены наиболее полезные параметры команды debsums. Более подробную информацию о debsums можно получить в МАN-руководстве.

62 Глава 2. У ановка Ubuntu и программнога печения Та ица 2.7. Некоторые общие параметры илиты debsums Команда deЬsum Выn няем де вие debsums -а Проверяет все файлы (в ючая конфиrурационные, которые обычно располагаются ева) debsums -е Проверяет только конфиrурационные файлы пакетов deЬsums -с Выводит список измененных на stdout файлов deЬsums -1 Отображает файлы, в которых отсутствует информация о mdSsum deЬsums -s Выводит только ошибки;

при их отсут вии не производит никаких дей вий debsums <название Отобража пакеты, которые необходимо проверить с помощью п граммнога пакета > deЬsums я выполнения льшин ва операций необязат ьно обладать правами суперпол ователя (ис­ ьэ пол овать команду sudo), однако к некоторым файлам простой пол оват ь не им т доступа, поэтому, если появится сообщение «deЬsums: can't open at file /etc/at.deny (Permission denied)», вам придется испол овать sudo.

Если выполнить команду debsums без дополнительных параметров, будет про­ верен каждый известный ей файл системы. При необходимости результат может быть переадресован в файл. Если md5sum проверяет выход для файла, название файла, выводимое утилитой debsums, сопровождается надписью ОК, распош>жен­ ной справа от сообщения. Кроме того, могут выводиться и другие сообщения:

md5sums mi ss i ng ( •md5sums потерян•) для отдельного файла или слово REPLACED ( •Перемещен• ), если утилита не нашла требуемого соответствия md5sum. Позже, если вы решите использовать это приложение в качестве основной программы получения нужной информации, чтобы все было установлено именно так, как вы хотите, вы сможете восстановить md5sum для отсутствующих или неработающих приложений. Таким образом, вы будете уверены, что у вас установлены наиболее свежие приложения.

Эта команда сверяет все фа ы системы с имеющимвся в наличии фа ами md5sum. В приведеином ниже примере видно, что некоторые файлы отсутствуют или перемещены. Перед тем как восстановить файлы md5sum, убедитесь, что в сис­ теме отсутствуют проблемы с этими файлами:

$ debsums /usr/bi n/acpi /usr/share/man/manl/acpi. l. gz /usr/share/doc/acpi /README /usr/share/doc/acpi /AUTHORS ОК /usr/sha re/app- i nstal l / i cons/pyЬl i ographi c. png о к debsums : no md5sums for bsduti l s debsums : no md5sums for bzi p debsums : no md5sums for cdrecord Проверка у ано енных паке в с помощью программы debsums /usr/share/ l ocal e- l angpack/en_AU/LC_MESSAGES/adduser. mo REPLACED /usr/share/l ocal e- l angpack/en_AU/LC_MESSAGES/a l sa - uti l s. mo ОК Если вы хотите сохранить эту информацию в файл, а также сохранить сообще­ ния stdout и stderr, переадресуйте stdout- и stde -пoтoки в файл. Чтобы впослед­ ствии можно было продолжить работу в командной оболочке, в конце команды установлен знак &:

$ debsums &> /tmp/foo & Чтобы проверить конфигурационные файлы каждого программноrо пакета на н ичие мзменений, выполните команду debsums с параметром -а:

$ debsums - а /usr/bi n/acpi ОК /usr/share/man/manl/acpi. l. gz ОК Чтобы проверить только конфигурационные файлы, опуская ост ьные, воспользуйтесь параметром - е. Данный способ позволяет убедиться, что вы не изменили случайно какой-либо конфигурационный файл. Ниже видно, что неко­ торые Х-конфигурационные файлы были изменены:

$ debsums - е /etc/Xll/Xresources/xll- common о к /etc/ Xll/Xsessi on FAI LED /etc/Xll/rgb. txt о к /etc/ i ni t. d/xll - common о к /etc/Xll/Xsessi on. d/50xll - common_determi ne- sta rtup /etc/Xll/Xsessi on. d/ЗOxll - common_xresources. о к /etc/ Xll/Xsessi on. d/20xll - common_process - args о к /etc/Xll/Xsessi on. opti ons FAI LED По умолчанию debsums отображает достаточно большое количество информа­ ции, однако вы можете отобр ь и только измененные файлы. Результат выпол­ нения команды debsums с параметром - с показан ниже:

$ debsums - с debsums : no md5sums for at debsums : no md5sums for base- fi l es debsums : no md5sums for Ьс Предыдущая команда отображает сообщения о файлах, содержащих информа­ цию о md5sum. Выполнив команду debsums с параметром - 1, вы сможете искать фай­ лы, которые не содержат информации о md5sum:

$ debsums - at base- fi l es Ьс 64 Глава 2. Установка Ubuntu и nрограммнога nечения Ьi nuti 1 s Ьi nuti 1 s- stati с Если вы захотите, чтобы debsums вывел инфор только об оmибках, вос­ пользуйтесь параметром -s:

$ debsums - s debsums : no md5sums for at debsums : no md5sums for base- fi 1 es debsums : no md5sums for Ьс debsums : no md5sums for bi nuti 1 s Чтобы проверить конкретный пакет, в качестве аргумента debsums укажите имя соответствующего пакета:

$ debsums coreuti l s /Ьi n/cat ОК /Ьi n/chgrp ОК /Ьi n/chmod ОК Следующ команда проверяет только те файлы, которые перечислены в файле md5sum пакета, содержащегося в папке /va r 11 i Ы dpkg/ i nfo, поэтому, если в программ­ ном пакете отсутствует файл md5sum, будет выведено сообщение об ошибке:

$ debsums rs c debsums : no md5sums for rsync Для генерации недостающих данных md5sum для rsync воспользуйтесь комбина­ цией из dpkg и утилиты md5sum и простым сценарием для командного процессора.

Сначала для получения списка всех известных dрkg-файлов в пакете rsync выпол­ ните команду dpkg - L. В полученном списке будут, помимо имен файлов, содер­ жаться другие строки данных. Далее необходимо будет передать полученные дан­ ные grep и отфильтровать все записи, которые не начинаются со знака 1. Затем определите, чем является строка выводимых dрkg-данных - папкой или файлом (названия папок также начинаются с символа /). Если это файл, значит md5sum будет выполнена на строке вывода, котор на этом этапе будет являться именем файла. Наконец, сохраните все данные в текстовый файл с тем же соглашением об именах, что и файлы md5sum в папке /var/l i Ь/dpkg/i nfo.

' ' $ for fi l e in dpkg - L rs c 1 grep А/ ;

do test - f "$fi l e" && md5sum "$f1 l e" ;

done > /tmp/rs c. md5sums Эта команда полезна тем, что позволяет получить базу данных md5sum, котор затем может быть записана на компакт-диск и использована для последующей проверки системы. Если файлы md5sum записаны на компакт-диск, они не могут быть случайно удалены или стать причиной возникновения проблем с файловыми системами жесткого диска. Если вы решите позже проверить ключи md5suffit. то Соэдание DЕВ-архивов воспользуйтесь командой md5sum вместе с параметром -с и добавьте к ней имя фай­ ла данных mdSsum:

$ md5sum - с /tmp/rs c. md5sums /usr/bi n/rsync : ОК /usr/ sha re/doc/ rsync/exampl es/ rsyncd o conf : ОК /usr/share/doc/ rsync/ README o gz: ОК /usr/share/ doc/ rsync/TODO o gz: ОК Чтобы воспользоваться файлом rsync о md5sum с приложеннем debsums, потребу­ ется внести одно изменение, которое может повлечь за собой проблемы с mdSsum, но все же является обязательным условием для работы с debsums, - убрать первый слэш в имени файла. Сделать это можно в текстовом редакторе либо командном процессоре:

$ cat /tmp/rs c. md5sums 3029161 14c2919lcd9c8cb51d67ee60a /usr/bi n/rsync Чтобы убрать первый слэш в начале /usr/Ьi n/ rsync, попробуйте воспользовать­ ся текстовым или потоковым редактором (Stream Editor):

#g $ sed - е ' s# 1# ' /tmp/rs c. md5sums > /tmp/rs c. debsums $ cat /tmp/rs c. debsums 302916114c2919lcd9c8cb5ld67ee60a usr/bi n/ rsync Теперь, удалив первый слэш в rsync о debsums, вы можете скопировать этот файл в папку /var/ 1 i Ь/dpkg/i nfo, после чего debsums сможет использовать его:

$ sudo mv /tmp/rsync. debsums /var/l i Ь/dpkg/i nfo/rs c. mdSsums $ debsums rs c /usr/bi n/ rsync ОК /usr/sha re/doc/ rsync/exampl es/ rsyncd o conf ОК /usr/share/doc/ rsync/README o gz ОК С D ЕВ-ар иво з е о дани в х Посредством реорганизации DЕВ-архива, используемого для формирования про­ граммнога пакета Deblan, вы можете изменять его, чтобы было удобнее пользо­ ваться программным обеспечением (например, включив в архив файл md5sum).

Для этого необходимо распаковать DЕВ-архив, который вы планируете изменить, в рабочую папку, после чего вы сможете изменять дерево файлов и управляющие файлы в соответствии со своими потребностями. Например, выполнив следующие команды, вы можете загрузить и распаковать пакет rsync и управляющие файлы в текущую папку (используем в данном случае папка $ NDOM у вас будет, есте­ ственно, другой):

$ apti tude downl oad rs c 66 Глава 2. У ановка Ubuntu и программнаго печения Теперь извлеките из загруженного архива его содержимое и управляющие фай­ лы (папку $RANDOM можно найти, введя /tmp/ rsync_ и нажав клавишу ТаЬ):

$ sudo dpkg -х rs c_2. 6. 9- 3ubuntu1. 1_i386. deb /tmp/rs c_SRANDOМ $ sudo dpkg - е rs c_2. 6. 9- 3ubuntu1. 1_i 386. deb /tmp/rs c_17197/ Затем перейдите в папку с программными пакетами, в которую вы распаковали DЕВ-архив, и проверьте его содержимое. Вы должны будете найти папку, имею­ щую структуру, подобную следующей:

$ cd /tmp/rs c - $ l s - l art - rwxr-xr-x 1 root root 491 2007 -08-17 20 : 47 prerm - rwxr-xr-x 1 root root 110 2007 - 08- 17 20 : 47 postrm - rwxr - xr-x 1 root root 523 2007 - 08- 17 20 : 47 posti nst drwxr -xr-x 4 root root 4096 2007 -08-17 20 : 48 usr drwxr - xr- x 4 root root 4096 2007 -08-17 20 : 48 etc - rw- r- - r- - 1 root root 37 2007 - 08- 17 20 : 48 conffi l es.

- rw- r - - r- - 1 root root 985 2007 -09-02 12 : 02 control drwxr - xr-x 4 root root 4096 2007 - 09-02 12 : 02.

drwxrwxrwt 10 root root 4096 2007 - 09-02 13 : 24..

Теперь необходимо настроить папку таким образом, чтобы согласовать форма­ ты, требующиеся dpkg для формирования DЕВ-архива. Это предполагает создание подпапки rsync_2. 6. 9-3cn1. 1/DEBIAN и перемещение в нее установочных файлов.

Сам управляющий файл представляет собой особым образом форматированный файл, содержащий поле заголовка и поле содержимого (header field, content field).

Он ан изируется приложениями, предназначенными для работы с пакетами, для последующего вывода информации о пакете:

$ sudo mkdi r - р rs c 2. 6. 9- 3cn1. 1/DEBIAN $ sudo mv control conffi l es prerm postrm postinst rs c 2. 6. 9- 3cn1. 1/DEBIAN Вам также должны переместять папки etc/ и usr/ в папку rsync_2. 6. 9-3cn1. 1:

$ sudo mv usr etc rs c_2. 6. 9- 3cn1. Скорее всего, вы правильно завершили процесс добавления в архив и, если так, вся информация находится в подпапке rsync_2. 6. 9-3cn1. 1 текущей папки.

Теперь переместяте ранее созданный файл md5sum в подпапку DEBIAN и переиме­ нуйте ее (папку) в md5sums. Это укажет программе debsums путь к файлам md5sums, которые необходимо проверить:

$ sudo mv /var/l i Ь/dpkg/info/rs c. md5sums rs c_2. 6. 9- 3cnl. l/DEBIAN/md5sums Теперь, чтобы изменить некоторую информацию, необходимо отредактировать управляющий файл. Естественно, вы не захотите устанавливать измененную вер­ сию rsync, содержащую оригинальную информацию о программнам пакете.

Откройте управляющий файл в редакторе vi или другом и измените строку Vers i on так, как показано ниже. Если вы обратите внимание, то заметите, что после слова Vers i on стоит двоеточие - это головное поле. Информационное поле следует сразу за ним. Убедитесь, что после двоеточия стоит пробел, и не добавляйте больше до­ полнительных пробелов (и не уд яйте их) в файле. Это является очень важным в процессе форматирования.

Соэдание DЕВ-архивов $ sudo vi rs c_2. 6. 9- Зcnl. l/DEBIAN/contro.

Versi on: 2. 6. 9-Зсn1. Немного ниже вы можете добавить поле Descri pti on. Оно будет отображаться в описании, когда потребуется узнать какие-либо дет и программного пакета.

Обратите внимание, что перед словами fast remote стоит пробел. Пробел является частью особого форматирования, на языке dpkg - текстом описания из много­ строчного заголовка. Если добавленное вами описание переносится на следующую строку, убедитесь, что в первом столбце стоит пробел:

Descri pt i on : Modi fi ed Ьу CN 2007 - 09- 02 to i ncl ude md5sums.

fast remote fi l e сору program ( l i ke rcp ) Теперь, используя команду dpkg - Ь и имя созданной вами для управляющего файла подпапки, создайте новый пакет. Программа предупредит вас, что Ori gi na 1 Mai ntai ner является полем, определяющим пользователя. Можете не обращать на это сообщение внимания.

$ sudo dpkg - Ь rs c_2. 6. 9- Зcnl. l wa rni ng. ' rsync 2. 6. 9-Зcn1. 1/DEBIAN/control ' conta i ns user-defi ned fi el d ' Origi nal -Mai ntai ner ' dpkg -deb : bui l di ng package ' rsync ' i n ' rsync_2. 6. 9-Зcn1. 1. deb'.

dpkg -deb : i gnori ng 1 wa rni ngs about the control fi l e( s) Теперь у вас есть новый О ЕВ-архив, и вы можете через dpkg отобразить инфор­ мацию о нем. Для этого просто выполните команду dpkg с параметром - I, и увиди­ те информацию о пакете:

$ dpkg - 1 rs c 2. 6. 9- Зcnl. l. deb new debi an package. versi on 2. 0.

si ze 1004 bytes : control archi ve= 712 bytes.

970 bytes. 21 l i nes control Package : rsync Versi on: 2. 6. 9-Зсn1. На данном этапе вы уже можете установить новый пакет rsync. Это упражнение демонстрирует в основном создание собственного программного пакета и не тре­ бует внесения изменений в систему, если отсутствует на то необходимость. Сле­ дующая команда показывает, что данный пакет будет установлен как обычный пакет Deblan и будет обладать всеми его свойствами. Однако ведь вы хотите задей­ ствовать и debsums. Обратите внимание на то, что говорит dpkg:

$ sudo dpkg - i rs c 2. 6. 9- Зcnl. l. deb dpkg - wa rni ng : downgradi ng rsync from 2. 6. 9 -Зubuntu1 to 2. 6. 9-Зсn1. 1.

( Readi ng database... 88107 fi l es and di rectori es currently i nstal l ed. ) Prepa ri ng to repl ace rsync 2. 6. 9 -Зubuntu1 ( usi ng rsync_2. 6. 9-Зcn1. 1. deb ) Unpack i ng repl acement rsync...

Setti ng up rsync ( 2. 6. 9-Зсn1. 1 )...

68 Глава 2. У ановка Ubuntu и _программного обеспечения Сейчас утилита debsums располагает некоторыми файлами для тестирования md5sum, поэт9му вне зависимости от местоположения нового пакета rsync вы уви­ дите следующее сообщение:

$ debsums rs c /usr/bi n/ rsync /usr/sha re/doc/ rsync/exampl es/ rsyncd. conf ОК /usr/sha re/doc/ rsync/README. gz ОК Используя команду dpkg и параметр - 1, вы можете просмотреть информацию о пакете и убедиться, что установлена его новая версия:

$ dpkg - 1 rs c ;

;

rsync 2. 6. 9 -Зcnl. l Modi fi ed Ьу CN 2007 -09-02 to i ncl ude md5sums.

Бол подробную информацию о формировании DЕВ-архивов вы мож е найти в руководстве Debl­ an Binary Package Building НОWТО, размещенном по адресу http://tldp.org/HOWТO/Deblan-Binary­ Package-Building-HOWТO. МАN- раница, п вященная dpkg-deb, также содержит информацию о фор­ мировании DЕВ-архивов.

ю Рез м е Программное обеспечение Ubuntu и других дистрибутивов на базе Deblan упако­ вывается в архивы формата DEB. По умолчанию для установки Ubuntu использу­ ется установщик Ublquity. Вооt-меню позволяет загружать все необходимые для установки приложения, устанавливать систему, а также запускать Ubuntu с ком­ пакт-диска. Для загрузки и установки дополнительного программнога обеспечения из интернет-репозиториев программнога обеспечения вы можете использовать программы aptitude и АРТ. Для установки программных пакетов, хранящихся на жестком диске, а также индивидуально сформированных пакетов Deblan вы може­ те пользоваться утилитой dpkg. И АРТ, и aptitude, и dpkg предоставляют возмож­ ность получать информацию о программнам обеспечении. Используя приложения debsums и md5sum, вы можете проверять установленные пакеты.

И льз спо ован е и оц с ра о г к ман но о пр ес о д Использование интерпретатора командного языка (обычно называется просто ко­ мандным процессором, или консолью) восходит к первым операционным системам UNIX. Помимо очевидного использования командного процессара для выполне­ ния команд, он имеет множество встроенных параметров, таких как переменные окружения, псевдонимы, а также множество функций, предназначенных для про­ граммирования. Хотя наиболее часто используемый командный процессор, при­ меняемый в системах Linux, называется Bourne Again Shell (bash), существуют и дру­ гие командные консоли (например, sh, csh, ksh, tcsh и др.). Во многих случаях эти командные консоли (например, sh) являются символьными ссылками на другие консоли, такие как bash. В Ubuntu Linux sh является символьной ссылкой на /Ьi n/ dash. Командный процессор sh является важной частью системы, поскольку в боль­ шинстве сценариев командного процессара он определяется как консоль запуска сценариев. Что касается интерактивного использования, то в качестве командного процессара по умолчанию используется bash.

В данной главе приведен материал, призванный помочь вам научиться работать в командны консолях Linux вообще и консоли bash в частности.

м п кна т р инала и до у к командном О е у р ссор оц п е у Самым простым способом запуска командного процессара из графического интер­ фейса Linux является использование окна терминала. Как правило, получить до­ ступ к виртуальному терминалу, а также открыть командную консоль можно и из графического интерфейса, однако если у вас не установлена графическая оболоч­ ка, а есть только текстовая, то командная консоль запускается сразу после входа в систему.

пользование окон терминала Ис · Чтобы открыть окно терминала из графической оболочки GNOME (графическ обо­ лочка Ubuntu по умолчанию), откройте меню Applications Accesso ries Terminal (При­ ложения • Инструменты • Терминал). В результате откроется окно gnome-terminal, 70 Глава З. Испол ование командного проц сора отображающее командную строку консоли bash. На рис. 3. 1 показан пример окна gnome-teгminal.

fole Edot Vt ew Termmal Тс\Ьs elp [ chrilocalhost -] $ •cho $SНELL /Dln/bash [chra@toca thOst -J s ll chпs [rhrl l nr

Окно gnome-terminal не только предоставляет доступ к командному процессо­ ру, но и дает возможность управлять командными консолями. Например, чтобы открыть дру консоль и поменять вкладку, откройте меню File Open ТаЬ (Файл Открыть вкладку);

чтобы открыть новое окно термин а, откройте меню File Open Terminal (Файл Открыть термин );

а чтобы указать новый заголовок окна, откройте меню Terminal Set Title (Термин Задать заголовок).

Кроме того, для работы в окне термин а можно использовать сочетания кла­ виш. Нажав сочетание авиш Shi +C l+Т, можно откр ь консоль на новой в ­ ке;

нажатием сочетания авиш Shi +Ctri+N открывается новое окно терм а;

с помощью сочетания авиш Shi +Ctri+W закрывается в адка, а Shi +Ctri+Q окно термин а. С помощью сочетания авиш Shi +Ctri+C можно скопировать выделенный текст, а чтобы встав ь ско ро а й текст в то же и др ое окно, нужно нажать сочетание авиш Shi +C i+V или среднюю кнопку мыши.

8 льшин ве приложений, таких как, например, тек овый актор OpenOffice.org, копирование осущ вля ся нажатием сочетания клавиш Ctri+C, а не Shi +Ctri+C, а в авка - сочетания а­ виш Ctri+V, а не Shif+Ctri+V. Поскольку соч ание авиш Ctri+C в окне командного процессора н ит специальн назначение (этим сочетанием клавиш обычно закрыва ся программа), в окне gпome-terminal функции графического интерфейса ализуются с помощью доба ения авиши Shi.

Среди других горячих клавиш, используемых при управлении окнами тер­ минала, можно назвать клавишу F11, используемую для перехода в полноэкран­ ный реж. Для увеличения размера отображаемого текста используйте сочета­ ние авиш Ctri+Shi ++, а для уменьшения его размера - Ctrl+-. Пере ючеине между вкладками осуществляется с помощью сочетаний клавиш Ctri+Page Up и Ctri+Page Down (предыдущая и следующая вкладка соответственно) или Alt+ 1, Окна терминала и достуn к командному процесс ору Alt+2, Alt+З и т. д. для перехода соответственно на первую, вторую, третью и т. д.

вкладку. Для редактирования командной консоли нажмите сочетание Ctri+D, после чего закроется текущая в адка или окно термин а (если это последняя вкладка).

Окно gnome-terminal также поддерживает профили (откройте меню Edit • Current Profile (Редактировать • Текущий профиль)). Некоторые настройки профилей определяют оформление окна (разрешают использование четкого текста, м ца­ н f pcopa, звуков т мин а, цветов, рисунков и прозрачности ). Другие установ­ ки являются функциональными. Например, терминал сохраняет по умолчанию 500 полос прокрутки (3 18 Кбайт). Некоторые хотят, чтобы сохранялось больше, и согласны выделить для этого больше памяти.

Если вы используете ручной запуск окна gnome-terminal, то можете добавлять параметры, например:

$ gno - termi nal · Х al sami xer Запускает терминал с отображенным a7samixer $ gno -termi nal · · tab · · tab · tab Запускает терминал с тремя открытыми вкладками $ gno -termi nal · · geometry 80х20 Запускает терминал размером ВО символов на 20 строк $ gno ·termi nal · · zoom-2 Запrскает терминал с более крупным шрифтом Помимо окна gnome-terminal, существует множество других окон термин а, которые вы можете использовать. Вот несколько примеров: xterm (основной эму­ лятор термин а, используемый системой Х Window), aterm (эмулятор термина­ ла, созданный по ан огии с эмулятором Afterstep XVT VT102) и konsole (эмуля­ тор термин а, поставляемый вместе с графической оболочкой KDE). Проект Enlightenment desktop предоставляет термин eterm, который в ючает в себя такие элементы, как журн сообщений на фоне экрана.

абота с вир альными термин лами Р ту а Когда Ubuntu загружается в многопользовательском режиме (уровень 2, 3 или 5), создается шесть вирту ьных консолей (от 1 до б) с текстовыми учетными записями. Если используется Рабочий л системы Х Window System, то Х, воз­ можно, функционирует в вирту ьной консоли 7. Если это не так, то, скорее всего, перед вами виртуальная консоль 1.

Из Х с помощью нажатия сочетаний клавиш Ctri+Ait+F1, Ctri+Ait+F2 и т. д. до осуществляется пере ючекие на др ю вир ьн консоль. Находясь в тек­ стовой вирту ьной ко;

соли, вы можете пере ючаться между ними с помощью сочетаний клавиш Alt+F1, Alt+F2 и т. д. Для возврата в GUI Х нажмите Alt+F7. Каж­ дая консоль для входа в систему использует различные учетные записи пользова­ телей. Переключеине на другую консоль не прерывает выполнения процессов остальных консолей. Если вы пере ючитесь на какой-либо вирту ьный терми­ н, то увидите командную строку учетной записи пользователя примерно следую­ щего содержания:

Ubuntu 7. 04 l oca l host tty l ocal host l ogi n:

. И 72 Глава спол ование командного процессара Каждым вирту ьным термин ом управляют отдельные ироцессы getty. Что­ бы увидеть, что представляют из себя процессы getty, перед входом в любой вир­ ту ьный термин введите следующую команду:

$ ps awx 1 grep · V grep grep. getty 4366 tty4 Ss+ 0 : 00 /sbi n/getty 38400 tty 4367 tty5 Ss+ 0 : 00 /sbi n/getty 38400 ttyS 4372 tty2 Ss+ 0 : 00 /sbi n/getty 38400 tty 4373 tty3 Ss+ 0 : 00 /sbi n/getty 38400 tty 4374 ttyl Ss+ 0 : 00 /sbi n/getty 38400 ttyl 4375 tty6 Ss+ 0 : 00 /sbi n/getty 38400 tty После входа в первую консоль getty идентифицирует учетную запись, а затем запускает командный процесор bash:

$ ps awx 1 grep - v grep grep tty 4366 tty4 Ss+ 0 : 00 /sbi n/getty 38400 tty 4367 tty5 Ss+ 0 : 00 /sbi n/getty 38400 tty 4372 tty2 Ss 0 : 00 /bi n/ l ogi n - 4373 tty3 Ss+ 0 : 00 /sbi n/getty 38400 tty 4374 ttyl Ss+ 0 : 00 /sbi n/getty 38400 ttyl 4375 tty6 Ss+ 0 : 00 /sbi n/getty 38400 tty 7214 tty2 S+ 0 : 00 - bash Настройки вирту ьных консолей хранятся в папке /etc/event. d. Для каждой вирту ьной консоли предусмотрен сценарий, например ttyl для консоли l, tty для консоли 2 и т. д.

6 льшин ве ве ий Liпux на ройки консолей хранятся в файле Демон1 в кач ве св го конфигурационного файла по умолчанию испол у /etc/iпittab. Ubuпtu Liпux же п грам­ ма по умолчанию заменяется новой программой, называемой upsta, которая я хранения своих конфигурационных файлов испол ует пап /et.c/eveпt.d.

в мандном про ссор Работа ко це е Когда вы открываете командный процессор (неважно, через текстовую учетную запись или через окно термин а), в зависимости от пользователя, открывшего командную консоль, устанавливается ее окружение. Установки командной консо­ ли bash для пользователей всех консолей хранятся в нескольких файлах. Чтобы изменить настройки системы, вы можете создать свои собственные версии этих файлов. Существует два типа файлов, содержащих эти установки: файлы запуска и файлы иници изации.

Консоль bash запускает загрузочные файлы для всех исходных командных процессоров. Эти файлы определяют установки, которые применяются во всей Скрыт от пользователя служебн программа, вызываем при выполнении какой­ либо функции.

бота Ра в командном п цесса учетной записи. Консоль bash запускает файлы инициализации, ·чтобы консоли работали интерактивно, то есть не запуская сценарий командного процессра.

Bash ищет файлы запуска в папке /etc/profi l e (общесистемные), а индивиду­ альные настройки - в некоторых файлах, начинающихся с точки в основной пап­ ке пользователя (при ее наличии):. bash_profi l e,. bash_l ogi n и. profi l e.

8 других ве иях Llnux общеси емные файлы хранятся в папках /etc/proflle и /etc/proflle.d/.

Файлы же инициализации bash ищет в папке 1 etc/bash. bashrc ( общесистемны ), а индивидуальные настройки - в файле с расширением BASHRC вашей основной папки.

8 других ве иях Linux общеси емные файлы хранятся в папке /etc/Ьashrc.

Если командный процессор закрыт, то все команды выполняются в пользова­ тельском файле -1. bash_l ogout. Изменение настроек этих файлов изменяет поль­ зовательские настройки консоли, но не затрагивает уже запущенные консоли (дру­ гие консоли используют собственные конфигурационные файлы).

Существует множество способов, позволяющих просматривать и изменять сре­ ду вашей консоли. Одним из основных является смена пользователя;

в частности, изменение простой учетной записи на учетную запись суперпользователя (см. сле­ дующий раздел).

bash рнал Консоль, называемая Bourne Again Shell (bash), является командным процессором, используемым по умолчанию на большинстве современных операционных систем Linux и немного в других операционных системах, например Мае OS Х. В консоль bash, как и в другие командные консоли, встроен элемент, называемый •журна­ лом•, который позволяет просматривать, изменять и отменять команды, выпол­ ненные ранее. Эта функция может оказаться очень полезной, поскольку многие команды в Linux являются длинными и сложными.

При запуске bash считывается и загружается в память файл -/. bash_hi story.

Значение этого файла по умолчанию устанавливается в $НISTF I LE.

я получения бол n робной информации о работе с такими пе менными окружения команд­ И ного процессора, как $HISТFILE, ознакомьтесь с раэд. « спол ование переменных с ы».

Во время сеанса bash команды добавляются в журнал, находящийся в памя­ ти. После выхода из консоли bash данные из журнала переписываются в файл. bash_ hi story. К ество команд, сохраняе в журн е в течение сеанса bash, задается в файле $НISTS IZE, а количество команд, хранящихсв в файле журн а в данный момент, определяется файлом SНISTFILESIZE:

$ echo $HISTFILE $HISTSIZE $HISTFILESIZE /home/fcaen/. bash_hi story 500 74 Глава Испол ование командного п ц сора.

Для просмотра всего журн а выполните команду hi story. Для просмотра же определенного количества ранее выполненных и записанных в журн команд добавьте после команды hi story необходимое число. Команда, приведеиная ниже, отображает предыдущие пять команд, хранящихся в журн е:

$ hi story 975 mkdi r extras 976 mv *doc extras/ 977 1 s - CF 978 vi house. txt 979 hi story Чтобы перемещаться среди кома, записанных в журн, используйте клави­ ши управления курсором t и../... Когда необходимая команда будет найдена, вы.

сможете использовать клавиатуру для редактирования текущей команды: клави­ ши., Delete, 8ackspace и т. д. Ниже показаны некоторые другие способы восста­ новления и запуска команд из журн а bash:

$ ! ! Выполняет предыдущую конанду $ ! 997 Выполняет конанду записанную в журнале под нонеран.

1 s - CF $ ! 997 *doc Добавляет расширение DOC к конанде из журнала 1 s -CF *doc $ ! ?CF? Выполняет предыдущую конанду. содержащую строкv CF 1 s -CF *doc $ ! l s Выполняет предыдущую конанду 7s 1s - CF *doc $ ! l s : s/CF/1 Выполняет предыдущую конанду, изненяя CF на 1 s - 1 *doc Еще одним способом реда ирова я рн а кома является применение команды fc, с помощью которой, используя редактор vi, можно открыть выбранную из журн а команду. Измененная команда запускается сразу после закрытия окна редактора. Перейти в другой редактор можно, задав переменную FC:EDIТ (например, FCEDIТ=gedi t) или выполнив через командную строку команду fc:

$ fc 978 Позволяет отредактирова ть конанду Под нонеран 978. а за тен выполнить ее $ fc позволяет отредактировать предыдущую конанду, а за тен выполнить ее $ fc - е /usr/bi n/nano 989 Открывает редактор nano для редактирования конанды под нонеран Для поиска нужной строки в журн е используется сочетание клавиш i+R.

Например, если нажать i+R, а затем ввести строку ss, то будет выведена следую­ щая информация:

# ( reverse- i - sea rch ) ' ss· : sudo /usr/bi n/1 ess /var/1 og/messages Чтобы выполнить реверсивный поиск в журн е на наличие строк, содержа­ щих строку ss, повторно нажмите сочетание авиш i+R.

Работа в командном процессо По умолчанию я а ирования команд журнала bash испол уется актор emacs, нако если вы п почитаете актор vi, можете испол овать и его. Чтобы у ановить vi в кач ве ­ дактора команд журнала, в пользуйтесь командой : вв ите -о vi.

и Ф нкц я дополнения командной роки у Для дополнения командной строки различной информацией используется ави­ ша ТаЬ. Ниже приведено несколько примеров, демонстрирующих быстрый ввод команд, осущест яемый частичным вводом команды, а затем нажатием ави­ $ tracer <ТаЬ> Дополняет команду до команды traceroute $ Cd /Home/Ch <ТаЬ> Дополняет путь до записи lh lchris $ cd -jo <ТаЬ> Дополняет название основной папки пользова теля до /h /john $ echo $РА <ТаЬ> Дополняет переменную окружения до SPA TH $ pi ng <ТаЬ> Дополняет хост-машины: показывает хает-машины из letclhosts @davi nci. exampl e. com @ri tchi e. exampl e. com @thompson. exampl e. com @l oca l host @zooey stdin и stdout П ереназначение Команда, введенная в командную консоль, выполняется в ди оговом режим:е.

В результате образуются два варианта потока: stdout (если команда выполнена нормально) и stderr (если при выполнении команды произошла ошибка). Ниже показано, что при поиске несуществующего файла или папки с именем /tmpp на строку stdeгr выдается сообщение об ошибке, а при поиске /tmp (который успешен) данные, выводимые согласно запросу, отображаются на строке stdout:

$ l s /tmp /tmpp l s : /tmpp : No such fi l e or di rectory /tmp/ :

gconfd - fcaen keyri ng - b41WuB keyri ng- ItEWbz mappi ng - fcaen orbi t- fcaen По умолчанию на экран выводятся все данные. Чтобы направи выводимые данные в файл, используйте знак >. В частности, используя знак >, вы можете направить в файл стандартный поток вывода (stsndsгt output stream - stdout), а используя сочетание 2>, - стандартный поток ошибки (standart error stream ­ stderr):

$ l s /tmp /tmmp > output. txt l s : /tmpp : No such fi l e or di rectory $ l s /tmp /tmmp 2> errors. txt /tmp/ :

gconfd - fcaen keyri ng - b41WuB keyri ng - ItEWbz mappi ng - fcaen orbi t- fcaen $ l s /tmp /tmmp 2> errors. txt > output. txt $ l s /tmp /tmmp > everythi ng. txt 2>& 76 Глава. Испол ование командного проц сара В первом примере stdout перенаправлен в файл output. txt, а stderr выводится на экран. Во втором же примере stderr направлен в файл errors. txt, а stdout выво­ дится на экран. В третьем примере объединены первые два примера. В последнем примере оба потока направлены в файл everythi ng. txt. Чтобы дописать в файл информацию, а не переписывать ее, используйте сразу два знака >:

$ 1 s /tmp >> output txt.

Если вам вообще не нужно видеть поток вывода, то можете просто направить его в специ ьный файл-•битоприемник• (/dev/nul l ):

$ 1 s /tmp 2> /dev/nu1 Другим учаем, при котором может понадобиТЪСЯ перенаправить поток stderr, является си ация, когда вы работаете с croпtab. Вы можете пе направить stderr че з электронное сообщение, ко­ торое будет направлено влад ьцу. В этом учае пол ователю не будет возвращаться никаких сообщений об ошибке.

Вы можете не только направлять поток стандартного вывода команды, но и за­ давать кан ста артного ввода кома ы. Например, следующая команда на­ правляет файл /etc/hosts пользователю лок ьной системы chris в виде электрон­ ного сообщения:

$ mai 1 chri s < /etc/hosts Используя кан ы, вы можете перенаоравлить вывод данных с одного процес­ са на другой, а не просто в другие файлы. В следующем примере данные из коман­ ды l s выводятся в команду sort для упорядочивания выводимых данных:

$ 1 s /tmp 1 sort В следующем примере одновременно присутствуют и кан, и напра ение (поток stdout команды l s упорядочивается, а вывод stderr направляется в 1 dev nul l ):

$ 1 s /tmp/ /t p 2> /dev/nu1 1 1 sort Кан ы можно использовать для нескольких задач:

$ dpkg- query - 1 1 grep. ;

sq1 1 wc · $ ps auwx 1 grep fi refox $ ps auwx 1 1 ess $ wherei s · m bash 1 awk ' {pri nt $2} ' В предыдущем примере первая строка отображает все установленные программ­ ные пакеты, выделяет те из них, которые содержат sql, и подсчитывает количество пропущенных строк (фактически подсчитывая количество пакетов, содержащих в своем имени sql ). Вторая команда отображает процессы Firefox, взятые из длин­ ного списка процессов (если браузер Firefox запущен), а также любые процессы, командная строка которых содержит ссылку на слово fi refox. Третья команда позволяет пролистать весь список процессов. Последняя строка отображает слово bash, за ним идет путь к странице МАN-справочника, посвященной bash, а затем Работа в командном n цесса команда, отображающая только путь к данной странице man (второй элемент на строке).

Используя обратные одинарные кавычки, вы можете снач а выполн часть кома ной строки, а затем вывесm на оставш ся часть командной строки дан­ ные этой команды. Например:

$ dpkg- query -S 'whi ch ps · $ 1 s · 1 'whi ch bash' Первая строка в предыдущем примере находит полный путь комаНды ps, а так­ же программный пакет, содержащий эту команду. Вторая команда находит полный путь к команде bash и создает длинный список (1 s · 1 ) этой команды.

Более сложным и эффективным способом выдел Одимые данные одной команды и примен их в качестве параметров для другой является использова­ ние команды xargs:

$ 1 s /bi n/b* 1 xargs dpkg- query · S Чтобы показать, что команда xargs сейчас будет запущена, выполните следую­ щую команду:

$ 1 s /bi n/b* 1 xargs · t dpkg- query · S dpkg -query -S /bi n/bash /bi n/bunzi p2 /bi n/bzcat /bi n/bzcmp /bi n/bzdi ff /bi n/bzegrep /bi n/bzexe /bi n/bzfgrep /bi n/bzgrep /bi n/bzi p2 /bi n/bzi p2recover n/bz /bi ess /bi n/bzmore bash : /Ьi n/bash bzi p2 : /bi n/bunzi p bzi p2 : /bi n/bzcat bzi p2 : /bi n/bzcmp bzi p2 : /bi n/bzdi ff bzi p2 : /bi n/Ьzegrep bzi p2 : /bi n/bzexe bzi p2 : /bi n/bzfgrep bzi p2 : /bi n/bzgrep bzi p2 : /bi n/bzi p bzi p2 : /bi n/bzi p2recover bzi p2 : /bi n/bz1 ess bzi p2 : /bi n/bzmore В этом примере все данные, выводимые 1 s, перенаправляются в кoмaндy.dpkg­ query -S. Если в xa rgs применить параметр -t, то выходные данные команды будут выведены еще до того, как она будет выполнена. Теперь воспользуемся xa rgs, что­ бы перенаправить выходные данные 1 s для каждой отдельной команды dpkg -query.

Здесь знак { } определен как поле для подстановки строки:

$ 1 s /bi n/b* 1 xargs · t · 1{} dpkg- query · S {} dpkg -query -S /bi n/bash bash : /Ьi n/bash dpkg - query -S /bi n/bunzi p bzi p2 : /bi n/bunzi p dpkg - query -S /bi n/bzcat bzi p2 : (bi n/bzcat ра 78 Глава З. Испол ование командного п цесса dpkg - query -S /bi n/bzcmp bzi p2 : /bi n/bzcmp dpkg - query -S /bi n/bzdi ff bzi p2 : /bi n/bzdi ff dpkg - query -S /bi n/bzegrep bzi p2 : /bi n/bzegrep dpkg -query -S /bi n/bzexe bzi p2 : /bi n/bzexe dpkg - query -S /bi n/bzfgrep bzi p2 : /bi n/bzfgrep dpkg -query -S /bi n/bzgrep bzi p2 : /bi n/bzgrep dpkg - query -S /bi n/bzi p bzi p2 : /bi n/bzi p dpkg -query -S /bi n/bzi p2recover bzi p2 : /bi n/bzi p2recover dpkg - query -S /bi n/bz1 ess bzi p2 : /bi n/bz1 ess dpkg - query -S /bi n/bzmore bzi p2 : /bi n/bzmore Как вы можете видеть из выводимых данных, для каждого параметра, касающе­ гося 1 s, запускаются отдельные команды dpkg-query -S.

иасы Чтобы установ и просмотреть иасы, необходимо воспользоваться командой а 1 i as. Некоторые алиасы уже установлены в общесистемных или пользовательских файлах инициализации консоли, о которых говорилось ранее. Следующий пример показывает, как отобраз уже устано ен е иасы:

$ al i as a1 i as ср=' ср - i ' a1 i as 1 s=' 1 s - - co1 or=auto ' a1 i as mv= ' mv - i ' a1 i as rm= ' rm - i ' Отметим, что некоторые алиасы установлены просто в качестве способа добав­ ления параметра в изначальные характеристики команды (например, mv - i, при­ меняемый, если необходимо переместять файл).

UЬuпtu Liпux ра тает только с алиасами, опред яемыми ls, которые при просмот файлов выде­ ляют выходные данные цв ом. Другие алиасы пред а яют со й примеры полезных команд, которыми вы можете эaxanm:;

воспольэоватъся особенно после, к они помогуr м предотвра­, го ка тить учайн удаление файлов.

Опреде ть собственные асы те его сеанса bash можно следующим образом:

$ al i as l a=' l s · l a' Получение прав суперпол ова ьэ теля Добавьте эту строку в файл -/. bashrc для определения собственных иасов ·в каждом новом сеансе bash. Используя команду una 1 i as, можно уд8JIИТЬ иас из тек ей сессии bash:

й $ unal ias 1 а Удаляет предыдущий созданны алиас конанды 7а $ una1 i as - а Удаляе т все созданные алиасы i ю абл дение за командами Если вам необходимо следить за командами с изменяющимвся выводимыми дан­ ными, используйте команду watch. Например, чтобы следить за средней загрузкой, выполните следующую команду:

$ watch ' cat /proc/1 oadavg ' Каждые две секунды watch будет запускать команду cat. Для завершения выпол­ нения команды нажмите сочетание клавиш i+C. Чтобы увеличить частоту обнов­ ления до 1 О секунд, выполните следующую команду:

$ watch · n 10 ' 1 s · 1 ' Чтобы выделить разницу между обновлениями на экране, выполните:

$ watch · d ' 1 s · 1 ' Чтобы завершить выполнение команды watch, нажмите сочетание авиш C i+C.

Стоит отметить, что для выполнения выделения необходимо, чтобы файлы изме­ нялись.

Н ю абл дение за файлами Для наблюдения за размером файлов также может быть использована команда watch. Например, чтобы следить за размером большого ISО-файла mydown1 oad. i so по мере его загрузки, воспользуйтесь следующей командой:

$ watch ' 1 s · 1 mydown1 oad. i so' Чтобы наблюдать за содержимым файла с открытым текстом, размер которого увеличивается с течением времени, воспользуйтесь командой tai 1. Например, вы можете просмотреть сообщения, добавJlенные в файл /var/1 og/message, с помощью команды:

$ sudo tai 1 · f /var/1 og/ ssages Чтобы завершить выполнеltие команды tai 1, нажмите C i+C.

я ч н п с п рпользо ат л олу ие рав у е в е е П Когда вы запускаете командный процессор, вы можете выполнять команды и полу­ чать доступ к файлам и папкам на основе ID пользователей и групп, а также прав доступа к этим компонентам. Доступ ко многим системным ресурсам является И 80 Глава спол о ние командного п ора 3 цесс. ва ограниченным и открыт только для пол овате ot, также называемого супер­ пол оват.

Существует три основных способа получения прав суперпользователя:

О войти в систему как суперпользователь;

О временно получить права суперпользователя, воспользовавшись командой su;

О выполнить одну •команду на правах суперпользователя, воспользовавшись ко мандой sudo.

В большинстве случаев в систему не входят от имени суперпользователя, так как это повышает вероятность случайно внести нежелательные изменения в систему. Большинство пользователей Linux используют либо команду su (для перехода из обычной учетной записи в учетную запись суперпользователя), либо команду sudo (для выполнения одной команды с привилегиями суперпользова­ теля).

Ubuntu Linux предоставляет пользователям возможность выполнять команду sudo. Поэтому, чтобы выполнить команду, связанную с администрированием (на­ пример, команду useradd, служащую для добавления нового пользователя), можно снач а ввести команду sudo:

б $ sudo useradd -m joe На правах суперполь зова теля до авляет нового поль зова теля по имени joe По умолчанию в операционной системе Ubuntu существуют ограничения, не позволяющие создать учетную запись суперпользователя. Поэтому в Ubuntu не предусмотрена и возможность выполнения команды su, которая обычно использу­ ется в других операционных системах Linux и которая дает возможность переклю­ чаться на учетную запись суперпользовате-!lя.

Если вам нужно выполftить некоторое количество команд, используя права суперпользователя, вы можете выполнить команду, которая позволяет запускать командный процессор от имени пользователя. root:

$ sudo bash Запускает командную к ·имени суперполь зова теля онсоль от # Если же вам нужно создать параль для учетной записи суперпользователя (что позволит вам как входить в систему через учетную запись суперпользователя, так и использовать команду su, чтобы временно им становиться), воспользуйтесь командой sudo:

$ sudo passwd root У зова теля станавливает пароль учетной записи суперполь Впрочем, большинство пользователей Ubuntu просто используют sudo и нико­ гда не задают rооt-пароль.

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

Простое выполнение команды su, продемонстрированное ниже, не предостав­ ляет доступа к исходному командному процессору со средой суперпользователя:

$ su Password : ***** # echo SРАТН /usr/l ocal /sbi n : /usr/l ocal /bi n: /usr/sbi n : /usr/bi n: /sbi n : /bi n : /usr/games /usr/kerberos/sbi n : /usr/kerberos /bi n: /usr/l ocal /bi n : /usr/bi n : /bi n: /usr/XllRб/bi n : /home/fcaen/bi n После выполнения команды su пользователь все еще обладает переменной РАТН пользователя f en. Чтобы получить доступ к среде суперпользователя, исполь­ зуйте команду su с дефисом (- ):

# exit $ su Password : ***** # echo $РАТН /usr/kerberos/sbi n : /usr/ kerberos/bi n : /usr/l ocal /sbi n: /usr/l ocal /bi n : /sbi n : / bi n : / usr/sbi n: /usr/bi n: / root/bi n В большинстве случаев для получения прав суперпользователя достаточно использовать su -, если нет острой необходимости воспользоваться другим спосо­ бом. Если не обозначен ни один пользователь, su устанавливает суперпользователя по умолчанию. Однако команду su можно также применять, чтобы переключать­ си на других пользователей:

$ su - cnegus Команда su также может быть использована и выполнения отдельной коман­ от лица конкретного пользователи:

$ su - с whoami Password : ****** root # - с ' l ess /var/1 og/ ssages ' su Несмотря на то что во втором примере вход в систему изначально был осуще­ ствлен от лица обычного пользователя, выполнение команды whoami с параметром su -с говорит о том, что вы являетесь суперпользователем. В первом же примере с обеих сторон командной строки 1 ess необходимо установить кавычки, которые служат для определения строки /va r 11 og/messages как параметра команды 1 ess. Как уже было сказано, команда whoami может быть полезна для определении исполь­ зуемой и выполнении текущей команды учетной записи:

$ whoami fcaen 82 Глава З. Испол ование командного п ц сара ение пр ью Рас ав с помощ команд пр ы sudo Команда sudo позволяет очень четко разделять права доступа пользователей, не имеющих доступа к учетной записи суперпользователя. Команда sudo является прекрасным инструментом для предоставления расширенных привилегий в слу­ чаях, когда в системе используется несколько учетных записей пользователей, а также для сбора информации о том, каким образом пользователи используют предоставленные им привилегии.

Если не задано иное, sudo активизирует учетную запись суперпользователя.

В Ubuntu Linux для выполнения команд, требующих обладания привилегиями суперпользователя, применяется команда sudo, а не su.

Настройки команды sudo хранятся в файле /etc/sudoers.

й Никогда не редактируйте этот фа л в обычном тек овом акто - вместо э го всегда исполь­ зуйте команду visudo.

Доступ к файлу /etc/sudoers ограничен, поэтому для его редактирования необ­ ходимо использовать команду sudo:

$ sudo vi sudo Команда vi sudo запускает редактор (по умолчанию nano, про который расска­ зыв ось ранее).

Если вы ознакомитесь с содержанием файла sudoers, поставляемого с вашим дистрибутивом, то увидите пустые разделы, разделенные пр'Имечаниями, и один активный оператор:

root ALL=(ALL ) ALL Это значит, что пользователь o t может выполнить любую команду от имени любого пользователя на любой хает-машине. Чтобы все пользователи, входящие в группу администратора, могли получить привилегни суперпользователя, в Ubuntu Linux добавлена следующая срока:

%admi n ALL=(ALL) ALL После того как вы установите Ubuntu Linux, учетная запись пользователя, соз­ данная вами, автоматически добавится к этой группе. Чтобы дополнительным пользователям были доступны rооt-привилегии, добавьте в файл следующую стро­ ку, изменив значение первого поля на имя учетной записи пользователя вашей системы:

Fcaen ALL= /usr/bi n/l ess /var/l og/messages П ыдущая на ройка позволяет пол оват ю выполнять команду less с привилегиями супер­ пол оват я. дей вие авит под угрозу безопасно ь си мы, п коль команда less по­ ьэ зволя пол оват ю п вом изучения других си емных файлов получить больше информа­ ции о си еме.

Пе менные с ы Теперь пользователь fcaen (или любой другой добавленный вами пользователь) может выполнить следующую команду:

$ sudo /usr/bi n/l ess /var/l og/ ssages Password :

После того как пользователь fcaen введет свой пароль, он сможет просматривать файл /var/l og/messages. Одновременно с этим будет установлена и временная мет­ ка, что позволит этому пользователю в следующие пять минут (время по умолча­ нию) вводить команды в командную строку и выполнять их без необходимости указывать пароль.

Однако обычно приходится добавлять определенных пользователей в группу admin, а не создавать индивиду ьные записи в файле /etc/sudoers.

Каждое использование sudo регистрируется в файле /var/l og/secure:

Feb 24 21 : 58: 57 l ocal host sudo : fcaen : TTY=pts/3 ;

PWD=/home/fcaen USER=root ;

COMМAND=/usr/bi n/l ess /var/l og/messages Д ее добавьте следующую строку в /etc/sudoers:

Fcaen serverl=( chri s) /bi n/l s /home/chri s Теперь пользователь fcaen может выполнить следующую команду:

b $ sudo - u chri s / in/l s /home/chri s Команда sudo, приведеиная выше, будет выполнена от имени пользователя chris и будет работать только на хает-сервере 1. В некоторых организациях управление файлом /etc/sudoers осуществляется центр изованно и он используется на всех хает-машинах, поэтому может оказаться полезным на отдельных машинах точно определить права доступа к sudo.

Команда sudo также позволяет задавать иасы или заранее заданные группы пользователей, команд и хает-машин. Поищите соответствующие примеры в фай­ ле /etc/sudoers своей операционной системы Linux.

м р нны ср ды е е е е е П Небольшие фрагменты информации, которые могут быть полезны для конфигу­ рации командной консоли, находятся в так называемых п еменных е. Обыч­ но имена переменных среды всегда пишутся с заглавных букв (хотя у этого прави­ ла есть исключения). Если вы используете командный процессор bash, то исходя из различных начальных сценариев bash, описанных ранее, некоторые переменные среды будут уже установлены.

Чтобы отобраз все переменвые среды, уже установленные для вашей кон­ соли, в фавитном порядке, выполните следующую команду:

$ set 1 l ess BASH=/bi n/bash COLORS•/etc/DIR_COLORS. xterm COLUMNS= DISPLAY=: O. O И 84 Глава спол ование командного проц сара 3.

HOME=/home/fcaen HOSTNAМE=ei nstei n Приведеиные выходные данные составляют лишь небольтую часть перемен­ ных, которые будут отображены у вас. Команда set также отображает и функции.

Команда env отображает только переменные среды.

Кроме того, вы можете устана ивать или сбрасывать переменные самостоя­ тельно. Например, чтобы присвоить переменной АВС значение 123 (а затем отобра­ зить содержимое АВС), выполните следующую команду:

$ АВС• $ echo $АВС Переменная АВС существует только в той командной консоли, в которой она была создана. Если вы выполните команду из другой консоли (ls, cat, firefox и т. д.), то этому новому процессу созданная переменная не будет доступна. Запустите новый процесс bash и проверьте это:

$ bash $ echo $АВС $ Кроме того, экспортировав переменные, вы можете сделать их частью среды, которая передается дочерними процессами:

$ export АВС• $ bash $ echo $АВС Вы также можете объединить строку и существующую переменную:

$ export PATН=SPAТН : /ho /fcaen Чтобы отобраз ь все переменвые окружения bash, выполните следующую команду:

$ env При создании собственных переменных среды избегайте использования уже задействованных системой имен. Список переменных среды командного процес­ сара приведен в Приложении 2.

Создани п ро ы сценари в е х е я командного про ц ссора е Сценарии командного процессара удобно использовать для автоматизации повто­ ряющихся задач. В bash и другие командные консоли включены базовые компо­ ненты, основанные на различных языках программирования, например: циклы, условия, операторы варианта и т. д. Главное различие между ними состоит в том, что есть только один тип переменных - строки.

Соэдание простых сценариев для командного процессара а ирование и зап ск сценария у Р Сценарии командного процессара являются простыми текстовыми файлами.

Вы можете создавать их, используя любой текстовый редактор (например, vi. Что­ ) бы запустить сценарий, его файл должен быть исполняемым.

Например, если вы создали сценарий для командного процессара с именем файла myscri pt. sh, то сделать его исполняемым можно следующим образом:

$ ehmod u+x myser1 pt. sh При этом перв строка вашего сценария для bash всегда должна выглядеть следующим образом:

#! /Ьi n/bash В данном случае комментарий начинается со знака #. Синтаксис #! применяет­ ся в качестве комментария для командных консолей, которые не распознают этот специальный синтаксИс. Часть /Ьi n/bash оповещает любой активный командный процессор (будь то bash или друг консоль), какую программу следует использо­ вать для запуска сценария (поскольку раньше не все системы поставлялись с кон­ солью bash, часто в роли команды для запуска сценария можно увидеть /Ьi n/sh).

Как и с любой командой, помимо того, что любой сценарий командного процес­ сара должен быть выполняемым, сценарий, создаваемый вами, должен при запус­ ке являться частью переменной РАТН или определяться по его полному или отно­ сительному пути. Другими словами, как только вы попробуете запустить сценарий, вы получите следующий результат:

$ щyser1 pt. sh bash : щyscri pt. sh: command not found Команда не найдена В этом примере папка, содержащ файл myscri pt. sh, не включена в переменную РАТН. Для решения этой проблемы достаточно отредактировать путь, скопировать сценарий в папку переменной РАТН или ввести полный или относительный путь к вашему сценарию. Все четыре примера приведены ниже:

$ mkd1 r -/b1 n : ер myser1 pt. sh -/b1 n/ РА1Н-$РАТН :

-/Ь1 n $ ер myser1 pt. sh /usr/l oeal /b1 n $. /myser1 pt. sh $ /tmp/myser1 pt. sh Не следует ставить точку (. ) в переменной окружения РАТН с целью обозначить, что команда может бщть выполнена из текущей папки, поскольку ее имя может совпасть с именем важной и широко используемой команды (например, 1 s или cat), что вызовет перезапись старых команд новыми, если у них будут одинаковые име­ на, и они окажутся в одной папке, а это может поставить под угрозу безопасность всей системы.

оба ение содер имого в сценарий Д ж Хотя сценарии командного процессара могут представлять собой всего лишь по­ следовательности команд, вы можете также по собственному усмотрению исполь­ зовать их в языках программирования. Например, если изменять вводимые данные, 86 Глава. Исп ование командного п ц сара сценарий может возвращать различные результаты. В этом подразделе описыва­ ется, как можно использовать в сценариях командной консоли сочетания команд:

например, операторы i f/then, операторы выбора и циклы for /whi l е.

Ниже приведена команда, назначающая строку аЬс переменной MYSTRING. Затем, чтобы узнать, равна ли переменпая строке аЬс, она проверяет вводимые данные и д ее действует исходя из результата проверки. Сам тест взят в квадратные скоб­ ки ([ ] ):

MYSTRI NG=abc i f [ $MYSTRI NG = аЬс J : then echo "The vari aЬl e i s аЬс" fi Чтобы не прово проверку, воспользуйтесь сочетанием ! = вместо =:

i f [ $MYSTRI NG ! = аЬс ] : then echo "$MYSTRI NG is not аЬс" :

fi Д ее следуют рримеры тестирования на числа:

MYNUMBER= i f [ $MYNUMBER - eq 1 J then echo "MYNUMBER equa l s 1" : fi i f [ $MYNUMBER - l t 2 ] then echo "MYNUMBER <2 " : fi i f [ $MYNUMBER - l e 1 ] then echo "MYNUMBER <=1" : fi i f [ $MYNUMBER - gt О ] then echo "MYNUMBER >0 " : fi i f [ $MYNUMBER - ge 1 J then echo "MYNUMBER >=1" : fi Теперь взгляните на некоторые примеры тестирования имен фа ов. В данном примере производится Проверка существования указанного файла (- е) и его типа:

обычный файл ( - f) или папка ( -d). Это осуществляется с помощью операторов i f/then. Если совпадений нет, то используется оператор е l se.

fi l ename=" $HOME " · н [ - е $fi l ename J : then echo " $fi l ename exi sts" : fi i f [ - f " $fi l ename " J : then echo " $fi l ename i s а regul ar fi l e" el i f [ -d " $fi l ename" J : then echo " $fi l ename i s а di rectory" el se echo " 1 have no i dea what $fi l ename i s" fi В табл. 3. 1 приведены примеры тестов, которые могут быть осуществлены с файлами, строками и переменными.

Та ица 3.1. Операторы я т ирования Оnе Оnи ние а й -а. file Проверяет наличие фа ла (то же, что -е) -ь file Конт лирует, какой файл я я ся специальным блочным у рой вом -с file Проверя, какой файл является специальным файлом устрой ва (например, устрой ва по оват ьной пе дачи данных) Создание простых сценариев я кома ндного процессара ер ор е т а Оп ат Опи ни -d file Контролирует, какой файл является каталогом -е file Проверяет наличие фа йла (то же, что -а) -f file Проверяет наличие файла и является ли он обычным (например, не является каталогом, сокетом, каналом, ссылкой или файлом у рой ва) -g file Об едует, какой файл обладает множе вом битов set-group-id (назначение идентификатора группы) -h file Проверяет, какой файл имеет символьную ссылку (то же, что -L) -k file Контролирует, у какого файла е ь бит закрепления в памяти -L file Проверяет, какой файл имеет символ ьную ссылку (то же, что -h) -п striпg Проверяет, ина какой роки превышает О байт -о file Контролирует, каким файлом вы владеете -р file Проверяет, какой файл является именованным каналом -г file Об едует, какой файл до упен вам я чтения -s file Проверяет, сущ вует ли файл и превышает ли его размер О байт -s file Контролирует, суще вует ли файл и является ли он сокетом -t fd Проверяет, под ючен ли дескриптор файла к терми налу -u file Поверяет, какой файл обладает множе вом битов set-user-id (у ановка идентификатора пользователя) -w file Обследует, какой фа йл является перезаписываемым -х file Проверяет, какой файл является выполняемым -z striпg Контролирует, ина какой роки ра вна О байт exprl -а Проверяет, являются ли справ ивыми и первое, и второе выражения expr exprl -о Проверяет, является ли справ ивым одно из двух выражений expr filel -пt file2 Контролирует, является ли первый файл более новым по отношению ко второму (используется метка времени создания/модификации файла) filel -ot file2 Проверяет, является ли первый файл более арым по отношению ко второму (используется метка времени создания/модификации файла) filel -ef file2 Об едует, какой из двух файлов прикреплен к ссылке (же кая ссылка или символьная) va rl = var2 Проверяет, равна ли первая переменная второй varl -eq var2 Контролирует, равна ли первая переменная второй varl -ge var2 Поверяет, больше ли первая переменная второй или они равны varl -gt var2 Контролирует, больше ли первая переменная второй va rl -le var2 Поверяет, меньше ли первая переменная второй или они ра вны varl -lt va r2 Об едует, меньше ли первая перемен ная второй va rl ! = var2 Проверяет неравен во первой и второй переменных varl -пе va r И 88 Глава спол ование командного процесса 3 ра.

Другим часто используемым структурным компонентом является команда case.

Используя оператор case, можно проводить проверку переменных по различным критериям и исходя из результата действовать дальше. Так же, как и оператор swi tch, исползуемый в языках проrраммирования, оператор case может использо­ ваться вместо совмещенных операторов i f.

case " $VAR" i n stri ngИ { acti onl } : :

stri ng2 ) { acti on2 } : :

*) defau1 t acti on } : :

esac Примеры использования case вы можете найти в сценариях, применяемых при запуске системы и находящихся в папке 1 etcl i ni t. d/. Каждый начальный сценарий выполняется на основе применеиного ранее параметра (sta rt, stop и т. д.), а его выбор осуществляется из большого количества вариантов.

Сценарии /etC/iпit.d выполня ся п вом сценариев, хранящихся в папке /etcteveпt.d.

ют Командная консоль bash также позволяет выполнять стандартное построение ци ов, что продемонстрировано ниже. В первом примере все значения перемен­ ной NUMBER (от О до 9 включительно) приведены в строке for:

for NUMBER i n О 1 2 3 4 5 б 7 8 do echo The number i s $NUMBER done В следующих примерах выходные данные команды 1 s составляют переменные, в соответствии с которыми действует оператор for:

for FI LE i n ' /bi n/1 s' : do echo $FI LE : done Чтобы не перечислять для оператора for все доступные значения, можно при­ растить необходимое значение и продолжа выполнение через ЦИICJI с проверкой условия, пока не будет устано ено соответствие. В следующем примере вели­ чина переменной VAR начинается со значения О, и цикл с проверкой условия про­ должает увеличивать его до тех пор, пока оно не возрастет до 3:

" VAR=O " whi 1 e [ $VAR - 1 t 3 ] : do echo $VAR VAR=$ [$VAR+l] done Другим способом добиться ан огичного результата оператора цикла с услови­ ем продолжения является использование оператора unti 1 :

" VAR=O " unti 1 [ $VAR -eq 3 ] ;

do echo $VAR ;

VAR=$ [$VAR+l ] ;

done Резюме Если вы только начинаете осваивать проrраммирование в командной консоли, ознакомьтесь с руководством Bash Guide for Beginners, доступным по адресу h p:// tldp.org/LDP/8ash-Вeginners-Guide/html/index.html. Кроме того, вы можете воспользо­ ваться справочным материалом, например man, для ознакомления с примерами по разработке качественных сценариев для командного процессора.

ю Рез м е Несмотря на усовершенствование графического ;

нтерфейса пользователя, ко­ мандный процессор является одним из наиболее распространенных среди продви­ нутых пользователей методов работы в операционных системах Linux. Командн консоль Bourne Again Shell (bash) является наиболее распространенным команд­ ным процессаром Linux. Она включает в себя множество полезных приложений, предназначенных для фиксирования и восстановления выполняемых команд (журнал), дополнения команд, установки алиасов и переназначения выводимых и вводимых данных. Вы также можете, используя простые техники написания сценариев для командного процессора, самостоятельно создавать эффективные команды.

Р о а а б т ф 4 л с а ами й В Linux любой элемент может быть отображен в виде файла, включая файлы дан­ ных, папки, устройства, именованные кан ы, ссылки и другие типы файлов. В каж­ дом файле содержится определенная информация, определяющая, кто может по­ лучить доступ к файлу и каким обраэом этот доступ может быть получен. В данной главе описано большое количество команд, позволяющих исследовать файлы и ра­ ботать с ними.

п о и ы айл в ф Т Папки и обычные файлы, несомненно, являются теми типами файлов, которые будут использоваться вами наиболее часто. Однако в Linux используются и неко­ торые другие типы файлов. Командная консоль предоставляет множество спосо­ бов создавать, находить и просматривать различные типы файлов.

Файлы, предоставляющие доступ к устройствам компьютера, наэываются фай­ л и устройства. Устройства делятся на символьные и блочные. Кроме того, су­ ществуют жесткие ссшки и гибкие (с вольные), которые могут использоваться, чтобы сделать один и тот же файл доступным из раэных мест. Реже обычными пользователями используются енованные кан ы и сокеты, которые предостав­ ляют точки входа для процессов, позволяющих обмениваться данными.

бычные файлы О К обычным файлам относят файлы данных (документы, музыку, изображения и т. д.) и команды (двоичные и командные файлы). Определить тип файла позво­ ляет команда fi 1 е. Следующий пример демонстрирует способ перехода в папку с документацией, касающейся командного пpot.teccopa bash, и использование коман­ ды fi 1 е для отображения типов файлов в данной папке:

$ cd /usr/share/doc/ $ fi 1 e doc - base/i nsta1 1 · docs. html doc - base/ i nsta1 1 -docs. htm1 : XML 1. 0 document text $ fi l e doc · base/copyright doc - base/copyri ght : ASCI I Eng1 i sh text $ fi l e doc - base/doc · base. html Типы файлов doc - base/doc - base. html / : di гectoгy $ fi 1 e doc/doc - base/change1 og. gz doc - base/change1 og. gz: gzi p compгessed data. wa s "change1 og ". fгom Uni x. l ast modi fi ed: Thu Feb 22 07 : 29: 26 2007. max compгessi on $ fi 1 e shared - mime- i nfo/shared- mime- i nfo- spec. pdf sha гed -mi me - i nfo/sha гed -mi me- i nfo - spec. pdf: PDF document. veгsi on 1. Команда fi 1 е отображает файлы-документы различных форматов, находящие­ ся в папках, содержащих документацию по Ubuntu. Эта команда может опреде­ лить, сжат ли текст, формат документа, в котором он может быть выведен на печать (PDF или PostScript), а также обычный ли это незашифрованный текст или он содержит метку HTML. Команда способна определить даже по.ztпапки, что являет­ ся достаточно неожиданным, поскольку они имеют дополнительные для них име­ на ( doc-base. html ).

Создавать обычные файлы можно посредством любого приложения, которое может сохранять данные. Если вы просто хотите создать стой файл, чтобы на­ ча работу с него, воспользуйтесь одним из следующих способов:

$ touch /tmp/newfi 1 e. txt Создает пустой файл $ > /tmp/newfi 1 e2. txt Создает пу той файл с Определение полного описания файла является еще одним способом опреде­ лить его тип:

$ 1 s - 1 /tmp/newfi 1 e2. txt Отображает файл для определения его типа - гw- г - - г- - 1 chгi s chгi s О Sep 5 14 : 19 newfi l e2\ Знак дефиса ( - ) является первым символом десятисимвольной информации о правах доступа к файлу ( - гw- г- - г- - ), который свидетельствует о том, что данный файл является обычным (подробнее о правах доступа рассказывается в следующем разделе). Команды также являются обычными файлами, но сохраняются как ис­ полняемые. Рассмотрим еще несколько примеров определения типа файла:

b $ 1 s - 1 /usr/ in/apt - key - гwхг - хг - х 1 гооt гооt 2230 2007 - 03- 14 12 : 44 /usг/bi n/apt- key $ fi l e /usr/bi n/apt - key /usг/bi n/apt-key: Bouгne shel l scгi pt text executaЫ e $ fi 1 e /bi n/l s /bi n/1 s : ELF 32 - bi t LSB executaЫe. I ntel 80386. veгsi on 1 C SYSV). fог GNU/ Li nux 2. 6. 0. dynami cal ly l i nked ( uses sha гed 1 i bs). stгi pped Как вы могли заметить, команда аргороs выполняется через свойство х для вла­ дельца, группы и др. Выполнение команды fi 1 е для файла apt- key позволяет уви­ деdь, что он является сценарием командного процессора. Эта команда противопо­ ставляется исполняемому двоичному коду, как, например, приведеиная выше команда l s.

Ка талоги Ка ог представляет собой место хранения файлов и подкаталогов. Они организу­ ются в иерархическом порядке от корневого (/) до многочисленных подкаталогов, бот 92 Глава 4. Ра а с файhами отделяемых друг от друга символом 1. При работе с кат огами через графические файловые менеджеры их принято называть папк и.

Чтобы создать новый кат ог для хранения данных, воспользуйтесь командой mkdi г. Ниже приведены некоторые примеры использования данной команды, опи­ сывающие различные пути создания кат огов:

$ mkdi r /tmp/new Создае т ка талог new в ltmp $ mkdi r - р /tmp/a/Ьic/new Создает по нере необходимости ка талог нижнего уровня для new $ mkdi r - m 700 /tmp/new2 Создает ка талог new2 с правани доступа drwx- - Первая команда mkdi г создает новый кат ог в уже существующем катальге /tmp.

Во втором примере кат оги создаются по мере необходимости (подкаталоги а, Ь и с), чтобы в результате был создан кат ог new. В последнем примере, чтобы установить права доступа к кат огу, добавляется параметр -m.

Поскольку первым символом строки доступа к кат огу является буква d, дан­ ный файл может быть определен как кат ог:

$ fi 1 e /tmp/new /tmp/new : di гectoгy $ 1 s · 1 /tmp drwxг- xг - x 2 eгi cfj eгi cfj 4096 2007 - 09 - 11 07 : 25 new Говоря о кат огах, необходимо также отметить, что, если вы хотите, чтоеы пользователи могли использовать свои кат оги в качестве рабочих, для них долж­ ны быть установлены исполняемые биты (х).

С ж имвольные и е кие ссыпки Чтобы избежать копирования файлов и кат огов в различные части файловой системы, можно использовать ссылки, позволяющие открывать доступ к одному файлу из разных мест. Linux поддерживает гибкие (обычно называемые с воль­ н и) и жесткие ссшки.

Когда вы пытаетесь открыть с вольную ссь, указывающую на файл, или перейти по ссылке, указывающей на каталог, выполняемая команда перенаправит вас к соответствующему файлу или кат огу. Объект ссылки обладает собствен­ НЪIМИ оравами доступа и оравами собственности, которые не могут быть опреде­ лены на основании содержащейся в символьной ссылке информации. Символьная ссылка не обязательно должна располагаться на том же разделе диска, что и сам объект. На самом деле символьная ссылка может существовать даже при отсут­ ствии объекта.

Жесткая ссь ка, напротив, может существовать только для файлов (не кат о­ гов) и обычно является одним из способов присвоения имени конкретному физи­ ческому файлу. Каждый файл обладает по меньшей мере одной символьной ссыл­ кой, под которой обычно понимается сам файл. Любые дополнительные имена (жесткие ссылки), указывающие на данный отдельно взятый файл, должны нахо­ диться на том же разделе, что и сам файл-объект ссылки (по большому счету, Типы файлов чтобы определить, что файлы являются жесткими ссылками, достаточно выявить, что они обладают одним и тем же номером inode ). Изменение прав доступа, прав собственности, отметок даты и времени или содержимого любой жесткой ссылки вызовет соответствующие изменения и в самом файле, однако уд ение ссылки не повлечет за собой удаление самого файла - он будет существовать до тех пор, пока не будет удалена последняя жесткая ссылка на него.

Ниже приведено несколько примеров использования команды 1 n для создания жестких и символьных ссылок:

$ touch myfi 1 e $ 1 п myf1 1 e myfi 1 e- hard1 i nk $ 1 n - s myfi 1 e myfi 1 e- sym1 ink $ 1 s - 1 1 myfi 1 e* 292007 - rw- r- - r- - 3 francoi s francoi s О Ma r 25 00 : 07 myfi 1 e 292007 - rw- r- - r- - 3 francoi s francoi s О Ma r 25 00 : 07 myfi 1 e- hard1 i nk 292008 1 rwxrwxrwx 2 francoi s francoi s б Ma r 25 00 : 09 myfi 1 e- sym1 i nk Стоит отметить, что здесь отображения результатов после создания жестких и символьных ссылок была использована команда 1 s - 1 i'. Параметр - 1 i отображает номера inode, сопоставляемые с каждым файлом. Так, вы можете видеть, что и myfi 1 е, и myfi 1 e- ha rd1 i nk имеют одни и те же номера inode - 292007 (точно обозначающие файл на жестком диске). Символьн ссылка myfi 1 е- sym1 i nk имеет уже другой номер inode, и, хотя жеткая ссылка фигурирует просто как файл (знак - ), символьная ссылка обозначена уже как ссылка (1 ) с полностью открытыми оравами доступа.

Вы не сможете определить, разрешен ли вам доступ к файлу, на который указывает символьная ссылка, пока вы не перейдете по ней или не просмотрите сам файл.

Файлы рой в у Когда приложениям необходима связь с устройствами компьютера, они направля­ ют данные в файлы соответствующих устройств. По умолчанию фа ы устройств хранятся в папке 1 dev. Сами же устройства обычно делятся на блочные (например, хранилища) и идентификаторы накопителя (например, последовательные порты и конечные устройства).

Ф й. В Linux UNIX операционная си ема почти все а лы у рой в ча о называют драйверами и т рпретирует как » ин е файл, откуда и термин «файлы у рой в.

Каждый файл устройства связывается с технологическим устройством (при этом указывается тип этого устройства) и номером устройства (указывается номер экземпляра устройства). Например, конечные устройства представлены техноло­ гическим устройством под номером 4, в то время как жесткие диски SCSI представ­ лены технологическим блочным устройством под номером 8. Вот несколько при­ меров файлов устройств:

$ 1 s - 1 /dev/ttyO /dev/sdal Отображает специальные иден тифика торы накопителя brw- rw- - - - 1 root di sk 8, 1 2007 - 09- 05 08 : 34 /dev/sda crw- rw- - - - 1 root root 4. О 2007 - 09-05 08 : 34 /dev/ttyO Глава 4. Ра та с файлами Чтобы получить информацию о команде MAKEDEV, предназначенной для отобра­ жения списка номеров и имен устройств в Ubuntu Linux, ознакомьтесь с онлайн­ страницей справочника, посвященной этой команде. Большинство файлов устройств создается автоматически во время.загрузки, поэтому большинство людей никогда вручную не создает файлы устройств. Тем не менее, воспользовавшись командой mknod, вы можете создать собственный файл устройства:

$ sudo mknod /dev/tt 4 с 4 68 Добавляе т устройство для пя того серийного порта Отображае т список новых файлов устройств $ 1 s · 1 /dev/tt crw- r - - r - - 1 root root 4. 68 Sep б 00 : 35 /dev/ttyS Именованные каналы и сокеты Если вам необходимо, чтобы информация из одного процесса передав ась в дру­ гой, достаточно передать выводимые данные одного процесса во вход другого.

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

Именованные кан ы и сокеты часто размещаются Приложениями в папке /tmp.

Ниже приведено неско ко примеров именованных кан ов и сокетов:

$ 1 s · 1 /tmp/. ТV· chri s/tvti fi fo· 1 oca1 /tmp/. Xll· uni x/XO prw- - - - - - - 1 chri s chri s О Sep 26 2007 /tmp/. TV-chri s/tvti mefi fo - 1 oca srwxrwxrwx 1 root chri s О Sep 4 01 : 30 /tmp/. X 11 - uni x/ XO В первом случае речь идет об именованном канале, установленном в tvtime ТV card player (символ р в нач е означает, что это именованный кан ). Во втором случае речь идет о сокете, установленном GUI Х для связи между процессами.

Чтобы создать собственный именованный кан, воспользуйтесь командой mkfi fo:

$ mkfi fo mypipe $ 1 s · 1 mypi pe prw- r - - r- - 1 chri s chri s О Sep 26 00 : 57 mypi pe У д й м п ановл ни рав о па е е к а ла ф п п ам и а к Возможности доступа к файлам, выполнения команд и перехода к каталогам могут быть ограничены настройками прав доступа для пользователя, группы пользова­ телей и др. При составлении полного списка файлов и каталогов в Linux (команда 1 s - 1 ) первые 1 О отображаемых символов определяют сам элемент (файл, каталог, блочное устройство и т. д.), с которым или без которого этот элемент может быть прочитан, записан и/или выполнен. На рис. 4. 1 показаны значения этих симво­ лов.

У ановление прав па к файлам и папкам 421 421 42 \ 1 d р Польэователь Д угие Рис. 4.1. Права па, у анавливаемые я файлов и каталогов Для выполнения примеров, приведеиных в данном разделе, создайте кат ог /tmp/test и файл /tmp/testlhe1 1 о. txt, а затем отобразите оба эти элемента:

$ mkdi r /tmp/test $ echo "so text" > /tmp/test/he1 1 o. txt $ l s - 1 d /tmp/test/ /tmp/test/hel 1 o. txt drwxr - xr - x 2 francoi s sa1 es 4096 Ma r 21 13 : 1 1 /tmp/test - rw- r- - r- - 2 francoi s sa1 es 10 Ma r 21 13 : 1 1 /tmp/test/he1 1 o. txt Первый символ полученного списка указывает на то, что /tmp/test является каталогом ( d), а he1 1 о. txt - файлом (- ). Другими типами файлов, доступными для Linux и определяемыми первым символом, являются идентификаторы накопителя (с), блочные устройства (Ь) или символьные ссылки (1 ), именованные кан ы (р) и сокеты (s).

Следующие девять симво:1юв определяют права доступа к файлу и кат огу.

Первая группа символов rwx обозначает, что владельцу (francoi s) предоставлены права на чтение, запись и выполнение файлов в данном кат оге. Ан огичным образом можно сказать, что группа sa 1 es обладает более ограниченным доступом (r-x) к каталогу без права записи в него. Все ост ьные пользователи также обла­ дают оравами только на чтение и выполнение ( r- х) - дефис обозначает отсутствие прав записи. Что же касается файла he1 1 о. txt, то здесь пользователь обладает ора­ вами на чтение и запись ( rw- ), а пользователи группы и все ост ьные - только на чтение (r- -).

При изменении прав доt:тупа к элементам каждое значение может быть пред­ ставлено в виде восьмеричного числа (чтение - 4, запись - 2, а выполнение - 1) или буквенно ( rwx). Вообще, право на чтение предоставляет возможность просмат­ ривать содержимое кат ога, на запись - изменять (добавлять или модифициро­ вать) его, а на выполнение - переходить (другими словами, получать доступ) к нему.

Если вас не устраивают настройки прав доступа к известным вам файлам или каталогам, то можете поменять их помощью команды chmod.

ю менение прав до па с помощь команды 1mod Команда chmod позволяет изменять права доступа к и кат огам. В табл. 4. приведены некоторые примеры использования команды chmod, а также получения доступа к каталогам и изменения файлов.

96 Глава 4. Работа с файлами Та ица 4.1. Изменение прав до па к файлам и каталогам манда chmod О игинаnьнь1е Н в е Ко р о ы е Опи ни (в ьмеричным права д па права о чи ом до па иnи буквами) d chmod 0 00 апу x------ Влад ец может читать, записывать файлы в данный каталог, а также переходить в него. Все о альные пользователи (за ис ючением суперпользователя) не имеют к нему до па chmod 0 11 any d x--x--x Владелец обладает теми же правами.

Все о альные могут открывать каталог, но не могут просматривать или изменять файлы в нем. Это может быть полезно я усиления защиты сервера, когда необходимо запретить просмотр содержимого каталога, но требуется открыть до п к отдельному файлу d -r- chmod go+r d x------ xr- Добавление прав чтения каталога может приве и к нежелат ьным результатам, однако е и не выполнить этого дей вия, другие не смо просматривать файлы, содерж иеся в нем d chmod 07 any x x x Полный до п chmod a= x d-------- chmod оооо any До п полно ью закрыт. Данные изменения могут пригодиться, е и chmod· a- x необходимо за щитить каталог от учайных изменений, однако при этом программам резервного копирования, запущенным обычным пользоват ем, может не уда ься о ще вить резервное копирование содержимого каталога chmod 666 any - - - - Открывает права на чтение и изменение файла chmod go- - - - - - ------- Не позволяет никому, кроме самого владельца, просматривать, вносить изменения или удалять файл chmod 644 any - -r--r-- Только владелец может вносить изменения в файл или удалять его, но все могут его просматривать Первый ноль в строке режима обычно опускается (то есть допускается исполь­ зование 777 вместо 0777). Этот структурный ноль имеет специальное значение: это восьмеричная цифра, которая может использоваться в командах (исполнитель­ ных) для обозначения того, что данная команда может выполняться как програм­ ма-установщик идентификатора пользователя (UID) (4), программа-установщик идентификатора группы (GID) (2) или стать битом закрепления в памяти (1).

У ановление прав доступа к файлам и папкам С программами-установщиками UID и GID команда выполняется с правами до­ ступа, назначенными для пользователей или групп (а не с правами пользователя или группы, запустивших команду).

SUID не а должны испол оваться в сценариях командного процессора. В р зделе справки Liпux, ится ующ предупреждение: «SUID-сценарии омандного п вященном б опасн и, содерж процессара пр авляют со ой серь ную угрозу безопасн и, и именно по этой причине ядро б не принимает их. Каким ы безопасным не считали сценарий командного процессора, он мо б вы ж эксплуатироваться взломщиками я получения ими прав суперпольэоват я».

Н ичие активного для кат ога бита закрепления в памяти ограждает пользо­ вателей от угрозы переноса или переименования файлов, хранящихся в кат оге, владельцами которого они не являются (например, /tmp). Однако, если указать верные настройки прав доступа, пользователи смогут изменять содержимое фай­ лов кат ога с битом закрепления в памяти, владельцами которых они не являют­ ся. Последним символом, используемым для определения прав доступа, являет­ ся t (вместо х в кат оге бита закрепления в памяти). Ранее команда с активным битом закрепления остав ась в памяти, даже когда не использов ась. Это старая характеристика UNIX, не поддерживаемая более в Linux.

Параметр - R является полезным элементом команды chmod. С его помощью нач а можно рекурсивно измен права доступа ко всем файлам и кат огам, я с определенной точки файловой системы:

$ sudo chmod · R 700 /tmp/test Предоставляет полные права доступа только к содержинону ка талога /tщpltest $ sudo chmod ·R 000 /tmp/test Снимает все права доступа к содержинону ка талога ltmpltest $ sudo chmod - R a+rwx /tmp/test Предоставляет полные права доступа ко всену содержинону ка талога ltщp/test Следует отметить, что параметр -R в ючается в указанный вами кат ог. Таким образом, вышеуказанные права доступа, например, заменятся на права Доступа к каталогу /tmp/test, а не только к файлам и кат огам, содержащимся в нем.

umask Команда Права доступа к файлу или кат огу обычно определяются при создании соответ­ ствующего элемента. Способ назначения этих прав основывается на текущем зна­ чении um k пользователя. Используя команду umask, вы можете установить права доступа к файлам и кат огам при их создании.

$ umas 0066 Создает ка талоги с правани доступа drwx- -x- -x и файлы с правани доступа -rw- - - - - - $ umas 0077 Создает ка талоги с правани доступа drwx- - - - - - и файлы с правани доступа -rw- - - - - - $ umas 0022 Создает ка талоги с правани доступа drwxr -xr -x и файлы с правани доступа -rw-r - -r- $ umas 0777 Coздaeт ка талоги с правани доступа d- - - - - - - - - и файлы с правани доступа - - - - - - - - - Глава 4. Работа с файлами Изменение прав соб венно и Когда вы создаете файл или кат ог, на него назначается ваша учетная запись. Это и есть ваша основная группа. Будучи суперпользователем, вы можете, используя команды chown и chgrp, изменить права собственности (пользователи) и груп, назначенные файлу:

$ chown chri s test/ Изменяет владельца на chris $ chown chri s: market test/ Изменяет владельца на chris. а группу на market $ chgrp market test/ Изменяет группу на market $ chown - R chri s test/ Изменяет владель ца всех вложенных файлов и ка талогов папки test/ на chris Описанный выше рекурсивный параметр команды chown ( - R) полезен, если не­ обходимо изменить права собственности всего дерева кат огов. Как и в случае с командой chmod, рекурсивное использование chown изменяет права доступа для названного кат ога и всего его содержимого. Обычно рекурсивное использование команды chown применяется, если кто-то уходит из компании или прекращает пользоваться вашим интернет-сервисом. В этом случае с помощью параметра - R команды chown можно изменить владельца их общего или домашнего кат ога на другого пользователя.

а игация по а ово си м в ф й й е е Н п Основные команды, предназначенные для перемещения по каталогам ( cd), провер­ ки текущего кат ога (pwd), просмотра содержимого каталога (1 s ), хорошо известны даже непрофессиональным пользователям командной консоли. Этот раздел посвя­ щен некоторым менее известным параметрам этих команд, а также особенностям навигации по файловой системе. Вот несколько примеров использования команды cd и навигации по файловой системе:

$ cd Переходит в ваш основной ка талог $ cd $НОНЕ Переходит в ваш основной ка талог $ cd - Переходит в ваш основной ка талог $ cd -francoi s Переходит в основной ка талог поль зова теля francois $ cd - Переходит в предыдущий рабочий ка талог $ cd $0LDPWD Переходит в предыдущий рабочий ка талог $ cd -/puЬl i c_html Переходит к puЫ ic_html в вашем основнон ка талоге $ cd.. Переходит в корень рабочего ка талога $ cd /usr/bi n Переходит в ка талогу usr/Ыn из корневого ка талога $ cd usr/bi n Переходит ко вложенной папке usr/Ыn рабочего ка талога Если вы хотите узнать, какой кат ог Иетси рабочим, воспользуйтесь ко­ мандой pwd:

$ pwd /home/francoi s Создание с волыtь ссылок является одним из способов получить доступ к файлу из других частей файловой системы (для получения более подробной Навигация по файловой си еме информации о символьных и жестких ссылках обратитесь к подразд. символьные и жесткие ссылки• ). Однако символьные ссылки могут вызвать некоторую Jiута­ ницу при отображении корневых каталогов. Следующие команды создают в ката­ логе /tmp символьную сс ку на ваш основной каталог и демонстрируют способ определения типа связи с каталогом, на который производится ссылка:

$ cd $НОНЕ $ l n - s /tmp tmp- l i nk $ l s - 1 tmp- l i nk l rwxrwxrwx 1 francoi s francoi s 13 Ма г 24 12 : 41 tmp- l i nk -> /tmp $ cd tmp- l i nk/ /home/ francoi s/tmp- l i nk $ pwd. р /tmp $ pwd · L /home/ francoi s /tmp- l i nk $ cd · L..

/home/ francoi s $ cd tmp- l i nk $ cd - Р $ pwd Использование параметров - Р и:- L для команд pwd и cd позволяет работать с ка­ т огами, сввзан и симво ными сс и, из их основных месторасполо­ жений или ссылок на них соответственно. Например, команда cd - L.. перемеща­ ет вас на один уровень вверх относительно вашего основного каталога, тогда как команда cd - Р.. перемещает вас на один уровень выше корневого каталога (/).

Аналогично параметры · Р и · L команды pwd отображают основные месторасполо­ жения каталогов и ссылки на них.

Bash может запоминать и хранить список рабочих каталогов. Этот список может быть полезен, если вы захотите вернуться к ранее открываемым каталогам. Для до­ бавлении и удаленив каталогов из этого списка используйте команды pushd и popd:

$ pwd /home/ francoi s $ pushd /usr/share/man/ /usr/share/man $ pushd /var/l og/ /var/l og /usr/share/man $ di rs /var/l og /usr/share/man $ di rs - v О /var/l og 1 /usr/share/man 2 100 а а с файлами Глава 4. Р $ popd /usr/.ha re/man $ pwd /usr/share/man $ popd $ pwd /home/franeoi s К оманды di rs, pushd и popd также могут быть использованы для управления порядком отображения каталогов в стеке. Например, ком11нда pushd - 0 перемещает последний каталог из стека на самый верх (делая его рабочим), команда pushd - перемещает третий каталог снизу стека на его верх и т. д.

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

$ cd : touch index. html $ mkdi r /tmp/html $ ер - i i ndex. html ·/tmp/html / $ ер · i l i ndex. html /tmp //html $ mkdi r /tmp/baek $ ер - а /tmp /html /mp/back/ $ ер - R /tmp /html /tmp/baek/ В приведеиных примерах продемонстрированы способы копирования файлов.

В первом примере использования команды ер, если файл i ndex. htm1 уже существу­ ет в папке /tmp/ html, перед перезаписью поверх него нового файла отобразится запрос на подтверждение этого действия. В следующем примере файл i ndex. html является объектом жесткой ссылки, имеющей то же имя и хранящейся в каталоге /tmp/html. В данном случае, поскольку обе жесткие ссылки указывают на один и тот же файл, редактирование файла через любую ссылку повлечет за собой изменение содержимого оригинального файла, где бы он ни находился (ссылка может рабо­ тать только в том случае, если каталог /tmp/ html и ваш основной каталог находятся в одной и той же файловой системе).

Команда ер - а копирует все файлы из каталога /tmp/ html, сохраняя все настрой­ ки прав собственности и доступа. Если, например, файл /tmp/baek будет представ­ лен запоминающим USВ-устройством, то с помощью этой команды можно будет записать содержимое вашего интернет-сервера на данное запоминающее устрой­ ство. Параметр - R осуществляет рекурсивное копирование структуры каталога опирование файлов К и назначает в качестве владельца каталога текущего пользователя, изменяя теку­ щие отметки даты и времени.

К оманда dd также предназначена для копирования данных. Она весьма эффек­ тивна, поскольку в системах Linux все элементы рассматриваются как файлы, включая периферийные устройства, например:

$ dd 1 f•/dev/zero of•/tmp/m ul l fi l e count•l 1+0 records i n 1+0 records out 512 bytes ( 512 В) copi ed. 0. 000308544 s. 1. 7 MB/s Файл 1 dev 1 zero является специальным файлом, генерирующим нулевые симво­ лы. В предыдущем примере команда dd использовала файл /dev/zero в качестве файла входящих данных и выводила данные в файл /tmp/mynu1 1 fi 1 е. Единицей измерения здесь является количество блоков. По умолчанию размер одного блока составляет 512 байт. Таким образом, в результате выполнения данной команды получился файл размером 512 байт, содержащий только нули. Для просмотра со­ держимого файла можно воспользоваться командой 1 ess или vi, однако лучшим приложеннем для просмотра файла в данном случае будет команда od:

$ od · vt xl /tmp/m ul l fi l e Просма тривает восьмеричный дамп файла Вот еще один пример использования команды dd:

$ dd i f•/dev/zero of•/tmp/m ul l fi l e count•lO bs• 10+0 records i n 10+0 records out 20 bytes ( 20 В) copi ed. 0. 0005957 14 s. 33. 6 kB/s На этот раз размер блока был установлен равным 2 байтам, а скопировано было 10 блоков (20 байт). Следующая командная строка копирует первый раздел основного жесткого IDЕ-диска на второй раздел подчиненного жесткого IDЕ­ диска (прежде чем приступить к выполнению подобной операции, выполните ре­ зервное копирование данных):

$ sudo dd i f•/dev/hdal of•/dev/hdb е б ­ Будьт п ьно осторожны при испол овании этой команды. о ще, у вас не должно возник нуть н бходим и пе записывать ча и ж ких дисков.

Следующий пример демонстрирует резервное копирование ведущего жестко­ IDE го диска со сжатием первого раздела. Обычно перед подобным копировани­ ем раздел демонтируется.

$ sudo umount /dev/hdal $ sudo dd i f=/dev/hdal 1 gzip > bootpart. gz Следующая команда копирует файл-образ ISO с компакт-диска или DVD на USВ-носитель (предполагается, что носитель отображен как /dev/sdЫ):

$ sudo dd i f=whatever. i so of=/dev/sdЫ 102 лава 4 а. Р та с файлами Г Стоит отметить, что данная команда создает бинарную копию байтов файла, что, возможно, не соответствует вашим целям.

В следующем примере главная загрузочная запись копируется из основного жесткого диска IDE в файл mymbrfi 1 е:

$ dd i f•/dev/hda of-mymbrfi l e bs•512 count•l Если вам необходимо создать копию образа ISO, записанного на компакт-диск или DVD, вставьте диск в CD/DVD-npивoд и выполните следующую команду (необходимо, чтобы файл /dev/cdrom соответствовал вашему СD-приводу):

$ dd i f•/dev/cdrom of-whatever. i so Помимо файлов у рой в /dev/ rom, Ubuntu создает файлы у рой в /dev/ rw и /dev/dvd.

зм ни атриб о а н И е е е в ф йл а Все файлы и каталоги в Linux обладают определенными оравами доступа на чтение, запись и выполнение, основанными на имени пользователя, группы и др. Однако существуют также другие, присущие только некоторым типам файловых систем атрибуты, которые могут закрепляться за файлами и каталогами.

В файловых системах ext2 и ехtЗ файлы обладают специальными атрибутами, К которые могут использоваться по выбору. оманда 1 sattr позволяет просмотреть эm атриб. Большинство атрибутов являются скрытыми и не назначаются по умолчанию. Ниже приведен пример использования команды 1 sattr для просмотра некоторых атрибутов файлов:

$ l sattr /etc/host* $ l sattr - aR /tmp/ 1 l ess Рекурсивно отображает все атрибуты ка талога /tтр Дефисы соответствуют 13 атрибутам ext2jext3, которые могут быть установле­ ны. Ни один из них не является отображаемым по умолчанию: а (только добавле­ ние), с (сжатый), d (без дампа), 1 (постоянный), j (регистрация данных), s (безо­ пасное удаление), t (запрет слияния в конце файла), u (неудаляемый), А (без обновления atime ), D (синхронные обновления каталогов), S (синхронные обнов­ ления) и Т (верхушка дерева каталогов). С помощью команды chattr вы можете изменять эти атрибуты:

$ sudo chattr +i whatever. i so $ sudo chattr +А - R /home/francoi s/images/* $ sudo chattr +d ubuntu - 7. 04- desktop. iЗSб. i so $ l sattr whatever. i so /ho /francoi s/images/* ubuntu - 7. 04- desktop. iЗSб. i so - - - - - - -А- - - - - /home/ francoi s/i mages /ei nstei n. jpg u- 7. i - - - - - - d - - - - - - ubunt. 04-desktop i ЗBб. so Поиск файлов Как видно из предыдущего примера, при использовании параметра +i файл whatever i so становится постоянным, то есть он не может быть уд ен, переиме­ нован или изменен, а также для него не может быть создана ссылка. Это предот­ вращает любые случайные изменения файла (даже суперпользователь не сможет внести изменения в файл, пока не будет снят атрибут i.) Используйте этот атрибут для обеспечения безопасности системных файлов.

Параметр - R, приведенный в примере, рекурсивно устанавливает параметр +А, что запрещает всем файлам, хранящимся в кат оге i mages и его подкаталогах, изме­ нять время доступа (atime). Установка атрибута А может помочь сэкономить 1/ дисков ноутбуков и флэш-накопителей. Если вы для резервного копирования своих файловых систем ext2/ext3 используете команду dump, то к файлам, обладаю­ щим атрибутом d, копирование Применено не будет. В данном случае мы предпо­ читаем не выполнять копирования больших образов ISO.

Для уд ения атрибута воспользуйтесь командой chatter совместно со знаком - :

$ sudo chattr. ;

whatever. i so Вэломщики, которым успешно ь проникн ь в си ему, ча о за удал меняют некоторые системные бинарные файлы (например, ls или ps} поврежденными версиями и д ают их н тключ.

аемыми По му пол но иногда проверять атриб ы, назначенные исполняемым файлам (например, в ка ­ т алогах /Ьin, /usr/Ьin, /sЬin и /usr/sbln}.

о с м к айлов ф Ubuntu с помощью приложений из пакета mlocate создает базу данных всех фай­ лов файловой системы (с несколькими ис ючениями, заданными в файле /etc/ updatedb. conf). Команда 1 ocate позволяет производить поиск по этой базе данных (в Ubuntu команда 1 ocate представляет собой символьную ссылку на команду sl ocate). Результаты выводятся после завершения поиска по базе данных (а не по самой файловой системе). До внедрения же команды 1 ocate большинство пользо­ вателей Linux для поиска файлов в файловой системе использов и команду fi nd.

Ниже описаны как команда 1 ocate, так и команда fi nd.

оиск locate ю файлов с помощь команд ы Поскольку в базе данных присутствуют имена всех элементов файловой системы, а не только команды, вы можете использовать 1 ocate поиска кома, устройств, с аниц справочника man, файлов и бого другого элемента фай овой системы, распознаваемого по име :

$ 1 ocate elOOO / l i Ь/modu1 es/2. 6. 20- 16-generi c/ kerne1 /dri vers/net/e /l i Ь/modu1 es/2. 6. 20- 16- generi c/kerne1 /dri vers/net/e1000/e1000. ko /l i Ь/modul es/2. 6. 20 - 15 -generi c/kerne1 /dri vers/net/e /l i Ь/modu1 es/2. 6. 20- 15-generi c/kerne1 /dri vers/net/e1000/e1000. ko /usr/src/l i nux- headers - 2. 6. 20- 16-generi c/i ncl ude/confi g/e /usr/src/1 i nux- headers - 2. 6. 20- 16-generi c/i nc1 ude/confi g/e1000/napi. h /usr/src/ 1 i nux- headers - 2. 6. 20- 16-generi c/i nc1 ude/confi g/e1000. h 104 лава 4. абота с файлами Г Р /usr/src/ 1 i nux- headers - 2. 6. 20- 15 - generi c/i nc1 ude/confi g/e /usr/src/ 1 i nux- headers- 2. 6. 20- 15-generi c/ i nc1 ude/confi g/e1000/napi. h /usr/src/ 1 i nux- headers - 2. 6. 20- 15-generi c/i nc1 ude/confi g/e1000. h /usr/src/ 1 i nux- headers - 2. 6. 20- 15/i nc1 ude/confi g/e1000. h /usr/src/1 i nux- headers- 2. 6. 20- 15/dri vers/net/e /usr/src/1 i nux- headers- 2. 6. 20- 15/dri vers/net/e1000/Makefi 1 e /usr/src/1 i nux- headers - 2. 6. 20- 16/ i nc1 ude/confi g/e1000. h /usr/src/1 i nux- headers- 2. 6. 20- 16/dri vers /net/e /usr/src/ 1 i nux- headers- 2. 6. 20- 16/dri vers/ net/e1000/Makefi 1 e В приведеином выше примере было найдено две версии модулей ядра е1OOO.ko.

Стоит заметить, что команда 1 ocate, если не использовать параметр - i, является чувствительной к регистру:

$ l ocate - i itco wdt /1 i Ь/modu1 es/2. 620 - 16-generic/kerne1 /dri vers/cha r/watchdog/i TCO wdt. ko /1 i Ь/modu1 es/2. 6. 20- 15-generi c/kerne1 /dri vers/cha r/watchdog/i TCO=wdt. ko Пакет s 1 ocate (в некоторых дистрибутивах Linux называемый m1 ocate) включа­ ет в себя cron job, который для обновления базы данных файлов 1 ocate ежедневно выполняет команду updatedb.

Чтобы неме енно обнов базу данн locate, вручную выполните команду updatedb:

$ sudo updatedb ю ение ме онахо ения файлов с помощь пр О find команды До внедрения команды 1 ocate поиск файлов производился с помощью команды fi nd. Хотя команда 1 ocate осуществляет поиск быстрее, у fi nd есть множество дру­ гих эффективных параметров, полезных для выполнения поиска файлов, основы­ вающегося не на имени, а на других атрибутах.

С му, nрежде каниро ние ц ой фай овой си емы мож занять д аточно много в мени, nо л чем пристуnить к нему, поnро у б йте просканировать nодси ему файловой си емы или ис ючить некоторые каталоги или удаленно смонтированные файловые си емы.

В следующем примере выполняется рекурсивный поиск файла с именем е в корневой файловой системе (/):

$ fi nd 1 - name "elOO*" - pri nt fi nd : /usr/1 i Ь/audi t: Permi ssi on deni ed fi nd : /usr/1 i bexec/utempter : Permi ssi on deni ed /sys/modu1 e/e /sys/bus/pci /dri vers/e Результатом выполнения команды fi nd от имени обычного пользователя может стать длинный список сообщений Permi ss i on deni ed (Отказано в доступе), посколь­ ку команда fi nd пытается просмотреть каталоги, к которым вы не имеете прав Поиск файлов доступа. Для избежания этого вы можете ис ючить из поиска недоступные ка­ т о :

$ fi nd 1 - name elOO - pri nt 2>&1 1 grep - v "Permi ssion deni ed" Или отправить все сообщения об ошибках в битоприемник ( корзину•) 1 dev nu1 1 :

$ fi nd 1 - name elOO - pri nt 2> /dev/nu1 Поскольку команда fi nd является чувствительной к регистру и имя необходимо вводить точно (поиск имен е100 и е100. ko даст различные результаты), вы можете более точного поиска испо зовать регулярные выражения:

$ fi nd 1 - na ' elOO* ' - pri nt /1 i Ь/modu1 es /2. 6. 20- 16-generi c/kerne1 /dri vers /net/e /1 i Ь/modu1 es/2. 6. 20 - 16-generi c/ kerne1 /dri vers/net/e1000/e1000. ko /1 i Ь/modu1 es/2. 6. 20- 16- generi c/ kerne1 /dri vers/net/e100. ko /1 i Ь/modu1 es/2. 6. 20 - 15 -generi c/kerne1 /dri vers/net/e /1 i Ь/modu1 es/2. 6. 20 - 15-generic/kerne1 /dri vers/net/e1000/e1000. ko /1 i Ь/modu1 es/2. 6. 20 - 15 -generi c/kerne1 /dri vers/net/e100. ko /usr/src/ 1 i nux- headers- 2. 6. 20- 16-generi c/ i nc1 ude/confi g/e100. h /usr/src/ 1 i nux headers - 2. 6. 20 - 16- generi c/i nc1 ude/ confi g/e /usr/src/ 1 i nux- headers - 2. 6. 20 - 16- generi c/ i nc1 ude/confi g/e1000. h /usr/src/1 i nux- headers - 2. 6. 20- 15 -generi c/i nc1 ude/confi g/e100. h /usr/src/ 1 i nux- headers - 2. 6. 20 - 15 -generi c/ i nc1 ude/confi g/e /usr/src/ 1 i nux- headers - 2. 6. 20 - 15 - generi c/i nc1 ude/confi g/e1000. h /usr/src/ 1 i nux- headers - 2. 6. 20 - 15/ i nc1 ude/confi g/e100. h /usr/src/ 1 i nux- headers - 2. 6. 20 - 15/ i nc1 ude/confi g/e1000. h /usr/src/ 1 i nux- headers - 2. 6. 20- 15/dri vers /net/e /usr/src/1 i nux- headers - 2. 6. 20 - 16/i nc1 ude/ confi g/e100. h /usr/src/ 1 i nux- headers - 2. 6. 20 - 16/i nc1 ude/confi g/e1000. h /usr/src/ 1 i nux- headers - 2. 6. 20 - 16/dri vers/net/e Кроме того, вы можете осуществлять поиск файлов по временным меткам.

Следующая команда осуществляет поиск файлов в каталоге /usr/Ьi n/, к которым обращались в последние две минуты:

$ fi nd /usr/bi n/ - ami n -2 - pri nt /usr/Ьi n/ /usr/Ьi n/fi nd Следующая же команда ищет в каталоге /home/chri s файлы, к которым не обра­ щались более 60 дней:

$ fi nd /ho /chri s/ - atime + Для поиска кат огов предназначен параметр - type d. Следующая команда ищет все подкаталоги 1 etc и перенаправляет stderr в корзину ( 1 dev 1 nu 1 1 ):

$ fi nd /etc - type d - pri nt 2> /dev/nu1 Данная команда находит в каталоге 1 sbl n файлы с правами доступа, соответ­ ствующими 750:

$ fi nd /sbi n/ - perm 750 - pri nt.

106 лава 4 а а с фай ами Г Р л Параметр ехес команды fi nd является весьма эффективным, поскольку он по­ зволяет воздействовать на найденные с помощью команды fi nd файлы. Следующая команда ищет в каталоге /var все файлы, владельцем которых является francois (должен быть зарегистрированным пользователем), и выполняет для каждого из них команду 1 s · 1 :

$ fi nd /var - user francoi s - ехес 1 s - 1 {} \;

Альтернативным параметру ехес команды fi nd является параметр xa rgs:

$ fi nd /var - user francoi s - pri nt 1 xargs 1s · В действиях данных команд есть существенные различия, поэтому и результа­ ты их выполнения очень разные. Команда fi nd -ехес применяет для каждого полу­ К ченного результата поиска 1 s. оманда же xa rgs работает более эффективно, по­ скольку в качестве вводимых данных для одной команды 1 s применяет множество результатов поиска.

Чтобы инверmровать критерий поиска, поставьте перед этим критерием вос­ клицательный знак ( ! ). В следующем примере выполняется поиск всех файлов, которые не являются собственностью группы o t и являются обычными файлами, а затем для каждого из них выполняется команда 1 s - 1 :

$ fi nd 1 ! - group root - type f - pri nt 2> /dev/nu1 1 1 xargs 1 s -. В следующем примере осуществляется поиск файлов в каталоге /sЬi n, которые являются обычными файлами с закрытыми оравами доступа на запись, а затем для каждого из них применяется команда 1 s - 1 :

$ fi nd /sbi n/ - type f ! - perm /o+w - pri nt 1 xargs 1 s - - rwxr - xr - x 1 root root 3056 2007 - 03 - 07 15 : 44 /sbi n/acpi avai 1 aЫe - rwxr - xr - x 1 root root 43204 2007 - 02 - 18 20 : 18 /sbi n/a1 sact Поиск фа ов определенного размера является прекрасным способом опре­ делить, что занимает место на ваших жестких дисках. Следующая команда ищет все файлы, размер которых превышает 10 Мбайт (+10М), составляет список этих файлов в порядке от самых крупных до наиболее мелких (1 s - 1 S) и направляет этот список в текстовый файл (/tmp/Ьi gfi 1 es. txt ):

$ fi nd 1 - xdev - si ze +lOH - pri nt 1 xargs 1 s - 1 S > /tmp/bi gfi 1 es. txt В данном примере параметр - xdev запрещает поиск в любых смонтированных файловых системах, кроме файловой системы суперпользователя. Это способ по­ зволяет запретить команде fi nd производить поиск в каталоге /proc и любой уда­ ленно или локально смонтированной файловой системе.

Другие команды я поиска файлов Среди других команд, предназначенных для поиска файлов, можно назвать коман­ ды wherei s и whi ch:

$ wherei s man man : /usr/bi n/man /usr/X11R6/bi n/man /usr/bi n/X11/man /usr/1 oca 1 /man /usr/share/man /usr/share/man/man1/man. 1. gz /usr/share/man/man7/man. 7. gz Получение подробной информации о файлах $ which 1 s /Ьi n/1 s Команда wherei s позволяет осуществлять поиск не только команд, но и страниц справочника man, а также конфигурационных файлов, связанных с соответству­ ющей командой. Как видно из приведеиного выше примера, запрос команде wherei s на поиск слова man возвращает исполняемый файл man, его конфигурационный файл, а также месторасположение МАN-страниц для команды man. Второй пример (команда whi ch) отображает адрес исполнительного файла 1 s (/Ьi n/1 s). Команда whi ch полезна, если необходимо определить расположение исполняемого файла в переменной РАТН:

' $ dpkg- query -S whi ch ps· procps : /Ьi n/ps ч б д б а олу ни ол по ро но ин орм ции е е ее й ф П о а ла ф й х Теперь, когда вам известно, каким образом можно искать файлы, вы можете полу­ чать более подробную информацию о них. Использование менее общих параметров команды 1 s позволяет отображать информацию о файле, которую вы не могли бы увидеть без их использования. Такие команды, как fi 1 е, помогают определять тип файла, а используя mdSsum и sha1sum, можно проверять подлинность файла.

а тобр ение спис а файлов ж О к Даже если вы хорошо знакомы с командой 1 s, вам могут быть незнакомы многие полезные параметры этой команды, которые позволяют получать большое коли­ чество информации, касающейся файлов вашей системы. Ниже приведено не­ сколько примеров использования команды 1 s для отображения длинных спи­ сков ( - 1 ) файлов и каталогов:

$ 1 s - 1 Отображает список файлов и ка талогов в текущем ка талоге $ 1 s - 1 а Отображает файлы и ка талоги. начинающиеся с точки (. ) $ 1 s - 1 t Сортирует файлы по времени последнего изменения $ 1 s - 1 u Сортирует файлы по времени последнего открытия $ 1 s - 1 S Сортирует файлы по размеру $ 1 s - 1 1 Отображает список нонеров inode. связанных с каждым файлом $ 1 s - 1 n Отображает внесто инен числовые идентифика торы пользова теля/группы $ 1 s - 1 h Отображает размеры файлов в удобной для чтения форме (Кбайт. Мбайт и т. л. ) $ 1 s - 1 R Рекурсивно отображает файлы из рабочего ка талога и его подка талогов Существуют также способы по-разному отображать различные типы файлов в процессе их просмотра:

$ 1 s - F Добавляет символ для определения типа файла myfi 1 e- sym1 i nk@ confi g/ memo. txt pi pefi 1 el scri pt. sh* xpi d. socket= $ 1 s - - co1 or=a1ways Выделяет типы файлов различными цветами $ 1 s - С Отображает файлы в столбцах 108 ла 4. а а с файлами Г Р В первом примере на выходе.команды отображаются различные типы файлов.

Запись myfi l e - syml i nk@ указывает на то, что это символьная ссылка на каталог, confi g/ является обычным каталогом, memo. txt - обычным файлом (без дополни­ тельных символов), pi pefi 1 е 1 - именованным каналом (созданным с помощью mk fi fo ), scri pt. sh* - исполняемым файлом, а xpi d. socket= - сокетом. В следующих двух примерах типы файлов выделяются цветами и отображаются в столбцах со­ ответственно.

П роверка файлов Вместе с проrраммными пакетами и образами компакт-дисков или DVD, доступ­ ными в Интернете, часто поставляютс файлы SHAlSUM или MD5SUM. Эти файлы со­ держат контрольные суммы, которые могут быть использованы, чтобы убедиться, что загружаемый файл является подлинным и издан репозиторием.

Ниже приведены примеры использования команд md5sum и shalsum генера­ ции контро н сумм файлов:

$ md5sum whatever. ;

so d41d8cd98f00b204e9800998ecf8427e whatever. i so $ shalsum whatever. ;

so da39a3ee5eбb4b0d3255bfef95601890a fd80709 whatever. i so Выбор команды зависит от того, какую информацию предоставляет поставщик проверяемого вами файла - md5sum или sha lsum. Например, файл md5sum. txt для дистрибутива Ubuntu Feisty содержит следующую информацию:

90537599d934967f4de97ee0e7e66eбc. /di sts /fei sty/mai n/bi nary- i 386/Rel ease c53152b488a9ed521c96fdfЫ2albbba. /di sts/fei sty/mai n/bi nary- i 386/ Packages ba9a035c270baбdf978097ee68b8d7c6. /di sts /fei sty/mai n/bi nary - i 386/ Packages. gz Этот файл отображает все контрольные суммы MDS для всех файлов на Ubuntu 7.04 Live CD.

С помощью параметра -с команды md5sum вы можете проверить сразу всю ни­ формацию о файлах, которая представлена в файле md5sum. txt:

$ md5sum - с md5sum. txt. /di sts/fei sty/mai n/bi nary - i 386/Rel ease : ОК. /di sts/fei sty/mai n/bi nary- i 386/ Packages : ОК. /di sts/fei sty/mai n/bi nary - i 386/ Packages. gz: ОК...

Чтобы проверить только один файл из списка, можно выполнить следующую команду:

$ cat md5sum. txt 1 grep Rel ease. gpg l md5sum - с. /di sts/fei sty/Rel ease. gpg : ОК Если для Проверки на соответствие у вас вместо файла md5sum. txt есть только файл SHAlSUM, вы можете аналогичным образом использовать команду shalsum.

Используя совместно описанную ранее в данной главе команду fi nd и команду md5sum, вы можете проверять любую часть файловой системы. Например, можно Резюме создать контрольн суммуMD5 я всех файлов каталога 1 etc таким образом, чтобы позже их можно было проверить на наличие изменений:

$ sudo fi nd /etc · type f · ехес md5sum {} \;

> /tmp/mdS. l i st 2> /dev/nul l В результате выполнения предыдущей команды создается файл /tmp/md5. 1 i st, содержащий 128-битную контрольную сумму для каждого файла каталога /etc.

Теперь, чтобы определить, были ли изменены какие-либо из этих файлов, вы мо­ жете в любой момент выполнить следующую команду:

$ cd /etc s md5sum · с /tmp/md5. l i st 1 grep · v · ок ·. /hosts. a l 1 ow: FAI LED md5sum : WARN ING: 1 of 1668 computed checksums di d NOT match К ак вы можете заметить, в данном случае был изменен лишь один файл (hosts.

а 1 1 ow), поэтому теперь необходимо будет проверить измененный файл и опреде­ лить, были ли эти изменения намеренными.

Р ю ез ме В Linux существуют десятки команд, предназначенных для получения информа­ ции о файлах и работы с ними. Такие команды, как chmod, могут изменять права доступа к файлам, тогда как команды наподобие 1 sattr и chattr могут использо­ ваться для просмотра и изменения атрибутов, связанных с такими файловыми системами, как ext2 и ехtЗ.

Для навигации по файловой системе наиболее часто используется команда cd, однако для повторяющегося передвижения по одним и тем же каталогам вы може­ те использовать команды pushd и popd, позволяющие работать с хранилищем ката­ логов.

Копирование файлов чаше всего осуществляется с помощью команды ер, одна­ ко для копирования файлов (таких как образы дисков) с устройства (например, CD-ROM) может быть использована и команда dd. Для создания каталогов вы можете использовать команду mkdi r.

Чтобы не создавать множество копий одного и того же файла, разбросанных по всей системе, вы можете воспользоваться символьными и жесткими ссылками,.

позволяющими закрепить за одним файлом или каталогом несколько имен. Сим­ вольные ссылки могут присутствовать где угодно в системе, в то время как жесткие ссылки должны находиться на одном разделе с файлом-оригиналом.

Для поиска файлов в Linux используются команды 1 ocate и fi nd, а для проверки подлинности файлов, загружаемых из Интернета, - команды md5sum и sha1sum.

ра о о о б б ка кс в й О т т те 5 нфо и рма ии ц Использование первых UNIХ-систем (на которых была основана Linux), управ­ ляемых только с помощью командной консоли, требовало тесной работы с коман­ дами и простыми текстовыми файлами. Документы, исходный текст, файлы кон­ фигурации, электронная почта и почти все создаваемые или настраиваемые вами элементы системы представлены в виде текстовых файлов. Для работы с подобны­ ми файлами разработчики того времени создали множество приложений, позво­ ляющих редактировать текст.

Несмотря на наличие графических приложений для работы с текстом, наиболее опытные пользователи Linux считают приложении для командной строки более эффективными и удобными. Текстовые редакторы vi (vim), Emacs, JOE, nano и Pico доступны на большинстве дистрибутивов Linux. Такие команды, как grep, sed и awk, могут быть использованы для поиска и, возможно, изменения фрагмен­ тов информации, содержащихся в текстовых файлах.

В этой главе рассказывается о способах использования многих популярных команд, предназначенных для работы с текстовыми файлами в Ubuntu. Кроме того, здесь рассматриваются менее известные способы применении команд по редакти­ рованию текста, которые могут показаться вам интересными.

щ ю Поиск в т к с помо ь е я е е р л рны х ыра ении в ж Многие приложения, предназначенные для работы с текстом, позволяют исполь­ зовать регу рные р ен ( gular e o ), иногда называемые gex, для поиска необходимого текста на основе определенной схемы. Эти выражения могут использоваться для поиска текста внутри текстового редактора или же, в совокуп­ ности с командами поиска, для сканирования большого количества файлов на на­ личие нужных строк.

Схема поиска regex может основываться на конкретной текстовой строке (или всего одном слове, например L i nux) или месторасположении (например, конец строки или начало слова). Поиск может быть узким (найти именно слово hel l o) Реда ирование тек вых файлов или более широким (найти любое слово, начинающееся на h и заканчивающее­ си на о).

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

В табл. 5. 1 приведены примеры использования некоторых регулярных выраже­ ний для поиска нужных строк в тексте. Многие из представленных здесь примеров используются в примерах на протяжении всей главы.

Помните, что не каждая команда, основывающаяся на геgех, одинаково исполь­ зует его элементы.

Та ица 5.1. Поиск с помощью гулярных выраж ений ение ь nоиска Выраж л а* а, аЬ, аЬс и a ich л Л « », находящееся в начале роки а а Л «а», ящееся 11 конце роки наход с с а. Т хсимвольные роки, начинающиеся «а» и эаканчивающиеся на «С» [Ьcf]at Ьаt, cat или fat [a-d]at aat, Ьаt, cat, dat, но не Aat, ваt и т. д.

[A-D]at Aat, ваt, cat Dat, но не aat, Ь t т.

и а и д.

1[ ]7 1 7, 147 1 3-5 3 и \tHello Символ табуляции, п ш ующ у hello в ий ов \ [tТ][хХ][тt].txt,.ТХТ,.Т Т или другие сочетания на нове изменения ги ра. х Р еда и овани т к овы а е е х ф йлов р В мире LinuxjUNIX используется множество текстовых редакторов. Наиболее широко используемым из них является редактор vi, который можно найти прак­ тически на любой современной операционной системе UNIX. Именно поэтому умение редактировать даже незначительный текстовый файл в vi является обяза­ тельным требованием для администратора Linux. Если однажды вам придется вос­ станавливать онлайн-подключение в незнакомой среде, vi может оказаться прило­ жением, которое всегда будет под рукой.

Убедитесь, что в вашей версии Ubuntu установлен расширенный пакет vim.

Редактор vim представляет собой наиболее современный, с большим количеством функций и дружественный пользователю редактор' vi. Для получения более по­ дробной информации по использованию vi ознакомьтесь с Приложеннем 1.

UЬuпtu у анавливает vim по умолчанию.

112 бра ка к овой ин мации лава 5. О Г Традиционно, другим популярным текстовым редактором для 'UNIX является Emacs и его вариант, более ориентированный на графическую оболочку, - XEmacs.

Emacs является мощным многофункциональным приложением, которое также может служить для чтения почты или новостей, а также выполнять другие функ­ ции. Emacs также известен своими очень сложными клавнатурными сокращения­ ми, для свободной работы с которыми необходимо иметь три руки.

В середине 1990-х годов Emacs иревзошел vi в отношении характеристик. Сей­ час же, когда широко распространен vim, оба редактора способны предоставлять любые необходимые функции. Если вы еще недостаточно хорошо знакомы с vi и Emacs, мы рекомендуем вам начать с изучения vi.

Pages:     | 1 || 3 | 4 |   ...   | 7 |



© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.