Како преусмерити стдерр на стдоут у Басху

How Redirect Stderr Stdout Bash



Наредбе у Линук -у узимају неке уносе од корисника, што може бити датотека или било који атрибут, а након извршавања дају неки излаз који се назива стандардни излаз. Стандардни излаз може бити успјешан излаз или излаз грешке; оба ће бити приказана на екрану вашег терминала. Али у неким случајевима желите да сачувате стандардне излазе у датотеци за тестирање или отклањање грешака у коду. У Линуку се ти излази могу преусмерити у датотеку, а процес хватања назива се преусмеравање.







Сваки процес у Линуксу производи три тока података, стдин, стдоут и стдерр:



  • стдин : Узима унос од корисника путем тастатуре
  • стдоут : Приказује излаз на екрану
  • стдерр : Приказује информације о грешци на екрану

Сваки ток података има нумерички ИД:



Нумерички ИД Име
0 стдин
1 стдоут
2 стдерр

Објаснимо преусмеравање мало детаљније:





Како преусмерити стандардни излаз и стандардну грешку у басху:

Да бисмо преусмерили стандардни излаз наредбе, користићемо 1 са оператором преусмеравања који је већи од знака>:

$лс 1>стдоут.ткт

Горња команда ће креирати датотеку и поставити стандардни излаз наредбе лс у датотеку стдоут.ткт.



Да бисте прочитали датотеку стдоут.ткт, користите:

$мачкастдоут.ткт

Стандардну грешку можемо преусмерити и на датотеку помоћу наредбе:

$мачкамифиле.ткт2>стдерр.ткт

Да бисте видели датотеку стдерр.ткт, користите:

$мачкастдерр.ткт

Уверите се да ће употреба 2 бити већа од знака>. Пошто у директоријуму нема датотеке мифиле.ткт, наредба цат ће дати грешку која ће бити додата у датотеку стдерр.ткт.

Ови стандардни излази се такође могу преусмерити једном командом, користите:

$лс 1>стдоут.ткт2>стдерр.ткт

Излаз наредбе лс бит ће написан у стдоут.ткт датотеку, али стдерр.ткт ће остати празна јер не би дошло до грешке.

Урадимо сада за стдерр.ткт:

$мачкамифиле.ткт1>стдоут.ткт2>стдерр.ткт

За читање стдерр.ткт користите доле наведену команду.

$мачкастдерр.ткт

И наравно, стдоут.ткт ће бити празан.

Закључак :

Наредба Линука након извршавања даје стандардни излаз који би могао бити успјешан излаз или излаз грешке. Уопштено, ови излази се не могу преусмерити помоћу оператора преусмеравања; морамо да користимо одређене нумеричке идентификаторе са знаком>. У овом водичу смо научили како да помоћу ових нумеричких тастера преусмеримо стандардни излаз у датотеку са примерима.