Пренасочете stdout и stderr към File

Redirect Stdout Stderr File



Когато пренасочвате всеки изход на команда към файл, ще забележите, че съобщенията за грешки се отпечатват в прозореца на терминала. Всяка команда, изпълнена във всяка Linux обвивка, като bash, използва три обикновени I/O потока. За представяне на всеки поток се използва числов дескриптор на файл.

  • Стандартният входен поток (stdin): 0
  • Стандартният изходен поток (stdout): 1
  • Стандартният поток от грешки (stderr): 2

В тази публикация ще схванем информацията, която попада при пренасочване на stdout и stderr към файл.







Стандартен изход (stdout):

Всяка операционна система, базирана на Linux, има убеждение за място по подразбиране за изпълнената команда. Всички наричат ​​това понятие stdout или стандартен изход, за да звучи по -лесно. Вашата черупка Bash или Zsh непрекъснато търси изходното място по подразбиране. Когато черупката открие нов изход, тя го показва на екрана на терминала, за да го видите. В противен случай той ще изпрати изхода до местоположението му по подразбиране.



Стандартна грешка (stderr):

Стандартна грешка или stderr е подобен на стандартния вход и изход, но се използва за съхраняване на съобщения за грешка. Стандартната грешка може да бъде пренасочена към командния ред или файл с помощта на терминал. Ако искате да записвате или съхранявате съобщения в отделен лог файл или да скриете съобщенията за грешки, пренасочването на stderr ще ви помогне. Сега нека се насочим към практическата страна на пренасочването на stdout и stderr.



Пренасочване на stdout и stderr към файл:

Тъй като пренасочването е метод за улавяне на програмен изход и изпращането му като вход към друга команда или файл. Входно -изходните потоци могат да бъдат пренасочени чрез използване на n> оператора, където n е номерът на файловия дескриптор. За пренасочване на stdout използваме 1>, а за stderr 2> се добавя като оператор.





Създадохме файл с име sample.txt за съхраняване на пренасочения изход в текущата ни директория.



(Команда> файл) се счита за класическия оператор за пренасочване, който пренасочва само стандартния изход със стандартната грешка, показана в терминала. Ще демонстрираме различни опции за пренасочване на stderr.

Пренасочване на stderr и stdout към отделни файлове:

По -долу е синтаксисът на командата за пренасочване на stdout и stderr към отделни файлове.

команда >навън2>грешка

Дадената по-долу команда ще пренасочи изхода към изходящия файл и съобщенията за грешки към файла с грешки.

$коткаsample.txt>навън2>грешка

Пренасочване на stderr към stdout:

Обичайна практика е да пренасочвате stderr със стандартния изход на програма, за да съхранявате всичко в един файл. Ето синтаксиса на командата за пренасочване на stderr към stdout:

команда >навън2> &1$ls >samplefile.txt2> &1

$коткаsamplefile.txt

> out redirects пренасочва stdout към samplefile.txt, а 2> & 1 ще пренасочи stderr към текущото местоположение на stdout.

Ако stderr е пренасочен първо към stdout, използвайте дадената по-долу команда, за да пренасочите stdout към файл.

команда 2> &1 > файл$ls -към 2> &1 >samplefile.txt

$коткаsamplefile.txt

&> се използва също за същата функционалност, която изпълнява2> & 1.

команда &> файл$ls &>samplefile.txt

$коткаsamplefile.txt

Пренасочване на stdout и stderr към един файл:

Всички черупки не поддържат това пренасочване на формуляри, но bash и Zsh го поддържат. Stdout и stderr могат да бъдат пренасочени чрез следния синтаксис.

команда &>навън$коткаsample.txt&>навън

В предстоящия раздел на статията ще разгледаме отделния пример за пренасочване на stdout и stderr.

Пренасочване на stdout към файл:

Стандартният изход е представен с 1 в списъка с номера на файлови дескриптори. За команда за пренасочване без номер на дескриптор на файл терминалът задава стойността му на 1. Синтаксисът за пренасочване на stdout към файл е даден, както следва:

команда > файл

Използваме sample.file за съхраняване на стандартния изход на командата ls -al

$ls -към >sample.txt

$коткаsample.txt

команда 1> файл$ls 1>sample.txt

$коткаsample.txt

Пренасочване на stderr към файл:

Използвайте оператора 2> за пренасочване на stderr към файл.

команда 2> файл $ls -към 2>sample.txt

Можем да комбинираме изпълнението за stderr и stdout в една команда за пренасочване.

команда 2>error.txt1>output.txt

В дадения по-долу пример съобщенията за грешка ще се съхраняват в error.txt, където output.txt ще има стандартния си изход на команда ls.

$ls 2>error.txt1>output.txt

$коткаoutput.txt

Заключение:

Наличието на концепция за пренасочване и файлови дескриптори за I/O потоци е много ценно, докато работите в терминал на Linux. В тази публикация говорихме за обикновените I/O потоци, включително stdout и stderr. Първият раздел на тази публикация ви предоставя подробна информация за пренасочването, I/O потоците и числовия дескриптор на файлове. След това сте видели практическия пример за различни форми на пренасочване на stdout и stderr.