СТАНДАРТЕН ВХОД, ИЗХОД И ГРЕШКА
КРАТКО ВЪВЕДЕНИЕ
Спомням си, че когато уча език за програмиране, има три вида взаимодействия: вход, изход и изход за грешка. Което е какво?
- Така че въвеждането е основно всичко, което въвеждаме
Например в Linux: когато въвеждаме l до натискане на enter тогава всички те са входове. Тези входове могат също да бъдат поставени в един или повече файлове наведнъж. - Изход е основно всичко, което се показва от системата
Например в Linux: след като натиснем enter на всяка команда, Linux ще покаже вие информацията, свързана с тази команда, която въвеждате. След това тази информация се извежда. - Това е свързано с изход, но малко по-различно, наричаме го грешка.
Системата ще ви покаже изхода, но той няма да отговаря на нашите очаквания, поради някои грешки. Каза, че въвеждаме cd в папка, за която нямаме разрешение. Не можеш, нали? Не, терминалът ще отпечата „разрешението е отказано“. Това е пример за грешка.
Column 1: 3 types of interaction in Linux. In Linux, we call it those 3 things: 1. stdin : Standard Input 2. stdout : Standard Output 3. stderr : Standard Error
ПРЕНАСОЧВАНЕ
Има някои символи за извършване на тези 3 взаимодействия.
Column 2: Redirect symbols. In Linux, we call it those 3 things: 1. > : Put input into a file and overwrite everything in that file 2. >> : Same as point 1, but append the text 3. < : File selected will be the input of the command 4. 2> : Print the error to a file but overwrite the content 5. 2>> : Print the error to a file but append the content
STDIN
Както казах преди, това означава Стандартен вход. Така че всичко, което правим в командния ред, всичко, което въвеждаме там, е вход. Нека опитаме със символите в Колона 2.
Първо стартирам echo и го поставям на test1.xml. След това стартирам отново echo и го поставям на test2.xml. Така че ще има 2 различни думи в тези файлове, нали?
Нека стартираме wc за преброяване на думи във файл. И ние използваме ‹ за тези файлове.
Той брои думите в тези файлове.
STDOUT
Ако IN означава вход, тогава OUT? Да, изход. Нека опитаме отново с Колона 2 като справка.
Можете да видите, че наричам това, което е вътрешността на test1.xml, и то е „makanjagung“. След това извиквам командата echo и поставям › в test1.xml. познайте какво стана Съдържанието се презаписва.
След това стартирам командата wc -lотново, този път поставих ›› на test1.xml. Резултатът все още е същият като test1.xml преди, но има още един ред, показващ резултата от командата wc -l там.
STDERR
Както можем да видим на първото изображение по-долу, 2› ще замени целия текст във файла test1xml и ще постави грешката там.
Но във второто изображение по-долу това 2›› няма да презапише целия текст, вместо да добави text1.xml с грешката, показана под файла.
СИМВОЛ НА ТРЪБИ (|)
Символът Pipes ще свърже изхода на първата команда и ще го обработи на втората команда.
Опитвам се с тази команда tail, която взема последния ред на изхода. Както виждаме при първата команда няма тръба. Така че резултатът е малко объркващ за мен. Слагам го на тръба и изпълнявам втората команда, tail. Тада! Показва само последните 2 реда (с -2 като аргументи на tail).
ИЗВОДИ
Тези команди ще бъдат полезни за всякакъв вид скриптове (shell или bash), също и с този тип команда, те са много по-лесни за поставяне на изход или грешка в много файлове. Както и да е, приятно изкарване!