Мне нравится, что канал подает длинный текстовый вывод в less (или more), чтобы сделать его более читаемым. Только на Ubuntu я наблюдал необычное поведение: иногда меньшее количество нажатий клавиш не обрабатывается немедленно. Это как будто я должен «подтвердить» их с помощью <ENTER>. Например, меньше открывается, отображается текст, я нажимаю <SPACE> (ничего не происходит), я нажимаю <ENTER> (страница прокручивается вниз). Это очень раздражает, так как делает его практически непригодным для использования, так как также испортит вывод терминала.
Это не происходит для всех команд с каналами. Один из примеров:
php --rc PDO | less
Я никогда не видел, чтобы это происходило в любом другом дистрибутиве Linux.
Я борюсь с этой проблемой весь день, и, найдя этот вопрос и прочитав несколько 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«Я борюсь с этой проблемой весь день, и, найдя этот вопрос и прочитав несколько 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«Я борюсь с этой проблемой весь день, и, найдя этот вопрос и прочитав несколько 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«Я борюсь с этой проблемой весь день, и, найдя этот вопрос и прочитав несколько 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«Я борюсь с этой проблемой весь день, и, найдя этот вопрос и прочитав несколько 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«