เทอร์มินัลเก็บข้อมูลหรือไม่


9

นี่เป็นสิ่งที่ฉันอยากรู้มานาน แต่ไม่เคยถามคำถามเลย

ฉันรู้ว่าในเทอร์มินัลที่มีให้ใน Linux distros สามารถดูประวัติทั้งหมดของคำสั่งโดยใช้ปุ่มลูกศร (หากมีวิธีอื่นใดฉันไม่ทราบ) ดังนั้นสิ่งนี้จะเกิดขึ้นได้อย่างไร

มีสถานที่ใดบ้างที่เทอร์มินัลบันทึกการกดแป้นทั้งหมด มันเป็นบัฟเฟอร์หรือเปล่า? แต่ถ้าเป็นบัฟเฟอร์ก็จะถูกลบออกไปอีกซักพัก

ระบบนี้ทำงานอย่างไร


ประวัติศาสตร์เขียนเพื่อให้ได้คำสั่งที่ใช้ก่อนหน้านี้ทั้งหมด ..
Sukupa91

OP ไม่ได้ถามเกี่ยวกับhistoryคำสั่ง แต่วิธีการจำคำสั่งเก่าทั้งหมดนี้ทำงานอย่างไร
Tarun

ขอโทษฉันเข้าใจผิด ..
Sukupa91

2
คำนึงถึงข้อยกเว้นนี้: หากคำสั่งเริ่มต้นด้วยเว้นวรรคคำสั่งจะไม่สิ้นสุดในประวัติศาสตร์
Rinzwind

@Rinzwind มันจะถูกเพิ่มในประวัติถ้าเริ่มต้นด้วยช่องว่าง
GC 13

คำตอบ:


10

นี่คือประวัติคำสั่งและเป็นคุณลักษณะของเชลล์มากกว่าเทอร์มินัล

บน Ubuntu (และอื่น ๆ ถ้าไม่ใช่ลีนุกซ์รุ่นอื่น ๆ ) เชลล์เริ่มต้นสำหรับการใช้แบบโต้ตอบคือ Bash ( /bin/bash) ~/.bash_historyทุบตีเก็บประวัติของคุณที่เป็นรายการของคำสั่งสุดท้ายที่ เมื่อคุณเปิดเชลล์ (โดยปกติจะเปิดเทอร์มินัล) ไฟล์นี้จะถูกอ่านและโหลดลงในประวัติภายในของเชลล์นี้ เมื่อคุณปิดเชลล์การเปลี่ยนแปลงจะถูกเขียนกลับไปที่ไฟล์ โดยค่าเริ่มต้นนี่จะถูก จำกัด 500 คำสั่งล่าสุด

มีตัวแปรและตัวเลือกเชลล์บางตัวที่สามารถเปลี่ยนพฤติกรรมของวิธีการทำงานได้อย่างแม่นยำ ดูที่ทุบตี manpage ( man bash) หากคุณต้องการทราบข้อมูลเพิ่มเติม เพียงค้นหาประวัติ (พิมพ์/^HISTORYและยืนยันด้วยEnterข้ามไปที่การค้นหาถัดไปด้วยn)

นอกจากนี้ยังมีค่อนข้างมากวิธีการอื่น ๆ อีกมากมายที่จะไปรอบประวัติศาสตร์มากกว่าเพียงแค่UpและDown:

  • ตัวอย่างเช่นกดCtrl+ Rและเป็นส่วนหนึ่งของคำสั่งก่อนหน้าทุบตีจะค้นหาย้อนหลังในประวัติศาสตร์สำหรับคำสั่งจับคู่ให้กดCtrl+ ซ้ำRถ้าการจับคู่ครั้งแรกไม่ได้เป็นคนที่คุณกำลังมองหา (ดู 'คำสั่งสำหรับการจัดการประวัติ' ใน manpage ทุบตี)

  • คัดลอก/etc/inputrcไป~/.inputrcและ uncomment บรรทัดที่มีhistory-search-forwardและhistory-search-backwardในพวกเขา หากคุณพิมพ์ตัวอักษรตัวแรกของคำสั่งและกดPgUpbash จะแสดงเฉพาะคำสั่งจากประวัติที่ขึ้นต้นด้วยตัวอักษรเดียวกัน (ทำงานเฉพาะในเชลล์ที่เปิดหลังจากการเปลี่ยนแปลงนี้)

  • พิมพ์!!แทนคำสั่งบนเชลล์สิ่งนี้จะทำซ้ำคำสั่งสุดท้าย (ดู 'การขยายประวัติ' ใน bash manpage สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนั้น)


1
และถ้าคุณไม่ต้องการให้เก็บประวัติไว้ให้ใส่unset HISTFILE~ / .bashrc ของคุณ จากนั้นมันจะเก็บประวัติในหน่วยความจำเท่านั้นการล้างค่าสำหรับการเรียกใช้เชลล์ใหม่แต่ละครั้ง
CVn

10

โดยทั่วไปคำสั่งประวัติจะถูกจัดเก็บตามจำนวนผู้ใช้ใน.bash_historyไฟล์ในโฮมไดเร็กตอรี่ของคุณ หมายความว่าผู้ใช้ทุกคนมีชุดคำสั่งของตนเองที่เขาดำเนินการ

เมื่อเปิดเทอร์มินัลหลายเซสชันพวกเขาอาจแสดงคำสั่งต่าง ๆ ให้คุณเมื่อกดปุ่มลูกศร แต่เมื่อคุณจะปิดหน้าต่างเทอร์มินัลทั้งหมดประวัติจากเทอร์มินัลเซสชันต่าง ๆ จะถูกผสานเข้ากับ~/.bash_historyไฟล์ทั่วไป

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