การส่งออกไปป์ไลน์ของ PHP ไปยังคำสั่ง 'น้อย' ของ linux จะทำให้ 'น้อย' ลงมือทำจริง ๆ (CentOS 6.2 ไม่ได้เกิดขึ้นกับ CentOS 5)
เมื่อฉันไพพ์เอาต์พุตจาก php เป็น 'less' มันต้องenterกดคีย์หลังจากทุกคำสั่งแม้หลังจากคำสั่ง 'j' (คำสั่งเพื่อเลื่อนลงหนึ่งบรรทัด) นอกจากนี้คีย์คำสั่งจะแสดงขึ้นบนหน้าจอและ 'น้อย' จะไม่ล้างหน้าจอ
ดังนั้นหลังจากทำงาน:
$ php -r 'for ($i=0; $i<300; $i++) { print "$i\n";}' | less
จากนั้นพิมพ์j(ซึ่งมักจะเลื่อนลงหนึ่งบรรทัด) ฉันเห็นอักขระ 'j' ปรากฏขึ้นที่ด้านล่างของหน้าจอหลังจากอักขระ ':' การกดenterทำให้น้อยลงจนในที่สุด "รับ" คำสั่ง j และมันจะเลื่อนแน่นอน แต่ตอนนี้ฉันเห็น ": j" ระหว่างสองบรรทัดที่อยู่ติดกันของเอาท์พุท:
10
:j
11
เมื่อใช้งานน้อยลงโดยใช้เอาต์พุตที่เทียบเท่าจาก python ทุกอย่างใช้ได้ดีและทำหน้าที่น้อยลงตามปกติ:
$ 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
ฉันใช้ Terminal.app บน Mac OS X เพื่อ ssh ไปยังกล่องจากนั้นเรียกใช้คำสั่ง php