บันทึกคำสั่งประวัติโดยไม่ต้องดำเนินการในทุบตี


8

มีวิธีการบันทึกคำสั่งในประวัติทุบตีโดยไม่ต้องดำเนินการหรือไม่? เช่น

$ cmd [a long list of arguments] 

และตอนนี้ระหว่างพิมพ์ฉันจำได้ว่าฉันต้องการทำอย่างอื่นก่อน ฉันขอสิ่งที่ชอบได้ไหม

$ cmd [a long list of arguments][some-key-strokes]

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


5
ในสถานการณ์นั้นฉันเพียงนำหน้าบรรทัดด้วย#แล้วกด Enter
Oliver Charlesworth

คำตอบ:


5

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

$ cmd [arguments] !#%:p

เย็น! ;) และโดยไม่จำเป็นต้องหลบหนีตัวอักษรพิเศษในคำสั่งสิ่งที่อาจทำให้เกิดความยุ่งเหยิงหากคำสั่งนั้นไม่ได้เป็นเพียงls -al+1

เย็น! เรียบร้อยมาก

8

ใช้-sตัวเลือกhistoryคำสั่ง:

history -s cmd arg1 arg2

การโทรไปยังhistory -sตัวเองอย่างสะดวกสบายจะไม่ถูกเพิ่มไปยังประวัติคำสั่งดังนั้นในประวัติของคุณจะปรากฏราวกับว่าคุณดำเนินการcmdโดยไม่ทำเช่นนั้น


เย็น! นี่ก็ยอดเยี่ยมเช่นกัน

1

โดยปกติจะทำโดย

echo 'cmd [a long list of arguments]' >> /home/you/bash_history

โปรดทราบว่าชื่อของประวัติอาจแตกต่างกันในระบบของคุณ ดังนั้นคุณสามารถใช้HISTFILEvar สภาพแวดล้อม

สิ่งที่ทำให้:

echo 'cmd [a long list of arguments]' >> "$HISTFILE"

1

โดยปกติฉันเพิ่งเพิ่ม # ไปที่จุดเริ่มต้นของบรรทัดเพื่อแปลงบรรทัดเป็นความคิดเห็น:

#cmd [a long list of arguments] 

ฉันชอบวิธีนี้เพราะคุณสามารถทำได้ด้วยเพียง 3 [4 ถ้าคุณต้องการให้ SHIFT แทรก #] การกดแป้น

^a#<ENTER>

^ a ไปที่จุดเริ่มต้นของบรรทัดปัจจุบัน

# เพิ่มความคิดเห็น

ENTER รันความคิดเห็น



0

คุณสามารถลองเพิ่มช่องว่างและ | (ไปป์) ที่ท้ายบรรทัดกดปุ่ม enter แล้วกด Ctrl-C'ing

( Space, |, Enter, Ctrl+ C)

คำสั่งจะอยู่ในประวัติของคุณด้วย | ในตอนท้าย (สามารถลบได้ด้วย backspace) แทนที่จะเป็น # ที่จุดเริ่มต้น (อาจทำให้การลบน่าเบื่อกว่า)

การปฏิเสธความรับผิด: ฉันไม่ทราบว่าสิ่งนี้ได้ผลเสมอ! ใช้ความเสี่ยงของคุณเอง!

$ cmd [รายการอาร์กิวเมนต์ยาว] |

> Ctrl+C

$ Up

$ cmd [รายการอาร์กิวเมนต์ยาว] |


0

คุณสามารถลองใช้บรรทัดนี้:

history -s -p $COMMAND

จากhelp:

The -p option means to perform
history expansion on each ARG and display the result,

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


history -sได้รับคำตอบเมื่อสองปีก่อน การ-pปรับปรุงนั้น อะไร-pทำอย่างไร (ในระดับที่เหมาะสมที่จะทำเช่นนั้นคุณควรแก้ไขคำตอบของคุณให้ดีขึ้นและไม่ตอบความคิดเห็นของฉันด้วยความคิดเห็นอื่น)
G-Man กล่าวว่า 'Reinstate Monica'

0

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

rm old_file && cmd [args]

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

test && cmd [args]

เนื่องจากการทดสอบที่ไม่มี args จะล้มเหลว แต่นี่เป็นการกดแป้นพิเศษจำนวนหนึ่งเมื่อเทียบกับ#วิธีการ


0

ฉันคิดว่า "จังหวะสำคัญบางอย่าง" ที่คุณต้องการคือ Ctrl-U และ Ctr-Y ซึ่งเก็บสายไว้ใน kill-ring จากนั้นดึงมันออกมาในภายหลัง มันไม่ได้เข้าไปในประวัติศาสตร์ แต่แล้วฉันคิดว่ามันไม่ควรเพราะคุณไม่ได้ทำ

คำสั่งฆ่าแบบ Readline

ฆ่าและ Yanking

ฉันเรียนรู้เมื่อหลายปีก่อนจากนั้นก็ลืมไปแล้วและมองหาจังหวะสำคัญเหล่านั้นด้วย

มันพูดถึงที่นี่ด้วย: /unix/140741/how-to-save-a-command-you-entered-without-executing-it

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