АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Стандартний ввід, стандартний вивід і переадресація потоків

Читайте также:
  1. Види грошових потоків підприємства
  2. Види потоків сонячної радіації
  3. Діаграма потоків даних
  4. ЗАСТОСУВАННЯ ГАЗОВИВІДНОЇ ТРУБКИ
  5. Моделі кругових потоків
  6. Нарощування та дисконтування грошових потоків
  7. Розробка діаграми вагонопотоків станції
  8. Спрямованість потоків інформації
  9. Схема 7.3. Графічне відображення товарних та грошових потоків у закритій ринковіц економіці за участю держави
  10. Схема руху потоків грошових коштів на монетарному ринку

Всі звичайні файли в ОС Linux (а також вхідна і вихідна інформація команд) мають однакову структуру - байтовий потік. Вхідні дані для команди направляються в потік даних, що називається стандартним вводом stdin, а вся вихідна інформація направляється в потік даних, що називається стандартним виводом stdout.

Існує ще один стандартний потік – потік повідомлень про помилки stderr (по суті – другий вихідний потік). Оскільки стандартний ввід і стандартний вивід мають таку ж структуру, як і файли, вони вільно сполучаються з останніми. За допомогою операторів переадресації, стандартний ввід і стандартний вивід можна перенаправляти з файлу і в файл. За допомогою оператора переадресації " > " стандартний вивід можна переадресувати з команди в файл. За допомогою оператора переадресації " < " можна переадресувати стандартний ввід так, щоб дані вводились з існуючого файлу. Оператор " >> " служить для добавлення вмісту стандартного виводу до існуючого файлу.

Наприклад, вам необхідно сформувати файл, що містить лістинг поточного каталогу. Це можна зробити, направивши стандартний вивід команди ls в файл, а не на екран:

$ ls –larR > list2


Результатом виконання даної команди буде виведення списку файлів у поточному каталозі із зазначеними опціями але не на екран терміналу, а у файл list2. Якщо цей файл вже існує, то він буде переписаний наново. У разі необхідності дозаписати файл треба виконати команду:

$ ls –larR >> list2

За допомогою оператора переадресації створюється файл list2, він заповнюється даними з команди ls –larR. Однак, сама переадресація організується до того, як почнуть надходити дані зі стандартного виводу. Якщо файл вже існує, він буде знищений і замінений новим файлом під тим же ім’ям. Команда, що генерує вихідні дані, виконується тільки після створення файлу переадресації.

Якщо користувач спробує використати один і той самий файл в якості вхідного і вихідного потока, виникне помилка. Оскільки переадресація виконується перед виконанням команди, вхідний файл буде знищено і замінено порожнім файлом з тим же ім’ям, тобто виникне втрата даних. Коли команда почне виконуватися, вона знайде порожній вхідний файл, і, як наслідок, користувач не отримає бажаного результату. Прикладом такої помилки може бути наступний рядок:

$ cat myletter > myletter

Ви можете додати стандартний вивід команди до вже існуючого файлу, додавши дані потоку в кінець файлу. В наступному прикладі файли myletter і oldletter по черзі дописуються в кінець файлу all_let:

$ cat myletter >> all_let

$ cat oldletter >> all_let

Поєднавши команду cat з оператором переадресації, ви отримаєте легкий спосіб збереження інформації, що вводиться, в файл:

$ cat > mydat


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.006 сек.)