'less'로 파이프 된 PHP 출력에는 모든 명령 다음에 <enter>가 필요합니다.

Eddified

PHP 출력을 Linux 'less'명령으로 파이핑하면 'less'가 실제로 작동합니다. (CentOS 6.2, CentOS 5에서는 발생하지 않았습니다.)

PHP의 출력을 'less'로 파이프 enter하면 'j'명령 (한 줄 아래로 스크롤하는 명령) 이후에도 모든 명령이 끝날 때마다 키를 눌러야합니다. 또한 명령 키가 화면에 표시되고 'less'가 화면을 정리하지 않습니다.

따라서 실행 후 :

$ php -r 'for ($i=0; $i<300; $i++) { print "$i\n";}' | less

그런 다음 입력 j(보통 한 줄 아래로 스크롤)하면 ':'문자 다음에 화면 하단에 'j'문자가 표시됩니다. 를 누르면 enterj 명령이 최종적으로 "취소"되고 실제로 스크롤되지만 이제 출력의 인접한 두 줄 사이에 ": j"가 표시됩니다.

10
:j
11

Python의 동등한 출력으로 less를 사용하면 모든 것이 정상이며 덜 정상적으로 작동합니다.

$ python -c 'for i in xrange(1, 300): print i' | less

무슨 일이 일어나고 어떻게 해결합니까?

더 많은 정보:

$ less --version
less 436
Copyright (C) 1984-2009 Mark Nudelman

less comes with NO WARRANTY, to the extent permitted by law.
For information about the terms of redistribution,
see the file named README in the less distribution.
Homepage: http://www.greenwoodsoftware.com/less

$ php --version
PHP 5.3.27 (cli) (built: Aug 26 2013 11:46:37)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies

Mac OS X에서 Terminal.app을 사용하여 상자에 ssh 한 다음 php 명령을 실행하고 있습니다.

Rik

편집하다:

해결책을 찾았습니다.< /dev/null PHP 명령 후에 다음 을 수행해야합니다 .

php -r 'for ($i=0; $i<300; $i++) { print "$i\n";}' < /dev/null | less

분명히 PHP는 stdin.
으로 < /dev/null당신은 더 이상 입력이없는 생각으로 PHP를 강제로.

편집 2 :

를 입력하지 않으려면 (계속) < /dev/null별칭을 만들 수 있습니다 php2.

alias php2="php < /dev/null`

에 추가하면 영구적으로 만들 수 있습니다 ~/.bashrc.

이제 다음을 수행 할 수 있습니다.

php2 -r 'for ($i=0; $i<300; $i++) { print "$i\n";}' | less

php자신을 별칭 으로 지정할 수는 있지만 .NET Framework로 파이프 할 수있는 능력은 없습니다 php.
물론 p입력 을 줄이려면 줄여도 됩니다.


원래 답변 :

이 버그는 CentOS 6.5에도 있습니다.

새로 설치된 CentOS 6.5도 VM에 있습니다. A ... | cat | less는 작동하지 않습니다.
A ... > a && cat a | less는 작동합니다. 그림을 이동.

커서 키는 php --help | less. 그들은 python --help | less. 따라서 PHP 실행 파일 에 있어야합니다 . 나는 이것이 PHP의 오랜 버그라고 생각합니다.

여기서이 버그에 대한 참조를 찾았 습니다 .

문제가 해결 될 때까지 리디렉션을 수행해야합니다.

php -r 'for ($i=0; $i<300; $i++) { print "$i\n";}' > /tmp/php.txt && cat /tmp/php.txt | less

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

* 모든 * 입력 된 쉘 명령의 출력을 다른 것으로 어떻게 파이프 할 수 있습니까? (예 : 모든 것을 'lolcat'으로 파이프)

분류에서Dev

Kali Linux는 모든 명령에 대해 전체 디렉토리 경로가 필요합니다.

분류에서Dev

bash : 파이프 된 명령에서 화면이 아닌 stderr로가는 오류를 원합니다.

분류에서Dev

awk의 print / printf 출력을 쉘 명령으로 파이핑하면 관련없는 다른 모든 print / printf 문 다음에 해당 문이 실행됩니다.

분류에서Dev

SSH는 명령이 SSH 명령에 대한 인수로 제공 될 때 입력 된 모든 암호를 표시합니다.

분류에서Dev

bash 파이프에서 이전 명령의 출력을 다음 명령에 대한 변수로 가져옵니다 (예 : if 문).

분류에서Dev

열려있는 모든 명령 프롬프트를 닫으면 testNG의 분기 된 프로세스에서 오류가 발생합니다.

분류에서Dev

필요한 모든 정보와 함께 한 줄에 출력을 생성 할 수있는 명령 / 스크립트가 필요합니다.

분류에서Dev

필요한 모든 정보와 함께 한 줄에 출력을 생성 할 수있는 명령 / 스크립트가 필요합니다.

분류에서Dev

Bash는 모든 명령에 대해 이상한 환경 줄을 출력하고 명령을 에코합니다.

분류에서Dev

명령을 pv에 파이프하지만 원래 명령의 모든 출력을 숨 깁니다.

분류에서Dev

셸에 입력 된 모든 명령을 기록합니다. 출력 (로거 함수에서 syslog-ng / journald로)에 명령에 대한 중복 항목이 포함되어 있습니까?

분류에서Dev

PHP는 모든 xml 출력에 "<head />"를 추가합니다.

분류에서Dev

내 명령 출력에`%`가 추가 된 이유는 무엇입니까?

분류에서Dev

react-redux 구성 요소가있는 React typescript에는 전달 된 모든 소품이 필요합니다.

분류에서Dev

sudo apt-get install in terminal로 과거에 실행 된 모든 명령 목록을 가져옵니다.

분류에서Dev

sudo apt-get install in terminal로 과거에 실행 된 모든 명령 목록을 가져옵니다.

분류에서Dev

루프가 출력 파일로 이동하더라도 echo 명령이 화면에 표시됩니다.

분류에서Dev

Windows 명령 줄에서 프로그램의 모든 출력을 유지하는 방법은 무엇입니까?

분류에서Dev

출력을 stdout으로 파이프 한 다음 명령 한 다음 변수로 파이프합니다.

분류에서Dev

PHP에서 system () 명령으로 에코 된 값을 가져옵니다.

분류에서Dev

cat 명령이 다른 명령으로 파이프 된 경우 파일 이름을 출력하지 못하게하는 방법은 무엇입니까?

분류에서Dev

아래 출력에 대한 Linux 명령이 필요합니다.

분류에서Dev

NodeJS에는 경로가있는 모듈이 필요합니다.

분류에서Dev

모든 div에 설정된 높이가 필요합니까?

분류에서Dev

Linux는 출력이 파일에 저장되기 전에 명령 출력에 문자열을 추가합니다.

분류에서Dev

명령 출력을 Yad로 파이프하고 출력을 로그 파일에 기록합니다.

분류에서Dev

모든 쉘 명령의 출력에 명령 이름 주위에 이상한 문자가 포함되는 이유

분류에서Dev

한 명령의 출력을 다른 명령으로 파이프하는 문제

Related 관련 기사

  1. 1

    * 모든 * 입력 된 쉘 명령의 출력을 다른 것으로 어떻게 파이프 할 수 있습니까? (예 : 모든 것을 'lolcat'으로 파이프)

  2. 2

    Kali Linux는 모든 명령에 대해 전체 디렉토리 경로가 필요합니다.

  3. 3

    bash : 파이프 된 명령에서 화면이 아닌 stderr로가는 오류를 원합니다.

  4. 4

    awk의 print / printf 출력을 쉘 명령으로 파이핑하면 관련없는 다른 모든 print / printf 문 다음에 해당 문이 실행됩니다.

  5. 5

    SSH는 명령이 SSH 명령에 대한 인수로 제공 될 때 입력 된 모든 암호를 표시합니다.

  6. 6

    bash 파이프에서 이전 명령의 출력을 다음 명령에 대한 변수로 가져옵니다 (예 : if 문).

  7. 7

    열려있는 모든 명령 프롬프트를 닫으면 testNG의 분기 된 프로세스에서 오류가 발생합니다.

  8. 8

    필요한 모든 정보와 함께 한 줄에 출력을 생성 할 수있는 명령 / 스크립트가 필요합니다.

  9. 9

    필요한 모든 정보와 함께 한 줄에 출력을 생성 할 수있는 명령 / 스크립트가 필요합니다.

  10. 10

    Bash는 모든 명령에 대해 이상한 환경 줄을 출력하고 명령을 에코합니다.

  11. 11

    명령을 pv에 파이프하지만 원래 명령의 모든 출력을 숨 깁니다.

  12. 12

    셸에 입력 된 모든 명령을 기록합니다. 출력 (로거 함수에서 syslog-ng / journald로)에 명령에 대한 중복 항목이 포함되어 있습니까?

  13. 13

    PHP는 모든 xml 출력에 "<head />"를 추가합니다.

  14. 14

    내 명령 출력에`%`가 추가 된 이유는 무엇입니까?

  15. 15

    react-redux 구성 요소가있는 React typescript에는 전달 된 모든 소품이 필요합니다.

  16. 16

    sudo apt-get install in terminal로 과거에 실행 된 모든 명령 목록을 가져옵니다.

  17. 17

    sudo apt-get install in terminal로 과거에 실행 된 모든 명령 목록을 가져옵니다.

  18. 18

    루프가 출력 파일로 이동하더라도 echo 명령이 화면에 표시됩니다.

  19. 19

    Windows 명령 줄에서 프로그램의 모든 출력을 유지하는 방법은 무엇입니까?

  20. 20

    출력을 stdout으로 파이프 한 다음 명령 한 다음 변수로 파이프합니다.

  21. 21

    PHP에서 system () 명령으로 에코 된 값을 가져옵니다.

  22. 22

    cat 명령이 다른 명령으로 파이프 된 경우 파일 이름을 출력하지 못하게하는 방법은 무엇입니까?

  23. 23

    아래 출력에 대한 Linux 명령이 필요합니다.

  24. 24

    NodeJS에는 경로가있는 모듈이 필요합니다.

  25. 25

    모든 div에 설정된 높이가 필요합니까?

  26. 26

    Linux는 출력이 파일에 저장되기 전에 명령 출력에 문자열을 추가합니다.

  27. 27

    명령 출력을 Yad로 파이프하고 출력을 로그 파일에 기록합니다.

  28. 28

    모든 쉘 명령의 출력에 명령 이름 주위에 이상한 문자가 포함되는 이유

  29. 29

    한 명령의 출력을 다른 명령으로 파이프하는 문제

뜨겁다태그

보관