Альтернатива | больше отображать результаты ошибок страница за страницей

Команда

psql -d template_postgis2 -f /usr/share/postgresql/9.1/contrib/postgis-2.1/postgis.sql

возвращает список ошибок, которые слишком длинны для отображения, прокручивая до начала ошибки.

Я попробовал ту же команду с «| more» и «| less», добавленными в конце команды, но она не отображает сообщение постранично, как должно.

Я также пытался поместить вывод в файл с «> file.txt», но я не получаю в этом новом файле то, что отображается на экране !!

Я не понимаю Зачем. Я думаю, я не могу сделать это с помощью команды PSQL ?? Есть ли другой способ получить все сообщения об ошибке?

Спасибо за помощь!

3
задан 18 September 2012 в 05:07

3 ответа

Ошибки, которые печатают большинство программ, отправляются в поток stderr (Стандартная ошибка), тогда как выходные данные программы отправляются в поток stdout (Стандартный вывод).

Каждый поток имеет файловый дескриптор , который можно рассматривать как число, идентифицирующее поток. stderr имеет дескриптор файла 2, а значение для stdout равно 1.

  • При запуске
    command > file.txt

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

    command 1> file.txt

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;, . [+1132]

  • Однако, если вы хотите перенаправить содержимое только stderr, вы должны написать:
    command 2> file.txt
  • И перенаправить stdout и [ 1114], вы либо напишите:
    command &> file.txt

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Отправьте выходные данные из command в file.txt, а также объедините stderr с stdout .

  • Аналогично, для отправки ошибок в less или more, сначала объедините stderr в stdout, а затем отправьте его в программу корреспондирования.
    command 2>&1 | less
0
ответ дан 18 September 2012 в 05:07

Если вы пытаетесь перехватить вывод STDERR в более / менее или направить в файл, вам нужно указать это сделать. Просто используя | или> будет только захватывать STDOUT, а не STDERR. Чтобы получить оба, вам нужно сделать что-то вроде:

psql -d ... 2>1 | less

Это перенаправит STDERR в STDOUT, и тогда оба будут появляться в меньшем количестве, когда вы пытаетесь пролистать вывод.

0
ответ дан 18 September 2012 в 05:07

Я думаю, что dobey и green7 имеют лучшие ответы для вашей конкретной проблемы, но для полноты картины:

Я могу получить сообщение об ошибке или сообщение, которого не ожидал, и не хочу снова запускать команду, или не хочу тратить время Поэтому, когда я устанавливаю новую операционную систему, я запускаю gnome-терминал, захожу в Edit-> Preferences-> Scrolling Tab и устанавливаю флажок неограниченной прокрутки.

При использовании виртуальной консоли ядра вы можете прокрутить назад с помощью Shift-PageUp.

Когда я использую меньше | больше или не использую ни того, ни другого, мне иногда легче понять сообщения, если расширить экран терминала так, чтобы он был достаточно большим по горизонтали, чтобы вместить большую часть сообщения, чтобы исключить сгиб строки.

0
ответ дан 18 September 2012 в 05:07

Другие вопросы по тегам:

Похожие вопросы: