ประวัติทุบตีสำหรับเซสชั่นปัจจุบัน


15

บางทีฉันอาจมองเห็นบางอย่าง แต่มีวิธีรับประวัติทุบตีปัจจุบันของคุณสำหรับเซสชันปัจจุบันที่คุณใช้งานอยู่

ถ้าฉันวิ่ง

ssh host
$ pwd
$ ls
$ cd /tmp

ฉันแค่อยากเห็น 3 คำสั่งเหล่านั้นและไม่มีอะไรอื่น


คุณตรวจสอบhistoryคำสั่งแล้วหรือยัง?
Hackaholic

ใช่ฉันรู้historyแต่นั่นไม่ได้ให้แค่เซสชั่นของฉัน
Mike

จำนวนที่บันทึกระหว่างเซสชันถูกควบคุมโดยตัวแปรเชลล์ SAVEHIST หากฉันจำได้ ดังนั้นหากจำนวนประวัติที่คุณบันทึกครั้งล่าสุดเป็นศูนย์คุณจะได้รับประวัติสำหรับเซสชันเชลล์ปัจจุบัน (แต่ไม่แน่นอนที่ระดับย่อย)
mdpc

@mdpc คุณกำลังอ่านเอกสารอะไรอยู่ ในหน้าคนทุบตีผมพบว่าไม่มีการอ้างอิงถึง SAVEHIST แต่เพียงและHISTSIZE HISTFILESIZE
Wildcard

คำตอบ:


15

วงเวียนเล็กน้อย:

history -a ~/current_history

การดำเนินการนี้จะบันทึกประวัติทุบตีเซสชันที่ยังไม่ได้บันทึก~/current_historyซึ่งคุณสามารถดูได้


สิ่งนี้สามารถใช้งานได้ แต่ไม่สามารถจัดการได้หลายเซสชัน .. ฉันคิดว่าฉันสามารถสร้างไฟล์ temp แบบสุ่มเพื่อเก็บไว้ได้
Mike

1
@ ไมค์ใช้ชื่อการเชื่อมต่อกับเปลือก PID ~/$$_historyบางที
muru

4
เป็นที่น่าสังเกตว่าสิ่งนี้จะไม่ล้างประวัติหรือส่งผลกระทบต่อการบันทึกประวัติปกติ แต่อย่างใด! ฉันไม่แน่ใจจนกว่าจะทดสอบ :)
NHDaly

ฉันคิดว่ามันสะดวกกว่าที่จะhistory -aโยนมันไปพร้อมกับประวัติก่อนหน้าใน ~ / .bash_history ... ซึ่งอาจเป็นปัญหาหากประวัติของคุณยาวกว่าทางลัดซึ่งเป็น 1,000 ในระบบ centos7 และ fedora 24 ของฉัน
เรย์ฟอสส์

0

ฉันมีปัญหาที่ฉันต้องการเขียนปัจจุบันhistoryไปยังไฟล์แต่ยังต้องการให้รายการถูกบันทึกในทุบตีหลักhistory

ฉันแก้ไขได้โดยแนบไฟล์ด้วยcat:

history -a current-history
cat current-history >> .bash_history

-1

ใช้compเพื่อเปรียบเทียบประวัติทั้งหมด (รวมเซสชัน Bash ปัจจุบัน) กับประวัติที่มีอยู่แล้ว.bash_historyและพิมพ์เฉพาะบรรทัดที่ไม่ซ้ำกับเซสชันปัจจุบัน - ซึ่งควรแสดงเฉพาะคำสั่งเหล่านั้นที่ดำเนินการตั้งแต่เริ่มเชลล์ Bash ปัจจุบัน

comm -23 <( history | cut -c 8- ) ~/.bash_history

แก้ไข:เป็น @Wildcard commชี้ให้เห็นคำสั่งนี้ไม่ทำงานสำหรับการกระจายทั้งหมด ฉันทดสอบสิ่งนี้บน Mac OS

การเปลี่ยนแปลงของแนวคิดเดียวกันโดยใช้diff:

diff <( history | cut -c 8- ) ~/.bash_history | sed -n 's/^< //pg'

ความคิดที่ดี แต่ไม่น่าเชื่อถือมากในการทดสอบของฉัน commถือว่าอินพุตเรียงลำดับ แต่ยินดีต้อนรับสู่ Stack Exchange! :)
ไวด์การ์ด

@ Wildcard ทั้งสองด้านของอินพุตที่commจะเรียงลำดับโดยเนื้อแท้ในตัวอย่างข้างต้น คุณเรียกใช้หรือไม่ และมันไม่สร้างประวัติเซสชัน Bash ปัจจุบันของคุณ?
Christian Kadner

ใช่ฉันทำและไม่ทำไม่ได้ และไม่มีเนื้อหาของ~/.bash_historyถูกไม่ได้เรียง; และไม่เป็นผลลัพธ์ของการhistoryเรียงลำดับเมื่อลบหมายเลขบรรทัดนำออก (นอกจากนี้ซึ่งcommคาดว่าอินพุตที่เรียงตามพจนานุกรมไม่ใช่อินพุตที่จัดเรียงเป็นตัวเลข)
Wildcard

ใช่ฉันหมายถึงทั้งข้อโต้แย้งในcommคำสั่งในตัวอย่างของฉันอยู่ในลำดับเดียวกันไม่ใช่ว่าพวกเขาจะเรียงลำดับพจนานุกรม รุ่น FreeBSD commไม่จำเป็นต้องป้อนข้อมูลเรียงตามพจนานุกรม
Christian Kadner

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