Я выполнил эту команду:
python ./manage.py dumpdata partyapp.InvitationTemplate > partyapp_dump.json
Для сброса данных в partyapp_dump.json
файл. Но все данные просто выводятся на экран, и создается пустой partyapp_dump.json
файл.
Почему это могло случиться? Я проверил, ls > partyapp_dump.json
и это сработало отлично.
&>
будет работать только в Bash 4.0 и iirc последних версиях Zsh. Для более портативного решенияfoo > bar 2&>1
. Ссылка: mywiki.wooledge.org/BashFAQ/014Ваше приложение на Python должно записывать свои выходные данные в выходной канал STDERR вместо обычного STDOUT. Использование конструкции оболочки
>
только перехватывает и перенаправляет данные, записанные в выходной канал, но на самом деле существует несколько других каналов, которые могут быть напечатаны, наиболее распространенным из которых является второй, обычно используемый для ошибок.Вы также можете попробовать отловить STDERR (2-й канал):
2>&1
Конструкция соединяет выходной поток на наличие ошибок в нормальный выходной канал. Для программы необычно генерировать вывод, который вы хотели бы захватить на канале ошибки; обычно это зарезервировано для отладочной информации, а не для данных приложения. Пожалуйста, используйте этот скрипт с некоторой осторожностью, поскольку он ведет себя нестандартным образом.Вы также можете вывести каналы вывода и ошибок в разные файлы, например так:
источник
В дополнение к уже предложенному объяснению вывода stderr и stdout ваше приложение может просто игнорировать оба этих потока и явно открыть "/ dev / tty" для его вывода.
источник
Если установлена
noclobber
опция bash, перенаправление> не будет выполнено (хотя и не тихо), если целевой файл уже существует.Для лучшей переносимости используйте
cmd >| file
для принудительной перезаписи любого существующего файла.источник
Если вы потерялись, вы всегда можете запустить его с помощью strace, чтобы увидеть, что делают процессы:
источник
strace
.