Bu kadarını biliyorum:
$ command 2>> error
$ command 1>> output
Ben stderr hata dosyasına çıkış ve çıkış dosyası stdout aynı bash satırına çıkış herhangi bir yolu var mı?
Bu kadarını biliyorum:
$ command 2>> error
$ command 1>> output
Ben stderr hata dosyasına çıkış ve çıkış dosyası stdout aynı bash satırına çıkış herhangi bir yolu var mı?
Yanıtlar:
Sadece bir satıra ekleyin command 2>> error 1>> output
Ancak, >>dosya zaten veri içeriyorsa eklemek içindir. Oysa >dosyadaki mevcut verilerin üzerine yazılır.
Yani, command 2> error 1> outputeklemek istemiyorsanız.
Sadece Tamamlama aşkına yazabilirsiniz 1>gibi >varsayılan dosya tanıtıcı çıkışı olduğu için. böylece 1>ve >aynı şeydir.
Böylece command 2> error 1> output,command 2> error > output
command &2>err.log, sanırım ben tamamen sintaksileri karıştırıyorum. (Tüm bash boru
command &2>err.logoldukça yasal değil gibi görünüyor - sözdizimindeki ve işareti, dosya tanımlayıcı için hedef olarak kullanılır, örneğin stdout'u stderr'a command 1>&2yeniden yönlendirir.
Bunu dene:
your_command 2>stderr.log 1>stdout.log
Rakamları 0ile 9olan dosya tanımlayıcıları bash.
0standart giriş 1anlamına gelir, standart çıkış 2anlamına gelir, standart hata anlamına gelir. 3aracılığıyla 9diğer geçici kullanımlar için yedek.
Herhangi bir dosya tanımlayıcı, operatör kullanılarak bir dosyaya veya başka bir dosya tanımlayıcıya yeniden yönlendirilebilir >. Bunun yerine operatörü >>, boş bir dosya oluşturmak yerine bir dosyaya eklemek için kullanabilirsiniz .
Kullanımı:
file_descriptor > filename
file_descriptor > &file_descriptor
Lütfen Gelişmiş Bash-Komut Dosyası Kılavuzu'na bakın: Bölüm 20. G / Ç Yeniden Yönlendirme .
Bunun gibi:
$ command >>output 2>>error
Veya çıktıları (stdout & stderr) tek bir dosyada karıştırmak isterseniz:
command > merged-output.txt 2>&1
Birden fazla komutun çıkışı yeniden yönlendirilebilir. Bu, komut satırı için veya en yararlısı bir bash betiğinde çalışır. -sEkrana istemi parola yönlendirir.
Hereblock cmds stdout / stderr ayrı dosyalara gönderilir ve görüntülenecek hiçbir şey gönderilmez.
sudo -s -u username <<'EOF' 2>err 1>out
ls; pwd;
EOF
Hereblock cmds stdout / stderr tek bir dosyaya ve ekrana gönderilir.
sudo -s -u username <<'EOF' 2>&1 | tee out
ls; pwd;
EOF
Hereblock cmds stdout / stderr ayrı dosyalara ve stdout'u görüntülemek için gönderilir.
sudo -s -u username <<'EOF' 2>err | tee out
ls; pwd;
EOF
Kim olduğunuza (whoami) ve kullanıcı adına bağlı olarak bir şifre gerekebilir veya gerekmeyebilir.
1>yazılabilir açıklamanızı seviyorum>