Hər iki stdout və stderr'ı bash ilə bir faylya necə yönləndirə və əlavə edə bilərəm?

Stdout'u bash-da kəsilmiş faylya yönləndirmək üçün nə istifadə edəcəyini bilirəm:

 cmd > file.txt 

Stdout faylını əlavə etməklə bash-ə yönləndirmək üçün nə istifadə edəcəyini bilirəm:

 cmd >> file.txt 

Hər iki stdout və stderr bir kəsilmiş faylya yönləndirmək üçün nə istifadə edəcəyini bilirəm:

 cmd  file.txt 

Hər iki stdout və stderr faylları bir faylya necə yönləndirmək olar? cmd file.txt mənim üçün işləmədi.

1182
18 мая '09 в 7:19 2009-05-18 07:19 flybywire , 18 May 'da 07:19 ' da ayarlanır. 2009-05-18 07:19
@ 6 cavablar
 cmd >>file.txt 2>> 

Bash, soldan sağa doğru istiqamətləndirir:

  • >>file.txt : file.txt rejimində file.txt açın və orada stdout yönləndirin.
  • 2>> : stderr " stdout hazırda gedir" istiqamətinə yönləndirin. Bu halda əlavə faylda açılmış bir fayldır. Başqa sözlə, > hazırda stdout istifadə edən fayl təsvirini təkrar edir.
1559
18 мая '09 в 7:23 2009-05-18 07:23 Alex Martelli 18 may 09: 07-də ​​07: 05-da cavab verdi 2009-05-18 07:23

Bash versiyanıza görə bunu etmək üçün iki yol vardır.

Klassik və portativ ( Bash-4-ə ) rejimi:

 cmd >> outfile 2>> 

Boş 4 ilə başlayan portativ yol,

 cmd  outfile 

(analog outfile )

border=0

Yaxşı bir kodlaşdırma tərzi üçün lazım

  • Taşınabilirlik problemi olub-olmadığını həll etsin (daha sonra klassik metodu istifadə edin)
  • Taşınabilirlik hətta əvvəlcədən 4 bash problemi olub-olmadığını həll etsin (daha sonra klassik metodu istifadə edin).
  • Istədiyiniz sözdizimdən asılı olmayaraq, onu eyni skriptdə (qarışıqlıq!) Dəyişməyin.

Ssenariniz əvvəlcədən #!/bin/sh ilə başlayırsa (nəzərdə tutulub-edilməməsindən asılı olmayaraq), bash 4 və ümumiyyətlə, hər hansı bir Bash-xüsusi kod uyğun deyil.

Həm də unutmayın ki, Bash 4 > yalnız daha qısa bir sözdizimdir - yeni xüsusiyyətləri və s.

Burada açıqlanan sintaksis (digər redirection sözdizimindən başqa) http://bash-hackers.org/wiki/doku.php/syntax/redirection#appending_redirected_output_and_error_output

298
18 мая '09 в 7:42 2009-05-18 07:42 Cavab 18 may 09 : 07-TheBonsai tərəfindən 07:42 2009-05-18 07:42 tərəfindən verilir

Bash-da, siz də redaktələri müxtəlif fayllara açıq şəkildə göstərə bilərsiniz:

 cmd >log.out 2>log_error.out 

Əlavə ediləcəklər:

 cmd >>log.out 2>>log_error.out 
76
24 июля '13 в 21:09 2013-07-24 21:09 Cavab Aaron R. tərəfindən verilir 24 İyul 24:13 'da 21:09 2013-07-24 21:09

Bash 4-də (və ZSH 4.3.11):

 cmd > 

qutunun kənarında

57
27 марта '12 в 21:24 2012-03-27 21:24 Cavab 27 mart 2012-ci il tarixində saat 21: 00-da verilir

Bu yaxşı işləməli:

 your_command 2> | tee -a file.txt 

Fayl file.txt faylındakı bütün qeydləri saxlayacaq və terminala atacaq.

32
12 дек. Cavab 12 dekabrda Pradeep Goswami tərəfindən verilir. 2015-12-12 09:17 '15 'də saat 09:17' da

Bunu sınayın

 You_command 1>output.log 2>> 

Faylınızı istifadə edərək x.file bash4-də işləyir. Üzr istəyirik: (

Burada bəzi əlavə məsləhətlər var.

0, 1, 2 ... 9 - bash-də fayl təsvirçiləri.

0 stdin deməkdir, 1 stdout , 2 - stderror deməkdir. 3 ~ 9 hər hansı digər müvəqqəti istifadə üçün ehtiyatdır.

Hər hansı bir fayl təsvirçisi > və ya >> (əlavə et) operatorunu istifadə edərək başqa bir fayl təsvirinə və ya faylya yönəldilə bilər.

Istifadə: < file_descriptor >> < filename | file_descriptor >

Http://www.tldp.org/LDP/abs/html/io-redirection.html ünvanına baxın .

19
10 апр. Cavab Quintus.Zhou verilir 10 Apr. 2014-04-10 08:56 '14 at 8:56 2014-04-10 08:56

Başqa etiketləri və ya bir sual soruşmaq