СТАНДАРТЕН ВХОД, ИЗХОД И ГРЕШКА

КРАТКО ВЪВЕДЕНИЕ

Спомням си, че когато уча език за програмиране, има три вида взаимодействия: вход, изход и изход за грешка. Което е какво?

  1. Така че въвеждането е основно всичко, което въвеждаме
    Например в Linux: когато въвеждаме l до натискане на enter тогава всички те са входове. Тези входове могат също да бъдат поставени в един или повече файлове наведнъж.
  2. Изход е основно всичко, което се показва от системата
    Например в Linux: след като натиснем enter на всяка команда, Linux ще покаже вие информацията, свързана с тази команда, която въвеждате. След това тази информация се извежда.
  3. Това е свързано с изход, но малко по-различно, наричаме го грешка.
    Системата ще ви покаже изхода, но той няма да отговаря на нашите очаквания, поради някои грешки. Каза, че въвеждаме 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), също и с този тип команда, те са много по-лесни за поставяне на изход или грешка в много файлове. Както и да е, приятно изкарване!