русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Стандартный вход и стандартный выход


Дата добавления: 2014-11-27; просмотров: 1403; Нарушение авторских прав


Многие команды UNIX получают информацию с так
называемого стандартного входа и посылают информацию на
(опять же) так называемый стандартный выход. (Для них часто


используются сокращения "stdin" и "stdout" соответственно).
Ваш shell организует дело так, что стандартным входом служит
клавиатура, а стандартным выходом - экран.

Вот пример использования команды cat. Нормально cat
читает данные из файлов, чьи имена даны в командной строке и
посылает эти данные прямехонько на stdout. Поэтому при
выполнении команды

/home/guest/papers# cat history-final
masters-thesis

на экран пойдет файл history-final, а за ним следом masters-
thesis.

Но если команде cat не даны имена файлов в качестве
параметров, она читает данные с stdin и опять же посылает на
stdout. Вот пример.

/home/guest/papers# cat

Hello there.

Hello there.

Bye.

Bye.

[ctrl-D]

/home/guest/papers#

Как видите, каждая строка, которую напечатал
пользователь, немедленно выдается командой cat на экран. При
вводе со стандартного входа команда знает, что ввод закончен
тогда, когда она получит в каком-то виде сигнал EOT (End-Of-
Text). Обычно он обеспечивается нажатием ctrl-D.

Вот другой пример. Команда сортировки sort читает
построчно текст (здесь опять с stdin, поскольку имена файлов в
параметрах не указаны, и посылает отсортированный результат
на stdout. Попробуйте так.

/home/guest/papers# sort

bananas

carrots

apples

[ctrl-D]

apples

bananas


carrots
/home/guest/papers#

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

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

/home/guest/papers# sort > shopping-list



bananas

carrots

apples

[ctrl-D]

/home/guest/papers#

Как вы можете видеть, результат работы команды sort не
отображается на экране, вместо этого он сохраняется в файле
shopping-list (список покупок). Давайте посмотрим на этот файл.

/home/guest/papers# cat shopping-list

apples

bananas

carrots

/home/guest/papers#

Теперь мы можем не только сортировать (упорядочивать)
список планируемых покупок, но и сохранять его! Но
предположим, что мы хранили наш неотсортированный
исходный закупочный список в файле под именем items. Один из
способов сортировки и сохранения его, это отсортировать файл с
данным именем, вместо получения файла со стандартного входа,
и перенаправить стандартный выход в файл. Например так

/home/guest/papers# sort items > shopping-
list

/home/guest/papers# cat shopping-list

apples

bananas

carrots

/home/guest/papers#


4. Порядок выполнения работы

Пользуясь информацией, описанной в главе 3, а также
литературой, проделать следующее:

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

Входя под именами этих пользователей поочередно
проделать следующее:

- взять/создать любой файл текстового формата

- пользуясь только базовыми командами создать из этого
файла по 5-6 файлов, названия которых принадлежат
какой-либо области. Например: пользователь cars, a
имена файлов для него будут bmw725, mercedesE240 и
т.д.

- отсортировать этот список по алфавиту и обратно и
результаты занести в файл <имя пользователя>.sоrt.1оg.

- пользуясь шаблонами, выделить какую-либо часть в
именах файлов одной группы (желательно чтобы
результат был хотя бы >2), и результат записать в файл
<шаблон>.<имя пользователя>.log. Например, в нашем
примере буква m повторяется 2 раза, и может быть
выбрана в качестве шаблона.

Информация обо всех log-файлах должна быть записана в
текстовый файл all.logs, который должен содержать информацию
в длинном формате, например

-rw-r-r— 1 guest users 505 Sep 08 23:12
bmw725

На дискете создать каталоги, имена которых = имена
пользователей, и скопировать файлы для всех пользователей,
включая log-файлы.


5. Контроль выполнения работы

Отчет должен содержать:

- краткое описание проделанной работы,

- файл all.logs результатов,

- дискету с данными.

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

6. Контрольные вопросы

1. Для чего нужен SHELL?

2. Что такое shell-scripts?

3. Какие типы оболочек существуют в LINUX? В чем их
сходства и различия?

4. Для чего существует root и какие его основные задачи?

5. Каким образом происходит добавление и удаление
пользователей?

6. Какая информация используется в LINUX при создании
пользователя?

7. Поясните смысл полей user и group?

8. Опишите концепции файлов и каталогов в LINUX, структуру
файловой системы?

9. Каким образом может происходить смена пароля для
обычных пользователей и администратора?

10. Домашний каталог пользователя: назначение, применение,
содержание, виды обращений к нему?

11. Базовые команды в LINUX: имена и примеры?

12. Команда смены каталога: имя, синтаксис, пример?

13. Команда выдачи информации о фалах и каталогах: имя,
синтаксис, пример?

14. Команды операции с файлами: имена, синтаксис, примеры?
15. Команды операции с каталогами: имена, синтаксис,
примеры?


16. Команда использования руководства: имя, назначение,
синтаксис, примеры?

17. Команды, применяемые для рассматривания файлов: имена,
синтаксис, примеры?

18. Поясните про использование шаблонов в LINUX. Приведите
примеры?

19. Стандартный вход и стандартный выход: назначение,
обозначения? Приведите пример их использования?

20. Поясните на примере методику перенаправление входа и
выхода?

Лабораторная работа № 9
SHELL и
команды. Часть 2

1.Права доступа кфайлам
1.1.Концепция правдоступа

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

UNIX позволяет также совместно использовать файлы
нескольким пользователям и группам пользователей. Если Larry
так пожелает, он может закрыть доступ к своим файлам так, что
никто другой не сможет к ним подступиться. Однако в
большинстве систем по умолчанию другим пользователям
разрешается читать ваши файлы, но запрещается изменять или
удалять.

Как объяснялось выше, каждый файл имеет конкретного
владельца. Но, кроме того файлами, также владеют конкретные


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

Группы обычно определяются типами пользователей
данной машины. Например, в университетском UNIX
пользователи могут быть разбиты на группы студент,
преподаватель, руководство, гость, (прим. переводчика:
осмелюсь предположить, что в отечественной книге
перечисление примеров групп было бы начато с группы
"руководство"...).

Есть также несколько системно-зависимых групп (вроде bin
и admin), которые используются самой системой для управления
доступом к ресурсам. Очень редко обычный пользователь
принадлежит к этим группам.

Права доступа подразделяются на три типа: чтение (read),
запись (write)
и выполнение (execute). Эти типы прав доступа
могут быть предоставлены трем классам пользователей:
владельцу файла, группе, в которую входит владелец, и всем
(прочим) пользователям.

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


1.2.Интерпретация правдоступа

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

/home/larry/foo# ls -l stuff

-rw-r—г— 1 larry users 505 Mar
13 19:05 stuff

/home/larry/foo#

Первое поле в выведенной строке представляет права
доступа. Третье поле - владельца файла (larry) и четвертое -
группу (users). Очевидно, что последнее поле есть имя файла
(stuff), а остальные поля мы обсудим позже.

Этим файлом владеет larry, и он принадлежит группе users.
Давайте посмотрим на права доступа. В строке -rw-r-r— по
порядку указаны права владельца, группы и всех прочих.

Первый символ этой строки прав доступа ("-") представляет
тип файла. Символ "-" означает, что это обычный файл (в
противоположность каталогу или специальному файлу какого-то
устройства). Следующие три позиции ("rw-") представляют
права доступа, которые имеет владелец файла larry. Символ
"r"означает "rеаd"(читать), "w" - "write"(писать). Таким образом
larry может читать файл stuff и писать в него.

Как мы уже упоминали, кроме разрешений на чтение и
запись существует разрешение на выполнение "execute" -
представляемое символом "х". Но в данном случае на этой
позиции "-", так что у Larry нет прав на выполнение этого файла.
И это чудесно, файл stuff совсем даже не является программой.
Разумеется, поскольку Larry владеет файлом, он может дать сам
себе разрешение на выполнение этого файла, если захочет. Мы
эту процедуру скоро обсудим.

Следующие три символа г— представляют права доступа
группы для этого файла. Эта группа имеет имя users. Поскольку


тут есть только "r", любой пользователь этой группы может
только читать файл.

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

1.3.Зависимости

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

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

Обычно пользователи UNIX весьма открыты всеми своими
файлами. Обычно файлам устанавливается защита -rw-r-r—,
которая позволяет другим пользователям читать файлы, но ни
коим образом их не менять. Каталогам обычно устанавливаются
права доступа drwxr-xr-x, что позволяет другим пользователям •
ходить с правами экскурсантов по вашим каталогам. Но ничего в
них не трогать и не записывать.

Но многие пользователи хотят держать других
пользователей подальше от своих файлов. Установив права
доступа файла, -rw—— вы никому не покажете этот файл и не
дадите записать в него. Также хорошо закрывает от всех файлы
защита соответствующего каталога drwx—— .

1.4Изменение прав доступа

Команда chmod используется для установки (изменения)
прав доступа файла. Только владелец файла может менять права
доступа к нему.


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

chmod {a,u,g,o}{+,-}{r,w,x) <filenames>

Кратко, вы выбираете из all (все), user (пользователь), group
(группа) или other (другие). Далее указываете, либо вы
добавляете права (+), либо лишаете прав (-). И наконец, вы
указываете один или несколько режимов: read, write или execute.
Несколько примеров допустимых команд:

chmod a+r stuff

Дает всем пользователям право читать файл stuff.

chmod +r stuff

То же самое, что и ранее (а - по умолчанию).

chmod og-x stuff

Лишает права на выполнение всех, кроме владельца,
chmod u+rwx stuff

Разрешает владельцу все (read, write и execute).
chmod o-rwx stuff

• Запрещает все (read, write и execute) пользователям
категории другие (other).

2. Управление связями файлов

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

2.1 Жесткие связи

Команда ln используется для создания множества связей для
одного файла. Например, скажем, что у вас есть файл foo.
Используя ls -i можно посмотреть индекс этого файла.

# ls -i foo
22192 foo

#


Здесь файл foo имеет в файловой системе индекс 22192. Мы
можем создать новую связь для этого файла под именем bar:

# ln foo bar

С помощью ls -i можно убедиться, что оба файла имеют
один и тот же индекс.

# ls -i foo bar
22192 bar 22192 foo

#

Теперь, обращаясь к foo или bar мы фактически обратимся к
одном у тому же файлу. Поэтому, если мы меняем что-то в файле
foo, эти же самые изменения произойдут в файле bar.

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

Когда вы удаляете файл командой rm, на самом деле вы
удаляете только одну ссылку на файл. Если вы введете команду

# rm foo

Удаляется только связь, имеющая имя foo; bar будет как и
прежде существовать. Файл только тогда действительно
удаляется, когда на него больше нет связей. Обычно файлы
имеют только одну связь, так что команда rm действительно
приведет к удалению файла. Однако, если файл имеет много
ссылок, применение rm приведет только к удалению одной связи;
для того, чтобы удалить файл, вы должны удалить все связи на
этот файл.

Команда ls -1 покажет число ссылок на файл (кроме прочей
информации)

# ls -1 foo bar

-rw-r—r— 2 root root 12 Aug 5
16:51 bar

-rw-r—r— 2 root root 12 Aug 5
16:50 foo

#

Вторая колонка с цифрой "2" показывает число связей
файла.


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

2.2Символические связи

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

Команда ln -s создаст символическую ссылку на указанный
файл. Например, если мы воспользуемся командой

# ln -s foo bar

мы создадим символьную ссылку bar, указывающую на
файл foo. Если теперь используем команду ls -i, то увидим, что
два файла имеют различные индексы.

# ls -i foo bar
22195 bar 22192 foo

#

Однако, используя ls -1, мы видим, что файл bar имеет
символический указатель на foo.

# ls -1 foo bar

lrwxrwxrwx l root root 3 Aug 5
16:51 bar -> foo

-rw-r—r— 1 root root 12 Aug 5
16:50 foo

#

При символической ссылке не используются биты прав
доступа (они всегда отображаются, как rwxrwxrwx). Вместо
этого, права доступа к файлу, полученному символической
ссылкой, определяются правами доступа к файлу, на который он
ссылается (в нашем примере определяется правами файла foo).

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


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

Ссылки используются во многих местах системы Linux.
Символические ссылки особенно важны для образов разделяемых
библиотек в /lib.

3.Управление работами
3.1Работы и процессы

Управление работами (job control) это возможность,
которую предоставляют многие оболочки, включая (Bash и Tcsh).
Управление работами позволяет управлять множеством команд
или работ одновременно. Прежде, чем вы закопаетесь
значительно глубже, следует поговорить о процессах.

Каждый раз, когда вы выполняете программу, вы начинаете
то, что известно, как процесс. Процесс -это название для
выполняемой программы. Команда ps выдаёт перечень имеющих
место в данный момент процессов. Вот пример:
/home/larry# ps



<== предыдущая лекция | следующая лекция ==>
Базовые команды | PID TT STAT TIME COMMAND


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.205 сек.