Python uygulamanızın çıktısını normal STDOUT yerine STDERR çıkış kanalına yazıyor olması gerekir. Kabuk yapısının kullanılması, >
yalnızca çıkış kanalına yazılan verileri yakalar ve yönlendirir, ancak aslında yazdırılabilecek başka kanallar da vardır, en yaygın olanı genellikle ikincisidir, genellikle hatalar için kullanılır.
STDERR'yi (2. kanal) yakalamayı da deneyebilirsiniz:
python ./manage.py dumpdata partyapp.InvitationTemplate > partyapp_dump.json 2>&1
2>&1
Yapı, normal çıkış kanalına hatalar için çıkış akışı bağlanır. Bir programın hata kanalında yakalamak istediğiniz çıktıyı üretmesi olağandışıdır; genellikle uygulama verileri için değil, hata ayıklama bilgileri için ayrılır. Standart olmayan bir şekilde davrandığından lütfen bu komut dosyasını dikkatli kullanın .
Çıkış ve hata kanallarını aşağıdaki gibi farklı dosyalara da dökebilirsiniz:
python ./manage.py dumpdata partyapp.InvitationTemplate > partyapp_dump.json 2> error_output.txt
&>
yalnızca Bash 4.0 ve iirc'in son zsh sürümlerinde çalışacaktır. Daha taşınabilir bir çözüm içinfoo > bar 2&>1
. Referans: mywiki.wooledge.org/BashFAQ/014