Tôi thực sự thích sử dụng control+r
để tìm kiếm đệ quy lịch sử lệnh của tôi. Tôi đã tìm thấy một vài lựa chọn tốt mà tôi muốn sử dụng với nó:
# ignore duplicate commands, ignore commands starting with a space
export HISTCONTROL=erasedups:ignorespace
# keep the last 5000 entries
export HISTSIZE=5000
# append to the history instead of overwriting (good for multiple connections)
shopt -s histappend
Vấn đề duy nhất đối với tôi là erasedups
chỉ xóa các bản sao liên tiếp - do đó với chuỗi lệnh này:
ls
cd ~
ls
Các ls
lệnh thực sự sẽ được ghi lại hai lần. Tôi đã nghĩ về việc chạy định kỳ w / cron:
cat .bash_history | sort | uniq > temp.txt
mv temp.txt .bash_history
Điều này sẽ đạt được loại bỏ các bản sao, nhưng tiếc là thứ tự sẽ không được bảo tồn. Nếu tôi không sort
tập tin trước, tôi không tin uniq
có thể hoạt động bình thường.
Làm cách nào tôi có thể xóa các bản sao trong .bash_history, giữ trật tự?
Tín dụng thêm:
Có bất kỳ vấn đề với việc ghi đè .bash_history
tập tin thông qua một tập lệnh? Ví dụ: nếu bạn xóa tệp nhật ký apache, tôi nghĩ rằng bạn cần gửi tín hiệu nohup / reset kill
để nó xóa kết nối của nó với tệp. Nếu đó là trường hợp của .bash_history
tệp, có lẽ bằng cách nào đó tôi có thể sử dụng ps
để kiểm tra và đảm bảo không có phiên nào được kết nối trước khi tập lệnh lọc được chạy?
history
lệnh. Tôi nên tìm ở đâu?
ignoredups
thay vìerasedups
một lúc và xem cách nó làm việc cho bạn.