วิธีการเลือกสำรวจประวัติคำสั่ง Bash บนเทอร์มินัล Linux [ซ้ำกัน]


9

ทุกคนรู้ (หรือควรรู้!) ว่าในเทอร์มินัลจะใช้ปุ่มลูกศรขึ้นและลงเพื่อเลื่อนดูประวัติคำสั่งที่ใช้

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

ฉันรู้ว่าฉันสามารถใช้historyเพื่อมีรายการคำสั่งที่ใช้ก่อนหน้านี้และ!nเพื่อดำเนินการคำสั่งnอีกครั้งในรายการที่กล่าว แต่เมื่อประวัติมีขนาดใหญ่ขึ้น

สิ่งที่ดีที่สุดคือการมีบางอย่างที่จะให้ฉันใช้ปุ่มลัดเพื่อเลื่อนดูประวัติ แต่ระหว่างอินสแตนซ์ที่มีสิ่งที่ฉันพิมพ์บนบรรทัดคำสั่งแล้ว ดังนั้นในตัวอย่างของฉันหลังจากที่มีการพิมพ์iwconfigใช้ปุ่มบางอย่าง (อาจจะ PgUp และ PgDown?) เพียงเพื่อนำทางผ่านรายการที่เริ่มต้นด้วยการiwconfig

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

คำตอบ:


12

คุณสามารถค้นหาประวัติโดยใช้Ctrl+ Rจากนั้นพิมพ์สตริงการค้นหา (เช่นiwเพื่อค้นหาiwconfig) จากนั้นคุณยังสามารถเลื่อนดูประวัติที่จุดนั้นด้วยปุ่มลูกศรขึ้นหรือลงหรือกดCtrl+ Rอีกครั้งเพื่อค้นหาเหตุการณ์ที่เกิดขึ้นก่อนหน้า


ฉันไม่แน่ใจว่าจะเข้าใจดีร้อนมันทำงานได้ ถ้าฉันกด Ctrl + R และพิมพ์iwconfigมันจะแสดงตัวอย่างที่มีอยู่ (ไม่จำเป็นต้องเป็นรุ่นล่าสุด) แต่ถ้าฉันใช้ปุ่มลูกศรมันจะสำรวจรายการทั้งหมดไม่ใช่เฉพาะที่มีสตริง ฉันคิดว่ามันเลือกจุดที่เจาะจงในประวัติศาสตร์เพื่อเริ่มต้นการนำทางที่ (แทนที่จะเริ่มจากด้านล่างเช่นปุ่มขึ้นด้านบน) แต่นอกเหนือจากนั้นการนำทางก็เหมือนเดิมเสมอ ฉันพลาดอะไรไปหรือเปล่า?
Sekhemty

ฉันคิดว่ามันไม่สำคัญเลย แต่ในกรณีนี้ฉันใช้konsoleเทอร์มินัลอีมูเลเตอร์
Sekhemty

ขออภัยฉันได้อัปเดตคำตอบเกี่ยวกับวิธีค้นหาการแข่งขันก่อนหน้าแล้ว
Stefan Seidel

5

หลังจากฝึกฝนมาเล็กน้อยฉันก็พบวิธีใช้วิธีแก้ปัญหา

ฉันจับคู่ไวยากรณ์ที่ถูกต้องเพื่อพิมพ์รายการที่กรองแล้วฉันใช้มันhistory | grep iwconfig(มันไม่ยากเลย) ด้วยเอาต์พุตที่ฉันสามารถใช้!nกับรายการตัวกรองที่อ่านได้ง่าย


3
เคล็ดลับเพิ่มเติม: !n:pใช้ คำสั่งนี้จะพิมพ์คำสั่งเก่าโดยไม่เรียกใช้งานและทำให้คำสั่งนั้นกลับมาในประวัติศาสตร์ของคุณ จากนั้นไปที่ลูกศรขึ้นหนึ่งจังหวะและคุณสามารถแก้ไขได้ มีเทคนิคโง่ ๆ มากมายเช่นนี้: ss64.com/bash/history.html
Wandering Logic

3

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


2

กด "ctrl + r" จากนั้นป้อนสตริงการค้นหา

หากไม่ใช่คนที่คุณกำลังมองหาแล้วอีกครั้ง "ctrl + r"

หากพบให้กด Enter เพื่อดำเนินการหรือกดปุ่มลูกศรขวา -> เพื่อแก้ไขก่อนใช้งาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.