- สามารถใช้งานได้อย่างมีประสิทธิภาพสำหรับการสำรวจไฟล์ ค้นหา กรอง ตั้งบุ๊กมาร์ก และสลับออปชัน ผ่าน ความสามารถที่หลากหลายและชุดคีย์ลัดของคำสั่ง
less
- สามารถเปิดหลายไฟล์พร้อมกัน และ ย้าย เพิ่ม หรือลบไฟล์ระหว่างกันได้ด้วยคำสั่ง
:n, :p, :e, :d
- สามารถใช้ ความสามารถในการค้นหา (
/, ?, n, N) และการกรอง (&, &!) เพื่อค้นหารูปแบบที่ต้องการอย่างรวดเร็วหรือยกเว้นรูปแบบนั้นได้
- บุ๊กมาร์ก (
m, ') และความสามารถจับคู่เครื่องหมายวงเล็บ ช่วยให้การย้ายตำแหน่งในเอกสารยาวหรือไฟล์โค้ดง่ายขึ้น
- สามารถ สลับออปชันระหว่างใช้งาน (
-S, -R, -N เป็นต้น) และรันคำสั่งภายนอก (!) เพื่อปรับสภาพแวดล้อมได้ทันทีโดยไม่ต้องออกจาก less
การจัดการหลายไฟล์
less ไม่ได้เป็นแค่เครื่องมือที่ใช้ท้ายไปป์ไลน์เท่านั้น แต่ สามารถเปิดหลายไฟล์โดยส่งเป็นอาร์กิวเมนต์ได้โดยตรง
- ตัวอย่าง:
less file1 file2 file3
- ระหว่างใช้งานก็สามารถ เพิ่มไฟล์ใหม่ ได้ด้วยคำสั่ง
:e file.h
- ใช้
:n เพื่อไปยัง ไฟล์ถัดไป, :p เพื่อไปยัง ไฟล์ก่อนหน้า, และ :x หรือ :rewind เพื่อ ย้อนกลับไปไฟล์แรก
- สามารถใช้คำสั่ง
:d เพื่อ ลบไฟล์ปัจจุบันออกจากรายการ ได้
ความสามารถในการนำทาง
- หากพิมพ์ ตัวเลข+G เช่น
3141G จะเป็นการ ย้ายไปยังหมายเลขบรรทัดที่กำหนด
- ตัวเลข+% เช่น
75% ใช้สำหรับ กระโดดไปยังตำแหน่งตามเปอร์เซ็นต์ของไฟล์
- ใช้
/แพตเทิร์น เพื่อ ค้นหาไปข้างหน้า, ?แพตเทิร์น เพื่อ ค้นหาย้อนกลับ, และ n/N เพื่อ ไปยังผลลัพธ์ถัดไป/ก่อนหน้า
!แพตเทิร์น คือ ค้นหาบรรทัดที่ไม่ตรงกัน, * คือ ค้นหาข้ามหลายไฟล์, @ คือ เริ่มค้นหาจากไฟล์แรก, และ @* คือ ค้นหาทั้งหมดในทุกไฟล์
ความสามารถในการกรอง
- ใช้
&แพตเทิร์น เพื่อ แสดงเฉพาะบรรทัดที่ตรงกับแพตเทิร์นดังกล่าว โดยทำงานคล้าย grep ภายใน
- ใช้
&!แพตเทิร์น เพื่อ แสดงเฉพาะบรรทัดที่ไม่ตรงกับแพตเทิร์น ซึ่งมีประโยชน์เมื่อสำรวจไฟล์ล็อก
บุ๊กมาร์กและการจับคู่วงเล็บ
- ใช้
m + ตัวอักษร เพื่อ ตั้งบุ๊กมาร์ก และใช้ ' + ตัวอักษร เพื่อ ย้ายกลับไปยังตำแหน่งนั้น
- ตัวอย่าง: ใช้
mo ตั้งบุ๊กมาร์กที่ส่วน OPTIONS และ me ที่ส่วน EXAMPLES จากนั้นใช้ 'o, 'e เพื่อย้ายไปยังตำแหน่งนั้น
- หากมีวงเล็บอย่าง
(, [, { อยู่ที่บรรทัดแรกของหน้าจอ เมื่อกดวงเล็บนั้นจะกระโดดไปยังวงเล็บคู่ที่ตรงกัน
- ในทางกลับกัน หากวงเล็บปิดอยู่ที่บรรทัดสุดท้าย ก็จะ ย้ายไปยังวงเล็บเปิด
- สามารถ กำหนดคู่วงเล็บแบบกำหนดเอง ได้ด้วย
alt+ctrl+b เป็นต้น
การสลับออปชันและรันคำสั่งภายนอก
- ระหว่างใช้งานสามารถพิมพ์
- ตามด้วยออปชันเพื่อ เปลี่ยนการตั้งค่าได้ทันที
-S: สลับการตัดบรรทัด
-G: ไฮไลต์ผลการค้นหา
-i/-I: ตั้งค่าการแยกแยะตัวพิมพ์เล็ก-ใหญ่
-R: แสดงสี ANSI
-N/-n: แสดง/ซ่อนหมายเลขบรรทัด
- สามารถใช้คำสั่ง
! เพื่อ รันคำสั่งภายนอก ได้ (!date, !bc เป็นต้น)
ตัวแปรสภาพแวดล้อมและความสามารถอื่น ๆ
- ออปชันที่ใช้บ่อยสามารถเก็บไว้ใน ตัวแปรสภาพแวดล้อม
$LESS ได้
- ตัวอย่าง:
LESS="-RNe" → แสดงสี, แสดงหมายเลขบรรทัด, และออกอัตโนมัติเมื่อถึงท้ายไฟล์
- ใช้คำสั่ง
v เพื่อ เปิดไฟล์ปัจจุบันด้วยตัวแก้ไข $VISUAL
- ใช้คำสั่ง
o หรือ O เพื่อ บันทึกเนื้อหาที่อ่านจากมาตรฐานอินพุตลงไฟล์ ได้
less รองรับ ความสามารถกระโดดตามแท็ก ที่อิงกับ ctags แต่ไม่ได้ถูกใช้งานบ่อยนัก
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
น่าแปลกที่บทความลืมพูดถึงฟังก์ชัน
followไป ตอนแรกมันให้ความรู้สึกเหมือนเป็น UX ที่แปลกๆ แต่พอชินแล้วหลายกรณีก็ดีกว่าtailถ้ารันด้วย
less +Fมันจะแสดงผลโดยคอยตาม input stream หรือไฟล์แบบเรียลไทม์ กด<C-c>เพื่อหยุดการติดตามแล้วสำรวจต่อแบบlessปกติได้ และกดF(ตัวพิมพ์ใหญ่) เพื่อกลับไปติดตามอีกครั้งkubectl logs | less +F) ถ้ากด<C-c>process ของ pipe ทั้งชุดจะจบ ทำให้กลับไปติดตามต่อด้วยFไม่ได้อีกlessมีทางเลือกคือใช้<C-x>เพื่อหยุดการติดตาม แต่ shell ส่วนใหญ่ดักคีย์นี้ไว้tailคุณกด Enter เพื่อเพิ่ม บรรทัดว่าง ไว้ใต้บรรทัดสุดท้ายได้ มันช่วยให้แยกผลลัพธ์จากการรันหลายครั้งได้ดูง่ายขึ้น ฟีเจอร์นี้อย่างเดียวยังทำให้ฉันใช้tailอยู่ออปชัน
-Xหรือ--no-initทำให้ไม่ล้างหน้าจอเมื่อออกจากโปรแกรม ปกติฉันชอบ คงหน้าจอไว้ เพื่อย้อนดูสิ่งที่แสดงก่อนหน้า หรือคัดลอกและวางได้-Xแค่บางครั้ง ลองดู ทิปในเธรดนี้-Eมันจะออกทันทีเมื่อ output สั้นกว่าขนาดหน้าจอ ฉันมักใช้ออปชันรวมแบบ “less -SEXIER” บ่อยๆ เพราะจำง่ายเวลา debug log ยาวๆ ฉันใช้
&เพื่อกรองเฉพาะส่วนที่อยากอ่าน และใช้&!เพื่อตัดส่วนที่ไม่ต้องการออก มันรองรับ regex ด้วย บางครั้งช้าบ้างแต่มีประโยชน์มากเวลาต้องกรองแบบเฉพาะหน้ามีสองทิปที่มีประโยชน์
ออปชัน
-Lจะข้ามการ preprocess ไฟล์ input ทำให้ไม่ถูกตีความผิดเป็นnroffในกรณีที่ชื่อไฟล์ log ถูก rotate เช่นlogfile.1,logfile.2อีกอย่างคือเวลาค้นหา ถ้าใส่
Ctrl-Rเป็นตัวแรก จะค้นหาเป็น literal string ไม่ใช่ regexคุณตั้งค่า key binding ได้ด้วยไฟล์
~/.lesskeyฉัน bind ปุ่มsให้เลื่อนถอยหลัง ทำให้ใช้dกับsเลื่อนลง/ขึ้นหน้าได้เร็วด้วยมือเดียวlessที่มากับ macOS ไม่มีฟีเจอร์นี้ ต้องติดตั้งผ่าน Homebrew (ตัวอย่างการตั้งค่า, คำอธิบายที่เกี่ยวข้อง)Nเป็น next-file เหมือนกัน การที่ macOS ไม่มี lesskey นี่น่าหงุดหงิดจริงๆmanบน OpenBSD สามารถส่งแท็กให้lessได้ ทำให้กระโดดไปยัง section เฉพาะได้ทันที เช่น:t testเป็นฟีเจอร์ที่น่าสนใจ แต่ในทางปฏิบัติฉันแทบไม่ค่อยใช้แค่ค้นหาด้วย
/ซึ่งเป็น อินเทอร์เฟซที่สม่ำเสมอ ก็ดูตรงไปตรงมามากกว่าอนึ่ง ระบบตระกูล BSD ใช้ชุดแมโคร
mdocเพื่อสร้าง เอกสารเชิงความหมาย และ OpenBSD ใช้โปรแกรมmandocสำหรับเรนเดอร์เอกสารเหล่านี้ (เอกสาร mdoc)สามารถตั้งให้
^qออกจากlessโดยไม่ล้างหน้าจอได้ ส่วนqธรรมดาก็ยังออกแล้วล้างหน้าจอเหมือนเดิมต้องรัน
lessโดยไม่ใช้-Xและมีประโยชน์มากโดยเฉพาะเวลาต้องอ้างอิง output ก่อนหน้า เช่นgit loglessยังมีความสามารถในการ pipe ไปยังคำสั่งภายนอกด้วยตัวอย่างเช่น ใช้
maเพื่อกำหนด mark แล้วใช้|aเพื่อส่งเนื้อหาจากตำแหน่งปัจจุบันไปจนถึง mark นั้นให้คำสั่งภายนอกมีประโยชน์เวลาบันทึกบางส่วนของข่าวหรืออีเมล
อีกอย่างคือออปชัน
-jใช้ปรับว่าผลการค้นหาจะไปแสดงต่ำกว่าด้านบนของหน้าจอกี่บรรทัดgit logเหมือนกัน เลือก commit แล้วกดคีย์ลัดเพื่อรันgit showหรือทำงาน fixup ได้เลยโดยใช้ debug trap ของ
bashและkeyd-application-mapperเพื่อตรวจว่าตอนนี้กำลังรันคำสั่งอะไรอยู่ จากนั้นดึง commit hash นั้นมาให้สคริปต์จัดการเอนจิน regex ของ
less(1)ช้ามาก เวลาจัดการไฟล์ใหญ่ๆ ฉันจะค้นหาด้วยgrepหรือripgrepก่อน แล้วค่อยส่งผลลัพธ์เข้าlessเพื่อดูต่อปุ่ม
sใช้บันทึกข้อมูลจาก pipe ลงไฟล์ได้ สะดวกกว่าคัดลอกวางมากlessแล้วถ้าผลลัพธ์มีประโยชน์ค่อยกดsเพื่อบันทึกจะใช้
teeก็ได้ แต่แบบนั้นจะสร้างไฟล์ทิ้งไว้ตลอด ซึ่งถ้าไม่จำเป็นก็ไม่มีประสิทธิภาพ