Làm cách nào để xóa Lịch sử thiết bị đầu cuối?


93

Tôi đang sử dụng Linux Mint 17.1 Rebecca trong khoảng 2 ngày và vô tình nhập mật khẩu của tôi vào thiết bị đầu cuối hiện được hiển thị trong danh sách lịch sử của các lệnh tôi đã nhập trước đó.

Tôi muốn xóa hoàn toàn lịch sử thiết bị đầu cuối. Tôi đã thử sử dụng các lệnh sau trong thiết bị đầu cuối mà tôi nghĩ sẽ xóa lịch sử mãi mãi nhưng chúng không:

history -c
reset
tput reset

Các lệnh trên "sẽ" xóa lịch sử khỏi thiết bị đầu cuối nhưng khi tôi thoát và đưa ra một lịch sử mới, tất cả lịch sử trước đó của tôi vẫn còn đó và tất cả có thể được liệt kê lại bằng cách sử dụng lệnh - history và cũng bằng cách nhấn mũi tên LÊN trên bàn phím của tôi . Tôi không muốn điều này xảy ra cho đến khi tôi hoàn toàn xóa lịch sử của mình, sau đó tôi muốn tiếp tục sử dụng nó.

Làm thế nào tôi có thể xóa hoàn toàn lịch sử thiết bị đầu cuối của mình - mãi mãi và bắt đầu mới?

Xin lưu ý: Tôi không muốn thoát khỏi thiết bị đầu cuối mà không lưu lịch sử chỉ xóa nó mãi mãi trong trường hợp này.


1
sed -i "s/$your_pass//g" ~/.bash_history...
jasonwryan

3
@jasonwryan Điều đó một mình sẽ không giải quyết được vấn đề vì lệnh sed sẽ kết thúc trong lịch sử vỏ.
Gilles

1
Tôi đã thử sử dụng mã từ @jasonwryan nhưng tôi đã nhận được: sed: -e biểu thức # 1, char 0: không có biểu thức chính quy trước đó mà tôi nghĩ rằng tôi biết tại sao và điều đó dẫn tôi đến với điều này từ một tìm kiếm và một số điều gây rối: cat / dev / null> ~ / .bash_history && history -c && exit
Shambhala

1
@Gilles: bạn đã đúng: đáng lẽ phải có một khoảng trống phía trước lệnh ...
jasonwryan

Câu trả lời:


145

resethoặc tput resetchỉ làm những điều đến thiết bị đầu cuối. Lịch sử được quản lý hoàn toàn bởi vỏ, vẫn không bị ảnh hưởng.

history -cxóa lịch sử của bạn trong shell hiện tại. Thế là đủ (nhưng quá mức) nếu bạn vừa nhập mật khẩu và chưa thoát khỏi vỏ đó hoặc lưu lịch sử của nó một cách rõ ràng.

Khi bạn thoát bash, lịch sử được lưu vào tệp lịch sử, theo mặc định là .bash_historytrong thư mục chính của bạn. Chính xác hơn, lịch sử được tạo trong phiên hiện tại được thêm vào tệp; các mục đã có mặt không bị ảnh hưởng. Để ghi đè tệp lịch sử với lịch sử của trình bao hiện tại, hãy chạy history -w.

Thay vì xóa tất cả các mục lịch sử của bạn, bạn có thể mở .bash_historytrong trình chỉnh sửa và xóa các dòng bạn không muốn giữ. Bạn cũng có thể làm điều đó bên trong bash, ít thuận tiện hơn, bằng cách sử dụng historyđể hiển thị tất cả các mục, sau đó history -dxóa các mục bạn không muốn và cuối cùng history -wlà lưu.

Lưu ý rằng ngay cả sau khi bạn đã chỉnh sửa tệp lịch sử, có thể mật khẩu của bạn vẫn còn ở đâu đó trên đĩa từ phiên bản trước của tệp. Nó không thể được truy xuất thông qua hệ thống tập tin nữa, nhưng vẫn có thể (nhưng có lẽ không dễ) để tìm thấy nó bằng cách truy cập trực tiếp vào đĩa. Nếu bạn sử dụng mật khẩu này ở nơi khác và đĩa của bạn bị đánh cắp (hoặc ai đó có quyền truy cập vào đĩa), đây có thể là một vấn đề.


1
Tôi thích câu trả lời của bạn và sẽ chấp nhận khi bạn nói với tôi khá nhiều điều mà tôi không biết là rất hữu ích. Tôi cũng sẽ thay đổi mật khẩu của mình!
Shambhala

Loại đầu tiên historyđể kiểm tra nội dung của nhật ký lịch sử và số dòng bạn muốn xóa, giả sử bạn muốn xóa số dòng 1000 trong nhật ký lịch sử, sau đóhistory -d 1000
Claude COULOMBE

Nếu tôi sửa đổi trực tiếp tệp .bash_history, lệnh history vẫn hiển thị các lệnh như trước khi sửa đổi, cho đến khi tôi đăng xuất / đăng nhập.
Benitok

35

Tôi đã thử lịch sử -c nhưng lịch sử đã quay trở lại sau khi chúng tôi thoát ra và mở lại. Điều này đã giúp tôi.

cat /dev/null > ~/.bash_history && history -c && exit

Điều này sẽ xóa lịch sử được lưu trong tệp lịch sử cũng như lịch sử trong phiên hiện tại (để nó không được lưu vào tệp khi bashthoát). Sau đó nó thoát khỏi vỏ. Phiên shell tiếp theo sẽ không có lịch sử.


18

Thay vì xóa tất cả các mục lịch sử của bạn, hãy nhập các lệnh này trong thiết bị đầu cuối của bạn:

  1. history -c (để xóa lịch sử)
  2. history -w (lưu lịch sử)

Điều này sẽ không đủ với zsh nếu inc_append_historyhoặc share_historytùy chọn được đặt.
saga

5

Vì có vấn đề bảo mật ở đây, bạn nên cân nhắc xóa an toàn tệp lịch sử.

$ shred -u ~/.bash_history && touch ~/.bash_history

3

Là một người mới gặp phải vấn đề tương tự, tôi đã sử dụng một phương pháp khá tàn bạo để xóa và tạo lại tệp lịch sử: -

rm .bash_history
touch .bash_history

Nó làm việc cho tôi mà không làm phát sinh bất kỳ tác dụng phụ khó chịu nào mà tôi biết.


3

Thể loại: history -c; rm ~/.bash_history

history -cxóa lịch sử phiên hiện tại của bạn, rm ~/.bash_historyxóa lịch sử dài hạn của bạn, vì vậy history -c; rm ~/.bash_historyxóa cả hai.


giải thích có thể giúp OP hiểu rõ hơn.
Mongrel
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.