- STDIN (0) - Стандартен вход
- STDOUT (1) - Стандартен изход
- STDERR (2) - Стандартна грешка
Когато ще работим с трикове "pipe", "pipe" ще вземе STDOUT на команда и ще го предаде на STDIN на следващата команда.
Нека да разгледаме някои от най-често срещаните начини, по които можете да включите командата „pipe“ във вашето ежедневно използване.
Тръбна команда
Основна употреба
По-добре е да разгледате метода на работа на „тръбата“ с жив пример, нали? Да започваме. Следващата команда ще каже на „pacman“, мениджъра на пакети по подразбиране за Arch и всички дистрибуции, базирани на Arch, да отпечата всички инсталирани пакети в системата.
pacman -Qqe
Това е наистина ДЪЛЪГ списък с пакети. Какво ще кажете за това да вземете само няколко компонента? Можем да използваме „grep“. Но как? Един от начините би бил изхвърлянето на изхода към временен файл, “grep” на желания изход и изтриване на файла. Тази поредица от задачи сама по себе си може да се превърне в скрипт. Но ние правим сценарии само за много големи неща. За тази задача нека се позовем на силата на „тръбата“!
pacman -Qqe | grep
Страхотно, нали? „|“ знак е извикването на командата “pipe”. Той хваща STDOUT от лявата секция и го подава в STDIN от дясната секция.
В гореспоменатия пример, командата “pipe” всъщност предава изхода в края на частта “grep”. Ето как се играе.
pacman -Qqe> ~ / Desktop / pacman_package.текстgrep python ~ / Desktop / pacman_package.текст
Множество тръбопроводи
По принцип няма нищо особено с усъвършенстваното използване на командата “pipe”. Изцяло зависи от вас как да го използвате.
Например, нека започнем с подреждане на множество тръбопроводи.
pacman -Qqe | grep p | grep t | grep py
Изходът на командата на pacman се филтрира все повече и повече чрез „grep“ чрез поредица от тръбопроводи.
Понякога, когато работим със съдържанието на файл, той може да бъде наистина, наистина голям. Намирането на точното място на желаното от нас влизане може да бъде трудно. Нека да потърсим всички записи, които включват цифри 1 и 2.
демонстрация на котка.txt | grep -n 1 | grep -n 2
Манипулиране със списък с файлове и директории
Какво да правите, когато имате работа с директория с ТОНИ файлове в нея? Доста досадно е да превъртите целия списък. Разбира се, защо не го направите по-поносим с тръбата? В този пример нека проверим списъка с всички файлове в папката „/ usr / bin“.
ls -l
Тук „ls“ отпечатва всички файлове и тяхната информация. След това „pipe“ го предава на „more“, за да работи с това. Ако не сте знаели, „още“ е инструмент, който превръща текстовете в един екранен изглед наведнъж. Това обаче е стар инструмент и според официалната документация се препоръчва „по-малко“.
ls -l / usr / bin | по-малко
Изход за сортиране
Има вграден инструмент за сортиране, който ще въвежда текст и ще ги сортира. Този инструмент е истински скъпоценен камък, ако работите с нещо наистина объркано. Например получих този файл, пълен със случайни низове.
демонстрация на котка.текст
Просто го прекарайте, за да „сортирате“.
демонстрация на котка.txt | вид
Това е по-добре!
Отпечатване на съвпадения на определен шаблон
ls -l | намирам ./ -тип f -name "*.txt "-exec grep 00110011 \;
Това е доста усукана команда, нали? Отначало “ls” извежда списъка с всички файлове в директорията. Инструментът „намери“ взема резултата, търси „.txt “файлове и извиква„ grep “за търсене на„ 00110011 “. Тази команда ще провери всеки отделен текстов файл в директорията с разширение TXT и ще потърси съвпаденията.
Отпечатайте съдържанието на файл от определен диапазон
Когато работите с голям файл, обикновено е необходимо да проверявате съдържанието на определен диапазон. Можем да направим точно това с хитро комбинация от „котка“, „глава“, „опашка“ и разбира се, „тръба“. Инструментът „head“ извежда първата част на съдържанието, а „tail“ извежда последната част.
коткакотка
Уникални ценности
Когато работите с дублирани изходи, това може да бъде доста досадно. Понякога дублираното въвеждане може да причини сериозни проблеми. В този пример нека хвърлим “uniq” върху поток от текст и го запишем в отделен файл.
Например, тук е текстов файл, съдържащ голям списък с числа, които са с 2 цифри. Тук определено има дублирано съдържание, нали?
котен дубликат.txt | вид
Сега, нека извършим процеса на филтриране.
котен дубликат.txt | сортиране | uniq> уникален.текст
Вижте резултата.
прилеп уникален.текст
Изглежда по-добре!
Тръби за грешки
Това е интересен метод за тръбопроводи. Този метод се използва за пренасочване на STDERR към STDOUT и продължаване с тръбопроводите. Това се обозначава със символа „| &” (без кавичките). Например, нека създадем грешка и изпратим изхода на друг инструмент. В този пример аз просто написах някаква случайна команда и предадох грешката на „grep“.
adsfds | & grep n
Финални мисли
Докато самата „тръба“ е доста опростена по своя характер, начинът, по който работи, предлага много гъвкав начин за използване на метода по безкрайни начини. Ако се интересувате от скриптове на Bash, това е много по-полезно. Понякога можете просто да правите безумни неща направо! Научете повече за Bash скриптове.