Làm thế nào để xóa lịch sử bash hoàn toàn?


254

Tôi muốn xóa tất cả các lệnh trước đó từ lịch sử máy chủ của tôi. Tôi đã sử dụng history -cvà có vẻ như tất cả mọi thứ đã bị xóa nhưng khi tôi ssh đến máy chủ, tất cả các lệnh vẫn còn đó.

Làm thế nào tôi có thể xóa chúng vĩnh viễn?

Câu trả lời:


332

Các tập tin ~/.bash_historygiữ lịch sử.

Để xóa hoàn toàn lịch sử bash trên máy chủ, hãy mở terminal và gõ

cat /dev/null > ~/.bash_history

Cách khác là liên kết ~/.bash_historyđến/dev/null

Tuy nhiên,

Một tác dụng phụ khó chịu là các mục lịch sử có một bản sao trong bộ nhớ và nó sẽ quay trở lại tệp khi bạn đăng xuất .

Để khắc phục điều này, hãy sử dụng lệnh sau (làm việc cho tôi):

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

17
bạn cũng có thể đặt lệnh trên trong .bashrc & .bash_logout. Điều đó có nghĩa là gì khi bạn đăng nhập, bạn sẽ có lịch sử rõ ràng và khi bạn đăng xuất, lịch sử của bạn sẽ bị xóa
Qasim

26
Tại sao bạn cần / dev / null ở đó? Sẽ không > ~/.bash_hstoryđủ?
cấu hình

4
vâng, thế là đủ!
từ

3
Tôi đã cố gắng làm điều đó trên một hộp mâm xôi trong khi kết nối qua SSH. Tôi đã thêm lệnh trên (cat / dev / null> ~ / .bash_history && history -c && exit) cho cả .bashrc & .bash_logout theo đề xuất của @Qasim. Bây giờ ngay khi tôi kết nối qua SSH, máy chủ từ xa sẽ đóng kết nối (sau khi in motd). Trợ giúp: /
Nâng cao

14
Đưa ra những gì xảy ra khi bạn mù quáng làm mọi việc mà không đọc đúng và không hiểu quy trình xử lý và dữ liệu. Nó cũng cho thấy những cạm bẫy của giao tiếp xấu. Những gì devav2 đã làm là chạy nó một lần và những gì Qasim nên viết là xóa lệnh thoát trước khi thêm nó vào tập lệnh đăng nhập.
Sri

142

Phải làm gì:

Trong mọi shell bash mở (bạn có thể có nhiều terminal mở):

history -c
history -w

Tại sao: Như đã lưu ý ở trên, làm history -ctrống các tập tin ~/.bash_history. Điều quan trọng cần lưu ý là bash shell không ngay lập tức xóa lịch sử vào tệp bash_history. Vì vậy, điều quan trọng là (1) xóa lịch sử vào tệp và (2) xóa lịch sử trong tất cả các thiết bị đầu cuối . Đó là những gì các lệnh trên làm.

Tham khảo: http://www.giannistsakiris.com/index.php/2007/09/13/how-to-clear-bash-history-and-what-to-watch-out-for/


3
Trên thực tế, cách khác làm việc cho tôi.
kristianp

24
Trong nhiều trường hợp, bạn có thể kết hợp hai lệnh này lại với nhau:history -cw
Elliot

2
Vì một số lý do, điều này không hoạt động trên Ubuntu 14.04, có thể là những người khác. Nó nên nhưng nó không. Nếu bạn phát lệnh "history -cw", bạn có thể xác nhận bằng mũi tên lên rằng lịch sử không còn nữa, nhưng nếu bạn bắt đầu một cửa sổ đầu cuối khác (trong màn hình Unity) bằng shift + nhấp vào biểu tượng đầu cuối (tôi có nó được ghim trong trình khởi chạy) lịch sử lệnh đã quay trở lại, bất kể bạn thực hiện "history -cw" bao nhiêu lần. "Cat / dev / null> ~ / .bash_history" là cách duy nhất phù hợp với tôi.
Hatoru Hansou

Trong khi tôi không phải là Ubantu, hoạt động tốt cho shell bash của tôi trong OSX.
Scott Biggie

3
Đó là lịch sử -c và sau đó là lịch sử -w, trước tiên bạn xóa lịch sử sau đó viết các thay đổi. Điều này dễ dàng được xác nhận bằng cách đóng thiết bị đầu cuối và mở lại, với -w trước tiên các lệnh sẽ ở đó một lần nữa, với -w lịch sử cuối cùng được xóa một cách hiệu quả.
Hatoru Hansou

56

thực hiện các lệnh sau để xóa lịch sử mãi mãi

history -c && history -w

chúc may mắn!


3
Tốt hơn nhiều so với câu trả lời được chấp nhận. ;)
Chiramisu

Câu trả lời này sẽ hữu ích hơn nữa nếu nó giải thích những gì các cờ này làm (và do đó tại sao / khi chúng là các lệnh đúng để sử dụng).
LarsH

20

Có một cách khác đơn giản hơn nhiều: chạy history -ctrên dấu nhắc thiết bị đầu cuối và biến mất là tất cả các mục trong bash_historytệp.


Không có nó không phải là. Đăng xuất, đăng nhập, mũi tên lên cho tôi tất cả mọi thứ. Bạn cũng cần "lịch sử -w".
stolsvik

1
Nếu bạn đọc câu hỏi của OP, bạn sẽ biết rằng sử dụng history -clà phương pháp chính xác dẫn đến câu hỏi này.
J.Money

10

Một cách khác để làm điều này là xóa ~/.bash_historytệp bằng cách sử dụng rm ~/.bash_historylệnh. Khi bạn đăng nhập lần khác, .bash_historytập tin sẽ được tạo tự động.


4
Ít nhất trên một số hệ điều hành ~ / .bash_history được ghi vào đĩa khi bạn đăng xuất - Không chắc chắn về * buntus.
d -_- b

7

Xóa lịch sử của shell hiện tại:

history -c

Khi bạn đăng xuất, lịch sử của shell hiện tại của bạn được gắn vào ~ / .bash_history, là bộ đệm của lịch sử của shell trước đó, với số lượng tối đa (xem HISTFILESIZE trong "man bash").

Nếu bạn muốn xóa toàn bộ lịch sử, thì về cơ bản bạn phải xóa hết ~ / .bash_history mà nhiều mục trên đã đề xuất. Nhu la:

history -c && history -w

Điều này xóa lịch sử của shell hiện tại và sau đó buộc lịch sử của shell hiện tại ghi đè ~ / .bash_history .... hoặc chính xác hơn, nó buộc nó phải ghi đè HISTFILE (mặc định là ~ / .bash_history).

Hi vọng điêu nay co ich.


4
Bạn trả lời là chính xác, nhưng câu hỏi đã được hai năm tuổi, đã chấp nhận câu trả lời và bao gồm cùng một câu trả lời bạn đã đưa ra.
Charles Green

6
rm ~/.bash_history; history -c; logout

Bây giờ hãy đăng nhập lại và chứng kiến ​​rằng mũi tên của bạn không cung cấp cho bạn bất cứ điều gì.


1
@KasiyA Đó là về một máy chủ và phiên ssh, vì vậy không cần chỉnh sửa ...
Radu Rădeanu

0

Hãy thử cái này

chỉnh sửa của bạn .profilevà thêm dòng dưới đây vào cuối tập tin

rm -f .bash_history

bằng cách này, mỗi khi bạn đăng nhập, nó sẽ tự động xóa tệp .bash_history cho bạn. Thêm tùy chọn loại bỏ đệ quy -r có vẻ nguy hiểm và không cần thiết.

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.