70096

Операционные системы. Полезные команды Unix

Лабораторная работа

Информатика, кибернетика и программирование

Файлы, имена которых записаны в файле f7, скопировать в каталог dir4, при этом сообщить об ошибках текстом на экране, а так же направить это сообщение об ошибках в файл myerr. Просмотреть его содержимое.

Русский

2015-01-19

89.5 KB

3 чел.

Операционные системы

Лабораторная работа №2

  1.  Создать в домашнем каталоге три директории dir1, dir2, dir3.
  2.  В dir1 создать два файла с помощью команды touch.
  3.  В файл f1 поместить информацию о пользователях, зарегистрированных в системе, а в файл f2 – содержимое домашней директории, просмотреть содержимое f1 и f2.
  4.  Скопировать файл f1 в каталог dir2 с именем f3. Для файла f2 в каталоге dir2 создать жёсткую ссылку, а для f3 – мягкую. Получить подтверждение выполнению своих действий. Мягкую ссылку удалить, а жесткую переименовать в f4.
  5.  В dir3 создать файл f5, в котором будет объединена информация, хранящаяся в файлах f1 и f2.
  6.  Обновить содержимое файла f2, поместив туда расширенную информацию о содержимом домашнего каталога. Просмотреть на экране содержимое файла f2 постранично.
  7.  В dir3 создать файл f6, содержащий следующие сообщения:

«Список содержимого домашней директории»

  1.  Добавить к содержимому файла f6 текущую дату и содержимое файла f2. Просмотреть полученное содержимое.
  2.  В dir1 создать файл f7, в котором будет храниться список файлов текущего каталога в следующем виде:

"Файлы, начинающиеся с буквы f:"

[список таких файлов]

 "Файлы, начинающиеся на букву h:"

[список таких файлов]

  1.  Файлы, имена которых записаны в файле f7, скопировать в каталог dir4, при этом сообщить об ошибках текстом на экране, а так же направить это сообщение об ошибках в файл myerr. Просмотреть его содержимое. Повторить копирование несколько раз (при этом, в файле myerr число записей должно быть равно числу попыток копирования).
  2.  Просмотреть содержимое каталога dir4, подавив сообщение об ошибках.
  3.  Файл f1 скопировать в файл f7 таким образом, чтобы содержимое файла f1 было отображено на экране. Показать результат работы преподавателю, защитить работу и выполнить следующий пункт.
  4.  Удалить содержимое dir1 с помощью команды rmdir, удалить dir2 и dir3 рекурсивно.


Справочная информация

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

$ _

или

 [<username>@<hostname> <workdir>]$ _

где username – логин пользователя, hostname – имя сервера, workdir – текущая директория, в которой находится пользователь. По умолчанию сразу же после открытия сеанса в качестве текущей директории устанавливается домашний каталог пользователя. Для определения домашнего каталога пользователя, можно воспользоваться командой

finger <username>.

Команда finger позволяет также вывести дополнительную информацию о пользователе.

Специальный символ “~” используется как синоним «домашнего каталога пользователя», например:

 ~ - домашний каталог текущего пользователя (того пользователя, чей сеанс открыт в данный момент)

~username – домашний каталог пользователя username

Пример: Пусть открыт сеанс пользователя user, домашний каталог которого: /home/user. Тогда:  ~, ~user и /home/user – одно и то же.

Работая в терминале, пользователь может вводить команды для выполнения каких-либо действий в системе. Для удобства редактирования вводимых команд Shell сохраняет в памяти все вводимые пользователем команды, переключаться между которыми можно с помощью клавиш () – вызов предыдущей (следующей) команды. Все введенные за сеанс команды сохраняются в файле ~/.bash_history по окончании сеанса. Посмотреть список всех введенных ранее команд можно с помощью команды history.

Для очистки экрана можно использовать команду clear или комбинацию клавиш Ctrl+L

При редактировании вводимых и вызванных команд становятся доступными стандартные клавиши перемещения курсора, удаления символов. При редактировании команды для быстрого перехода в конец строки можно использовать комбинацию Ctrl+E, для быстрого перехода в начало строки – комбинацию Ctrl+A. Для отмены и возврата к системному приглашению используется комбинация Ctrl+C. Эта комбинация также часто применяется для прерывания выполнения каких-либо программ.

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

Полезные команды Unix

man  – система помощи

help  – краткий синтаксис основных команд

locate  – поиск файлов, используя индексную базу

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

date  – выводит текущую дату и время

who  – информация о подключённых пользователях

users  – выводит список подключенных пользователей

uname  – выводит информацию об ОС

w – выводит список подключенных пользователей и что они делают в текущий момент

hostname  – выводит информацию о имени компьютера

tty   – показывает имя текущего терминала

whoami  – выводит регистрационное имя текущего пользователя (логин)

echo  ТЕКСТ – выводит ТЕКСТ на экран

  1.  Файловая система, навигация по ней

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

pwd  – отображает полный путь к текущей директории

cd  директория – переходит в указанную директорию

cd ..  – переход в предыдущую по дереву файловой системы директорию

ls   – отображает содержимое директории,

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

ls -R – рекурсивный обход всех подкаталогов

ls -а – отображает все файлы, в том числе, начинающиеся с ".";

ls -1 (единица) - вывод данных в один столбец, по одному файлу в каждой строке;

ls -color – отображает файлы разного типа разными цветами (работает не для всех версий UNIX).

mkdir  директория – создает директорию

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

cp  ИСТОЧНИК НАЗНАЧЕНИЕ – копирование файла(-в) ИСТОЧНИКА в папку НАЗНАЧЕНИЯ

mv  ИСТОЧНИК НАЗНАЧЕНИЕ – перемещение файла(-в) ИСТОЧНИКА в папку НАЗНАЧЕНИЯ

cat  ФАЙЛ1 .. ФАЙЛ N – сцепляет файлы и выводит на стандартный вывод

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

ln  КЛЮЧ  ЦЕЛЬ  ИМЯ_ССЫЛКИ – создает жёсткую ссылку на указанный объект ЦЕЛЬ с необязательным именем ИМЯ_ССЫЛКИ. КЛЮЧ – для символической ссылки -s

more  ФАЙЛ – команда просмотра содержимого файла

less ФАЙЛ – команда просмотра содержимого файла (с возможностью перелистывания содержимого)

unlink  ФАЙЛ – удаление файла

rm  ФАЙЛ  удаление файлов (и каталогов)

-d, --directory  удаляет каталог

-r, -R, --recursive рекурсивно удаляет содержимое каталога

file  ФАЙЛ – определяет тип файла ФАЙЛ

tee  ФАЙЛ – Копирует стандартный ввод в каждый ФАЙЛ, а также в стандартный вывод.

  1.  Ввод и вывод

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

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

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

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

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

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

В 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, которые могут показаться громоздкими и неудобными, но оказываются очень полезными и эффективными при обработке большого количества информации, как мы увидим позже при рассмотрении фильтров.

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

`  ` – подстановка результатов команды (обратные кавычки). Сначала выполняется команда в обратных кавычках, затем результат её работы подставляются вместо выражения с кавычками:

echo `date`

~  – обозначает домашний каталог текущего пользователя

cd ~   – переход в домашний каталог текущего пользователя

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

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

*

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

?

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

[ ]

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

  •  явным перечислением символов, без указания разделителей между ними, например [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 до е включительно. В английском языке, где сортировка букв идет по порядку (ABCXYZabcxyz), указанному набору соответствует набор символов b, c, d, e. Согласно правилам русского языка, сортировка тех же символов идет в другом порядке (аАбБвВ…эЭюЮяЯaAbBcCxXyYzZ) и тому же диапазону соответствуют символы b, B, c, C, d, D, е. Для решения таких проблем имеются объявления некоторых классов и категорий символов:

[:upper:]

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

[:lower:]

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

[:alpha:]

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

[:alnum:]

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

[:digit:]

Цифры

[:xdigit:]

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

[:punct:]

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

[:blank:]

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

[:space:]

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

[:cntrl:]

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

[:graph:]

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


<Student_name
>

dir1

ir2

dir3

F1

F2

F7

F3

F4

F5

F6


 

А также другие работы, которые могут Вас заинтересовать

13677. Примеры эссе по курсу обществознания. Общество – свод камней, который обрушился бы, если бы один не поддерживал другого 18.33 KB
  Общество свод камней который обрушился бы если бы один не поддерживал другого Сенека. Эссе № 1Я не согласна с данной точкой зрения. Вопервых общество понятие многозначное. Общества бывают разные. Я сама столкнулась в жизни с одной ситуацией. В городе есть два обще
13678. Подлинное национальное самосознание может быть лишь творческим, оно обращено вперед, а не назад 14.46 KB
  Подлинное национальное самосознание может быть лишь творческим оно обращено вперед а не назад.Н. БердяевПод национальным самосознанием понимается отражение сознаниянации в индивидуальном сознании ее членов выражающих усвоениепоследними представлений о месте и р
13679. Положительное и отрицательное влияние маргинальности на общество 16.55 KB
  Положительное и отрицательное влияние маргинальности на общество. Прежде всего дадим определение понятия маргинальность на котором будет основываться последующее рассуждение на предложенную тему. Классическое и наиболее часто используемое определение данного я...
13680. Семья - один из шедевров природы 14.29 KB
  Семья один из шедевров природы. Дж. Сантаяна Попытаемся ответить на вопрос почему Дж. Сантаяна считает семью одним из шедевров природы. Для начала укажем определение семьи это объединение людей основанное на браке кровном родстве или усыновлении и связанное меж...
13681. Семья является первичным лоном человеческой культуры 14.87 KB
  Семья является первичным лоном человеческой культурыИ. Ильин.Данное высказывание посвящено весьма актуальной социологической проблеме. Автор поднимает проблему семьи как самой ценной ячейке общества.Русский философ Иван Ильин придавал большое значение семье как в
13682. Создает человека природа, но развивает и образует его общество. В.Т. Белинский 16.16 KB
  Создает человека природа но развивает и образует его общество. В.Т. Белинский Человек это высшая ступень развития живых организмов на земле субъект общественноисторической деятельности и культуры но важнейшей его характеристикой является биосоциальная сущн
13683. Счастье. Все счастливые семьи похожи друг на друга, каждая несчастливая семья несчастна по-своему 14.69 KB
  Все счастливые семьи похожи друг на друга каждая несчастливая семья несчастна по-своему Л.Толстой. Важнейшим соц. институтом и основной ячейкой общества является семья общность людей основанная на единой общесемейной деятельности супружеских узах и кровном родстве....
13684. Гуманность, есть только привычка, плод цивилизации. Она может совершенно исчезнуть 14.56 KB
  Гуманность есть только привычка плод цивилизации. Она может совершенно исчезнуть. Ф.М. Достоевский Гуманность гуманизм это человеколюбие осознание собственной ценности и ценности другого человека. Гуманизм подчеркивает именно человеческие качества личности то
13685. Индивидом рождаются, личностью становятся, индивидуальность отстаивают 13.55 KB
  Индивидом рождаются личностью становятся индивидуальность отстаивают А.Г. Асмолов Я полностью согласна с афоризмом А.Г. Асмолова. Индивид человек носитель каких-либо черт. Природа наделяет человека не только биологическими качествами внешней сходностью...