หน้าจอไม่เลื่อนในเทอร์มินัลอีมูเลเตอร์ในอูบุนตู ย้อนกลับการเลื่อนข้อความในคอนโซล linux การเชื่อมต่อหน้าจอ


แปลฟรี: Alexey Dmitriev
วันที่แปล 19 พฤศจิกายน 2550

เรากำลังพูดถึงคอนโซลข้อความ GNU / Linux ไม่ใช่สิ่งที่ปรากฏในหน้าต่างเทอร์มินัล หรือตัวจัดการ X-window หรือเดสก์ท็อป มีความสับสนมากมายเกี่ยวกับสิ่งนี้ที่ฉันต้องพูดเล็กน้อย: - "ถ้าคุณอยู่ในโหมดกราฟิก ให้กด" Alt-Ctrl-F1 "(หรือ" F2 " ฯลฯ ) คุณจะถูกนำไปที่ข้อความ คอนโซล" ...

0. เรากำลังพูดถึงอะไร?

คอมพิวเตอร์เริ่มทำงาน คุณอยู่ในคอนโซลข้อความ ดูข้อความไหลลงมาอย่างรวดเร็ว คุณต้องการดูชิ้นส่วนที่แฟลชไว้แล้วของข้อความนี้ คุณกด "Shift-PgUp" หรือ "Shift-PgDn" และหากคุณได้เปลี่ยนแป้นพิมพ์ลัดเริ่มต้นแล้ว (ไม่ใช่ ไม่ใช่ ไม่ใช่รูปแบบแป้นพิมพ์ใน X) ให้กดแป้นอื่นๆ ด้วยปุ่มเหล่านี้ คุณทำให้ข้อความเลื่อนขึ้นและลงบนหน้าจอได้ คุณกำลังใช้บัฟเฟอร์การเลื่อนกลับ (เรียกมันว่าบัฟเฟอร์การเลื่อนกลับเพื่อความกระชับ)

เมื่อคุณเริ่มใช้บัฟเฟอร์นี้ด้วย Might และ Main สองสิ่งจะชัดเจนในไม่ช้า:
สามารถส่งคืนข้อความที่มาพร้อมกับการดาวน์โหลดได้เพียงบางส่วนเท่านั้น
ไฟล์ "/ var / log / messages" จับภาพได้น้อยกว่าที่คุณต้องการดู

คุณเริ่มท่องอินเทอร์เน็ต และในไม่ช้าผลลัพธ์เบื้องต้นก็ปรากฏขึ้น: สิ่งพิมพ์ที่เลื่อนไปข้างหลังของลินุกซ์นั้นเก่าแก่มากและสามารถสืบย้อนไปถึงต้นยุค 90 ได้ อย่างไรก็ตาม ทุกอย่างที่มาก่อนเคอร์เนล 2.6.x ควรถูกลืม

อันที่จริง คุณควรเลือกอ่านสิ่งที่คุณอ่าน คำแนะนำส่วนใหญ่เกี่ยวกับเวอร์ชันก่อนหน้า 2.6.x มักจะทำให้คุณสับสนและทำให้คุณหลงทาง เชื่อฉันเถอะ ฉันฆ่าเวลามามากแล้วกับเรื่องนี้ พฤติกรรมการเลื่อนกลับถูกกำหนดไว้ในไฟล์ "vc.c" มิฉะนั้นจะเป็นไฟล์ขนาดเล็กในแหล่งเคอร์เนล โดยมี "vc" ย่อมาจาก "virtual console"

โปรดทราบว่าเมื่อสลับคอนโซล บัฟเฟอร์การเลื่อนจะหายไป - ดังนั้น บัฟเฟอร์ขนาดเต็มจึงมีอยู่ในคอนโซลปัจจุบัน (มีขยะข้อมูลจำนวนมากโดยเฉพาะที่นี่ตั้งแต่วันก่อนเคอร์เนล 2.6.x)

โดยค่าเริ่มต้น ขนาดบัฟเฟอร์คือ 32K นี่เพียงพอสำหรับการกดปุ่มเลื่อนย้อนกลับ 4 ครั้ง - การกดแต่ละครั้งจะเลื่อนครึ่งหน้าจอ 25 บรรทัดต่อหน้าจอ มีประมาณ 50 เส้น และคุณจะไม่ได้รับอีกต่อไป แม้ว่าคุณจะมี 30 หรือ 50 บรรทัดต่อหน้าจอก็ตาม ฉันต้องบอกว่า 50 บรรทัดเป็นส่วนเล็ก ๆ ของสิ่งที่บินผ่านหน้าจอระหว่างการโหลด ในการเชื่อมต่อกับข้างต้น มีคำถามสองข้อเกิดขึ้น:

ฉันจะเพิ่มบัฟเฟอร์การเลื่อนได้อย่างไร

เหตุใดบันทึกจึงไม่บันทึกข้อความบางส่วนที่คุณเห็นขณะโหลด

1. จะเพิ่มบัฟเฟอร์การเลื่อนกลับได้อย่างไร?

วิธีแก้ปัญหาแรกคือการเพิ่มขนาดบัฟเฟอร์เริ่มต้น (ค่าเริ่มต้น) ในแหล่งเคอร์เนลและคอมไพล์ใหม่ ให้ฉันถือว่าคุณไม่เต็มใจที่จะทำสิ่งนี้เหมือนฉัน และมองหาวิธีแก้ไขที่ยืดหยุ่นกว่านี้

และมีเครื่องมือดังกล่าวและเรียกว่า "framebuffer console" สำหรับ "fbcon" แบบสั้น อุปกรณ์นี้มีไฟล์เอกสาร "fbcon.txt"; หากคุณติดตั้งเอกสารเคอร์เนล แสดงว่าคุณมี มองหาที่ไหนสักแห่งในสาขา "/ usr / share" (ฉันไม่สามารถให้เส้นทางที่แน่นอนแก่คุณได้เนื่องจากความแตกต่างในการแจกแจง) คุณสามารถดาวน์โหลดเป็นไฟล์เดียวได้ตลอดเวลา

ณ จุดนี้ฉันขอโทษ: เราต้องพูดนอกเรื่องเล็กน้อยและพูดถึงเฟรมบัฟเฟอร์เล็กน้อย

บัฟเฟอร์วิดีโอคือบัฟเฟอร์ระหว่างจอแสดงผลและอะแดปเตอร์วิดีโอ ความงามของมันคือสามารถจัดการได้: อนุญาตให้ใช้เทคนิคที่จะไม่ทำงานหากอะแดปเตอร์เชื่อมต่อโดยตรงกับจอแสดงผล

หนึ่งในเคล็ดลับดังกล่าวเกี่ยวข้องกับบัฟเฟอร์การเลื่อน ปรากฎว่าคุณสามารถ "ถาม" บัฟเฟอร์วิดีโอเพื่อจัดสรรหน่วยความจำเพิ่มเติมให้กับ scrollbuffer สิ่งนี้ทำได้ผ่านพารามิเตอร์การบูตเคอร์เนล ก่อนอื่นคุณต้องมีเฟรมบัฟเฟอร์ จากนั้นคุณขอบัฟเฟอร์เลื่อนที่ใหญ่ขึ้น

ตัวอย่างต่อไปนี้มีไว้สำหรับ GRUB แต่สามารถปรับให้เข้ากับ LILO ได้อย่างง่ายดาย ในไฟล์กำหนดค่า GRUB - "menu.lst" - ค้นหาบรรทัดที่สอดคล้องกับเคอร์เนลแล้ว:
ลบตัวเลือก "vga = xxx" หากมี
เพิ่มตัวเลือก "video = vesabf" หรืออะไรก็ได้ที่ตรงกับฮาร์ดแวร์ของคุณ
เพิ่มตัวเลือก "fbcon = scrollback: 128"
หลังจากขั้นตอนนี้ บรรทัดพารามิเตอร์เคอร์เนลควรมีลักษณะดังนี้:
"เคอร์เนล / vmlinuz root = / dev / sdb5 วิดีโอ = radeonfb fbcon = scrollback: 128"

เหตุใดจึงลบตัวเลือก "vga = xxx" เนื่องจากอาจมีข้อขัดแย้งกับตัวเลือกวิดีโอ บนอะแดปเตอร์ ATI ของฉัน ฉันไม่สามารถเปลี่ยนบัฟเฟอร์การเลื่อนได้หากมี "vga = xxx" อยู่ในรายการ อาจไม่ใช่กรณีของคุณ หากตัวเลือกข้างต้นใช้ได้ดี แต่ถ้าคุณต้องการเพิ่มจำนวนบรรทัดหรือตั้งค่าแบบอักษรให้เล็กลงบนหน้าจอล่ะ คุณทำมันด้วยตัวเลือก "vga = xxx" เสมอ - และมันหายไป ไม่ต้องกังวล สามารถทำได้เช่นเดียวกันโดยการเปลี่ยนพารามิเตอร์ fbcon ตามที่อธิบายไว้ในไฟล์ "fbcon.txt" (แต่ไม่ครอบคลุมในบทความนี้) Ubuntu และ Debian มีวิธีที่สะดวกกว่า: "dpkg-reconfigure console-setup" ควรใช้คำสั่งนี้ด้วยเพราะจะแทนที่ "initrd" ในการตั้งค่าใหม่ของคุณ

2. ขยายขอบเขต

ตัวเลือก "fbcon = scrollback: 128" ช่วยให้คุณเคลื่อนที่ไปรอบๆ หน้าจอบัฟเฟอร์การเลื่อน 12-13 ได้ นั่นคือประมาณ 150 บรรทัด - ค่อนข้างดี แต่อาจยังไม่เพียงพอที่จะเห็นข้อความบูตทั้งหมด ฉันใส่มากกว่า 128 พูด 256 ได้ไหม ขีดจำกัดคือ 128 ใน "vc.c" หากต้องการเพิ่มเติม ให้แก้ไขและคอมไพล์ สำหรับตัวฉันเอง ฉันตัดสินใจว่าเกมนี้ไม่คุ้มกับเทียนไข

เมื่อฉันตัดสินใจอย่างสมบูรณ์ว่าฉันถึงขีด จำกัด สูงสุดแล้ว - ฉันอ้างอิงจาก "fbcon.txt":
fbcon = เลื่อนกลับ: [k]
...
คำต่อท้าย "k" เป็นทางเลือก และจะคูณ "ค่า" ด้วย 1024
(ส่วนต่อท้าย "k" เป็นทางเลือก และจะคูณ "ค่า" ด้วย 1024 เท่า)
ฉันรีบไปตรวจสอบ .. และสิ่งที่ผู้เขียนคิดเกี่ยวกับสิ่งนี้ฉันเชื่อว่า 128 และ 128k ให้ผลลัพธ์ที่เหมือนกันทุกประการ ขีดจำกัดเริ่มต้นคือหน่วยความจำ 128KB นั่นคือเรื่องราวทั้งหมด

สุดท้าย โปรดทราบว่าการใช้บัฟเฟอร์การเลื่อนแบบขยายจะใช้ทั้งหน่วยความจำกราฟิกและบัฟเฟอร์ใน RAM หากคุณพอใจกับค่าเริ่มต้น 32KB แสดงว่าคุณกำลังใช้หน่วยความจำการ์ดวิดีโอเท่านั้น อย่างไรก็ตาม ในทางปฏิบัติ ฉันไม่ได้สังเกตเห็นการชะลอตัวเลยแม้แต่น้อย

3. อะไรที่ขาดหายไปจากบันทึก?

บน Ubuntu และ Debian และรุ่นอื่นๆ ข้อความระบบทั้งหมดจะถูกเก็บไว้ในไฟล์ "/ var / log / messages" สิ่งนี้ใช้ได้แม้ว่าบริการบันทึก (daemon) จะไม่ใช่ "syslog" แบบเก่า แต่เป็น "syslog-ng" ("ng": "new generation" / new generation /)

ในทั้งสองกรณี คุณสามารถดูข้อความโดยพิมพ์ "dmesg" ที่บรรทัดคำสั่ง สิ่งนี้ไม่ได้ช่วย: คุณเห็นได้ชัดเจนว่าระหว่างการโหลดข้อความที่ไม่ได้อยู่ในผลลัพธ์ของคำสั่ง "dmesg" ได้อย่างไร?

นี่คือทรัพย์สิน ไม่ใช่แมลง! ข้อความที่บันทึกไว้ในไฟล์มาจากระบบย่อยของระบบปฏิบัติการต่างๆ ระบบย่อยที่ส่งข้อความไปยังล็อกไฟล์จะเรียกว่า "สิ่งอำนวยความสะดวก" ในคำศัพท์ syslog มีเพียง 8 ระบบเท่านั้น ระหว่างกระบวนการโหลด โปรแกรมและสคริปต์จะทำงาน ซึ่งอาจไม่ใช่ของ "เครื่องมือ" ทั้ง 8 รายการ เราเห็นข้อความของพวกเขาเลื่อนผ่านหน้าจอ แต่จะไม่มีการบันทึกในไฟล์บันทึก!

ตัวอย่างเช่น คุณจะไม่เห็นข้อความจาก "loadkeys" (openSUSE) หรือ "consolechars" (Ubuntu และ Debian) เมื่อโหลดรูปแบบแป้นพิมพ์ในเวลาบูต อีกตัวอย่างหนึ่ง: เมื่อใช้โปรแกรมแก้ไขข้อความคอนโซล คุณสามารถเลื่อนย้อนกลับในจอแสดงผล (รวมถึงสี) โดยใช้บัฟเฟอร์การเลื่อน แต่สิ่งที่บรรณาธิการสร้างขึ้นจะไม่ตกอยู่ในโปรโตคอลของระบบใดๆ เหตุผลก็คือว่า "loadkeys" หรือ "consolechars" หรือเครื่องมือแก้ไขไม่อยู่ใน "เครื่องมือ" ทั้ง 8 รายการ

สถานการณ์สามารถเปลี่ยนแปลงได้หรือไม่? แน่นอน - "แค่" ทำซ้ำและคอมไพล์แอปพลิเคชันที่คุณต้องการบันทึกอีกครั้ง เพิ่มหรือเขียนบูตสคริปต์ใหม่ หรือบังคับให้ระบบจับข้อความจาก "เครื่องมือ" ภายนอกทั้ง 8 ระบบ

ฉันพนันได้เลยว่าคุณจะไม่ทำสิ่งนี้ และฉันก็รู้คำตอบที่เป็นไปได้ของคุณเช่นกัน:
- "ไม่มีอะไรหายไปจากบันทึกของฉัน" แน่นอน...

หากคุณชอบบทความนี้ แบ่งปันกับเพื่อนของคุณ:

หัวข้อเคล็ดลับที่เป็นประโยชน์สำหรับการทำงานในเทอร์มินัล Linux นั้นไม่มีที่สิ้นสุด ดูเหมือนว่าทุกอย่างจะถูกจัดเรียงอย่างเรียบง่าย: พร้อมต์ของเชลล์และคำสั่งที่ป้อนจากแป้นพิมพ์ อย่างไรก็ตาม ในความเรียบง่ายนี้มีความเป็นไปได้ที่ไม่ชัดเจน แต่มีประโยชน์อยู่มากมาย นั่นคือเหตุผลที่เราเผยแพร่สื่อเกี่ยวกับลักษณะเฉพาะของการทำงานในบรรทัดคำสั่ง Linux เป็นประจำ โดยเฉพาะอย่างยิ่งวันนี้จะเป็นการแปลบทความที่ผู้เขียนกระตือรือร้นที่จะประหยัดเวลาด้วยการเพิ่มประสิทธิภาพแรงงาน

หากคุณสนใจที่จะทำงานกับบรรทัดคำสั่ง Linux ต่อไปนี้คือแหล่งข้อมูลบางส่วนของเราในหัวข้อนี้:

  • [ +114 ] เคล็ดลับบรรทัดคำสั่ง Linux ที่มีประโยชน์ที่สุด
  • [ +70 ] 10 Linux Terminal Tricks ไม่ค่อยมีใครรู้
  • [+65 ] เครื่องมือที่มีประโยชน์อย่างน่าอัศจรรย์: lsof
  • [ +32 ] Linux: เปลี่ยนเส้นทาง
  • [ +29 ] บทความเวอร์ชัน PDF เกี่ยวกับสคริปต์ทุบตี

เทคนิคบรรทัดคำสั่ง Linux และการประหยัดเวลา

คุณเคยเห็นเพื่อนร่วมงานใช้คำสั่ง Linux ง่ายๆ เพื่อแก้ปัญหาที่ต้องใช้เวลาสองสามบรรทัดในการแก้ปัญหาหรือไม่? ต้องเป็นเมื่อสิ่งนี้เกิดขึ้น คุณสามารถพูดกับตัวเองว่า: “ไม่เป็นไร! ฉันไม่รู้ว่ามันสามารถทำได้ง่ายขนาดนี้”

ในโพสต์นี้ ฉันจะแสดงเคล็ดลับบรรทัดคำสั่ง Linux แบบมืออาชีพซึ่งจะช่วยคุณประหยัดเวลาได้มาก และกำจัดอารมณ์ไม่ดีของคุณได้ในบางกรณี ไม่เพียงแค่นั้น เพื่อนหรือเพื่อนร่วมงานของคุณจะพูดว่า: "คุณต้อง!" มองมาที่คุณ เทคนิคเหล่านี้จะช่วยให้คุณเพิ่มประสิทธิภาพการทำงานส่วนบุคคลได้ เนื่องจากคุณจะต้องพิมพ์คำสั่งน้อยลงและแม้แต่การคลิกเมาส์น้อยลง

นี่ไม่ได้หมายความว่าเคล็ดลับ Linux เหล่านี้มีไว้สำหรับผู้เริ่มต้นเท่านั้น เป็นไปได้ว่าแม้แต่ผู้ใช้ที่มีประสบการณ์จะพบบางสิ่งที่มีประโยชน์ที่นี่ซึ่งพวกเขาไม่รู้ถึงแม้จะใช้ Linux มาหลายปีแล้ว ลินุกซ์เรียนรู้จากประสบการณ์ ทั้งประสบการณ์ของคุณเองและประสบการณ์ของคนอื่นจะทำ

ก่อนที่เราจะเริ่มต้น ฉันต้องการชี้ให้เห็นว่าวิธีการบางอย่างที่แสดงที่นี่เป็นแบบเฉพาะของเชลล์

0. เสร็จสิ้นคำสั่งโดยใช้แป้น Tab

ฉันจะเริ่มด้วยสิ่งที่ค่อนข้างชัดเจน แต่สำคัญมาก: การทำคำสั่งให้สมบูรณ์ด้วยปุ่ม Tab

เมื่อคุณเริ่มพิมพ์บางอย่างในเทอร์มินัล Linux คุณสามารถกดแป้น Tab หลังจากนั้นระบบจะแสดงข้อความแจ้งซึ่งประกอบด้วยชุดตัวเลือกความต่อเนื่องที่ขึ้นต้นด้วยอักขระที่คุณเพิ่งป้อน

ตัวอย่างเช่น หากคุณกำลังจะคัดลอกไฟล์ชื่อ my_best_file_1.txt คุณสามารถพิมพ์ cp m แล้วกด Tab เพื่อดูตัวเลือกสำหรับคำสั่งเพื่อดำเนินการต่อ


การใช้แป้น Tab สำหรับการเติมข้อความอัตโนมัติ

ปุ่ม Tab ยังสามารถใช้เพื่อเสร็จสิ้นคำสั่ง

1. ไปที่ไดเร็กทอรีการทำงานล่าสุด

ลองนึกภาพว่าคุณกำลังทำงานในไดเร็กทอรีที่ไม่สามารถเข้าถึงได้ง่าย จากนั้นจึงเปลี่ยนเป็นไดเร็กทอรีอื่นที่อยู่ในตำแหน่งที่ต่างไปจากเดิมอย่างสิ้นเชิง จากนั้นคุณก็รู้ว่าคุณต้องกลับไปที่ไดเร็กทอรีก่อนหน้า ในกรณีนี้ก็เพียงพอแล้วที่จะใช้คำสั่งต่อไปนี้:

ซีดี -
จะพาคุณไปยังไดเร็กทอรีการทำงานล่าสุด ในสถานการณ์เช่นนี้ คุณจะไม่ต้องป้อนเส้นทางยาวๆ อีกต่อไป หรือใช้การคัดลอกและวาง


สลับระหว่างไดเร็กทอรีได้ง่าย

2. กลับไปที่โฮมไดเร็กตอรี่

เทคนิคนี้ก็ค่อนข้างชัดเจนเช่นกัน คุณสามารถใช้คำสั่งด้านล่างเพื่อกลับไปยังโฮมไดเร็กตอรี่ของคุณได้จากทุกที่:

ซีดี ~
อย่างไรก็ตาม คุณสามารถกลับไปที่โฮมไดเร็กทอรีของคุณเร็วยิ่งขึ้นด้วยคำสั่ง cd

ในลีนุกซ์รุ่นปัจจุบันส่วนใหญ่ เชลล์ได้รับการกำหนดค่าล่วงหน้าให้ยอมรับคำสั่ง cd ด้วยวิธีนี้ วิธีนี้จะช่วยให้คุณประหยัดการกดแป้นพิมพ์ได้ 2-3 ครั้งบนแป้นพิมพ์


วิธีที่เร็วที่สุดในการไปที่โฮมไดเร็กตอรี่ของคุณ

3. การแสดงเนื้อหาของไดเร็กทอรี

คุณอาจสงสัยว่าอะไรคือความละเอียดอ่อนของการใช้คำสั่งเพื่อแสดงเนื้อหาของไดเร็กทอรี ทุกคนรู้ว่าคำสั่ง ls -l ใช้เพื่อจุดประสงค์นี้

แต่นั่นคือประเด็นทั้งหมด เกือบทุกคนใช้คำสั่ง ls -l เพื่อแสดงรายการเนื้อหาของไดเร็กทอรี ในขณะที่สามารถทำได้ด้วยคำสั่งต่อไปนี้:

ลิล
คำสั่งนี้ขึ้นอยู่กับการแจกจ่าย Linux และการกำหนดค่าเชลล์ของคุณ แต่มีโอกาสมากที่คุณจะสามารถใช้งานได้กับการกระจายส่วนใหญ่


ใช้คำสั่ง ll แทน ls -l command

4. เรียกหลายคำสั่งในบรรทัดเดียว

ลองนึกภาพว่าคุณต้องรันคำสั่งหลายคำสั่งตามลำดับ อาจเป็นไปได้ว่าคุณป้อนคำสั่งหนึ่งคำสั่งแล้วรอให้เสร็จจากนั้นป้อนคำสั่งถัดไป?

ตัวคั่นคำสั่งมีประโยชน์ในสถานการณ์นี้ (อัฒภาค). ด้วยวิธีนี้ คุณสามารถป้อนคำสั่งได้หลายคำสั่งในบรรทัดเดียว ในเวลาเดียวกัน ตรงกันข้ามกับการป้อนคำสั่งปกติ เพื่อรันคำสั่งถัดไป ไม่จำเป็นต้องรอให้คำสั่งก่อนหน้าเสร็จสิ้น

Command_1; command_2; command_3

5. ดำเนินการคำสั่งหลายคำสั่งในบรรทัดเดียวและเงื่อนไขสำหรับความสำเร็จของคำสั่งก่อนหน้า

เราเพิ่งดูวิธีการเรียกหลายคำสั่งในบรรทัดเดียว ซึ่งช่วยประหยัดเวลา แต่ถ้าคุณต้องการพูดเมื่อเรียกสองคำสั่งเพื่อให้คำสั่งถัดไปถูกดำเนินการเฉพาะเมื่อคำสั่งก่อนหน้านี้เสร็จสิ้นโดยไม่มีข้อผิดพลาด?

ลองนึกภาพว่าคุณต้องการสร้างโค้ด แล้วถ้าสร้างสำเร็จ โทร make?

ในสถานการณ์นี้ คุณสามารถใช้ตัวคั่น && ตัวคั่นนี้ช่วยให้แน่ใจว่าคำสั่งถัดไปจะถูกดำเนินการก็ต่อเมื่อคำสั่งก่อนหน้านี้สำเร็จเท่านั้น

Command_1 && command_2
นี่เป็นตัวอย่างที่ดีของการใช้ &&:

อัปเดต Sudo apt && sudo apt อัปเกรด

6. ค้นหาและใช้งานคำสั่งที่ป้อนก่อนหน้านี้อย่างง่าย

ลองนึกภาพว่าคุณ เมื่อสองสามนาทีหรือสองสามชั่วโมงที่แล้ว ป้อนคำสั่งแบบยาว และคุณต้องการคำสั่งนั้นอีกครั้ง ยิ่งไปกว่านั้น ปัญหาคือคุณไม่สามารถจำคำสั่งนี้ได้อย่างแม่นยำ

ในสถานการณ์เช่นนี้ การค้นหาแบบย้อนกลับจะช่วยคุณได้ เทคนิคนี้ช่วยให้คุณค้นหาประวัติคำสั่งด้วยคำสำคัญ นี่ก็เพียงพอที่จะใช้คีย์ผสม Ctrl + R เพื่อเริ่มการค้นหาแบบย้อนกลับและป้อนสิ่งที่เกี่ยวข้องกับคำสั่ง ระบบจะตรวจสอบประวัติคำสั่งและแสดงคำสั่งที่ตรงกับคำขอที่ป้อน

Ctrl + R ค้นหา_term
โดยค่าเริ่มต้น จะแสดงเพียงผลลัพธ์เดียวเท่านั้น หากต้องการดูผลลัพธ์ที่ตรงกับข้อความค้นหาเพิ่มเติม คุณจะต้องใช้แป้นพิมพ์ลัด Ctrl + R ซ้ำแล้วซ้ำอีก หากต้องการออกจากโหมดค้นหาแบบย้อนกลับ ให้กด Ctrl + C


ย้อนประวัติคำสั่งการค้นหา

โปรดทราบว่าใน Bash shell บางตัว คุณสามารถใช้ปุ่ม Page Up และ Page Down เพื่อวนซ้ำในผลการค้นหา

7. ปลดล็อกเครื่องหลังจากกด Ctrl + S . โดยไม่ตั้งใจ

คุณอาจคุ้นเคยกับการใช้แป้นพิมพ์ลัด Ctrl + S เพื่อบันทึกไฟล์ แต่ถ้าคุณกดปุ่มเหล่านี้ในเทอร์มินัล Linux คุณจะบล็อกมัน

หากก่อนหน้านี้ เพื่อแก้ไขสถานการณ์ คุณต้องปิดและรีสตาร์ทเครื่อง - ตอนนี้คุณสามารถหายใจได้สบาย ๆ คุณจะไม่ต้องทำสิ่งนี้อีก ในการทำให้เครื่องเทอร์มินัลเข้าสู่สภาวะการทำงาน เพียงแค่ใช้คีย์ผสม Ctrl + Q

8. ย้ายไปที่จุดเริ่มต้นหรือจุดสิ้นสุดของบรรทัด

ลองนึกภาพว่าคุณป้อนคำสั่งแบบยาวและที่ไหนสักแห่งที่อยู่ตรงกลางคุณจะรู้ว่าคุณต้องเปลี่ยนบางอย่างในตอนเริ่มต้น คุณอาจใช้แป้นลูกศรเพื่อย้ายไปที่จุดเริ่มต้นของบรรทัดก่อนแล้วจึงย้อนกลับไปยังจุดสิ้นสุด

แน่นอน ในสถานการณ์ที่คล้ายคลึงกัน คุณสามารถใช้ปุ่ม Home และ End ได้ แต่อีกวิธีหนึ่งคือ การใช้คีย์ผสม Ctrl + A คุณสามารถไปที่จุดเริ่มต้นของบรรทัด และใช้คีย์ผสม Ctrl + E ไปที่ จบ.


ย้ายไปที่จุดเริ่มต้นหรือจุดสิ้นสุดของบรรทัด

ฉันพบว่าวิธีนี้สะดวกกว่าการใช้ปุ่ม Home และ End โดยเฉพาะอย่างยิ่งเมื่อฉันทำงานบนแล็ปท็อป

9. การอ่านไฟล์บันทึกตามเวลาจริง

เมื่อคุณต้องการวิเคราะห์ล็อกไฟล์ที่บางแอปพลิเคชันที่ทำงานอยู่เขียนข้อมูลระหว่างการวิเคราะห์ คุณสามารถใช้คำสั่ง tail กับตัวเลือก -f ได้

หาง -f path_to_Log
หรือคุณสามารถใช้คำสั่ง grep ในรูปแบบปกติเพื่อแสดงเฉพาะบรรทัดที่คุณสนใจ:

หาง -f path_to_log | grep search_term
คุณสามารถใช้ตัวเลือก F ได้ที่นี่ ซึ่งจะทำให้ยูทิลิตี้หางทำงานต่อไปแม้ว่าไฟล์บันทึกที่กำลังดูจะถูกลบออก ด้วยวิธีการนี้ หากไฟล์นี้ถูกสร้างขึ้นอีกครั้ง tail จะแสดงข้อมูลจากไฟล์นั้นไปยังหน้าจอต่อไป

10. การอ่านไฟล์บันทึกที่บีบอัดโดยไม่ต้องแตกไฟล์

บันทึกของเซิร์ฟเวอร์มักจะ gzipped เพื่อประหยัดเนื้อที่ดิสก์ ซึ่งอาจนำไปสู่ความไม่สะดวกบางประการเมื่อวิเคราะห์บันทึกโดยนักพัฒนาหรือผู้ดูแลระบบ คุณอาจต้องใช้คำสั่ง scp เพื่อคัดลอกไฟล์ไปยังไดเร็กทอรีในเครื่องของคุณ จากนั้นแตกไฟล์ออกจากที่เก็บถาวรเพื่อดู เนื่องจากคุณอาจไม่มีสิทธิ์เขียนถึงตำแหน่งที่จัดเก็บไฟล์ที่คุณสนใจ

กลุ่มคำสั่งเข้ามาช่วยเหลือเรา ซึ่งชื่อที่ขึ้นต้นด้วยตัวอักษร "z" คำสั่งเหล่านี้เป็นทางเลือกแทนคำสั่งปกติที่ใช้สำหรับการทำงานกับไฟล์บันทึก ในหมู่พวกเขามีน้อย cat, grep และอื่น ๆ

ดังนั้น การใช้คำสั่ง zless, zcat, zgrep และอื่นๆ คุณไม่จำเป็นต้องคลายไฟล์บีบอัดอย่างชัดเจน สามารถดูรายละเอียดเกี่ยวกับคำสั่งเหล่านี้ได้

อีกอย่าง เมื่อฉันบอกเพื่อนร่วมงานเกี่ยวกับคำสั่ง "ลับ" เหล่านี้ ฉันก็ได้กาแฟหนึ่งถ้วย

11. ใช้คำสั่ง less เพื่ออ่านไฟล์

หากคุณต้องการดูไฟล์ โดยเฉพาะไฟล์ขนาดใหญ่ คุณสามารถลองใช้ cat ได้ แต่ควรมองหาที่อื่นดีกว่า ประเด็นคือแมวจะแสดงไฟล์ทั้งหมดบนหน้าจอซึ่งไม่สะดวกนัก

คุณสามารถใช้โปรแกรมแก้ไข เช่น Vi หรือ Vim ในเทอร์มินัลเพื่อดูไฟล์ได้ แต่ถ้าคุณต้องการอ่านไฟล์เพียงอย่างเดียว คำสั่งน้อยกว่าคือดีมาก

น้อยกว่า path_to_file
ในระหว่างเซสชันของการทำงานที่มีน้อยกว่า คุณสามารถค้นหาส่วนย่อยของข้อความที่จำเป็นด้วยคำหลัก เลื่อนดูหน้าต่างๆ แสดงข้อมูลด้วยหมายเลขบรรทัด และอื่นๆ

12. ใช้รายการสุดท้ายจากคำสั่งก่อนหน้าซ้ำด้วย! $

ในหลายสถานการณ์ การใช้อาร์กิวเมนต์ของคำสั่งก่อนหน้านี้มีประโยชน์มาก

สมมติว่าคุณต้องสร้างไดเร็กทอรีแล้วไปที่ไดเร็กทอรี คุณสามารถใช้ตัวเลือก! $ โดยป้อนคำสั่ง jump หลังคำสั่งเพื่อสร้างไดเร็กทอรี


การใช้! $ เพื่อใช้อาร์กิวเมนต์คำสั่งสุดท้าย

ยังดีกว่าทำเช่นเดียวกันกับแป้นพิมพ์ลัด Alt + (จุด). สามารถใช้ช่วงเวลาได้หลายครั้งเพื่อวนซ้ำตัวเลือกของคำสั่งสุดท้าย

13. การใช้คำสั่งก่อนหน้าในคำสั่งปัจจุบันด้วย !!

ทาง!! คุณสามารถเรียกคำสั่งก่อนหน้าทั้งหมดได้ เทคนิคนี้มีประโยชน์อย่างยิ่งเมื่อคุณต้องการรันคำสั่ง และปรากฎว่าคุณต้องการสิทธิ์ superuser เพื่อดำเนินการ ตัวอย่างเช่น รูปด้านล่างแสดงสถานการณ์ที่ sudo !! ช่วยประหยัดเวลาได้มาก


เอาเปรียบ !!! เพื่อแทนที่คำสั่งสุดท้ายเป็นอาร์กิวเมนต์

14. การใช้นามแฝงเพื่อแก้ไขข้อผิดพลาดในการพิมพ์

คุณอาจคุ้นเคยกับคำสั่ง alias แล้ว สามารถใช้เพื่อแก้ไขข้อผิดพลาดในคำสั่งที่ป้อน

ตัวอย่างเช่น อาจเกิดขึ้นที่คุณมักจะพิมพ์ gerp แทน grep หากคุณไม่สามารถรับมือกับนิสัยที่ไม่ดีได้ ให้เขียนนามแฝงลงในไฟล์ bashrc ของคุณดังนี้:

นามแฝง gerp = grep
ตอนนี้ คุณไม่จำเป็นต้องพิมพ์คำสั่งนี้อีกครั้ง หากคุณป้อนชื่อไม่ถูกต้อง

15. คัดลอกและวางในเทอร์มินัล Linux

คำแนะนำนี้ค่อนข้างขัดแย้ง เนื่องจากขึ้นอยู่กับการแจกจ่าย Linux และเทอร์มินัล

แต่โดยปกติคำสั่งคัดลอกและวางสามารถเรียกได้ดังนี้:

  • เลือกข้อความที่จะคัดลอกและคลิกขวาเพื่อวาง (ใช้งานได้ใน Putty และไคลเอนต์ Windows SSH อื่นๆ)
  • เลือกข้อความที่จะคัดลอก จากนั้นคลิกปุ่มกลางของเมาส์ (ล้อเลื่อน) เพื่อวาง
  • ใช้แป้นพิมพ์ลัด Ctrl + Shift + C เพื่อคัดลอก และใช้ Ctrl + Shift + V เพื่อวาง

16. สิ้นสุดคำสั่งหรือกระบวนการ

บางทีสิ่งที่ฉันต้องการแนะนำที่นี่ค่อนข้างชัดเจน อย่างไรก็ตาม ฉันจะบอกคุณเกี่ยวกับมันต่อไป หากคำสั่งทำงานอยู่เบื้องหน้าและคุณต้องการออกจากคำสั่งนั้น คุณสามารถกด Ctrl + C เพื่อหยุดคำสั่งได้

17. การใช้คำสั่ง yes เพื่อทำให้คำสั่งหรือสคริปต์แบบโต้ตอบเป็นแบบอัตโนมัติ

ถ้าคุณต้องทำงานกับคำสั่งหรือสคริปต์บางอย่างที่เกี่ยวข้องกับการโต้ตอบกับผู้ใช้ และคุณรู้ว่าคุณจะป้อน Y เพื่อตอบคำถามแต่ละโปรแกรม คุณสามารถทำให้กระบวนการนี้เป็นไปโดยอัตโนมัติด้วยคำสั่งใช่ สิ่งนี้ทำได้ดังนี้:

ใช่ | command_or_script

18. การล้างเนื้อหาของไฟล์โดยไม่ลบไฟล์เอง

หากคุณต้องการล้างเนื้อหาของไฟล์ข้อความโดยไม่ต้องลบไฟล์เอง คุณสามารถใช้คำสั่งต่อไปนี้:

>ชื่อไฟล์

19. ค้นหาว่าไดเร็กทอรีมีไฟล์ที่มีข้อความหรือไม่

บรรทัดคำสั่ง Linux รองรับหลายวิธีในการค้นหาข้อมูล อย่างไรก็ตาม หากคุณเพียงแค่ต้องการค้นหาว่ามีไฟล์ในไดเร็กทอรีที่มีข้อความอยู่หรือไม่ คุณสามารถใช้คำสั่งนี้:

Grep -Pri Search_Term path_to_directory
อย่างไรก็ตาม คำแนะนำของฉันสำหรับทุกคนที่กำลังมองหาการค้นหา Linux คือการใช้คำสั่ง find

20. เรียกความช่วยเหลือสำหรับคำสั่งใด ๆ

ฉันต้องการสรุปเนื้อหานี้ด้วย "เคล็ดลับ" ที่ชัดเจนมาก แต่ถึงกระนั้นก็ยังสำคัญมาก ซึ่งก็คือการเรียกใช้ความช่วยเหลือสำหรับเครื่องมือคำสั่งหรือบรรทัดคำสั่ง

เครื่องมือบรรทัดคำสั่งเกือบทั้งหมดมีข้อมูลช่วยเหลือที่อธิบายวิธีใช้งาน โดยปกติ การอ่านความช่วยเหลือจะช่วยให้คุณเข้าใจพื้นฐานของคำสั่ง คุณสามารถเรียกความช่วยเหลือดังนี้:

Command_tool --help

ฉันได้จงใจละทิ้งคำสั่งเช่น fuck ในเนื้อหานี้ เนื่องจากไม่ใช่เครื่องมือมาตรฐานที่พบได้ทุกที่อย่างแท้จริง สิ่งที่ฉันเพิ่งพูดถึงอาจเป็นประโยชน์เมื่อทำงานกับลีนุกซ์รุ่นต่างๆ และเชลล์บรรทัดคำสั่งเกือบทั้งหมดโดยไม่ต้องติดตั้งโปรแกรมใหม่

Screen เป็นโปรแกรมที่มีประโยชน์มาก หากคุณมักจะทำงานในคอนโซลโดยเชื่อมต่อกับเซิร์ฟเวอร์ผ่าน SSH ในกรณีนี้ หน้าจอให้คุณเก็บหน้าจอต่างๆ ไว้ในคอนโซลเดียว สลับไปมาระหว่างหน้าจอได้อย่างสะดวก

หน้าจอช่วยให้คุณยกเลิกการเชื่อมต่อจาก SSH ในขณะที่บันทึกงานที่ทำงานอยู่บนเซิร์ฟเวอร์ระยะไกล

ในการติดตั้งบน Ubuntu คุณต้องเรียกใช้คำสั่ง

$ sudo apt-get ติดตั้งหน้าจอ

หลังจากนั้นคุณต้องเรียกใช้หน้าจอ:

$ หน้าจอ

หลังจากเริ่มต้น คุณจะเห็นพรอมต์บรรทัดคำสั่งหรือ "หน้าจอต้อนรับ" โดยกด SPACE หรือ ENTER ซึ่งคุณจะถูกนำไปที่เชลล์ด้วย ในกรณีนี้ คำสั่งทั้งหมดจะเปิดใช้งานอยู่แล้ว "ภายใน" หน้าจอ

ในการออกจากหน้าจอ (ออก ไม่ใช่ถอดออก) ก็เพียงพอแล้วที่จะออกจากเชลล์ที่เปิดอยู่ทั้งหมด หรือกดคีย์ผสม Ctl-a \ แล้วตอบ "y" สำหรับคำถาม "คุณต้องการออกจริงๆ หรือไม่" ...

คุณสามารถยกเลิกการเชื่อมต่อจากหน้าจอปัจจุบันโดยไม่ต้องปิดหรือสิ้นสุดเซสชันโดยกด Ctrl-a d

การเชื่อมต่อหน้าจอ

หากเครื่องมีเซสชั่นหน้าจอที่กำลังทำงานอยู่แล้วและคุณต้องการเชื่อมต่อกับมัน ให้ทำ

  1. ถ้ามีเพียงหนึ่งเซสชัน แค่คำสั่งก็เพียงพอแล้ว: $ screen –x
  2. หากมีหลายเซสชัน คุณสามารถดูรายการหน้าจอที่กำลังรันได้โดยใช้คำสั่ง screen -ls: $ screen -ls มีหน้าจอบน: 2762.pts-0.debian (แยกออก) 2743.pts-0.debian ( แยกออก) 2 ซ็อกเก็ตใน / var / run / screen / S-diesel

    เลือกหน้าจอที่เราต้องการและแนบไปกับมัน:

    หน้าจอ -x 2762.pts-0.debian

    โดยค่าเริ่มต้นชื่อเซสชันไม่ได้ให้ข้อมูลมาก - เพียงแค่ประมวลผลหมายเลข หากคุณต้องการเริ่มและใช้เซสชันหน้าจอหลายเซสชันสำหรับงานที่แตกต่างกัน คุณสามารถสร้างชื่อที่มีเหตุผลมากขึ้นได้ เราตั้งชื่อแล้วเริ่มหน้าจอใหม่ดังนี้:

    หน้าจอ $ -S "งาน1"

    โดยที่ job1 คือชื่อของ session ที่เราตั้งชื่อไว้ ตอนนี้ใน -ls เราจะเห็นชัดเจนมากขึ้น:

    $ screen -ls มีหน้าจออยู่: 2762.pts-0.debian (แยกออก) 2795.job1 (แยกออก) 2743.pts-0.debian (แยกออก) 3 ซ็อกเก็ตใน / var / run / screen / S-diesel

    และเราสามารถเชื่อมต่อกับเซสชัน job1 โดยเพียงแค่ระบุชื่อ:

    $ screen -x job1

สลับไปมาระหว่างหน้าจอ

ตามที่คุณเข้าใจแล้ว เซสชันจะถูกบันทึกแม้ในขณะที่คุณไม่ได้เชื่อมต่อกับเซิร์ฟเวอร์ และทุกอย่างที่ทำงานอยู่ในนั้นจะยังคงทำงานต่อไป อย่างไรก็ตาม ความเป็นไปได้ของหน้าจอไม่ได้จำกัดอยู่แค่นี้ บางครั้ง เมื่อทำงานผ่าน ssh ฉันต้องการให้เทอร์มินัลหลายเครื่องเปิดพร้อมกัน ในขณะที่การเชื่อมต่อหลายครั้งนั้นค่อนข้างแย่ โดยเฉพาะถ้าคุณต้องการเชื่อมต่อผ่านเซิร์ฟเวอร์หลายเครื่อง หน้าจอสามารถช่วยได้เช่นกัน เพียงกด Ctrl - a c แล้วเชลล์อื่นจะเปิดขึ้น คุณสามารถย้ายระหว่างเชลล์ที่เปิดอยู่ได้โดยใช้ Ctrl - a<Цифра>, ที่ไหน<Цифра>- จำนวน open shell เริ่มต้นจากศูนย์หรือ Ctrl - a n / Ctrl - a p - เดินหน้าถอยหลัง คุณสามารถดูรายการ "windows" ที่เปิดอยู่ - คอนโซล (และเปลี่ยนไปใช้อันที่คุณต้องการ) โดยกด Ctrl - a "; หากต้องการตั้งชื่อปกติ (ไม่ใช่แค่ "bash" ที่น่าเบื่อ) สำหรับเธรดหน้าต่าง ให้ไปที่ชื่อนั้นแล้วกด Ctrl - a A (แล้วแต่กรณี) จากนั้นป้อนชื่อที่พรอมต์ที่ปรากฏขึ้น

การตรวจสอบการดำเนินการคำสั่ง

หากเปิดหลายหน้าต่าง การตรวจสอบกิจกรรมในหน้าต่างใดหน้าต่างหนึ่งก็อาจเป็นประโยชน์ ตัวอย่างเช่น หากคุณรันคำสั่ง "long running" และคุณสงสัยว่าเมื่อไรมันจะเสร็จ ไปที่หน้าต่างด้วยคำสั่งนี้ กด Ctrl - a m เราเห็นคำจารึกดังนี้: "Window 0 (bash) กำลังถูกตรวจสอบสำหรับกิจกรรมทั้งหมด" เมื่อบางอย่างในหน้าต่างเปลี่ยนไป หน้าจอจะส่งเสียงบี๊บ และสัญลักษณ์ "@" จะปรากฏขึ้นหลังหมายเลขในรายการหน้าต่าง

การเลื่อนหน้าจอในหน้าจอ

หากต้องการดูผลลัพธ์ของคำสั่งที่อยู่เหนือขอบหน้าต่าง คุณต้องกด Ctrl-a [

การดำเนินการนี้จะเปลี่ยนหน้าจอเป็นโหมดคัดลอก หากต้องการออกจากโหมดนี้ ให้กด Esc

การกำหนดค่าหน้าจอ

หน้าจอได้รับการกำหนดค่าด้วยไฟล์ ~ / .screenrc ในโฮมไดเร็กทอรีของคุณ ตัวอย่างเช่น คุณสามารถเขียนที่นั่น:

คำบรรยายเสมอ "% (= 45)% (+ bw) หน้าจอ:% n |% h% =% t% c" hardstatus alwayslastline "% -Lw% (= BW)% 50>% n% f *% t% ( -)% + ต่ำ%<"

ซึ่งจะแสดงรายการหน้าต่างที่เปิดอยู่ตลอด และข้อมูลที่เป็นประโยชน์อื่นๆ ที่ด้านล่างของหน้าจอ

นอกจากนี้ เมื่อหน้าจอเริ่มทำงาน ตามค่าเริ่มต้น คำสั่งจากไฟล์ / etc / screenrc และไฟล์ .screenrc จากโฮมไดเร็กทอรีของผู้ใช้จะถูกดำเนินการ คำสั่งต่างๆ ที่ใช้ในไฟล์การกำหนดค่าได้อธิบายไว้ในตารางด้านบนในช่อง "คำสั่งข้อความ" ด้านล่างนี้เป็นตัวอย่างของการกำหนดค่าหน้าจอจากไฟล์ .screenrc:

# ปิดใช้งานเอาต์พุตข้อมูลใบอนุญาตเมื่อเริ่มต้น หน้าจอเริ่มต้น_ปิดข้อความ # เปิดเชลล์สำหรับหน้าจอ chdir ทำงาน -t ทำงาน # เปิดเชลล์สำหรับจัดการการกำหนดค่า chdir / หน้าจออื่น ๆ -t การกำหนดค่า # เปิดเชลล์เพื่อดูบันทึก chdir / var / หน้าจอบันทึก -t Logs # เลือกหน้าต่างแรกหลังจากเริ่มเลือก 0

ไฟล์คอนฟิกูเรชันที่ค่อนข้างง่ายนี้เปิดสามหน้าต่างชื่อ Work, Configuration, Logs ตามลำดับ ในไดเร็กทอรีส่วนบุคคลของผู้ใช้ ในไดเร็กทอรี / etc และ / var / log หลังจากเปิดตัว หน้าจอจะแสดงหน้าต่างแรกที่ชื่อว่า Work รูปที่ 1 แสดงตัวอย่างการทำงานของหน้าจอกับไฟล์การกำหนดค่านี้

เสร็จสิ้นหน้าจอ

หากเซสชันหน้าจอไม่ตอบสนองด้วยเหตุผลบางประการ คุณสามารถยุติเซสชันได้ ในการดำเนินการนี้ คุณต้องเชื่อมต่อกับเซสชันที่ต้องการ จากนั้นกด Ctrl - a แล้วป้อนคำสั่ง ": quit"

หน้าจอจะยุติเซสชั่นนี้โดยการบังคับปิดหน้าต่างทั้งหมด

การทำงานกับหน้าจอ

หนึ่งในคุณสมบัติหลักของ Screen คือการสร้างและจัดการหน้าต่างคอนโซลหลายตัว หรือแอปพลิเคชั่นข้อความ ในหน้าต่างเทอร์มินัลเดียว สามารถแสดงหน้าต่างเทอร์มินัลได้ทีละหน้าต่างเท่านั้น (อาจมีได้หลายหน้าต่างก็ต่อเมื่อแบ่งหน้าจอเทอร์มินัลออกเป็นส่วนๆ) หน้าจอช่วยให้คุณสลับระหว่างหน้าต่างต่างๆ ได้อย่างรวดเร็ว บันทึกและย้อนกลับไปยังเซสชันข้อความในภายหลัง และเปิดให้ผู้ใช้รายอื่นเข้าถึงได้ นอกจากนี้ Screen ยังช่วยให้คุณตั้งชื่อหน้าต่าง ติดตามกิจกรรมในแต่ละหน้าต่าง และแชร์เนื้อหาของหน้าต่างโดยใช้การคัดลอกและวาง นอกจากนี้ Screen ยังช่วยให้คุณทำการแมปคีย์ใหม่ จัดการการตั้งค่าการจำลองเทอร์มินัล และงานกล่องข้อความขนาดเล็กอื่นๆ อีกมากมายที่อาจไม่จำเป็นเสมอไป แต่สามารถช่วยดำเนินการดูแลระบบในเวลาที่กำหนดได้

รูปภาพแสดงหน้าจอที่มีหน้าต่างชื่อสามหน้าต่าง (งาน, การกำหนดค่า, บันทึก) และเปิดด้วยโปรแกรมแก้ไขข้อความ Vim พร้อมตัวอย่างไฟล์การกำหนดค่าหน้าจอ

เริ่มแรก

หน้าจอสามารถเริ่มได้ด้วยบรรทัดคำสั่งของหน้าจอ แต่ก่อนอื่น ให้ตรวจสอบว่ามีการติดตั้งหน้าจอบนระบบของคุณด้วยคำสั่งต่อไปนี้หรือไม่:

$ หน้าจอใด / usr / bin / หน้าจอ

หากคำสั่งส่งคืนเส้นทางดังในตัวอย่างข้างต้น คุณสามารถเริ่มใช้งานได้ทันที ไม่เช่นนั้น จะสามารถติดตั้งหน้าจอได้ด้วยเครื่องมือสนับสนุนแพ็คเกจมาตรฐานของระบบปฏิบัติการของคุณ หรือดาวน์โหลดจากเว็บไซต์ทางการ http://www.gnu org/software/screen/.

ตอนนี้เราสามารถเริ่ม Screen ได้โดยพิมพ์:

$ หน้าจอ

หลังจากเปิดตัว ข้อมูลเกี่ยวกับรุ่นและใบอนุญาตอาจปรากฏขึ้นบนหน้าจอ (เมื่อพิจารณาการกำหนดค่า เราจะพิจารณาว่าคุณจะยกเลิกการแสดงข้อความนี้ได้อย่างไร) และในกรณีนี้จำเป็นต้องกด "Space" หรือ "Enter" คีย์ หลังจากนั้นเราพบว่าตัวเองอยู่ในเครื่องห่อข้อความที่ดูเหมือนปกติ ควรสังเกตว่าในบรรทัดคำสั่ง คุณสามารถระบุคำสั่งเพื่อเริ่มแอปพลิเคชันเฉพาะได้ทันที ตัวอย่างเช่น หากต้องการเริ่มต้นที่ด้านบน คุณต้องพิมพ์:

$ หน้าจอด้านบน

ตกลง ตอนนี้ Screen กำลังทำงาน แต่ในแวบแรกไม่มีการเปลี่ยนแปลงภายนอก - เราสามารถทำงานในเชลล์ที่ทำงานอยู่หรือใช้ด้านบนได้ เคล็ดลับคือในขณะที่ Screen กำลังทำงานอยู่จะส่งการกดแป้นทั้งหมดไปยังแอปพลิเคชันโดยตรง แต่ (โดยค่าเริ่มต้น) ปล่อยให้คำสั่งควบคุมสำหรับตัวคุณเอง โดยเริ่มด้วยการกดแป้น Ctrl + a

คีย์ผสมควบคุมนี้สามารถเปลี่ยนแปลงได้ผ่านไฟล์การกำหนดค่า (ซึ่งเราจะดูด้านล่าง) แต่ในตัวอย่างทั้งหมด จะพิจารณาเฉพาะการกำหนดค่าเริ่มต้นเท่านั้น ดังนั้น คำสั่งแป้นพิมพ์หน้าจอทั้งหมดประกอบด้วยแป้นพิมพ์ลัดสองแป้น - ตัวควบคุม Ctrl + a และแป้นเอง หรือแป้นพิมพ์ลัดแทนคำสั่ง เกือบทุกคำสั่งยังมีข้อความคู่กัน ซึ่งสามารถดำเนินการผ่านไฟล์การกำหนดค่าหรือโดยการเรียกใช้คำสั่งต่อไปนี้:

ในกรณีนี้ เราต้องใช้แป้นพิมพ์ลัดสองปุ่ม ขั้นแรกให้กด Ctrl + a จากนั้นกดแป้นโคลอน ในเวลาเดียวกัน หน้าจอจะแสดงพรอมต์ทวิภาคที่ด้านล่างของหน้าจอ คำสั่งเดียวกับที่เราเพิ่งรันด้วยแป้นพิมพ์ลัดสามารถดำเนินการผ่านไฟล์ปรับแต่งได้โดยใช้คำสั่งข้อความโคลอน ซึ่งอาจจำเป็นต้องใช้เพื่อแสดงพรอมต์คำสั่งเมื่อเริ่มต้น หรือกำหนดแป้นพิมพ์ลัดที่เรียกใช้พรอมต์นี้ใหม่ . ด้านล่างนี้ ตามตัวอย่างด้านบน สำหรับแต่ละคีย์ผสม ฉันจะเขียนคำหลักที่เกี่ยวข้องซึ่งสามารถใช้ในไฟล์การกำหนดค่า หรือป้อนด้วย Ctrl + a และ :

คำถามทั่วไปอาจเกิดขึ้นที่นี่ - จะเกิดอะไรขึ้นหากแอปพลิเคชันต้องการส่ง Ctrl + คีย์ผสมโดยตรง ซึ่งถูกใช้ในหน้าจอเป็นเซอร์วิสแล้ว ตัวอย่างเช่น ไลบรารีการแก้ไขบรรทัดคำสั่ง readline จะใช้ชุดค่าผสมเดียวกันเพื่อข้ามไปยังจุดเริ่มต้นของบรรทัด สำหรับกรณีนี้ Screen ให้คำสั่งต่อไปนี้:

การจัดการหน้าต่าง

ในส่วนที่แล้ว เราได้เรียนรู้วิธีเปิดหน้าจอและเรียนรู้เทมเพลตพื้นฐานสำหรับคำสั่งแป้นพิมพ์ทั้งหมด ได้เวลาคิดออกคำสั่งสำหรับจัดการหน้าต่าง เมื่อหน้าจอเริ่มทำงาน มันจะสร้างหน้าต่างเดียว (เว้นแต่การกำหนดค่าจะระบุการสร้างหลายหน้าต่างพร้อมกัน) และกำหนดเป็นหมายเลข 0 หน้าต่างใหม่ที่มีเชลล์คำสั่งสามารถสร้างได้โดยใช้คำสั่งด้านล่าง:

คีย์ผสม คำสั่งข้อความ คำอธิบาย
Ctrl + หน้าจอ สร้างหน้าต่างใหม่

ซึ่งจะทำให้ Screen สร้างหน้าต่างใหม่และกำหนดหมายเลขที่ต่อเนื่องกัน ในกรณีของเราหน้าต่างใหม่จะเป็นหน้าต่าง 1

ขณะนี้ เรามีหน้าต่างข้อความสองหน้าต่าง ซึ่งหน้าต่างใหม่ที่มีหมายเลข 1 เป็นหน้าต่างปัจจุบัน และหน้าต่างที่มีหมายเลข 0 อยู่ในพื้นหลัง แต่ควรสังเกตว่าแม้ว่าหน้าต่างจะอยู่ในพื้นหลัง แต่ก็สามารถรับรู้ผลลัพธ์ของแอปพลิเคชันที่ทำงานอยู่ราวกับว่าเป็นหน้าต่างปัจจุบัน ตัวอย่างเช่น เราสามารถเริ่มกระบวนการในหน้าต่าง 0 ที่ให้ข้อมูลเพิ่มเติมในช่วงเวลาปกติ (เช่น นี่อาจเป็นคำสั่ง tail -f) แล้วสลับไปที่หน้าต่าง 1 เพื่อทำงานในโปรแกรมแก้ไขข้อความ หลังจากนั้นไม่นาน หากเราต้องการดูว่าเกิดอะไรขึ้นในหน้าต่าง 0 เราสามารถสลับไปที่หน้าต่างนี้และดูผลลัพธ์ทั้งหมดของกระบวนการที่ทำงานอยู่ที่นั่น จากนั้นคุณสามารถเปลี่ยนกลับไปที่หน้าต่างแก้ไขได้

ในย่อหน้าก่อนหน้านี้ ฉันอธิบายตัวอย่างด้วยการสลับไปมาระหว่างหน้าต่าง แต่ฉันยังไม่ได้บอกว่าคำสั่งใดที่ใช้สำหรับสิ่งนี้ มาดูคำสั่งที่ใช้บ่อยที่สุดสำหรับจัดการ windows กันดีกว่า:

คีย์ผสม คำสั่งข้อความ คำอธิบาย
Ctrl + w หน้าต่าง แสดงรายการตัวเลขและชื่อของหน้าต่างทั้งหมดในบรรทัดล่างสุดของหน้าจอ
Ctrl + « รายชื่อหน้าต่าง แสดงรายการแบบโต้ตอบของตัวเลขและชื่อของหน้าต่างทั้งหมดซึ่งคุณสามารถเลือกหน้าต่างที่จะสลับได้
Ctrl + หมายเลขหน้าต่าง เลือก การเลือกหน้าต่างตามหมายเลข ตัวอย่างเช่น คำสั่ง Ctrl + a และ 0 ทำให้หน้าต่างปัจจุบันมีตัวเลข0
Ctrl + a ต่อไป สลับไปที่หน้าต่างถัดไปตามลำดับ หรือไปที่หน้าต่างแรกหากเราอยู่ในหน้าต่างสุดท้าย
Ctrl + พี ก่อนหน้า สลับไปที่หน้าต่างก่อนหน้าตามลำดับหรือไปที่หน้าต่างสุดท้ายหากเราอยู่ในหน้าต่างแรก
Ctrl + เลือก แสดงข้อความแจ้งให้ป้อนหมายเลขหน้าต่างเพื่อเปลี่ยน
Ctrl + Ctrl + อื่น ๆ สลับไปยังหน้าต่างที่ใช้ล่าสุด
Ctrl + นู๋ ตัวเลข แสดงหมายเลขและชื่อของหน้าต่างปัจจุบัน
Ctrl + อา ชื่อ ตั้งชื่อของหน้าต่างปัจจุบัน
Ctrl + k ฆ่า บังคับปิดหน้าต่าง เช่น ปิดโปรแกรมไม่ได้ตามปกติ

เมื่อหน้าต่างบานใดบานหนึ่งปิดลง ตัวเลขของบานหน้าต่างอื่น ๆ จะไม่เปลี่ยนแปลง และ "รู" จะปรากฏในการนับเลขซึ่งสามารถเติมหน้าต่างใหม่ได้ในภายหลัง แม้ว่า Screen จะมีคำสั่งให้เปลี่ยนหมายเลขหน้าต่างแต่ก็ไม่นำมาพิจารณาในที่นี้ และยังคงอยู่เพื่อการศึกษาอิสระ หากปิดหน้าต่างทั้งหมด หน้าจอจะออกและแสดงข้อความ:

ทำงานกับข้อความ

ด้านบน เราได้เรียนรู้วิธีการเปิดหน้าจอและจัดการหน้าต่าง - สร้าง สลับจากหน้าต่างหนึ่งไปอีกหน้าต่างหนึ่ง กำหนดชื่อ และปิดหน้าต่างเหล่านั้น ตอนนี้ มาดูการทำงานกับเนื้อหาของหน้าต่างกัน - การคัดลอกและวางเนื้อหาข้อความของหน้าต่างหนึ่งไปยังอีกหน้าต่างหนึ่ง การตรวจสอบหน้าต่าง การบันทึกสำเนาข้อความของหน้าจอ และงานอื่นๆ ที่คล้ายคลึงกัน:

คีย์ผสม คำสั่งข้อความ คำอธิบาย
Ctrl + เอ็ม เฝ้าสังเกต เปิด / ปิดการตรวจสอบกิจกรรมสำหรับหน้าต่างปัจจุบัน เมื่อเปิดใช้งานการตรวจสอบและข้อความถูกส่งออกในหน้าต่างในโหมดพื้นหลัง ข้อมูลเกี่ยวกับกิจกรรมจะแสดงในสายบริการ
ความเงียบ เปิด / ปิดการตรวจสอบการไม่ใช้งานสำหรับหน้าต่างปัจจุบัน เมื่อเปิดใช้งานการตรวจสอบและไม่มีข้อความแสดงออกมาในหน้าต่างในโหมดพื้นหลังในช่วงระยะเวลาหนึ่ง ข้อมูลเกี่ยวกับการไม่ใช้งานจะแสดงในสายบริการ
Ctrl + ชม ฉบับพิมพ์ เขียนรูปภาพข้อความของหน้าต่างปัจจุบันไปที่ hardcopy.window_number ในไดเร็กทอรีหน้าจอเริ่มต้น
Ctrl + ชม บันทึก เปิด / ปิดการติดตามข้อความของหน้าต่างปัจจุบันไปยังไฟล์ screenlog.window_number ในไดเร็กทอรี Sccreen โดยค่าเริ่มต้น
Ctrl + [ สำเนา เข้าสู่โหมดคัดลอก คำสั่งเพิ่มเติมสำหรับโหมดนี้อธิบายไว้ด้านล่าง
Ctrl + ] แปะ วางข้อความจากการลงทะเบียนเริ่มต้นลงในหน้าต่าง (ซึ่งก่อนหน้านี้ถูกคัดลอกโดยใช้คำสั่งด้านบน)

ในโหมดคัดลอก Screen จะเปิดโปรแกรมแก้ไขข้อความที่คล้ายกับโปรแกรมแก้ไข Vi คำสั่งแก้ไขที่ใช้บ่อยที่สุดคือ:

  • ปุ่มเคอร์เซอร์เลื่อนเคอร์เซอร์ไปไว้เหนือบัฟเฟอร์หน้าจอ
  • แถบพื้นที่ทำเครื่องหมายจุดเริ่มต้นและจุดสิ้นสุดของภูมิภาคที่จะคัดลอก เมื่อกด Space ครั้งที่สอง ข้อความที่ทำเครื่องหมายไว้จะถูกคัดลอกไปยังตัวพิมพ์เริ่มต้น และหน้าจอจะออกจากโหมดคัดลอก

หลายหน้าต่างบนหน้าจอ

ตามค่าเริ่มต้น หน้าจอจะมองเห็นหน้าต่างตรรกะเพียงหน้าต่างเดียวบนหน้าจอ แต่หากต้องการ จะมีตัวเลือกเพิ่มเติมเพื่อแยกหน้าจอเทอร์มินัลออกเป็นพื้นที่แนวนอน ดังนั้นจึงเป็นไปได้ที่จะแสดงหลายหน้าต่างพร้อมกันบนหน้าจอเทอร์มินัลเดียว มาดูคำสั่งสำหรับการทำงานกับพื้นที่หน้าจอกันดีกว่า:

รูปที่ 2 แสดงหน้าจอที่มีหน้าต่างสามชื่อ (Work, Configuration, Logs) และหน้าจอแบ่งออกเป็นสองส่วน หน้าต่างงานเปิดขึ้นในภูมิภาคด้านบนด้วยโปรแกรมแก้ไขข้อความ Vim และไฟล์การกำหนดค่าหน้าจอตัวอย่าง ในพื้นที่ด้านล่าง หน้าต่างการกำหนดค่าพร้อมส่วนของไฟล์การกำหนดค่าทั่วไป / etc / screenrc

เซสชันคอนโซล

สุดท้าย เราจะมาดูคุณสมบัติยอดนิยมอย่างหนึ่งของ Screen ลองนึกภาพสถานการณ์ต่อไปนี้: ผู้ดูแลระบบที่บ้าน, ล็อกอินเข้าสู่เซิร์ฟเวอร์ระยะไกล, เปิดหน้าต่างหลายบาน, เริ่มงานที่จำเป็น, จากนั้นปิดการเชื่อมต่อและไดรฟ์ไปยัง งาน. ในที่ทำงาน เขาลงชื่อเข้าใช้เซิร์ฟเวอร์เดิมอีกครั้งและกู้คืนหน้าต่างที่เปิดอยู่ที่บ้านด้วยผลลัพธ์ของงานที่เสร็จสมบูรณ์ ฟังดูแปลก ๆ เล็กน้อย? ไม่ว่าในกรณีใด! เซสชันคอนโซลหน้าจอได้รับการออกแบบมาเพื่อให้งานนี้สำเร็จ ช่วยให้คุณสามารถยกเลิกการเชื่อมต่อเซสชันหน้าจอปัจจุบันกับหน้าต่างทั้งหมดและแอปพลิเคชันที่ทำงานอยู่จากเทอร์มินัลแล้วเข้าร่วมใหม่ได้ทุกเมื่อ ในเวลาเดียวกัน แอปพลิเคชันทั้งหมดที่ทำงานภายใต้หน้าจอจะยังคงทำงานและใช้หน้าต่างของแอปพลิเคชันนั้นเพื่อแสดงข้อมูล นอกจากนี้ อาจมีเซสชันคอนโซลหลายเซสชัน แต่ในบทความนี้ เราจะไม่พูดถึงรายละเอียดนี้

พิจารณาคำสั่งเพื่อยกเลิกการเชื่อมต่อคอนโซลเซสชันจากเทอร์มินัล:

คีย์ผสม คำสั่งข้อความ คำอธิบาย
Ctrl + d ถอด ถอดคอนโซลเซสชันและปล่อยให้ทำงานในพื้นหลัง ในเวลาเดียวกัน Screen เขียนว่า:
Ctrl + ดีดี pow_detach ถอดคอนโซลเซสชัน ปล่อยให้ทำงานในพื้นหลัง และส่งสัญญาณ HANGUP ไปยังกระบวนการหน้าจอหลัก เมื่อคุณเปิดหน้าจอจากเทอร์มินัลระยะไกล นั่นหมายถึงการตัดการเชื่อมต่อหน้าจอแล้วปิดการเชื่อมต่อ ในเวลาเดียวกัน Screen เขียนว่า:
Ctrl + z ระงับ ถอดคอนโซลเซสชันและปล่อยให้ทำงานเป็นกระบวนการพื้นหลังในพาเรนต์เชลล์ ในกรณีนี้ สามารถใช้คำสั่งมาตรฐานสำหรับจัดการกระบวนการเบื้องหลังของ command shell นอกเหนือจากคำสั่งที่อธิบายไว้ด้านล่างเพื่อกู้คืนเซสชัน
Ctrl + Ctrl + ล้มเลิก ปิดหน้าต่างเซสชันทั้งหมดและออกจากหน้าจอ โปรดทราบว่า การแจกแจงจำนวนมากแทนที่แป้นพิมพ์ลัดสำหรับคำสั่งนี้ แต่คำสั่ง text ก็ยังใช้ได้

ในการเข้าร่วมกลับไปยังเซสชันที่ถูกตัดการเชื่อมต่อ หรือดูรายการของเซสชันที่พร้อมใช้งาน คุณต้องเรียกใช้ Screen ด้วยปุ่มใดปุ่มหนึ่งต่อไปนี้:

อะไรต่อไป?

หน้าจอมีความเป็นไปได้ที่แตกต่างกันมากมาย และแทบจะเป็นไปไม่ได้เลยที่จะอธิบายสิ่งเหล่านี้ทั้งหมดในบทความเดียว ดังนั้นฟังก์ชันการทำงานบางอย่างจึงถูกทิ้งไว้เบื้องหลัง ต่อไปนี้คือคุณสมบัติ/การตั้งค่าบางอย่างของหน้าจอที่ไม่ได้กล่าวถึงข้างต้นและยังคงอยู่เพื่อการศึกษาโดยอิสระ:

  • คำสั่งการกำหนดค่าการจำลองเทอร์มินัล
  • เซสชันคอนโซลผู้ใช้หลายคน
  • การกำหนดหรือกำหนดแป้นพิมพ์ลัดใหม่ให้กับคำสั่ง
  • ตัวเลือกตัวช่วยคำสั่งข้อความ ตัวอย่างเช่น อ็อพชัน -t ของคำสั่ง screen ซึ่งใช้ในไฟล์คอนฟิกูเรชันตัวอย่าง
  • คำสั่งที่ไม่ค่อยได้ใช้ เช่น คำสั่งที่คุณสามารถใช้ได้เมื่อกำหนดค่าการเริ่มต้นหน้าจอ คือ เสียงก้องและโหมดสลีป
  • ตัวแปรสภาพแวดล้อมที่เป็นประโยชน์เมื่อปรับแต่งหน้าจอ
  • ปุ่มเปิดหน้าจอเพิ่มเติม;

ทางเลือกของหน้าจอ

Screen เป็นโปรแกรมที่มีประวัติอันยาวนานควรสังเกตว่ารุ่นแรกปรากฏในปี 1987 ในขณะนี้ แทบไม่มีการเพิ่มคุณสมบัติใหม่ให้กับหน้าจอ (สาเหตุหนึ่งอาจเป็นเพราะคุณสมบัติจำนวนมากในขณะนี้) และโดยพื้นฐานแล้ว จะทำการแก้ไขจุดบกพร่องเท่านั้น หากมีคนไม่ชอบ "วัยชรา" ของหน้าจอหรือไม่ต้องการคุณสมบัติจำนวนมากคุณสามารถเปลี่ยนไปใช้โปรแกรมใดโปรแกรมหนึ่งต่อไปนี้:

  • dtach () - ความสำคัญหลักในการพัฒนาโปรแกรมนี้อยู่ที่ความกะทัดรัด เมื่อเปรียบเทียบกับ Screen จะสนับสนุนความสามารถในการทำงานกับเซสชันคอนโซล แต่ไม่มีความสามารถอื่นๆ ของหน้าจอ
  • SplitVT (http://www.devolution.com/~slouken/projects/splitvt/) - ให้คุณแบ่งหน้าจอเทอร์มินัลออกเป็นสองส่วนและทำงานกับสองเชลล์พร้อมกัน
  • Tmux () - Tmux ใช้โมเดลไคลเอนต์ - เซิร์ฟเวอร์เพื่อทำงานกับเซสชันคอนโซล
  • Twin (http://linuz.sns.it/~max/twin/) เป็นความพยายามที่จะสร้างอินเทอร์เฟซหน้าต่างข้อความที่คล้ายกับส่วนต่อประสานกราฟิก

161 เจน โด

ฉันเข้าใจว่าขึ้น / ลงจะให้ประวัติคำสั่งแก่คุณ แต่คุณจะดูผลลัพธ์ที่ผ่านมาโดยการเลื่อนขึ้นและลงอย่างไร

ฉันเคยใช้ Shift + Page Up / Page Down, Alt + Shift + Up / Down และ Page Up / Page Down แต่ดูเหมือนจะไม่ทำงาน

นี่คือกล่อง Redhat Linux

linux terminal rhel

14 ตอบกลับ

SHIFT + เลื่อนหน้าขึ้น และ SHIFT + เลื่อนหน้าลง หากไม่ได้ผล ให้ลองทำดังนี้

ไปที่โปรแกรมเทอร์มินัลของคุณและตรวจสอบให้แน่ใจว่า แก้ไข / กำหนดลักษณะโปรไฟล์ / เลื่อน / เลื่อนกลับ / ไม่ จำกัด
ตรวจสอบแล้ว

ตำแหน่งที่แน่นอนของตัวเลือกนี้อาจแตกต่างออกไป แต่เราเห็นว่าคุณกำลังใช้ Redhat

SHIFT + Page Up และ SHIFT + Page Down เป็นคีย์ที่ถูกต้องในการทำงานในคอนโซลเสมือน แต่คอนโซล vmware ไม่มีการตั้งค่าเทอร์มินัลเหล่านี้ คอนโซลเสมือนมีขนาดการเลื่อนกลับคงที่ ดูเหมือนว่าจะถูกจำกัดด้วยขนาดหน่วยความจำวิดีโอตามเอกสารประกอบการเลื่อนคอนโซลเสมือนของ Linux

ทางเลือกสำหรับการประมวลผล LINE-LINE

Ctrl + Shift + ลูกศรขึ้นหรือลูกศรลง

ต่างจาก Shift + Page Up หรือ Page Down ซึ่งเลื่อนทั้งหน้า วิธีนี้จะช่วยให้การเลื่อนเชิงเส้นราบรื่นขึ้น ซึ่งเป็นสิ่งที่ฉันกำลังมองหา

อีกทางเลือกหนึ่งที่อาจติดตั้งอยู่ในระบบของคุณคือการใช้หน้าจอ GNU:

# หน้าจอเริ่มต้นนี้ซึ่งเพิ่มการจัดการหน้าต่างพื้นฐานในหน้าจอเทอร์มินัล # สิ่งนี้เริ่มโหมดคัดลอกที่คุณสามารถใช้เพื่อเลื่อน [# ตอนนี้ใช้ลูกศรเพื่อเลื่อน # หากต้องการออกจากโหมดคัดลอก ให้ทำ

ดูที่หน้าจอ man สำหรับตัวเลือกที่มีประโยชน์มากขึ้น (หลายหน้าต่าง, ...) ...

ดูเหมือนไม่ง่ายเลยที่จะทำเช่นนี้: Arch Linux Wiki ไม่ได้แสดงรายการวิธีการทำสิ่งนี้บนคอนโซล (แม้ว่าจะทำได้ง่ายบนเทอร์มินัลเสมือน)

Ctrl - b ตามด้วย [ จากนั้นคุณสามารถใช้ปุ่มนำทางปกติเพื่อเลื่อน (เช่น ลูกศรขึ้น หรือ PgDn) กด q เพื่อออกจากโหมดเลื่อน