Làm thế nào để ngăn chặn lịch sử nối thêm Bash


9

Tôi gặp nhiều khó khăn khi thiết lập lịch sử cuối cùng của Bash theo cách tôi muốn. Tôi muốn không có mục trùng lặp và nếu tôi nhập lệnh tôi muốn nó được lưu và các mục trùng lặp ở trên đã bị xóa.

Vấn đề là historylệnh cho tôi thấy nó hoạt động theo cách tôi muốn, nhưng một khi tôi đăng xuất thì các bản sao lại quay trở lại. Tôi tin rằng nó chỉ là nối thêm lịch sử với cái hiện có. Tôi có những dòng này trong .bashrctập tin của mình :

HISTCONTROL=ignoreboth:erasedups
shopt -u histappend

Tôi thậm chí đã cố gắng bỏ qua shopt, nhưng nó vẫn nối thêm lịch sử khi đăng xuất. Làm thế nào tôi có thể có lịch sử chính xác như thế nào trước khi tôi đăng xuất?


2
Có một lời giải thích tốt ở đây: unix.stackexchange.com/questions/18212/ Khăn
jasonwryan

Câu trả lời:


7

Các erasedupsnên làm những gì bạn muốn liên quan đến các bản sao - chỉ cần lưu ý rằng xóa bản sao được kích hoạt tại thời điểm phụ thêm một mục mới cho lịch sử và nó xóa tất cả các lần xuất hiện cũ của một lệnh, để lại chỉ là gần đây nhất.


Trả lời câu hỏi " Làm thế nào tôi có thể có lịch sử chính xác như thế nào trước khi tôi đăng xuất? "

Theo cách tôi thấy, điều này chỉ có thể hữu ích một lần trong một thời gian. (Nếu không thì tại sao bạn lại sử dụng lịch sử?) Bạn có thể làm điều đó bằng cách ban hành

history -c; history -r

Điều này xóa tất cả các mục lịch sử được lưu trong bộ nhớ và sau đó đọc lại toàn bộ lịch sử từ tệp lịch sử. Vì vậy, tất cả các lệnh bạn đã ban hành kể từ khi đăng nhập vào phiên shell hiện tại đều bị quên. Tôi thấy nó khá hữu ích trong các tình huống khi tôi thực hiện nhiều thử nghiệm (nhiều lệnh tương tự, nhưng không thực sự trùng lặp) và sau đó không muốn lịch sử của mình bị thu hẹp bởi điều đó - vì vậy tôi có một bí danh cho nó .bashrc:

alias hrr='history -c; history -r'

( hrrđược ghi nhớ là "đọc lại lịch sử").

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.