Saya menjalankan perintah ini:
python ./manage.py dumpdata partyapp.InvitationTemplate > partyapp_dump.json
Untuk membuang data ke dalam partyapp_dump.json
file. Tetapi semua data baru saja dicetak pada layar dan partyapp_dump.json
file kosong dibuat.
Mengapa ini bisa terjadi? Saya diuji ls > partyapp_dump.json
dan itu bekerja dengan sempurna.
&>
hanya akan bekerja di Bash 4.0 dan iirc versi terbaru dari zsh. Untuk solusi yang lebih portabelfoo > bar 2&>1
,. Referensi: mywiki.wooledge.org/BashFAQ/014Aplikasi python Anda harus menulis outputnya ke saluran output STDERR alih-alih STDOUT normal. Menggunakan shell konstruksi
>
hanya menangkap dan mengalihkan data yang ditulis ke saluran output, tetapi sebenarnya ada beberapa saluran lain yang dapat dicetak, yang paling umum adalah yang kedua, biasanya digunakan untuk kesalahan.Anda dapat mencoba menjebak STDERR (saluran ke-2) juga seperti ini:
The
2>&1
konstruk menghubungkan output stream untuk kesalahan ke saluran output normal. Merupakan hal yang tidak biasa bagi suatu program untuk menghasilkan keluaran yang ingin Anda tangkap pada saluran kesalahan; biasanya itu akan dicadangkan untuk informasi debug bukan data aplikasi. Silakan gunakan skrip ini dengan hati-hati karena berperilaku dengan cara yang tidak standar.Anda juga dapat membuang saluran keluaran dan galat ke berbagai file seperti ini:
sumber
Selain penjelasan keluaran stderr vs stdout yang sudah disarankan, aplikasi Anda mungkin mengabaikan kedua aliran ini dan secara eksplisit membuka "/ dev / tty" untuk hasilnya.
sumber
Jika
noclobber
opsi bash diatur,>> redirection akan gagal (walaupun tidak diam-diam) jika file tujuan sudah ada.Untuk portabilitas yang lebih baik, gunakan
cmd >| file
untuk memaksa menimpa file yang ada.sumber
Jika Anda tersesat, Anda selalu dapat mencoba menjalankannya dengan strace untuk melihat proses apa yang sedang dilakukan:
sumber
strace
.