Как да пренасочите stderr към stdout в Bash

How Redirect Stderr Stdout Bash



Командите в Linux приемат някакъв вход от потребителя, който може да бъде файл или някакъв атрибут, и при изпълнение те дават някакъв изход, наречен стандартен изход. Стандартният изход може да бъде успешен изход или изход за грешка; и двете ще бъдат показани на екрана на терминала. Но в някои случаи искате да съхранявате стандартни изходи във файл за тестване или отстраняване на грешки в кода. В Linux тези изходи могат да бъдат пренасочени към файл, а процесът на улавянето му се нарича пренасочване.







Всеки процес в Linux произвежда три потока от данни, stdin, stdout и stderr:



  • stdin : Получава въвеждане от потребителя чрез клавиатура
  • stdout : Показва изхода на екрана
  • stderr : Показва информация за грешки на екрана

Всеки поток от данни има цифров идентификатор:



Числов идентификатор Име
0 stdin
1 stdout
2 stderr

Нека обясним пренасочването малко по -подробно:





Как да пренасочите стандартния изход и стандартната грешка в Bash:

За да пренасочим стандартния изход на командата, ще използваме 1 с оператор за пренасочване, който е по -голям от знака>:

$ls 1>stdout.txt

Горната команда ще създаде файл и ще постави стандартния изход на командата ls във файла stdout.txt.



За да прочетете файла stdout.txt, използвайте:

$коткаstdout.txt

Можем да пренасочим стандартната грешка към файл, като използваме командата:

$коткаmyfile.txt2>stderr.txt

За да видите файла stderr.txt, използвайте:

$коткаstderr.txt

Уверете се, че използването на 2 ще бъде по -голямо от знака>. Тъй като в директорията няма файл myfile.txt, командата cat ще даде грешка, която ще бъде добавена във файла stderr.txt.

Тези стандартни изходи също могат да бъдат пренасочени с една команда, използвайте:

$ls 1>stdout.txt2>stderr.txt

Резултатът от командата ls ще бъде записан в stdout.txt файл, но stderr.txt ще остане празно, защото няма да има грешка.

Сега нека направим за stderr.txt:

$коткаmyfile.txt1>stdout.txt2>stderr.txt

Използвайте посочената по-долу команда, за да прочетете stderr.txt.

$коткаstderr.txt

И разбира се, stdout.txt ще бъде празен.

Заключение :

Командата Linux при изпълнение дава стандартен изход, който може да бъде успешен или грешен изход. По принцип тези изходи не могат да бъдат пренасочени с помощта на оператори за пренасочване; трябва да използваме конкретни цифрови идентификатори със знака>. В това ръководство научихме как да използваме тези цифрови клавиши за пренасочване на стандартния изход към файл с примери.