Написание контрольных, курсовых, дипломных работ, выполнение задач, тестов, бизнес-планов
  • Не нашли подходящий заказ?
    Заказать в 1 клик:  /contactus
  •  
Главная \ Методичні вказівки \ РАБОТА С ФАЙЛАМИ И КАТАЛОГАМИ

РАБОТА С ФАЙЛАМИ И КАТАЛОГАМИ

« Назад

РАБОТА С ФАЙЛАМИ И КАТАЛОГАМИ 05.07.2016 06:38

Работа с файлами и каталогами

 

 

Понятие файла и файловой системы

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

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

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

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

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

­       Тип. Информация, необходимая для управления файлами.

­       Расположение. Указатель на внешнее устройство и на местонахождения файла на этом внешнем устройстве.

­       Размер. Текущий размер (в байтах, словах или блоках) и, возможно, максимально  допустимый размер.

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

­       Время, дата и идентификатор пользователя. Эта информация может характеризовать: создание, последнюю модификацию, последнее обращение.

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

 

Типы файлов

В операционной системе (ОС) Unix поддерживаются несколько типов файлов:

-       Обычные файлы. Это просто последовательность байтов; на структуру таких файлов не накладывается никаких ограничений – это могут быть текстовые документы, исполняемые программы, мультимедийные данные.

-       Каталоги. Каталог — это файл, содержащий имена находящихся в нем файлов, а также указатели на дополнительную информацию — метаданные, позволяющие операционной системе производить операции над этими файлами. Каталоги определяют положение файла в дереве файловой системы, поскольку сам файл не содержит информации о своем местонахождении. Каталог, на который есть ссылка в данном каталоге, называется подкаталогом или вложенным каталогом. Родительским называется каталог, в котором содержится данный каталог. Для корневого каталога (см. ниже) родительским является он сам.

-       Ссылки. Делятся на 2 типа:

1)      «Жесткие» ссылки. На файл можно ссылаться из нескольких каталогов одновременно и даже из нескольких элементов одного и того же каталога, причем у всех ссылок могут быть разные имена. Это создает иллюзию того, что файл в одно и то же время находится в разных каталогах. Атрибуты файла при этом являются общими для всех ссылок. Unix подсчитывает количество ссылок, указывающих на каждый файл, и при удалении файла не освобождает блоки данных до тех пор, пока не будет удалена последняя ссылка на него. Ссылки такого рода называются «жесткими». Они не являются отдельным типом файлов. Жесткую ссылку в Unix невозможно отличить от имени файла – они идентичны.

2)      Символические ссылки («мягкие»). Этот вид ссылок является отдельным типом файлов и обеспечивает возможность вместо путевого имени указывать псевдоним. Когда ядро ОС сталкивается с символической ссылкой при поиске файла, оно извлекает из нее хранящееся путевое имя. Различие между жесткими и мягкими ссылками состоит в том, что жесткая ссылка является прямой – то есть указывает непосредственно на индексный дескриптор файла, тогда как мягкая ссылка указывает на файл по имени. Файл, адресуемый символической ссылкой, и сама ссылка являются разными объектами файловой системы. Файл, на который создается символическая ссылка, не обязательно должен существовать. При удалении файла автоматически уничтожаются все связанные с ним символические ссылки.

-       Специальные файлы устройств. Файлы устройств позволяют Unix-программам взаимодействовать с аппаратными средствами и периферийными устройствами системы. За всю работу по управлению конкретным устройством отвечает специальная программа, называемая драйвером устройства. Драйверы устройств образуют стандартный коммуникационный интерфейс, который выглядит для пользователя как обычный файл. Когда ядро ОС получает запрос к файлу устройства, оно просто передает этот запрос соответствующему драйверу, то есть файлы устройств можно представить как шлюзы, через которые драйверам передаются запросы. В UNIX различают символьные и блочные файлы устройств. Символьные файлы устройств используются для небуферизированного обмена данными с устройством, в противоположность этому блочные файлы позволяют производить обмен данными в виде пакетов фиксированной длины — блоков. Доступ к некоторым устройствам может осуществляться как через символьные, так и через блочные специальные файлы.

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

-       Именованные каналы. Подобно сокетам, именованные каналы обеспечивают взаимодействие двух процессов, выполняемых на одном компьютере.

 

Структура файловой системы Unix

Файловая система ОС Unix имеет иерархическую (древовидную) структуру, основанием которой является корневой каталог, который имеет имя /. Корневой каталог файловой системы Unix всегда один. Расположение файлов в файловом дереве не определяется их расположением на том или ином физическом или логическом диске. Файловые структуры, находящиеся на различных дисках, в том числе на дисках других компьютеров, с помощью специальной команды (mount) монтируются на файловое дерево Unix, становясь частью единого файлового дерева. Все операции над файлами с точки зрения пользователя выполняются одинаковым образом, независимо от их физического месторасположения.

 

 

 

 

 

 

 

 

 

 

 

                                                                                      

 

Kорневой каталог Unix обычно содержит такие каталоги, как:

bin

для наиболее используемых команд;

boot

загрузчик операционной системы;

dev

для специальных файлов, представляющих устройства (дисплеи, диски, CD-ROM, принтеры и т.п.);

etc

для хранения большинства конфигурационных файлов системы;

home

для хранения домашних каталогов пользователей;

lib

важнейшие библиотеки;

mnt

для подключения новых файловых систем;

tmp

для хранения временных файлов;

usr

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

var

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

Последовательность имен каталогов, разделенных символом «/», ведущая от некоторого каталога к каталогу, в котором располагается данный файл, называется маршрутом к этому файлу. Последовательность имя_маршрута/имя_файла называется путевым именем файла. Если путевое имя отсчитывается от корневого каталога, оно называется абсолютным (полным), в противном случае – относительным.

Например, каталог /usr, кроме прочего, содержит такие каталоги, как:

bin

хранит дополнительные команды;

include

хранит фрагменты системных программ;

lib

хранит дополнительные библиотеки.

Полные имена этих каталогов будут такими: /usr/bin, /usr/include и /usr/lib

Если в каталоге /usr/bin содержится файл perl, то полное имя файла perl будет таким:     /usr/bin/perl

Если же пользователь в данный момент находится в каталоге /usr файловой системы и ему необходимо открыть файл /usr/include/sys/conf, то он может обратиться к этому же файлу по относительному имени: include/sys/conf

Существует два специальных имени:

.

это имя текущего каталога;

..

это имя родительского каталога (т.е. каталога, находящегося на уровень выше данного на пути к корневому каталогу).

В качестве имен файлов, как правило, может использоваться любая последовательность из букв, цифр и спецсимволов, кроме символа «/». Причина этого ограничения очевидна: данный символ используется как разделитель имен в составе пути, поэтому не должен встречаться в самих именах. Длина имени ограничивается 256 символами. Прописные и строчные буквы в именах файлов различаются. Например, файл myfile и файл myFile – это разные файлы. Имя файла может включать в себя расширение, обычно используемое для указания на тип файла. Расширение определяется как часть имени файла, располагающаяся после последней точки. Файлы, имена которых начинаются с точки, являются скрытыми.

Есть несколько символов, допустимых в именах файлов и каталогов, которые нужно использовать с осторожностью. Это так называемые спецсимволы: «*», «\», «&», «<», «>», «;», «(«, «)», «|», а также символы пробела и табуляции. Дело в том, что эти символы имеют специальное значение, поэтому нужно будет специально позаботиться о том, чтобы эти символы воспринимались как часть имени файла или каталога. Для этого необходимо предварить спецсимвол символом «\» (обратный слэш).

 

         Шаблоны подстановки

            Используя специальные символы, можно формировать шаблоны имен файлов.

 

*

соответствует любой (возможно, пустой) последовательности символов

?

соответствует точно одному любому символу

[ ]

используются для группирования символов в наборы. Наборы могут задаваться:

-       явным перечислением символов, без указания разделителей между ними, например [atz56,=] – символ соответствует либо одной из трех букв a, t и z, либо одной из цифр 5 и 6, либо одному из спецсимволов запятая и знак равенства

-       путем указания диапазона, например [a-z]  – символ соответствует строчной букве от а до z

-       комбинацией этих способов, например [0-9ij] – символ соответствует либо цифре, либо одной из букв i или j

!

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

 

            Примеры:

 f*

соответствует файлам с именами, начинающимися с буквы f

*f*

соответствует файлам с именами, содержащими букву f

program.?

соответствует файлам с именами program, имеющими однобуквенные расширения

??[a-d]*

соответствует файлам с именами, в которых третьей буквой является a, b, c или d

[!A-Z]*[2468]

соответствует файлам с именами, не начинающимися с большой буквы и заканчивающимися на цифру 2, 4, 6 или 8

            Если в имя файла должен входить какой-либо спецсимвол, то при указании шаблона этот спецсимвол необходимо предварять с помощью обратного слэша («\»), или экранировать, например:

 [AEIOUYaeiouy]\*???

соответствует файлам с именами, начинающимися с гласной буквы, за которой следует символ *, а за ней – три произвольных символа

            При использовании диапазонов символов следует учитывать, что они могут зависеть от выбранных настроек локализации. Например, диапазон [b-e] означает символы от b до е включительно. В английском языке, где сортировка букв идет по порядку (ABC…XYZabc…xyz), указанному набору соответствует набор символов b, c, d, e. Согласно правилам русского языка, сортировка тех же символов идет в другом порядке (аАбБвВ…эЭюЮяЯaAbBcC…xXyYzZ) и тому же диапазону соответствуют символы b, B, c, C, d, D, е. Для решения таких проблем имеются объявления некоторых классов и категорий символов:

[:upper:]

Латинские буквы верхнего регистра

[:lower:]

Латинские буквы нижнего регистра

[:alpha:]

Латинские буквы верхнего и нижнего регистров

[:alnum:]

Латинские буквы верхнего и нижнего регистров, цифры

[:digit:]

Цифры

[:xdigit:]

Шестнадцатеричные цифры

[:punct:]

Знаки пунктуации

[:blank:]

Пробел и табуляция

[:space:]

Символы пропуска (пробел, табуляция, перевод каретки, перевод строки и т.п.)

[:cntrl:]

Управляющие символы (клавиша [Ctrl]+символ)

[:graph:]

Символы печати

 

Командная оболочка, командная строка и команды

Для организации интерфейса пользователя в состав Unix входит командная оболочка, называемая shell. Она выполняет следующие функции:

-       организует исполнение программ, проверяя их синтаксис, допустимость ключей и т.д.;

-       осуществляет генерацию имен файлов;

-       осуществляет переназначение ввода и вывода;

-       организует конвейеризацию;

-       осуществляет контроль среды окружения;

-       является интерпретатором развитого командного языка, позволяющего пользователю создавать сложные сценарии выполнения программ.

Существуют различные версии shell, наиболее популярными из них являются sh (Bourne Shell), bash (Bourne Again Shell), csh (C-Shell), ksh (Korn Shell). Мы будем рассматривать bash, обычно загружаемую ОС по умолчанию.

Командная строка имеет следующий вид:

 

$ команда ключи аргументы

 

Символ «$» является приглашением командной оболочки, ему могут предшествовать другие символы, отмечающие, например, имя текущего каталога, имя компьютера, имя пользователя или имя ОС.

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

Внутренние команды языка shell представляют собой программы, находящиеся в каталоге /usr/bin. Большинство из них имеют следующий формат:

 

имя_команды ключи аргументы

 

Ключи служат для модификации режимов работы команды и представляют собой наборы определенных символов, которым предшествует символ «-» (короткие имена ключей) или комбинация «--» (длинные имена ключей).  Чаще всего в качестве короткого имени ключа используется начальная буква действия, которое определяется данным ключом, например ключ -u – это сокращение от user.

Свойство ключа быть, с одной стороны, предельно коротким, а с другой стороны – информативным, называется аббревиативностью. Не только ключи, но и имена наиболее распространенных команд Unix обладают этим свойством. Аббревиативность ключей трудно соблюсти, когда их у команды слишком много. Некоторые буквы латинского алфавита (например, s или o) используются очень часто, и могли бы служить сокращением сразу нескольких команд. На такой случай существует другой, полнословныйформат: ключ начинается на двазнака «-», за которыми следует полное имя ключа. Таков, например, ключ --wildcards.

А некоторые ключи могут обозначаться как коротким, так и полным именем, например ключ с коротким именем -h имеет аналог с длинным именем --help.

Аргументы команды (или параметры команды) указывают на объекты, над которыми выполняются операции. Аргументами команд в большинстве случаев являются имена файлов. Например, приведенная ниже команда означает: «Выполнить команду ls (отображение информации о файле) с ключом -l (подробная информация) для файла а.out»:

 

ls -l а.out 
 

Если необходимо использовать два и более однобуквенных ключа, большинство команд позволяют объединять их. Например, две приведенные ниже команды идентичны:

 

ls -lg a.out
1s -l -g a.out
 

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

            В одной строке может содержаться несколько команд. Они отделяются друг от друга символом «;».

            Одну команду можно разместить на нескольких экранных строках. Для этого перед нажатием клавиши [Enter] необходимо поставить символ «\».

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

 

 

         Получение справки о командах Unix

            Получить справку о работе команд Unix можно несколькими способами.

 

1. Страницы руководства (manpages)  содержат больше всего  полезной информации. Каждая страница руководства посвящена какому-нибудь одному объекту системы. Для того чтобы посмотреть страницу руководства по какой-либо команде, нужно дать команду

 

man [номер_раздела] [имя_объекта]

 

Номера и названия разделов руководства:

  1. Команды пользователя.
  2. Системные вызовы (пользовательские функции ядра Unix; руководства рассчитаны на программиста, знающего язык С).
  3. Библиотечные функции (функции, принадлежащие всевозможным библиотекам подпрограмм; руководства рассчитаны на программиста, знающего язык С).
  4. Внешние устройства и работа с ними.
  5. Форматы различных стандартных файлов системы (например, конфигурационных).
  6. Игры, безделушки и прочие вещи, не имеющие системной ценности.
  7. Теоретические положения, договоренности и все, что не может быть классифицировано.
  8. Инструменты администратора (часто недоступные обычному пользователю).
  9. Интерфейс ядра (внутренние функции и структуры данных ядра Unix, необходимые только системному программисту, исправляющему или дополняющему ядро).

Например, если нужно просмотреть справку о работе команды find, необходимо выполнить команду

 

man 1 find

 

Как правило, команда man сама находит раздел с требуемой справкой, просматривая все разделы по очереди, поэтому для получения справки по команде find достаточно ввести

 

man find

 

Для получения списка разделов, в которых встречается требуемый термин используется ключ -l.

Страница руководства занимает, как правило, больше одной страницы экрана. Страницы перелистываются вниз с помощью клавиши пробела или клавиши [Page Down], вверх – с помощью клавиши [Page Up], для сдвига на одну строку вперед можно применять Enter или клавишу [Стрелка вниз], а на одну строку назад – клавишу  [Стрелка вверх]. Переход на начало и конец текста выполняется по нажатию клавиш [g] и [G] соответственно (Go). Выход осуществляется по нажатию клавиши [q] (Quit).

 

2. Info

Другой источник информации о Unix и составляющих ее программах – справочная подсистема info. Страница руководства, несмотря на обилие ссылок различного типа, остается линейным текстом, структурированным только логически. Документ info структурирован прежде всего топологически – это настоящий гипертекст, в котором множество небольших страниц объединены в дерево. В каждом разделе документа info всегда есть оглавление, из которого можно перейти сразу к нужному подразделу, откуда всегда можно вернуться обратно. Кроме того, info-документ можно читать и как непрерывный текст, поэтому в каждом подразделе есть ссылки на предыдущий и последующий подразделы:

Одна или несколько страниц, которые можно перелистывать клавишей [Пробел] или [Page Up]/[Page Down] – это узел (node). Узел содержит обычный текст и меню (menu) – список ссылок на другие узлы, лежащие в дереве на более низком уровне. Ссылки внутри документа имеют вид * имя_узла::, и перемещать по ним курсор можно клавишей [Tab], а переходить к просмотру выбранного узла – клавишей [Enter]. Вернуться к предыдущему просмотренному узлу можно клавишей [l] (Last). Выйти из программы info можно, нажав [q] (Quit). Более подробную справку об управлении программой info можно в любой момент получить у самой info, нажав [?]. Узлы, составляющие документ info, можно просматривать и подряд, один за другим (с помощью команд [n] (Next) и [p] (Previous)), однако это используется нечасто. В верхней строке экрана info показывает имя текущего узла, имя следующего узла и имя родительского (или верхнего) узла, в котором находится ссылка на текущий. 

 

            3. Использование ключей -h и --help

            У каждой команды Unix есть ключ -h и эквивалентный ему ключ --help, и пользователь, запустив команду с одним из этих ключей, может просмотреть краткую справку об использовании данной команды.

 

 

Домашние каталоги пользователей

В Unix у каждого пользователя обязательно есть собственный каталог, который и становится текущим сразу после регистрации в системе – домашний каталог. Домашние каталоги пользователей хранятся в каталоге /home. Например, для пользователя anna домашним каталогом является /home/anna.

Домашний каталог (home directory) – это каталог, предназначенный для хранения собственных данных пользователя Unix. Как правило, домашний каталог является текущим непосредственно после регистрации пользователя в системе. Полный путь к домашнему каталогу хранится в переменной среды HOME.

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

 

Операции над файлами и каталогами

 

Определение имени текущего каталога

Команда pwd(от англ. print working directory – напечатать имя рабочего каталога), вызываемая без параметров, возвращает полный путь текущего каталога, в котором находится пользователь.

 

Получение информации о каталоге или файле

Чтобы иметь возможность ориентироваться в файловой системе, нужно знать, что содержится в каждом каталоге. Запомнить всю структуру файловой системы невозможно и не нужно: в любой момент можно просмотреть содержимое любого каталога при помощи команды ls (от англ. list - список).

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

Команда ls принимает в качестве параметра имя каталога, содержимое которого нужно вывести. Имя может быть задано любым доступным способом: в виде полного или относительного пути.

Например, чтобы получить список файлов в каталоге /usr/sbin, необходимо использовать команду

 

ls /usr/sbin

 

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

 

-a, --all

выводит список всех имен файлов каталога, включая скрытые

-А,

--almost-all

выводит список всех имен файлов каталога, кроме текущего (.) и родительского (..) каталога

-d,

--directory

выводит имена вложенных каталогов без их содержимого

-I pattern,

--ignore=pattern

Не включает в выводимый список файлы, имена которых совпадают с шаблоном pattern

-R, --recursive

отображает рекурсивно содержимое всех каталогов

-l,

--format=long

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

-r, --reverse

при использовании сортировки ее порядок меняется на обратный

-S, --sort=size

сортирует файлы по размеру: самые большие файлы идут первыми

-t, --sort=time

сортирует файлы по времени модификации: самые новые файлы идут первыми

-X,

--sort=extension

сортирует файлы по расширениям; файлы без расширений располагаются раньше

-U, --sort=none

не выполняет сортировку и включает в список файлы в том порядке, в котором они идут в каталоге

-u, --time=atime

при использовании длинного формата вывода вместо даты/времени последней модификации выводится дату/время последнего доступа к файлу

--color

для распознавания типов файлов использовать различные цвета

-F, --classify

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

* - обычные исполняемые файлы

/ - каталоги

@ - символические ссылки

= - сокеты

| - именованные каналы

-T cols,

--tabsize=cols

табулирует в соответствии с шириной столбца, равной cols (по умолчанию 8)

 

Примеры.

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

 

ls –l ./[0-9]*[0-9] --color

 

Вывод подробной информации о содержимом каталога /usr/lib без содержимого вложенных каталогов и отображение имен файлов в обратном алфавитном порядке:

 

ls –ldr /usr/lib

 

 

Перемещение по дереву каталогов

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

 

cd /usr/lib

 

Для перемещения в родительский каталог удобно воспользоваться командой cd ..

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

 

cd ~

 

При исполнении команды символ «~» будет заменен командной оболочкой на полный путь к домашнему каталогу пользователя.

При помощи символа «~» можно ссылаться и на домашние каталоги других пользователей при помощи конструкции ~имя_пользователя. Например, пользователь anna при выполнении команды

 

cd ~victor

 

может перейти в домашний каталог пользователя victor.

Команда cd, поданная без параметров, эквивалентна команде cd ~и делает текущим каталогом домашний каталог пользователя.

 

 

Создание каталогов

Для создания каталога используется команда mkdir (от англ. make directory - создать каталог). Она применяется с обязательным параметром: именем создаваемого каталога (или списком имен каталогов, указанных через пробел). По умолчанию каталог будет создан в текущем каталоге. Например, команда:

 

mkdir examples texts

 

приведет к созданию каталогов examples и texts в каталоге, в котором находится в текущий момент создающий их пользователь.

Если указать перед именем создаваемого каталога полный или относительный путь к нему, то каталог будет создан в соответствии с указанной иерархией каталогов:

 

mkdir /home/anna/examples

 

 

Созданиефайлов

Создание файла осуществляется с помощью команды touch. Вообще говоря, данная команда используется для изменения временных меток доступа (вызывается с ключом -a, --time=access или --time=atime) и модификации (вызывается с ключом -m,
--time=modify или --time=mtime) указанных файлов. Однако, попытка выполнения данной команды над несуществующим файлом приведет к его созданию.

Параметром команды touch является имя файла (или список имен файлов через пробел). Например, следующая команда приведет к созданию трех файлов – f1.txt, f2.lst и f3:

 

touch f1.txt f2.lst f3

 

Ключ -с (или --no-create) предотвращает создание файла в случае, если он не существует.

 

Копирование файлов и каталогов

Для копирования файлов и каталогов применяется команда cp (от англ. copy – копировать). Команда cpтребует присутствия двух обязательных параметров: первый – копируемый файл или каталог (или их список), второй – файл или каталог назначения. Как обычно, в именах файлов и каталогов можно использовать полные и относительные пути и шаблоны.

Синтаксис команды ср:

 

ср [ключи] имя_исходного_файла/каталога имя_целевого_файла/каталога

 

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

Если аргументами команды ср являются имена двух файлов (каталогов), то команда ср копирует исходный файл (каталог) в файл (каталог), имя которого задано целевым файлом (каталогом).

Если последний аргумент не является каталогом и при этом задано несколько имен файлов, то команда ср завершается с ошибкой.

По умолчанию команда cp, как и многие другие команды, будет работать с файлами в текущем каталоге.

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

Некоторые флаги команды ср:

 

-i, --interactive

требует подтверждения при перезаписи существующих целевых файлов

-R, --recursive

копирует каталоги рекурсивно

-v, --verbose

печатает имя каждого файла перед его копированием

-u, --update

копирует только при условии, что исходный (копируемый) файл новее, чем целевой файл, или целевой файл вообще отсутствует

 

Примеры:

 

cp /etc/rc.d/init.d/httpd

копирование файла /etc/rc.d/init.d/httpd в текущий каталог

cp -R prog dir

рекурсивное копирование каталога prog в каталог dir

cp ~/labs/lab1 ~/copy           

копирование файла ~/labs/lab1 в каталог ~/copy

cp ~/labs/lab1 ~/copy/l1

копирование файла ~/labs/lab1 в каталог ~/copy с новым именем l1

           

 

Перемещение/переименование файлов и каталогов

Для перемещения файлов и каталогов применяется команда mv (от англ. move – двигать, перемещать). Перемещение файла внутри одной файловой системы в действительности равнозначно его переименованию: данные самого файла при этом остаются на тех же секторах диска, а изменяются каталоги, в которых произошло перемещение. Перемещение предполагает удаление ссылки на файл из того каталога, откуда он перемещен, и добавление ссылки на этот самый файл в тот каталог, куда он перемещен. В результате изменяется полное имя файла – полный путь, т. е. положение файла в файловой системе.

У команды mvдва обязательных аргумента: первый – перемещаемый файл или каталог (или их список), второй – файл или каталог назначения. Имена файлов и каталогов могут быть заданы в любом допустимом виде: при помощи полного или относительного пути.

Синтаксис команды mv:

 

mv [ключи] имя_исходного_файла/каталога имя_целевого_файла/каталога

 

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

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

Если последний аргумент не является каталогом и при этом задано несколько имен файлов, то команда mv завершается с ошибкой.

По умолчанию команда mv будет работать с файлами в текущем каталоге.

Некоторые флаги команды mv:

 

-i, --interactive

требует подтверждения при перезаписи существующих целевых файлов

-v, --verbose

печатает имя каждого файла перед его перемещением

-u, --update

не перемещает исходный файл, если целевой файл имеет такое же  или более позднее время модификации

 

Примеры:

 

mv /home/peter/arch/1.ar archives

перемещение файла /home/peter/arch/1.ar  в каталог archives

mv lab1 lab2 lab3 ~/old_files    

перемещение файлов  lab1, lab2, lab3 из текущего каталога в каталог ~/old_files

mv file FILE

переименование файла file в FILE

mv ~/labs/lab1 ~/copy/l1

перемещение файла ~/labs/lab1 в каталог ~/copy с новым именем l1

 

 

Создание ссылок

 

Жесткие ссылки (hard links)

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

Пользователь Unix может добавить файлу еще одно имя (создать еще одну жесткую ссылку на файл) при помощи команды ln (от англ. link - соединять, связывать). Первый параметр этой команды – это имя файла, на который нужно создать ссылку, второй – имя новой ссылки. По умолчанию ссылка будет создана в текущем каталоге.

Пример создания жесткой ссылки с именем hard_link в текущем каталоге на файл /home/peter/docs/1.doc:

 

ln /home/peter/docs/1.doc hard_link

 

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

Доступ к одному и тому же файлу при помощи нескольких имен может понадобиться в следующих случаях:

1)      Одна и та же программа известна под несколькими именами.

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

3)      Современные файловые системы даже на домашних персональных компьютерах могут насчитывать до нескольких десятков тысяч файлов и тысячи каталогов. Обычно у таких файловых систем сложная многоуровневая иерархическая организация - в результате пути ко многим файлам становятся очень длинными. Чтобы организовать более удобный доступ к файлу, который находится очень «глубоко» в иерархии каталогов, также можно использовать жесткую ссылку в более доступном каталоге.

4)      Полное имя некоторых программ может быть весьма длинным (например, i586-alt-linux-gcc-3.3), к таким программам удобнее обращаться при помощи сокращенного имени (жесткой ссылки) - gcc-3.3.

 

Символические (мягкие) ссылки

У жестких ссылок есть два существенных ограничения:

1)      Жесткая ссылка может указывать только на файл, но не на каталог, потому что в противном случае в файловой системе могут возникнуть циклы – бесконечные пути.

2)      Невозможно создать на жестком диске жесткую ссылку на файл, расположенный на съемном ностиеле.

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

Символьную ссылку можно создать при помощи команды lnс ключом –s.

Пример создания символьной ссылки с именем olga_file в домашнем каталоге пользователя andrew на файл mylist.lst, который находится в каталоге lists в в домашнем каталоге пользователяolga:

 

ln –s /home/olga/lists/mylist.lst /home/andrew/olga_file

 

Номер индексного дескриптора, размер и время создания файла и символической ссылки на него различаются. Это свидетельствует о том, что сам файл и символическая ссылка – это разные файлы.

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

 

 

Удаление файлов и каталогов

Для удаления файлов предназначена команда rm (от англ. remove - удалять). Она предназначена для удаления жестких ссылок, а не самих файлов. В Unix, чтобы полностью удалить файл, требуется последовательно удалить все жесткие ссылки на него. При этом все жесткие ссылки на файл (его имена) равноправны – среди них нет «главной», с исчезновением которой исчезнет файл. Пока есть хоть одна ссылка, файл продолжает существовать. Впрочем, у большинства файлов в Unix есть только одно имя (одна жесткая ссылка на файл), поэтому команда rm имя_файла/список_имен_файлов в большинстве случаев успешно удаляет файл. Например, команда

 

rm test

 

приведет к удалению файла test. А команда

 

            rm *.txt

 

приведет к удалению всех файлов с расширениями txt.

Некоторые флаги команды rm:

 

-i, --interactive

требует подтверждения при удалении файлов

-v, --verbose

печатает имя каждого файла перед его удалением

 

Для удаления каталогов предназначена другая команда – rmdir (от англ. remove directory – удалить каталог). Впрочем, rmdir согласится удалить каталог только в том случае, если он пуст: в нем нет никаких файлов и подкаталогов. Удалить каталог вместе со всем его содержимым можно командой rm с ключом -r (--recursive). Команда

 

rm -r имя_каталога

 

является очень удобным способом потерять в одночасье все файлы: она рекурсивно обходит весь каталог, удаляя все, что попадется: файлы, подкаталоги, символьные ссылки. А ключ -f (--force) делает ее работу еще неотвратимее, так как подавляет запросы вида «удалить защищенный от записи файл», так что rm работает безмолвно и безостановочно.

Помните: если вы удалили файл, значит, он уже не нужен, и не подлежит восстановлению!

Некоторые флаги команды rmdir:

 

-р, --parents

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

-v, --verbose

печатает имя каждого файла перед его удалением

 

Примеры:

 

rmdir dir32

удаление пустого каталога с именем dir32

rmdir catalog tests temp

удаление пустых каталогов с именами catalog, tests и temp

rm -r /home/anna/tmp

удаление каталога /home/anna/tmp со всем его содержимым

 

 

Просмотр содержимого файлов

Вывод содержимого файла осуществляется несколькими способами. Рассмотрим каждый их них в отдельности.

 

1. Команда more имя_файла/список_имен_файлов выводит на экран содержимое одного или нескольких указанных файлов, при этом нет необходимости запускать текстовый редактор, распечатывать файл или нажимать клавишу паузы во время выхода текста на экран. Например, для вывода на экран содержимого файла /etc/passwd используется команда

 

more /etc/passwd

 

Недостаток этой команды в том, что невозможно пролистать информацию в обратном направлении, а только вперед (с помощью клавиш [пробел ]или [Enter]).

 

2. Команда less имя_файла/список_имен_файлов осуществляет вывод содержимого одного или нескольких указанных файлов на экран и позволяет просматривать его в обоих направлениях. Возврат на предыдущую страницу выполняется после нажатия клавиши [b].

 

3. Команда cat имя_файла/список_имен_файлов осуществляет конкатенацию (объединение) содержимого указанных файлов и вывод его на экран. Ее можно применять для просмотра содержимого небольших файлов. При попытке просмотра больших файлов, а тем более объединения их содержимое быстро промелькнет на экране. Поэтому для просмотра больших файлов лучше пользоваться командами less и more.

            Некоторые флаги команды cat :

 

-b,

--number-nonblank

при выводе содержимого файлов нумерует все непустые строки, начиная с 1

-n, --number

при выводе содержимого файлов нумерует все строки, начиная с 1

-s, --squeeze-blank

заменяет последовательность пустых строк одной пустой строкой

 

           

         Ввод и вывод

Любая программа – это автомат, предназначенный для обработки данных: получая на входе одну информацию, они в результате работы выдают другую. Хотя входящая и/или выходящая информация может быть и нулевой, т. е. попросту отсутствовать. Те данные, которые передаются программе для обработки – это ее ввод, то, что она выдает в результате работы – вывод. Организация ввода и вывода для каждой программы – это задача ОС.

Для того чтобы записать данные в файлили прочитать их оттуда, процессу необходимо сначала открытьэтот файл (при открытии на запись, возможно, придется предварительно создать его). При этом процесс получает дескриптор (описатель) открытого файла – уникальное для этого процесса число, которое он и будет использовать во всех операциях записи. Первый открытый файл получит дескриптор 0, второй – 1 и так далее. Закончив работу с файлом, процесс закрываетего, при этом дескриптор освобождается и может быть использован повторно. Если процесс завершается, не закрыв файлы, за него это делает система. Строго говоря, только в операции открытия дескриптора указывается, какой именно файл будет задействован. В качестве «файла» используются и обычные файлы, и файлы устройств (чаще всего – терминалы), и каналы, описанные далее. Дальнейшие операции – чтение, запись и закрытие – работают с дескриптором, как с потоком данных, а куда именно ведет этот поток, неважно.

Каждый процесс Unix получает при старте три«файла», открытых для него системой.

Первый из них (с дескриптором 0) открыт на чтение, это стандартный ввод процесса. Именно со стандартным вводом работают все операции чтения, если в них не указан дескриптор файла.

Второй «файл» (с дескриптором 1) открыт на запись, это стандартный вывод процесса. С ним работают все операции записи, если дескриптор файла не указан в них явно.

Наконец, третий поток данных (с дескриптором 2) предназначается для вывода диагностических сообщений, он называется стандартный вывод ошибок.

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

Стандартный вывод (standard output, STDOUT) – это поток данных, открываемый системой для каждого процесса в момент его запуска и предназначенный для данных, выводимых процессом.

Стандартный ввод (standard input, STDIN) – это поток данных, открываемый системой для каждого процесса в момент его запуска и предназначенный для ввода данных.

Стандартный вывод ошибок (standard error, STDERR) – это поток данных, открываемый системой для каждого процесса в момент его запуска и предназначенный для диагностических сообщений, выводимых процессом.

 

Перенаправление ввода и вывода

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

 

> файл

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

>> файл

Перенаправление вывода. Дописать выходную информацию в файл следом за его содержимым.

< файл

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

 

            Примеры:

 

1s -l >> filelist

список файлов текущего каталога дописать в файл filelist

cat f1 f2 f3 > f4

содержимое файлов f1, f2 и f3 поместить в файл f4

> textfile

создание файла textfile

sort < mylist.txt

сортировка файла mylist.txt (если вызвать команду sort без параметра, она будет читать строки со стандартного ввода)

 

 

Перенаправление вывода ошибок

Использование стандартного вывода ошибок наряду со стандартным выводом позволяет отделить собственно результат работы программы от разнообразной сопровождающей информации, например, направив их в разные файлы. Стандартный вывод ошибок может быть перенаправлен так же, как и стандартный ввод/вывод, для этого используется комбинация символов «2>» или «2>>» . Например, при выполнении команды

 

cat info 2>>cat.err

 

в случае, если файл info не существует, ошибка не будет выдана на экран, а допишется в файл cat.err.

Иногда, однако, требуется объединить стандартный вывод и стандартный вывод ошибок в одном файле, а не разделять их. В командной оболочке bash для этого имеется специальная последовательность «2>&1». Это означает «направить стандартный вывод ошибок туда же, куда и стандартный вывод»:

 

cat info >info_file 2>>&1

 

В данном примере сначала указано, куда перенаправить стандартный вывод (>info_file) и только потом указано направить туда же стандартный вывод ошибок (2>>&1). Если бы было указано перенаправление потока ошибок перед перенаправлением вывода (2>&1 > info_file), в файл попал бы только стандартный вывод, а диагностические сообщения появились бы на терминале. Однако логика здесь железная: на момент выполнения операции 2>&1 стандартный вывод был связан с терминалом, значит, после ее выполнения стандартный вывод ошибок тоже будет связан с терминалом. А последующее перенаправление стандартного вывода в файл, конечно, никак не отразится на стандартном выводе ошибок. Номер в конструкции &номер – это номер открытого дескриптора. Чтобы не набирать громоздкую конструкцию > файл 2>&1 в bash используются сокращения: &> файл или, что то же самое, >& файл.

 

Перенаправление в никуда

Иногда заведомо известно, что какие-то данные, выведенные программой, не понадобятся. Например, предупреждения со стандартного вывода ошибок. В этом случае можно перенаправить стандартный вывод ошибок в файл устройства, специально предназначенный для уничтожения данных – /dev/null. Это устройство называется пустым или «мусорной корзиной». Все, что записывается в этот файл, будет просто  проигнорировано:

 

cat info >info_file 2> /dev/null

 

Точно таким же образом можно избавиться и от стандартного вывода, отправив его в /dev/null.

 

 

Конвейер

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

Для перенаправления стандартного вывода на стандартный ввод другой программе служит символ «|». Самый простой и наиболее распространенный случай, когда требуется использовать конвейер, возникает, если вывод программы не умещается на экране монитора и очень быстро «пролетает» перед глазами, так что человек не успевает его прочитать. В этом случае можно направить вывод в программу просмотра less, которая позволит не торопясь пролистать весь текст, вернуться к началу и т. п.:

 

cat employers.txt | less

 

Можно последовательно обработать данные несколькими разными программами, перенаправляя вывод на ввод следующей программе и организуя сколь угодно длинный конвейер для обработки данных. В результате получаются очень длинные командные строки вида cmd1 | cmd2 | ... | cmdN, которые могут показаться громоздкими и неудобными, но оказываются очень полезными и эффективными при обработке большого количества информации, как мы увидим позже при рассмотрении фильтров.

Организация конвейера устроена по той же схеме, что и перенаправление в файл, но с использованием особого объекта системы – канала. Если файл можно представить в виде коробки с данными, снабженной клапаном для чтения или клапаном для записи, то канал – это оба клапана, приклеенные друг к другу вообще без коробки. Для определенности между клапанами можно представить трубу, немедленно доставляющую данные от входа к выходу (английский термин pipe основан как раз на этом представлении, а в роли трубы выступает, конечно же, сама ОС Unix). Каналом пользуются сразу два процесса: один пишет туда, другой читает. Связывая две команды конвейером, командная оболочкаоткрывает канал (заводится двадескриптора – входной и выходной), подменяет по уже описанному алгоритму стандартный вывод первого процесса на входной дескриптор канала, а стандартный ввод второго процесса – на выходной дескриптор канала. После чего остается запустить по команде в этих процессах, и стандартный вывод первой попадет на стандартный ввод второй. Таким образом, канал – это неделимая пара дескрипторов (входной и выходной), связанных друг с другом таким образом, что данные, записанные во входной дескриптор, будут немедленно доступны на чтение с выходного дескриптора.

 

 

         Некоторые полезные команды

 

echo – выводит на стандартный вывод указанную строку символов и осуществляет перевод строки. Например:

 

echo My name is John

выводит текст My name is John на экран

echo My name is John > f

выводит текст My name is John в файл f

 

date – вызванная без параметров, выводит текущую дату/время.

 

who – вызванная без параметров, выводит информацию о пользователях, в данный момент зарегистрировавшихся в системе (по столбцам: имя пользователя, терминал, время регистрации, имя удаленного компьютера).

 

users – вызванная без параметров, выводит информацию о пользователях, в данный момент зарегистрировавшихся в системе (только их имена в строку).

 

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

 

uname - выводит информацию о компьютере и запущенной операционной системе. Флаги:

 

-a, --all

выводит подробную информацию в виде следующих столбцов:

SYSNAME – имя ОС

NODENAME – имя узла

RELEASE – релиз ОС

OSVERSION – версия ОС, включая дату выпуска

MACHINE – сведения о компьютере

-m, --machine

выводит тип компьютера

-n, --nodename

выводит имя сетевого узла

-p, --processor

выводит тип процессора данного компьютера

-r, --release

выводит релиз ОС

-s, --sysname

выводит наименование ОС

-v

выводит версию ОС

 

 

wc – (от англ. word count - подсчет слов). используется для подсчета числа строк, символов и слов в указанных файлах или стандартном вводе, если имя файла не задано или вместо него стоит дефис. Если указано более одного файла, выводятся их имена и значения счетчиков, а в конце вывода выводится итоговая сумма накопленных счетчиков.

Флаги:

 

-c, --chars

выводит только количество символов

-l, --lines

выводит только количество строк

-w, --words

выводит только количество слов

-L, --max-line-length

выводит только длину самой длинной строки

 

            По умолчанию команда вызывается с флагами -clw.

            Примеры:

 

wc mytext

выводит количество символов, строк и слов в файле mytext

wc -lL ~/texts/mytext

выводит количество строк и длину самой длинной строки файла ~/texts/mytext

 

tee – одновременно копирует стандартный ввод на стандартный вывод и в указанные файлы. Если файлы не существуют, они создаются. Если же файл имеется, то он будет перезаписан, если только не указан флаг (или --append) – добавить стандартный вывод к содержимому указанных файлов. Команда tee чаще всего используется в конвейере. Она полезна тогда, когда необходимо не только послать данные далее по конвейеру, а и сохранить их копию.

            Примеры:

 

cat file | tee a b c d

копирует содержимое файла file в файлы a, b, c и d и выводит на экран

cat text1 text2 text3 | tee copy

 

копирует объединенное содержимое файлов  text1, text2 и text3 в  файл copy выводит на экран

 

 

         Специальные символы

            Некоторые символы в shell имеют специальное значение. Например, шаблонные символы «[]», «*», «?», символ доступа к значению переменной «$», символы перенаправления ввода и вывода «>» и «<», символ конвейера «|», пробел, используемый как разделитель. Иногда возникает необходимость отменить их специальное значение, например если мы хотим использовать один из этих символов в имени файла. В этом случае такое имя следует заключить в двойные кавычки. Двойные кавычки отменяют действие всех спецсимволов, кроме «$» и «!». Например, в результате выполнения команды

 

     cp ./f* /tmp

 

в каталог /tmp будут скопированы все файлы из текущего каталога, имена которых начинаются на f. А при выполнении команды

 

cp ./”f*” /tmp

 

в каталог /tmp из текущего каталога будет скопирован файл с именем f*.

            Для отмены действия специального символа «$» строку символов необходимо заключить в одинарные кавычки. Например, пусть введена команда

 

var=’Hello world!’

 

Результатом работы команды

 

echo $var

 

будет строка «Hello world!». Результатом работы команды

 

echo ”$var”

 

также будет строка «Hello world!». А результатом работы команды

 

echo ‘$var’

 

будет строка «$var».

            Как уже упоминалось ранее, символ «\» ликвидирует специальное значение следующего непосредственно за ним символа. Например, в результате выполнения команды

 

echo \$var

 

на экран будет выведена  строка «$var». 


Комментарии


Комментариев пока нет

Пожалуйста, авторизуйтесь, чтобы оставить комментарий.

Авторизация
Введите Ваш логин или e-mail:

Пароль :
запомнить