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 명령을 실행하고 있습니다.
편집하다:
해결책을 찾았습니다.< /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] 삭제
몇 마디 만하겠습니다