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


 

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

69264. Методика вивчення об’єктів технологічної діяльності 338 KB
  Методика ознайомлення учнів п’ятого класу з використанням знарядь праці у процесі технологічної діяльності та об’єктами технологічної діяльності: машини, книги, меблі тощо. Вибір об’єкту технологічної діяльності залежно від потреб людини.
69265. Методи проектно-технологічної діяльності. Методика навчання учнів проектуванню та виготовленню об’єктів технологічної діяльності 180.5 KB
  Отже сьогодні мова очевидно буде йти не лише про ті методи які традиційно застосовував учитель і якими володів лише учитель але й про методи та прийоми активної та інтерактивної діяльності якими мають також володіти учні. Враховуючи інтереси учнів учитель складає банк навчальних...
69266. Методика вивчення в основній школі конструкційних матеріалів 58.5 KB
  Методика вивчення у п’ятому класі видів конструкційних матеріалів, які застосовуються для виготовлення виробів: деревина, метал, пластмаса, резина тощо; способів вибору конструкційних матеріалів для виготовлення виробів; формування в учнів поняття про 5х властивості.
69267. Створення меню 55.5 KB
  Як і решта всіх ресурсів додатку, ресурс меню розташований у файлі опису ресурсів з розширенням - гс (resource script). Для доступу до файлу ресурсу перейдіть до на вкладку Resources View (Ресурси), розташовану в нижній частина вікна представлення проекту.
69268. Створення обробників подій меню 30.5 KB
  Після того, як ресурс меню буде створений, можна переходити до розробки коди, пов’язаної з подіями пунктів меню. Щоб побачити цей процес у дії, досить клацнути правою кнопкою миші на пункті меню ID_SPEAK_BEFORMAL і в контекстному меню, що з’явилося, вибрати пункт Add Event Handler...
69269. Контекстні меню 33.5 KB
  З моменту дебюту Windows 95 корпорація Microsoft забезпечує застосування контекстних меню. Контекстне меню (context menu), іноді зване спливаючим меню (popup menu), ніяк не сполучене з рядком меню. Воно відображається у тому випадку, коли користувач, вибравши об’єкт, клацає правою кнопкою миші.
69270. Обробка подій миші 43 KB
  У цьому розділі розглядаються способи організації введення даних за допомогою миші і клавіатури. У першому розділі описується стандартна система введення даних, використовувана операційною системою Windows для контролю стану введення (input state).
69271. Рядок стану 64 KB
  Рядок стану є багатоелементною смугою, розташованою внизу фреймового вікна. Вона використовується для відображення різних даних, специфічних для цього додатку. Практично всі додатки Windows (як SDI, так і MDI) мають рядки стану. Крім того, вони є навіть у деяких діалогових застосувань.
69272. Створення і маніпулювання панелями інструментів 58 KB
  Оскільки панелі інструментів займають дорогоцінний екранний простір вони повинні містити лише найбільш часто використовувані команди. У достатньо великих застосуваннях для вирішення різних завдань застосовується декілька різних панелей інструментів.