ฉันจะเพิ่มคำสั่งในประวัติ Bash โดยไม่ต้องดำเนินการได้อย่างไร


32

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

คำตอบ:


39

history -s คำสั่ง


ไม่เคยรู้เกี่ยวกับคุณสมบัตินั้น ฉันไม่สามารถคิดถึงการใช้งานได้ทันที แต่ก็ดีที่จะรู้
Doug Harris

7
คุณรู้หรือไม่ว่าเป็นไปได้ที่จะเรียกใช้คำสั่งที่คล้ายกันนี้จากสคริปต์หรือไม่? ฉันมีสคริปต์./resize-images.shที่บรรทัดสุดท้ายระบุคำสั่งที่คุณควรเรียกใช้เพื่อเลิกทำการเปลี่ยนแปลงมันจะมีประโยชน์มากถ้าสคริปต์สามารถเพิ่มคำสั่งลงในประวัติของฉันดังนั้นฉันเพิ่งกดup-enterถ้าฉันต้องการยกเลิก
Ben Page

1
@BenPage: ดูคำตอบทั้งที่นี่: unix.stackexchange.com/questions/112354/...
RustyTheBoyRobot

9

history -s คำสั่ง

คุณสามารถผูกการกดแป้นพิมพ์เพื่อทำสิ่งนี้ให้คุณ คุณสามารถป้อนสิ่งนี้ได้ในพรอมต์ Bash:

bind '"\C-q": "\C-a history -s \C-j"'

หรือเพิ่มลงในของคุณ~/.inputrc:

"\C-q": "\C-a history -s \C-j"

จากนั้นคุณสามารถพิมพ์บางสิ่งและกดCtrl- qและมันจะถูกเพิ่มลงในประวัติโดยไม่ต้องดำเนินการ พื้นที่ก่อนประวัติศาสตร์ "" สาเหตุที่ทำให้historyคำสั่งตัวเองไปไม่ได้ถูกเพิ่มเข้าไปในประวัติศาสตร์ถ้าHISTCONTROLตัวแปรมีหรือignorespace ignorebothสามารถเลือกการกดแป้นพิมพ์อื่นได้แทน "\ Cq"


3

มันยากที่จะเกิดอะไรขึ้นกับสิ่งที่สั้นกว่าตัวอักษร "คำสั่ง" หนึ่งตัวดังนั้นเราต้องไปที่ระดับการกดแป้น ด้วยการตั้งค่า bash ของฉันและคีย์บอร์ด US สิ่งที่คุณทำในตอนนี้:

  1. ไปที่จุดเริ่มต้นของบรรทัด:: CTRLAคำสั่ง +1, กดปุ่ม +2
  2. เพิ่ม#(ต้องการSHIFT): คำสั่ง +1, กดปุ่ม 2 ครั้ง
  3. ต่อท้ายประวัติด้วยENTER: คำสั่ง +1, +1 ปุ่มกด

ดังนั้นรวม 3 คำแนะนำ 5 ปุ่มกด

การใช้ALT#ทำเช่นเดียวกันใน 1 คำสั่ง, 2 ปุ่มกด

YMMV ขึ้นอยู่กับรูปแบบแป้นพิมพ์และการกำหนดค่า bash ของคุณ


3
ปัญหาไม่ใช่จำนวนการกดปุ่ม แต่ "#command" จะถูกเก็บไว้ในประวัติแทนที่จะเป็นคำสั่ง "ตั้งใจ"
Grumbel

1
เป็นเรื่องดีที่ "#command" ได้รับการจัดเก็บไว้ในไฟล์ประวัติเพราะจะทำให้คุณรู้ว่าคำสั่งนั้นไม่ได้ถูกเรียกใช้งานจริง สิ่งนี้อาจดีถ้าคุณต้องการตรวจสอบคำสั่งที่คุณป้อนในภายหลังเพื่อหาปัญหา
Marnix A. van Ammers

2
@Grumbel, @Marnix: เห็นด้วยฉันไม่ได้ตอบคำถามต่อจดหมาย แต่แสดงวิธีทำสิ่งที่เขาทำตอนนี้ให้เร็วขึ้น โดยส่วนตัวแล้วฉันคิดว่าการใช้#commandนั้นเร็วกว่าhistory -s commandและใช้งานง่ายมากถ้าคุณแมปhistory-search-backward/-forwardอย่างถูกต้อง แต่มันเป็นเรื่องของรสนิยม
Benjamin Bannier
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.