Почему клавиши в & ldquo; less & rdquo; / & ldquo; more & rdquo; иногда требуется & lt; ENTER & gt ;, когда я использую трубу?

Мне нравится, что канал подает длинный текстовый вывод в less (или more), чтобы сделать его более читаемым. Только на Ubuntu я наблюдал необычное поведение: иногда меньшее количество нажатий клавиш не обрабатывается немедленно. Это как будто я должен «подтвердить» их с помощью <ENTER>. Например, меньше открывается, отображается текст, я нажимаю <SPACE> (ничего не происходит), я нажимаю <ENTER> (страница прокручивается вниз). Это очень раздражает, так как делает его практически непригодным для использования, так как также испортит вывод терминала.

Это не происходит для всех команд с каналами. Один из примеров:

php --rc PDO | less

Я никогда не видел, чтобы это происходило в любом другом дистрибутиве Linux.

2
задан 24 July 2011 в 20:25

5 ответов

Я борюсь с этой проблемой весь день, и, найдя этот вопрос и прочитав несколько manpages, был немного мозговой волны. Оказывается, перенаправление STDIN на /dev/null действует как обходной путь и возвращает «нормальную» функциональность в less:

php --rc PDO < /dev/null | less

или

cat /dev/null | php --rc PDO | less

Это, из конечно, ужасный клоун обходного пути, и у меня нет почти достаточного знания труб и перенаправления потоков в Bash, чтобы действительно понять, что вызывает проблему или почему это ее исправляет, но я полагал, что публикация этого лучше, чем оставлять этот вопрос полностью без ответа.

Мое единственное предположение, что php получает STDIN вместо less при вводе команд в less, но я сбив с толку, почему это поведение наблюдается только в Ubuntu (я подтвердил, что php --rc PDO | less отлично работает в Sabayon, CentOS и Debian, одновременно нарушая несколько разных установок Ubuntu, включая те, которые были обновлены до 11.10 ).

Обновление, чтобы включить некоторые релевантные результаты поиска, которые я нашел. Оказывается, это проблема с сборкой Ubuntu php-cli, поэтому она не должна влиять на другие команды.

drush help | less не работает на Ubuntu 10.10+ (видео внутри) | drupal.org Ошибка # 322214 в php5 (Ubuntu): «php (через libedit using_history ()) неправильно открывает stdin«
3
ответ дан 25 July 2018 в 21:33
  • 1
    Подписал здесь просто сказать спасибо! У меня были проблемы с less неправильным ведением при получении данных на трубе; но отлично работает, если я вместо этого выкинул вывод в файл, а затем запустил less. Перенаправление STDIN в /dev/null, как вы сказали, исправил проблему для меня, и теперь я могу с радостью снова трубить :) – zenzelezz 14 December 2011 в 16:47

Я борюсь с этой проблемой весь день, и, найдя этот вопрос и прочитав несколько manpages, был немного мозговой волны. Оказывается, перенаправление STDIN на /dev/null действует как обходной путь и возвращает «нормальную» функциональность в less:

php --rc PDO < /dev/null | less

или

cat /dev/null | php --rc PDO | less

Это, из конечно, ужасный клоун обходного пути, и у меня нет почти достаточного знания труб и перенаправления потоков в Bash, чтобы действительно понять, что вызывает проблему или почему это ее исправляет, но я полагал, что публикация этого лучше, чем оставлять этот вопрос полностью без ответа.

Мое единственное предположение, что php получает STDIN вместо less при вводе команд в less, но я сбив с толку, почему это поведение наблюдается только в Ubuntu (я подтвердил, что php --rc PDO | less отлично работает в Sabayon, CentOS и Debian, одновременно нарушая несколько разных установок Ubuntu, включая те, которые были обновлены до 11.10 ).

Обновление, чтобы включить некоторые релевантные результаты поиска, которые я нашел. Оказывается, это проблема с сборкой Ubuntu php-cli, поэтому она не должна влиять на другие команды.

drush help | less не работает на Ubuntu 10.10+ (видео внутри) | drupal.org Ошибка # 322214 в php5 (Ubuntu): «php (через libedit using_history ()) неправильно открывает stdin«
3
ответ дан 2 August 2018 в 03:10
  • 1
    Подписал здесь просто сказать спасибо! У меня были проблемы с less неправильным ведением при получении данных на трубе; но отлично работает, если я вместо этого выкинул вывод в файл, а затем запустил less. Перенаправление STDIN в /dev/null, как вы сказали, исправил проблему для меня, и теперь я могу с радостью снова трубить :) – zenzelezz 14 December 2011 в 16:47

Я борюсь с этой проблемой весь день, и, найдя этот вопрос и прочитав несколько manpages, был немного мозговой волны. Оказывается, перенаправление STDIN на /dev/null действует как обходной путь и возвращает «нормальную» функциональность в less:

php --rc PDO < /dev/null | less

или

cat /dev/null | php --rc PDO | less

Это, из конечно, ужасный клоун обходного пути, и у меня нет почти достаточного знания труб и перенаправления потоков в Bash, чтобы действительно понять, что вызывает проблему или почему это ее исправляет, но я полагал, что публикация этого лучше, чем оставлять этот вопрос полностью без ответа.

Мое единственное предположение, что php получает STDIN вместо less при вводе команд в less, но я сбив с толку, почему это поведение наблюдается только в Ubuntu (я подтвердил, что php --rc PDO | less отлично работает в Sabayon, CentOS и Debian, одновременно нарушая несколько разных установок Ubuntu, включая те, которые были обновлены до 11.10 ).

Обновление, чтобы включить некоторые релевантные результаты поиска, которые я нашел. Оказывается, это проблема с сборкой Ubuntu php-cli, поэтому она не должна влиять на другие команды.

drush help | less не работает на Ubuntu 10.10+ (видео внутри) | drupal.org Ошибка # 322214 в php5 (Ubuntu): «php (через libedit using_history ()) неправильно открывает stdin«
3
ответ дан 4 August 2018 в 19:03
  • 1
    Подписал здесь просто сказать спасибо! У меня были проблемы с less неправильным ведением при получении данных на трубе; но отлично работает, если я вместо этого выкинул вывод в файл, а затем запустил less. Перенаправление STDIN в /dev/null, как вы сказали, исправил проблему для меня, и теперь я могу с радостью снова трубить :) – zenzelezz 14 December 2011 в 16:47

Я борюсь с этой проблемой весь день, и, найдя этот вопрос и прочитав несколько manpages, был немного мозговой волны. Оказывается, перенаправление STDIN на /dev/null действует как обходной путь и возвращает «нормальную» функциональность в less:

php --rc PDO < /dev/null | less

или

cat /dev/null | php --rc PDO | less

Это, из конечно, ужасный клоун обходного пути, и у меня нет почти достаточного знания труб и перенаправления потоков в Bash, чтобы действительно понять, что вызывает проблему или почему это ее исправляет, но я полагал, что публикация этого лучше, чем оставлять этот вопрос полностью без ответа.

Мое единственное предположение, что php получает STDIN вместо less при вводе команд в less, но я сбив с толку, почему это поведение наблюдается только в Ubuntu (я подтвердил, что php --rc PDO | less отлично работает в Sabayon, CentOS и Debian, одновременно нарушая несколько разных установок Ubuntu, включая те, которые были обновлены до 11.10 ).

Обновление, чтобы включить некоторые релевантные результаты поиска, которые я нашел. Оказывается, это проблема с сборкой Ubuntu php-cli, поэтому она не должна влиять на другие команды.

drush help | less не работает на Ubuntu 10.10+ (видео внутри) | drupal.org Ошибка # 322214 в php5 (Ubuntu): «php (через libedit using_history ()) неправильно открывает stdin«
3
ответ дан 6 August 2018 в 03:22
  • 1
    Подписал здесь просто сказать спасибо! У меня были проблемы с less неправильным ведением при получении данных на трубе; но отлично работает, если я вместо этого выкинул вывод в файл, а затем запустил less. Перенаправление STDIN в /dev/null, как вы сказали, исправил проблему для меня, и теперь я могу с радостью снова трубить :) – zenzelezz 14 December 2011 в 16:47

Я борюсь с этой проблемой весь день, и, найдя этот вопрос и прочитав несколько manpages, был немного мозговой волны. Оказывается, перенаправление STDIN на /dev/null действует как обходной путь и возвращает «нормальную» функциональность в less:

php --rc PDO < /dev/null | less

или

cat /dev/null | php --rc PDO | less

Это, из конечно, ужасный клоун обходного пути, и у меня нет почти достаточного знания труб и перенаправления потоков в Bash, чтобы действительно понять, что вызывает проблему или почему это ее исправляет, но я полагал, что публикация этого лучше, чем оставлять этот вопрос полностью без ответа.

Мое единственное предположение, что php получает STDIN вместо less при вводе команд в less, но я сбив с толку, почему это поведение наблюдается только в Ubuntu (я подтвердил, что php --rc PDO | less отлично работает в Sabayon, CentOS и Debian, одновременно нарушая несколько разных установок Ubuntu, включая те, которые были обновлены до 11.10 ).

Обновление, чтобы включить некоторые релевантные результаты поиска, которые я нашел. Оказывается, это проблема с сборкой Ubuntu php-cli, поэтому она не должна влиять на другие команды.

drush help | less не работает на Ubuntu 10.10+ (видео внутри) | drupal.org Ошибка # 322214 в php5 (Ubuntu): «php (через libedit using_history ()) неправильно открывает stdin«
3
ответ дан 7 August 2018 в 21:08
  • 1
    Подписал здесь просто сказать спасибо! У меня были проблемы с less неправильным ведением при получении данных на трубе; но отлично работает, если я вместо этого выкинул вывод в файл, а затем запустил less. Перенаправление STDIN в /dev/null, как вы сказали, исправил проблему для меня, и теперь я могу с радостью снова трубить :) – zenzelezz 14 December 2011 в 16:47

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

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