Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SPO_SRS.doc
Скачиваний:
5
Добавлен:
02.05.2019
Размер:
1.06 Mб
Скачать

2.3. Перенаправлення команд

Стандартне введення (вхід) - "stdin" в ОС UNIX здійснюється з клавіатури терміналу, а стандартне виведення (вихід) - "stdout" направлений|спрямований| на екран терміналу. Існує ще і стандартний файл діагностичних повідомлень|сполучень| - "stderr", про яке мова|промова| буде трохи|ледве| пізніша.

Команда, яка може працювати із|із| стандартним входом і виходом, називається ФІЛЬТРОМ.

Користувач має зручні засоби|кошти| перенаправлення введення і висновку|виведення| на інші файли (пристрої|устрої|). Символи ">" і ">>" позначають|значать| перенаправлення виведення.

ls >f1

команда "ls" сформує список файлів поточного каталога і помістить його у файл "f1" (замість видачі на екран). Якщо файл "f1" до цього існував, то він буде затертий новим.

pwd >>f1

команда pwd сформує повне|цілковите| ім'я поточного каталога і помістить його в кінець файлу "f1", тобто ">>" додає|добавляє| у файл, якщо він непорожній|пустий|.

Символи "<" і "<<" позначають|значать| перенаправлення введення.

wc -l <f1

підрахує|підсумує| і видасть на екран число рядків у файлі f1.

ed f2 <<!

створить з використанням редактора файл "f2", безпосередньо з терміналу. Закінчення введення визначається по символу, що стоїть правіше за "<<" (тобто "!"). Тобто|цебто| введення буде закінчене, коли першим в черговому рядку буде "!".

Можна поєднувати|сполучати| перенаправлення. Так

wc -l <f3 >f4 і wc -l >f4 <f3

виконуються однаково: підраховується|підсумовується| число рядків файлу "f3" і результат поміщається у файл "f4".

Засіб|кошт|, об'єднуючий стандартний вихід однієї команди із|із| стандартним входом іншої, називається КОНВЕЙЄРОМ і позначається|значиться| вертикальною межею "|".

ls | wc -l

список файлів поточного каталога буде направлений|спрямований| на вхід команди "wc", яка на екран виведе число рядків каталога.

Конвейєром можна об’єднувати і більше двох команд, коли всі вони, можливо окрім|крім| першої і останньої - фільтри:

cat f1 | grep -h result | sort | cat -b > f2

Даний конвейєр з|із| файлу "f1" ("cat") вибере всі рядки, що містять|утримують| слово "result" ("grep"), відсортує ("sort") одержані|отримані| рядки, а потім пронумерує ("cat -b") і виведе результат у файл "f2".

Оскільки пристрої|устрої| в ОС UNIX представлені|уявлені| спеціальними файлами, їх можна використовувати при перенаправленнях. Спеціальні файли знаходяться|перебувають| в каталозі "/dev". Наприклад, "lp" - друк|печатка|; "console" - консоль; "ttyi" - i-ий термінал; "null" - фіктивний (порожній|пустий|) файл (пристрій|устрій|).

Тоді, наприклад

ls > /dev/lp

виведе вміст поточного каталога на друк|печатку|, а f1 < /dev/null обнулить файл "f1".

sort f1 | tee /dev/lp | tail -20

В цьому випадку буде відсортований файл "f1" і переданий на друк|печатку|, а 20 останніх рядків також будуть видані на екран.

Повернемося до перенаправлення виходу. Стандартні файли мають номери: 0 - stdin, 1 - stdout і 2 - stderr. Якщо вам не бажано мати на екрані повідомлення|сполучення| про помилку, ви можете перенаправити його з екрану у вказаний вами файл (або взагалі "викинути", перенаправивши у файл "порожнього|пустого| пристрою|устрою|" - /dev/null). Наприклад при виконанні команди

cat f1 f2

яка повинна видати на екран послідовно вміст файлів "f1" і "f2", видасть вам, наприклад, наступне|слідуюче|

111111 222222

cat: f2: No such file or directory

де 111111 222222 - вміст файлу "f1", а файл "f2" відсутній, про що команда "cat" видала повідомлення|сполучення| в стандартний файл діагностики, за умовчанням, як і стандартний вихід, представлений|уявлений| екраном.

Якщо вам не бажано таке повідомлення|сполучення| на екрані, його можна перенаправити у вказаний вами файл:

cat f1 f2 2>f-err

повідомлення|сполучення| про помилки прямуватимуть (про це говорить перенаправлення "2>") у файл "f-err". До речі, ви можете всю інформацію направляти|спрямовувати,скеровувати| в один файл "ff", використавши в даному випадку конструкцію

cat f1 f2 >>ff 2>ff

Можна вказати не тільки|не лише| який із|із| стандартних файлів перенаправляти, але і в який стандартний файл здійснити перенаправлення.

cat f1 f2 2>>ff 1>&2

Тут спочатку "stderr" перенаправляється (у режимі додавання|добавки|) у файл "ff", а потім стандартний вихід перенаправляється на "stderr", яким до цього моменту є|з'являється,являється| файл "ff". Тобто|цебто| результат буде аналогічний попередньому.

Конструкція "1>&2" - означає, що окрім|крім| номера стандартного файлу, в який перенаправити, необхідно попереду|спереду| ставити "&"; вся конструкція пишеться без пропусків|прогалин|.

<-

закриває|зачиняє| стандартне введення.

>-

закриває|зачиняє| стандартне виведення.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]