ฉันต้องการให้.bash_history
ไฟล์ของฉันไม่ จำกัด เช่นดังนั้นฉันสามารถย้อนกลับไปและดูว่าฉันสร้าง / กำหนดค่าบางสิ่งหรือคำสั่งที่ดีหรือว่าคำสั่งบางคำสั่งทำลายบางสิ่งบางอย่างเมื่อหลายสัปดาห์ก่อน ฉันจะเปลี่ยนการตั้งค่านี้ได้อย่างไร
ฉันต้องการให้.bash_history
ไฟล์ของฉันไม่ จำกัด เช่นดังนั้นฉันสามารถย้อนกลับไปและดูว่าฉันสร้าง / กำหนดค่าบางสิ่งหรือคำสั่งที่ดีหรือว่าคำสั่งบางคำสั่งทำลายบางสิ่งบางอย่างเมื่อหลายสัปดาห์ก่อน ฉันจะเปลี่ยนการตั้งค่านี้ได้อย่างไร
คำตอบ:
ตั้งค่าHISTSIZE
และHISTFILESIZE
ใน. bashrc เป็นสตริงว่าง:
HISTSIZE=
HISTFILESIZE=
ในbash 4.3 และใหม่กว่าคุณสามารถใช้HISTSIZE=-1 HISTFILESIZE=-1
:
n. Setting HISTSIZE to a value less than zero causes the history list to be
unlimited (setting it 0 zero disables the history list).
o. Setting HISTFILESIZE to a value less than zero causes the history file size
to be unlimited (setting it to 0 causes the history file to be truncated
to zero size).
HISTSIZE= HISTFILESIZE=
ผลลัพธ์เป็นการปิดการใช้งานประวัติทุบตีอย่างสมบูรณ์อย่างน้อยสำหรับฉัน
HISTSIZE=-1 HISTFILESIZE=-1
ปิดการใช้งานประวัติของฉันในขณะที่HISTSIZE= HISTFILESIZE=
ทำเคล็ดลับ CentOS 7 ที่นี่
HISTSIZE= HISTFILESIZE=
คุณน่าจะดีกว่าexport HISTSIZE=
export HISTFILESIZE=
หลังจากการทำซ้ำขนาดใหญ่น่าเกลียดและคดีขอบแปลก ๆ ในช่วงหลายปีที่ผ่านมาตอนนี้ฉันมีส่วนที่กระชับของ. bashrc ของฉันที่อุทิศให้กับสิ่งนี้
ก่อนอื่นคุณต้องแสดงความคิดเห็นหรือลบส่วนนี้ของ. bashrc ของคุณ (ค่าเริ่มต้นสำหรับ Ubuntu) หากไม่เป็นเช่นนั้นสภาพแวดล้อมบางอย่าง (เช่นscreen
เซสชันที่กำลังทำงาน) จะยังคงตัดทอนประวัติของคุณ:
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
# HISTSIZE=1000
# HISTFILESIZE=2000
ขั้นที่สองเพิ่มส่วนนี้ลงที่ด้านล่างของ bashrc
# Eternal bash history.
# ---------------------
# Undocumented feature which sets the size to "unlimited".
# http://stackoverflow.com/questions/9457233/unlimited-bash-history
export HISTFILESIZE=
export HISTSIZE=
export HISTTIMEFORMAT="[%F %T] "
# Change the file location because certain bash sessions truncate .bash_history file upon close.
# http://superuser.com/questions/575479/bash-history-truncated-to-500-lines-on-each-login
export HISTFILE=~/.bash_eternal_history
# Force prompt to write history after every command.
# http://superuser.com/questions/20900/bash-history-loss
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
หมายเหตุ: ทุกคำสั่งจะถูกเขียนทันทีหลังจากที่เรียกใช้ดังนั้นหากคุณวางรหัสผ่านโดยไม่ได้ตั้งใจคุณไม่สามารถเพียงแค่ "ฆ่า -9 %%" เพื่อหลีกเลี่ยงการเขียนประวัติคุณจะต้องลบมันออกด้วยตนเอง
นอกจากนี้โปรดทราบว่าแต่ละเซสชัน bash จะโหลดไฟล์ประวัติแบบเต็มในหน่วยความจำ แต่แม้ว่าไฟล์ประวัติของคุณจะเพิ่มขึ้นเป็น 10MB (ซึ่งจะใช้เวลานานนาน ) คุณจะไม่สังเกตเห็นผลกระทบใด ๆ ต่อเวลาเริ่มต้น bash ของคุณ
HISTFILESIZE=
และHISTSIZE=
เว้นว่างไว้แทนที่จะเป็น -1 และตรวจสอบให้แน่ใจว่าคุณไม่มีการประกาศอื่น ๆ ของ params เหล่านั้นใน. bashrc หรือ. bash_profile หรือ. profile
.bashrc
ฉันมีการติดตั้งหลังจากที่ไฟล์อื่นโหลดโดย. bashrc ... ตอนนี้ทำงาน! ขอบคุณ!
cat ~/.bash_history >>~/.bash_eternal_history
HISTFILESIZE
(และอาจเป็นไปได้HISTSIZE
) จะมีผลทันทีไม่สามารถเน้นมากเกินไปได้
ดังที่Jörg Beyer กล่าวถึงข้างต้นHISTSIZE
และHISTFILESIZE
เป็นกุญแจสำคัญ
นอกจากนี้คุณควรแน่นอนตรวจสอบตัวแปรสิ่งแวดล้อมHISTCONTROL
ซึ่งจะช่วยให้คุณทำสิ่งที่เย็นเช่นไม่เก็บคำสั่งประวัติศาสตร์ที่ซ้ำกัน ( HISTCONTROL=erasedups
) ไม่มีจุดที่มีประวัติไม่ จำกัด หากคุณต้องค้นหาหลายร้อยบรรทัดcd ..
หรือคล้ายกัน
ลิงค์: ที่นี่และการทำงานที่มีประวัติทุบตี ทุบตีตัวแปรคำถามที่พบบ่อยยังเป็นมูลค่าการท่อง
Ctrl-r
Ctrl-o
Ctrl-o
Ctrl-o
Ctrl-o
นั่นเป็นเหตุผลที่ฉันทำซ้ำในประวัติศาสตร์
Ctrl-o
ไว้ทำอะไร?
Ctrl-o
รันคำสั่งที่พร้อมต์และแสดงคำสั่งทันทีหลังจากคำสั่งก่อนหน้านี้ในประวัติ ประโยชน์อย่างหนึ่งคือหลังจากใช้Ctrl-r
เพื่อค้นหาคำสั่งเก่า (อาจใช้ลูกศรขึ้นและลงเพื่อย้ายไปยังคำสั่งที่อยู่ใกล้เคียงในประวัติศาสตร์) ก็เพียงพอแล้วที่จะCtrl
กดและกดo
หลาย ๆ ครั้งเพื่อเรียกใช้ชุดคำสั่งก่อนหน้านี้อีกครั้ง ถ้าคุณต้องการ. ดูGNU Readline - Wikipedia
มี (อย่างน้อย) สอง env vars ที่เกี่ยวข้องที่นี่:
ฉันคิดว่าเราสามารถยอมรับได้ว่าคำที่ไม่ จำกัดมักจะเหมือนกันมาก (หรือคุณมีที่เก็บไฟล์ไม่ จำกัด หรือไม่) ดังนั้นเพียงแค่ตั้งค่าที่มีขนาดใหญ่มาก