set -o vi
เพื่อให้ใช้ vi command ในการ access history command ได้
ปัจจุบัน มี bash ก็ไม่ค่อยได้ set -o vi แล้ว (จริงๆแล้วไม่ค่อยได้ใช้ shell เท่าไรแล้วด้วย)
ใช้แต่ลูกศรขึ้นลง scroll ไปมา
พึ่งมารู้วันนี้เองว่า history ของ bash ทำอะไรได้เยอะเหมือนกัน
เริ่มด้วย สมมติว่าเราพึ่งสั่ง
ls -l | head
ไปและต้องการสั่งซ้ำอีก แทนที่จะใช้ลูกศรขึ้นไปหา
เราสามารถใช้คำสั่ง
!l
แทนได้ โดยมันจะหาคำสั่งล่าสุดที่ขึ้นต้นด้วยตัว l ให้เองหรือถ้าใช้
!?head
แทนก็ได้ โดยมันจะหาคำสั่งล่าสุดที่มีคำว่า head
ส่วนการ search ก็สามารถใช้ ^r เพื่อเข้าสุ่ reverse incremental history search mode
เมื่อหา command ที่ต้องการเจอแล้ว ก็สั่งทำงานด้วยการ enter
หรือจะสัง ^j เพื่อ edit command ก่อน (กรณียกเลิกค้นหาใช้ ^c)
ถ้าสั่ง
^head^tail
ก็เป็นการเรียกใช้ command ก่อนหน้า แต่แทนที่คำว่า head ด้วยคำว่า tail
สั่ง
history | grep -i 'head'
เพื่อ list คำสั่งที่มีคำว่า head จากนั้นก็ใช้
!linenumber
เพื่อเลือกคำสั่งที่ต้องการถ้าเราดูใน history จะเห็นว่ามันมีคำสั่งพื้นๆ เช่น ls, edit อยู่เต็มไปหมด
กรณีที่เราไม่ต้องการเก็บคำสั่งเหล่านี้ใน history ก็ใช้
export HISTIGNORE="&:ls:[bf]g:exit"
มี trick หนึ่งก็คือ ถ้าเราใช้
[ \t]*
ใน HISTIGNOREกรณีที่เราสั่งคำสั่งที่ไม่ต้องการให้เก็บใน history
ก็เพียงแต่เติม space ไปข้างหน้าคำสั่ง