Вход, изход и конвейер

Стандартния вход и стандартния изход

Стандартът I / O потоци са предназначени главно за обмен на текстова информация. Тук няма значение кой комуникира чрез текст: човек с програма или програми за взаимно - най-важното, че те имат един информационен канал, и така те казаха: "един и същ език".







Когато се работи с команден ред, стандартния вход на черупката е свързан към клавиатурата, и стандартния изход и грешка изход - от екрана на монитора (или прозореца терминален емулатор). Нека покажем пример за прости команди - котка. Обикновено командата котка чете данни от всички файлове, които са посочени като параметрите му и изпраща разчитането директно на стандартния изход (стандартния изход). Ето защо, командата

показва съдържанието на първия файл история-финала. и след това - майстори-теза файл.

Въпреки това, ако името на файла не е уточнено, програма котка чете вход от стандартния вход и веднага ги върне на стандартния изход (не се променя). Те преминават през котката. както чрез тръбата. Ето един пример:

Всеки ред влезе от клавиатурата, програмата котка веднага се връща към екрана. При въвеждане на информация от стандартния вход края на въвеждане на текст е подаден сигнал от специална комбинация от клавиши, обикновено Ctrl - Д.

Нека дам един пример. сортиране команда чете стринга вход (също от стандартния вход, ако не е указано без име на файла), и произвежда набор от тези линии по организиран начин, за да стандартния изход. Ние потвърди неговата сила.

Както може да се види, след натискане на бутона Ctrl - Д. сортиране доведе низ подредени по азбучен ред.

Пренасочване на входа и на изхода

Да предположим, че искате да изпратите на изхода на нещо във файл, за да спаси азбучен списък на диска. Черупката ви дава възможност да пренасочи стандартния изход към файл с помощта на> символ. Ето един пример:

Тя може да се види, че в резултат на командата вид не се показва, обаче, тя се съхранява във файл, наречен пазаруване списък. Показване на съдържанието на този файл:

Въпреки това, можете да го направите по друг начин, а не само пренасочване на стандартния изход, както и стандартен вход от полезност файл с помощта на този символ <.

Резултатът от командата сортиране





Ние се въведе понятието филтъра. Филтър е програма, която чете от стандартния вход, да ги обработва по някакъв начин, и изпраща резултата на стандартния изход. При използване на пренасочване, стандартни входни и изходни файлове могат да действат. Както бе посочено по-горе, по подразбиране, стандартния вход и стандартния изход се отнася до клавиатурата и екрана, съответно. сортиране е проста програма филтър - сортира входящите данни и изпраща резултата на стандартния изход. Много просто филтър е програма котка - тя не прави нищо, за да входните данни, а просто ги препраща към изхода.

Използване подредени команди (транспортни)

Ние вече демонстрира как да се използва нещо като програма филтър. В тези примери, се предполагаше, че първоначалните данни се съхраняват във файл или че първоначалните данни се въвежда от клавиатурата (стандартния вход). Но какво, ако искате да сортирате данните, които са резултат от някои други отбори, например, LS?

Нека да сортирате данните в обратен азбучен ред; Тази опция е -r вид команда. Ако искате да се списък на файловете в текущата директория в обратен азбучен ред, един от начините да направите това е да бъде така. Първо ние прилагаме командни LS:

Сега пренасочи изхода на командата ли във файл, наречен файл-списък

Тук, на изхода на командата ли се записва във файл и след това преписката е била обработена вид -r команда. Но този метод е тромава и изисква използването на временен файл за съхранение на продукцията на данни на програмата LS.

Решение за създаване на присъединените отбори може да бъде в тази ситуация (тръбопроводи). Dock осигурява команден шел, че стандартния изход на първата команда насочва към стандартния вход на втория команда. В този случай, ние искаме да изпратим стандартния изход на LS към стандартния вход вид команда. | Символ се използва за скачване. както е показано в следващия пример:

Тази команда е по-кратък от един набор от команди, и това е по-лесно да пишете.

Помислете още един полезен пример. екип

Тя дава един дълъг списък от файлове. Повечето от този списък се лети по екрана, твърде бързо със съдържанието на този списък може да се прочете. Опитайте се да използвате по-команда, за да се покаже списък с части:

Сега това може да "обърне" списък.

Можете да отидете напред и да се скачи повече от два отбора. Помислете за главата на екип. който е филтър следните свойства: тя показва първа линия на входа (в този случай, на изхода вход ще бъдат осигурени от множество подредени команди). Ако искаме да се покаже последната името на файла по азбучен ред в текущата директория, можете да използвате следната команда дълго:

където команда главата -1 показва първа линия на входните струните получени от нея (в този случай се състои от поток от данни от командните LS на), подредени в обратен азбучен ред.

Без разрушаване пренасочване

Ефектът от използването на> Символът за пренасочване на изходния файл е разрушителна; С други думи, екипът

унищожи съдържанието на файл-списък на файловете. Ако по-рано съществували файла и на нейно място се създаде нов файл. Ако вместо това пренасочването ще бъде направено с помощта на символи >>. на изхода се възлага на края на файла, че оригиналното съдържание на файлове няма да бъдат унищожени. Например, командата

приписва на сключването на командата ли до края на файл-списък файл.

Трябва да се има предвид, че пренасочва вход и изход, и stykovanie екипи извършват команден шел, който поддържа използването на символи> и >>. |. Самите команди не са в състояние да възприемат и интерпретират тези символи.