Ваша програма python повинна записувати, що вона виводиться на вихідний канал STDERR замість звичайного STDOUT. Використовуючи конструкцію оболонки, >
виловлює та переспрямовує дані, записані на вихідний канал, але насправді є кілька інших каналів, до яких можна надрукувати, найпоширеніший - другий, зазвичай використовується для помилок.
Ви можете спробувати захопити STDERR (2-й канал) так само:
python ./manage.py dumpdata partyapp.InvitationTemplate > partyapp_dump.json 2>&1
2>&1
Конструкція з'єднує вихідний потік на наявність помилок в нормальний вихідний канал. Програма незвично створює вихід, який ви хотіли б отримати на каналі помилок; Зазвичай це буде зарезервовано для налагодження інформації, а не даних програми. Будь ласка, використовуйте цей сценарій з обережністю, оскільки він веде себе нестандартно.
Ви також можете скинути вихідні та помилкові канали до різних файлів, таких як цей:
python ./manage.py dumpdata partyapp.InvitationTemplate > partyapp_dump.json 2> error_output.txt
&>
працюватиме лише в Bash 4.0 та iirc останніх версіях zsh. Для більш портативних рішень,foo > bar 2&>1
. Довідка: mywiki.wooledge.org/BashFAQ/014