นอกเหนือจากการดูประวัติแล้วมีวิธีการกรองประวัติของฉันหรือไม่?
หากฉันต้องการค้นหาคำสั่งที่ขึ้นต้นด้วย "ssh"
นอกเหนือจากการดูประวัติแล้วมีวิธีการกรองประวัติของฉันหรือไม่?
หากฉันต้องการค้นหาคำสั่งที่ขึ้นต้นด้วย "ssh"
คำตอบ:
กดCtrl+ และประเภทR + จะเริ่มค้นหาจากคำสั่งล่าสุดเป็นคำสั่งเก่า (ย้อนกลับค้นหา) หากคุณมีมากกว่าหนึ่งคำสั่งซึ่งเริ่มต้นด้วยกด+ อีกครั้งและอีกครั้งจนกว่าคุณจะพบการแข่งขันssh
CtrlRssh
CtrlR
เมื่อคุณพบการจับคู่คุณสามารถกดEnterเพื่อรันคำสั่งหรือเคอร์เซอร์ซ้าย / ขวาเพื่อเลือกข้อความของคำสั่ง
ไม่มีตัวเลือกย้อนกลับเริ่มต้นสำหรับCtrl+ Rเพื่อกลับทิศทางการค้นหา แต่ที่นี่คุณจะพบคำแนะนำบางอย่างเกี่ยวกับเรื่องนี้
หากคุณเพียงแค่ต้องการค้นหาประวัติของคุณคุณสามารถใช้history | grep ssh
แทนสิ่งที่คุณต้องการค้นหา
ฉันทำสิ่งต่าง ๆ ข้างต้นเล็กน้อยใช้งานได้ดีสำหรับฉัน (ถ้าคุณหมายถึงประวัติทุบตีของคุณ
ในโฟลเดอร์บ้านของฉันฉันสร้างไฟล์ชื่อ
.inputrc
ข้างในนี้
"\e[5~": history-search-backward
"\e[6~": history-search-forward
หมายเหตุ: ข้างต้นดูเหมือนจะไม่ทำงานอีกต่อไปใน 14.04 ดังนั้นสิ่งนี้ทำสิ่งเดียวกัน -
"\e[A":history-search-backward
"\e[B":history-search-forward
จากนั้นพิมพ์คำสั่งก่อนหน้านี้จำนวนมาก แต่ฉันต้องการ & ใช้ปุ่มหน้าขึ้น / หน้า dn ค้นหาประวัติโดยเริ่มต้นด้วยหน้าขึ้นเสมอ
การกดCtrl+ Rจะเริ่มต้นโหมด "reverse-i-search" การพิมพ์ "ssh" จะค้นหาประวัติคำสั่งของคุณซึ่งมี "ssh"
นี่เป็นอีกวิธีหนึ่งที่ใช้คำสั่งแบบคลาสสิก (มีแนวโน้มที่จะทำงานข้าม distros) ประวัติคำสั่งถูกเก็บไว้ในไฟล์.bash_history
ในโฮมไดเร็กตอรี่ของคุณ, ดังนั้นคุณสามารถทำได้:
grep "ssh" ~/.bash_history
อย่าลืม-i
ค่าสถานะหากคุณต้องการค้นหาแบบตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
history | grep ssh
จะแสดงเฉพาะเซสชันของชั่วคราวดังนั้นฉันจะไปหาคำตอบนี้
ฉันพบฟังก์ชั่นต่อไปนี้ที่ใดที่หนึ่งบนอินเทอร์เน็ตและใช้มันเพื่อผลลัพธ์ที่ยอดเยี่ยม ใส่สิ่งนี้ใน~/.bashrc
:
hgrep () {
history | egrep --color=auto --recursive "$@" | egrep --color=auto --recursive -v "hgrep $@"
}
exec bash
ตอนนี้อีกครั้งโหลดเปลือกของคุณ: ตอนนี้คุณมีคำสั่งใหม่ซึ่งคุณสามารถใช้ดังนี้
hgrep ssh
มันจะแสดงรายการคำสั่งที่ตรงกันจากประวัติของคุณ หากต้องการเรียกใช้คำสั่งให้พิมพ์!
ตามด้วยหมายเลขคำสั่ง นี่คือตัวอย่าง:
~:$ hgrep scp
207 tn scp foreign-teachers __HOST__:unity.log __HOST__:compiz.log .
421 tn scp scott-laptop __HOST__:Scott\ Severance.asc .
422 tn scp scott-laptop __HOST__:'Scott\ Severance.asc' .
468 tn scott-desktop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
469 tn scott-laptop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
470 scp -r Backgrounds/* 192.168.1.2:Pictures/Backgrounds
~:$ !207
ฉันชอบวิธีนี้ดีกว่าCtrl+ Rเพราะมันช่วยให้การค้นหามีความยืดหยุ่นมากขึ้นและฉันสามารถเห็นผลลัพธ์หลายรายการพร้อมกัน
หากคุณใช้เชลล์ใน Emacs ( M-x shell
) คุณสามารถใช้M-r
(มันเทียบเท่ากับCtrl+ Rในเทอร์มินัล )
ประวัติดี แต่ จำกัด - ฉันต้องการตั้งค่าสภาพแวดล้อมทุบตีของฉันเพื่อให้ฉันบันทึกคำสั่งทั้งหมดที่ฉันเคยเรียกใช้นอกเหนือจากไดเรกทอรีที่พวกเขาเรียกใช้แล้วฉันเรียกใช้คำสั่งเพื่อแสดงรายการคำสั่งทั้งหมด ฉันทำงานในไดเรกทอรีปัจจุบันซึ่งฉันสามารถไปที่ grep เป็นต้น - เรียกว่า 'dish' ดู:
https://github.com/wolfwoolford/dish
หากคุณต้องการที่จะตัดการไล่ล่าเพียงแหล่งที่มานี้ใน. bashrc ของคุณ ( https://github.com/wolfwoolford/dish/blob/master/dishrc )
นอกจากนี้ยังมีคำสั่งที่มีประโยชน์มากที่คุณจะได้รับฟรีที่เรียกว่า 'dishg' หรือจานทั่วโลก - ซึ่งพิมพ์คำสั่งทุกคำสั่งที่เรียกใช้โดยไม่คำนึงถึงไดเรกทอรี เห็นได้ชัดว่าอันนี้มีประโยชน์เฉพาะเมื่อใช้กับ grep และหาง ฯลฯ ...
ฉันใช้มันมาหลายปีแล้วและมันเป็นสิ่งแรกที่ฉันติดตั้งเมื่อใดก็ตามที่ฉันติดตั้งกล่องใหม่ มันบันทึกคำสั่งที่คุณพบในไฟล์ข้อความในไดเรกทอรีที่ซ่อนอยู่ (~ / .dish) .. ฉันไม่เคยมีปัญหาเรื่องพื้นที่ดิสก์ ...
ต้องการเขียนสิ่งนี้เป็นความคิดเห็นถึง@ssmyแต่ไม่สามารถรับการจัดรูปแบบในความคิดเห็นที่ให้ความร่วมมือ
หลังจากการค้นหาผ่านทางประวัติศาสตร์กับคุณแล้วคุณสามารถดำเนินการคำสั่งที่คุณต้องการโดยการพิมพ์หมายเลขของมันใช้ได้กับเครื่องหมายอัศเจรีย์เช่นhistory | grep ssh
!42
ตัวอย่าง:
$ ประวัติ | grep ssh 5 ssh me@someserver.net 13 ssh me@someotherserver.net 42 ssh me@thisone.com $! 42