Пиши Дома Нужные Работы

Обратная связь

Исследование файловой системы.

 

Файловая система есть собрание файлов и иерархия каталогов. Я обещал поводить вас по файловой системе, и время настало. У вас достаточно интеллекта и знаний извлечь пользу из того, что я говорю и у вас есть карта дорог.

/_____bin

|_dev

|_etc

|_home_____larry

| |_sam

|_lib

|_proc

|_tmp

|_usr__X386

|_bin

|_emacs

|_etc

|_g++-include

|_include

|_lib

|_local_____bin

| |_emacs

| |_etc

| |_lib

|_man

|_spool

|_src_____linux

|_tmp

Перво-наперво вернемся в корневой каталог (cd /) и сделаем ls -F. Вы, очевидно, увидите каталоги: bin, dev, etc, home, install, lib, mnt, proc, root, tmp, user, usr и var. Можете увидеть и несколько отличный вариант: не волнуйтесь, различные версии Linux могут иметь отличия.

Присмотримся к каждому каталогу:

/bin

bin сокращенно от ``binaries'' (т.е двоичные или выполняемые файлы). Здесь находится много важных системных программ. Используйте команду ``ls -F /bin'' чтобы посмотреть имеющийся здесь список файлов. Вы можете обнаружить здесь уже знакомые вам команды, вроде cp, ls и mv. Это и есть программы соответствующих команд. Когда, например, вы используете команду cp, вы выполняете программу /bin/cp.

Используя ls -F, вы увидите, что большинство (если не все) файлов в /bin имеют справа от имени звездочку (``*''). Это говорит о том, что файлы выполняемые, как описано в разделе 3.3.2.

/dev

Следующая остановка на нашем пути dev. Вновь посмотрите на содержимое с помощью ls -F.

"Файлы" в /dev известны как драйверы устройств они используются для доступа к устройствам и ресурсам системы, таким как диски, модемы, память и т.д. Например, как вы можете читать данные из файла, точно также вы можете читать входные сигналы от мыши, имея доступ к /dev/mouse. Имена файлов, начинающиеся на fd это дисководы гибких дисков. fd0 первый дисковод, fd1 второй. Теперь самые шустрые из вас заметят, что здесь имеется больше дисководов, чем те два, которые мною упоминались: они представляют специфические типы дисководов. Например, fd1H1440 представляет доступ к high-density, 3.5" дискетам на дисководе 1.



Вот перечень некоторых из наиболее используемых файлов устройств:

· /dev/console/ относится к системной консоли, т.е. к монитору, напрямую связанному с системой.

· Различные /dev/ttyS и /dev/cua устройства используются для доступа к последовательным портам. Например, /dev/ttyS0 относится к ``COM1'' под MS-DOS. Устройства /dev/cua относятся к "звонящим" (``callout'') устройствам, которые используются совместно с модемами.

· Устройства, имена которых начинаются с hd, имеют доступ к жестким дискам. /dev/hda относится ко всему первому жесткому диску, а hda1 только к первому разделу /dev/hda.

· Устройства с именами, начинающимися на sd SCSI-драйверы. Если у вас SCSI жесткий диск, вместо доступа к нему через /dev/hda, вы будете обращаться к /dev/sda. SCSI ленты доступны через устройства st, а SCSI CD-ROM через sr.

· Устройства lp обеспечивают доступ к параллельным портам. /dev/lp0 относится к ``LPT1'' в MS-DOS.

· /dev/null используется как "черная дыра": любые данные, посланные сюда, канут в Лету. Если вы хотите подавить вывод команды на экран, вы можете перенаправить этот вывод в /dev/null. Мы об этом позже еще поговорим.

· Устройства с именами /dev/tty относятся к "виртуальным консолям" вашей системы (доступ путем нажатия alt-F1, alt-F2 и т.д.). /dev/tty1 соответствует первой VC, /dev/tty2 соответствует второй и т.д.

· Устройства, чьи имена начинаются на /dev/pty, это "псевдотерминалы". Они используются для входа с удаленных "терминалов". Например, если ваша машина в сети, вход к вам по telnet будет использовать одно из устройств /dev/pty.

/etc

/etc содержит множество всевозможных системных файлов конфигурации. Они включают /etc/passwd (файл паролей), /etc/rc (командный файл инициализации) и т.д.

/sbin

/sbin используется для хранения важных системных двоичных файлов, используемых системным администратором.

/home

home содержит домашние каталоги пользователей. Например, /home/larry домашний каталог пользователя ``larry''. На вновь инсталлированной системе этот каталог может быть пуст в связи с временным отсутствием зарегистрированных пользователей.

/lib

/lib содержит образы разделяемых библиотек (shared library images). Эти файлы содержат код, который могут использовать многие программы. Вместо того, чтобы каждая программа имела свою собственную копию этих выполняемых файлов, они хранятся в одном общедоступном месте в /lib. Это позволяет сделать выполняемые файлы меньше и сэкономит место в системе.

/proc

/proc это "виртуальная файловая система", в которой файлы хранятся в памяти, а не на диске. Они связаны с различными процессами, происходящими в системе, и позволяют получить информацию о том, что делают программы и процессы в указанное время.

/tmp

Многие программы нуждаются в создании рабочих файлов, которые нужны короткое время. Каноническое место для этих файлов в /tmp (там обычно чаще проводится уборка мусора).

/usr

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

Различные каталоги, описанные выше, необходимы для нормального функционирования системы, но большинство вещей, содержащихся в /usr необязательны для системы. Но это такие необязательные вещи, которые делают систему полезной и интересной. Без /usr вы бы имели достаточно занудную систему, содержащую только программы, вроде cp и ls. /usr содержит много больших программных пакетов и конфигурационных файлов, которые их сопровождают.

/usr/X386

/usr/X386 содержит The X Window System, если вы ее инсталлировали. X Window System это мощная графическая среда, которая содержит большое количество графических утилит и программ, отображающих "окна" на вашем экране. Если вы знакомы с Microsoft Windows или Macintosh environments, то X Windows будет выглядеть весьма похоже. Каталог /usr/X11К6 содержит все выполняемые и конфигурационные файлы X Window, а также файлы поддержки.

/usr/bin

/usr/bin настоящее хранилище для различных программ UNIX. Он содержит большинство выполняемых программ, которых нет ни в каких других местах, например, в том же /bin их нет.

/usr/etc

Точно также, как и /etc, содержит всевозможные системные программы и конфигурационные файлы. /usr/etc содержит даже больше утилит и файлов. В общем, файлы, находящиеся в /usr/etc несущественны для системы, в отличие от тех, которые находятся в /etc, и очень существенны.

/usr/include

/usr/include содержит include-файлы для компилятора Си. Эти файлы (большинство имен которых заканчивается на .h (от слова ``header'') объявляют имена структур данных, подпрограмм и констант, используемых при написании программ на Си. Те файлы, которые находятся в /usr/include/sys в общем случае используются при программировании на системном уровне UNIX. Если вы знакомы с языком программирования Си, здесь вы найдете такие заголовки (фрагменты программ, вставляемые обычно в начало программы), stdio.h, которые описывают такие функции, как printf().

/usr/g++-include

/usr/g++-include содержит include-файлы для компилятора Cи++ (очень похожие на /usr/include).

/usr/lib

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

/usr/local

/usr/local в большой степени похож на /usr он содержит различные программы и файлы, несущественные для системы, но превращающие ее в удовольствие и восторг. В общем, эти программы, находящиеся в /usr/local специализируются на специфике вашей системы, т.е. /usr/local сильно отличается в различных UNIX. Здесь вы найдете такие большие программные пакеты, как TeX (система форматирования документов) и Emacs (большой и мощный редактор), если вы их установите.

/usr/man

Этот каталог содержит страницы Руководства. Здесь два подкаталога для каждого "раздела" Руководства. (С помощью команды "man man" вы можете получить более подробную информацию). Например, /usr/man/man1 содержит исходные тексты (неотформатированный оригинал) страниц Руководства в разделе 1 и /usr/man/cat1 содержит отформатированные страницы для раздела 1.

/usr/src

/usr/src содержит исходные коды (неоткомпилированные программы) для различных программ вашей системы. Наиболее важная вещь здесь, это /usr/src/linux, содержащий исходные коды ядра Linux.

/var

/var содержит каталоги, которые часто меняются в размере или имеют тенденцию быстро расти. Многие из этих каталогов "квартировались" в /usr, но поскольку мы стремимся сделать его достаточно стабильным, каталоги, которые часто меняются, были перенесены в /var. К числу таких каталогов относятся:

/var/adm

/var/adm содержит различные файлы, интересные системному администратору, специфические системные файлы, фиксирующие ошибки и проблемы, возникающие в системе. Другие файлы фиксируют входы в систему, как и неудачные попытки войти.

/var/spool

/var/spool содержит файлы, которые предварительно формируются для других программ. Например, если ваша машина подключена к сети, входная почта будет помещаться в /var/spool/mail до тех пор, пока вы не прочитаете ее или не удалите. Входящие и исходящие новости помещаются в /var/spool/news и т.д.

Различные каталоги, описанные выше необходимы для системы, но большинство элементов, найденных в /usr факультативно. Однако, эти факультативные элементы делают систему полезной и интересным. Без /usr, вы имели бы скучную систему, которая поддерживает только программы подобные cp и ls. /usr содержит большинство больших пакетов программ и файлов конфигурации, которые сопровождают их.

Типы оболочек.

Как я уже много раз говорил, UNIX многозадачная, многопользовательская операционная система. Многозадачность очень полезна: однажды привыкнув к ней, вы будете всегда ее использовать. Прежде всего, вы сможете выполнять задачи в фоновом режиме, переключать задачи и объединять их в конвейер, достигая сложных результатов простыми средствами.

Многие из возможностей, которые мы будем обсуждать в этом разделе, обеспечиваются самой оболочкой (shell). Будьте внимательны, не путайте UNIX (фактическую операционную систему) с оболочкой: оболочка, это лишь интерфейс с находящейся за ней системой. Оболочка обеспечивает выполнение громадного числа функций помимо собственно UNIX.

Оболочка не только интерпретатор интерактивных команд, которые вы можете ввести, получив от оболочки подсказку (готовности принимать команды). Это также мощный командный язык, который позволяет писать программы (shell-scripts), объединяющие несколько команд в командный файл. Пользователи MS-DOS почувствуют здесь нечто схожее с ``batch-файлами''. Использование программ на языке оболочки (shell) очень мощное средство, которое позволяет автоматизировать и и существенно повысить эффективность использования UNIX. Смотрите дополнительные сведения ниже.

Существует несколько типов оболочек в мире Linux. Две главные: ``Bourne shell''(shell Борна) и ``C shell'. Shell Борна (или просто shell) использует командный синтаксис, похожий на первоначально для UNIX придуманный (вроде UNIX System III). В большинстве UNIX-систем shell Борна имеет имя /bin/sh (где sh сокращение от ``shell''). C shell использует иной синтаксис, чем-то напоминающий синтаксис языка программирования Си. В большинстве Linux-систем он имеет имя /bin/csh.

В Linux есть несколько вариаций этих оболочек. Две наиболее часто используемые, это Новый Shell Борна (Bourne Again Shell) или ``Bash'' (/bin/bash) и Tcsh (/bin/tcsh). Bash это развитие прежнего shell с добавлением многих полезных возможностей, частично содержащихся в C shell. Поскольку Bash можно рассматривать как надмножество синтаксиса прежнего shell, любая программа, написанная на добром старом shell Баурна должна работать и в Bash. Для тех, кто предпочитает использовать синтаксис C shell, Linux поддерживает Tcsh, который является расширенной версией C shell.

Тип оболочки, которую вы решили использовать - это почти как выбор религии. Некоторые предпочитают синтаксис shell Баурна с дополнительными возможностями, предоставляемыми Bash, а некоторые - более структурированный синтаксис C shell. Для "нормальных" команд, таких как cp и ls, тип используемого вами shell никакой роли не играет. Только когда вы начнете писать командные файлы или использовать некоторые новые свойства оболочек, различия между ними становятся существенными.

При обсуждении далее некоторых свойств оболочек мы будем обращать внимание на различие между Борновским shell и C shell. (Если вам это действительно очень интересно, почитайте Руководство по поводу bash и tcsh).

 

Символы подстановки.

Ключевое свойство большинства оболочек Unix это способность ссылаться сразу более, чем на один файл, используя для этого специальные символы. Эти, так называемые "символы подстановки" (wildcards), позволяют ссылаться, скажем, на все файлы, содержащие символ "n".

Символ ``*'' относится к любому символу или строке символов в имени файла. Например, когда вы используете символ ``*'' в имени файла shell заменяет ее всеми возможными именами файлов из каталога, на который вы ссылаетесь. Вот простенький пример. Предположим, что Larry имеет файлы frog, joe и stuff в своем текущем каталоге:

 

/home/larry# Is

frog ]oe stuff

 

/home/larry#

 

Для обращения сразу ко всем файлам с буквой ``o'' в имени, мы можем использовать команду:

 

/home/larry# Is *o*

frog joe

 

/home/larry#

 

Как видите, ``*'' была заменена всеми возможными именами файлов из имевшихся в текущем каталоге.

Использование просто ``*''даст совпадение со всеми именами, поскольку все символы совпадают с символом подстановки:

 

/home/larry# Is *

frog Joe stuff

 

/home/larry#

 

Вот еще несколько примеров:

 

/home/larry# Is f*

frog

 

/home/larry# Is *ff

stuff

 

/home/larry# Is *f*

frog stuff

 

/home/larry# Is s*f

stuff

 

/home/larry#

 

Процесс замены ``*'' на имена файлов называется расширением и выполняется shell. Это важно: конкретные команды, вроде ls, никогда не видят ``*'' в своем списке параметров. Shell, расширяя символ подстановки, включает в список параметров все имена, прошедшие сравнение с шаблоном. Так что команда:

 

/home/larry# Is *o*

 

расширяется shell до фактической:

 

/home/larry# Is frog joe

 

Одно важное замечание относительно ``*''. Использование ее не даст совпадения с именами файлов, которые начинаются с точки (``.''). Эти файлы воспринимаются как "спрятанные", хотя на самом деле их никуда не прятали. Они не показываются в списке, выдаваемом нормальной командой ls и не выбираются при использовании ``*''.

Вот пример. Мы уже упоминали, что каждый каталог имеет два специальных файла: ``.'' (указание на текущий каталог) и ``..'' (указание на родительский каталог). Однако, если вы используете команду ls, эти два файла не будут отображены:

 

/home/larry# Is -a

.bash-profile .bashrc frog joe stuff

 

/home/larry#

 

Если вы используете опцию -a в команде ls, то вы сможете увидеть имена, начинающиеся на ``.'':

 

/home/larry# Is ]?e

Joe

 

/home/larry# Is f??g

frog

 

/home/larry# Is ????f

stuff

 

/home/larry#

 

Как видим, два специальных файла ``.'' и ``..'', также, как два других "спрятанных" файла - .bash_profile и .bashrc. Эти два файла используются при входе larry в систему. Более подробно о них поговорим позже.

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

 

/home/larry# Is *

frog Joe stuff

 

/home/larry#

 

Это мера предосторожности: если ``*'' выбирала бы имена файлов, начинающиеся на ``.'', она бы также выбрала имена ``.'' и ``..''. Но это может быть опасно при выполнении ряда команд.

 

Другой символ подстановки ``?''. ``?'' позволяет подставить строго один символ. Так ``ls ?'' выдаст на только имена файлов, состоящие из одного символа, а ``ls termca?'' выдаст ``termcap'', но не выдаст на экран ``termcap.backup''. Вот еще один пример:

 

/home/larry# Is J?e

Joe

 

/home/larry# Is f??g

frog

 

/home/larry# Is ????f

stuff

 

/home/larry#

 

Как видите, символ подстановки позволяет описывать много файлов за один раз. При обзоре простейших команд мы говорили, что команды cp и mv могут копировать или перемещать множества файлов за один раз. Например,

 

/home/larry# cp /etc/s* /home/larry

 

скопирует все файлы в /etc, с именами начинающимися с ``s'' в каталог /home/larry. Формат команды cp на самом деле:

 

cp files destination

 

где files список копируемых файлов, а destination это файл или каталог, в который производится копирование. mv имеет аналогичный синтаксис.

Обратите внимание, что если производится копирование или перемещение более, чем одного файла, <destination> должен быть каталогом. В файл скопировать или переместить можно только один файл.

 

Каналы Linux.

 






ТОП 5 статей:
Экономическая сущность инвестиций - Экономическая сущность инвестиций – долгосрочные вложения экономических ресурсов сроком более 1 года для получения прибыли путем...
Тема: Федеральный закон от 26.07.2006 N 135-ФЗ - На основании изучения ФЗ № 135, дайте максимально короткое определение следующих понятий с указанием статей и пунктов закона...
Сущность, функции и виды управления в телекоммуникациях - Цели достигаются с помощью различных принципов, функций и методов социально-экономического менеджмента...
Схема построения базисных индексов - Индекс (лат. INDEX – указатель, показатель) - относительная величина, показывающая, во сколько раз уровень изучаемого явления...
Тема 11. Международное космическое право - Правовой режим космического пространства и небесных тел. Принципы деятельности государств по исследованию...



©2015- 2024 pdnr.ru Все права принадлежат авторам размещенных материалов.