- •1. Введення
- •2. Прості засоби|кошти| shell
- •2.1. Структура команд
- •2.2. Угрупування команд.
- •2.3. Перенаправлення команд
- •2.4. Генерація імен файлів.
- •2.5. Командні файли.
- •3. Середовище|середа| shell (змінні і параметри)
- •3.2. Екранування
- •3.3. Маніпуляції з|із| shell-змінними
- •3.4. Експорт змінних
- •3.5. Параметри
- •3.6. Підстановки shell-інтерпретатора
- •3.7. Програмне середовище
- •4. Програмні структури
- •4.1. Команда test ("[ ]")
- •4.2. Умовний оператор "if"
- •4.3. Оператор виклику ("case")
- •4.4. Оператор циклу з|із| переліком|перерахуванням| ("for")
- •4.5. Оператор циклу з|із| передумовою ("while")
- •4.6. Оператор циклу з|із| постумовою ("until")
- •4.7. Порожній оператор
- •4.8. Функції в shell
- •4.9. Обробка переривань ("trap")
- •5. Розробка графічного інтерфейсу за допомогою бібліотеки Qt3. Створення в kDevelop базової структури додатку
- •5.1. Словник
- •5.2. Створення|створіння| проекту
- •5.3. Робота з Qt Designer
- •5.4. Розробка інтерфейсу програми
- •5.5. Додавання|добавка| виджетов|
- •5.6. Створення|створіння| проміжків між виджетами|
- •5.7. Сигнали і слоти
- •5.8. Написання коду
- •6. Литература
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" - означає, що окрім|крім| номера стандартного файлу, в який перенаправити, необхідно попереду|спереду| ставити "&"; вся конструкція пишеться без пропусків|прогалин|.
<- |
закриває|зачиняє| стандартне введення. |
>- |
закриває|зачиняє| стандартне виведення. |