Преусмерите стдоут и стдерр на датотеку

Redirect Stdout Stderr File



Када преусмерите било који излаз команде у датотеку, приметићете да се поруке о грешци штампају на прозору терминала. Свака команда која се извршава у било којој љусци Линука, као што је басх, користи три редовна И/О тока. Нумерички дескриптор датотеке користи се за представљање сваког тока.

  • Стандардни улазни ток (стдин): 0
  • Стандардни излазни ток (стдоут): 1
  • Стандардни ток грешке (стдерр): 2

У овом посту ћемо схватити информације које се налазе под преусмеравањем стдоут и стдерр у датотеку.







Стандардни излаз (стдоут):

Сваки оперативни систем заснован на Линуку има уверење о подразумеваном месту за извршену команду. Сви овај појам називају стдоут или стандардни излаз како би звучали лакше. Ваша Басх или Зсх љуска непрестано тражи подразумевану излазну локацију. Када љуска открије нови излаз, приказује га на екрану терминала да бисте га видели. У супротном ће послати излаз на задану локацију.



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

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



Преусмеравање стдоут -а и стдерр -а на датотеку:

Како је преусмеравање метод хватања програмског излаза и слања као улаза у другу команду или датотеку. И/О токови се могу преусмерити стављањем оператора н> у употребу, где је н описни број датотеке. За преусмеравање стдоут -а користимо 1>, а за стдерр се 2> додаје као оператор.





Направили смо датотеку са именом сампле.ткт за чување преусмереног излаза у наш тренутни директоријум.



(Наредба> датотека) сматра се класичним оператором преусмеравања који само преусмерава стандардни излаз са стандардном грешком приказаном на терминалу. Показаћемо и различите опције за преусмеравање стдерр -а.

Преусмеравање стдерр и стдоут на одвојене датотеке:

Испод је синтакса команде за преусмеравање стдоут -а и стдерр -а на одвојене датотеке.

команда >оут2>грешка

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

$мачкасампле.ткт>оут2>грешка

Преусмеравање стдерр -а на стдоут:

Уобичајена је пракса преусмеравање стдерр -а са стандардним излазом програма за складиштење свега у једну датотеку. Ево синтаксе команде за преусмеравање стдерр -а на стдоут:

команда >оут2> &1$лс >самплефиле.ткт2> &1

$мачкасамплефиле.ткт

> оут редирецтс преусмерава стдоут на самплефиле.ткт, а 2> & 1 ће преусмерити стдерр на тренутну локацију стдоут -а.

Ако се стдерр прво преусмери на стдоут, користите наредбу испод да преусмерите стдоут у датотеку.

команда 2> &1 > филе$лс -до 2> &1 >самплефиле.ткт

$мачкасамплефиле.ткт

&> се такође користи за исту функцију коју обавља 2> & 1.

команда &> филе$лс &>самплефиле.ткт

$мачкасамплефиле.ткт

Преусмеравање стдоут -а и стдерр -а у једну датотеку:

Све љуске не подржавају ово преусмеравање облика, али басх и Зсх га подржавају. Стдоут и стдерр се могу преусмерити помоћу следеће синтаксе.

команда &>оут$мачкасампле.ткт&>оут

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

Преусмеравање стдоут -а на датотеку:

Стандардни излаз је представљен са 1 на листи бројева дескриптора датотека. За наредбу преусмеравања без икаквог дескриптора датотеке, терминал је поставио њену вредност на 1. Синтакса за преусмеравање стдоут -а у датотеку дата је на следећи начин:

команда > филе

Ми користимо сампле.филе за складиштење стандардног излаза наредбе лс -ал

$лс -до >сампле.ткт

$мачкасампле.ткт

команда 1> филе$лс 1>сампле.ткт

$мачкасампле.ткт

Преусмеравање стдерр -а на датотеку:

Користите 2> оператор за преусмеравање стдерр -а у датотеку.

команда 2> филе $лс -до 2>сампле.ткт

Можемо комбиновати извршавање за стдерр и стдоут у једној команди за преусмеравање.

команда 2>еррор.ткт1>оутпут.ткт

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

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

$мачкаоутпут.ткт

Закључак:

Концепт преусмеравања и дескриптора датотека за И/О токове веома је драгоцен током рада у Линук терминалу. У овом посту смо говорили о редовним И/О токовима, укључујући стдоут и стдерр. Први део овог поста доноси вам детаљне информације о преусмеравању, И/О токовима и опису нумеричких датотека. Затим сте видели практични пример за различите облике стдоут и стдерр преусмеравања.