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> output
eklemek 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.log
oldukç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>&2
yeniden yönlendirir.
Bunu dene:
your_command 2>stderr.log 1>stdout.log
Rakamları 0
ile 9
olan dosya tanımlayıcıları bash.
0
standart giriş 1
anlamına gelir, standart çıkış 2
anlamına gelir, standart hata anlamına gelir. 3
aracılığıyla 9
diğ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. -s
Ekrana 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>