Có cách nào để tạm thời tạm dừng theo dõi lịch sử trong bash, để vào một chế độ "ẩn danh" không? Tôi đang nhập nội dung vào thiết bị đầu cuối của mình mà tôi không muốn ghi lại, thông tin tài chính nhạy cảm.
Có cách nào để tạm thời tạm dừng theo dõi lịch sử trong bash, để vào một chế độ "ẩn danh" không? Tôi đang nhập nội dung vào thiết bị đầu cuối của mình mà tôi không muốn ghi lại, thông tin tài chính nhạy cảm.
Câu trả lời:
Đây phải là những gì bạn đang tìm kiếm:
unset HISTFILE
man bash
Nếu HISTFILE không được đặt hoặc nếu tệp lịch sử không thể ghi được, lịch sử sẽ không được lưu.
Ngoài ra, nếu bạn muốn tắt nó đi và sau đó bật lại, có thể dễ sử dụng hơn set
:
set +o history
set -o history
set +o history
và set -o history
chuyển đổi qua lại khi tôi đang làm những việc bí mật;)
unset HISTFILE
không hoạt động. set -/+o history
hoạt động như một lá bùa! cảm ơn
Hãy chắc chắn rằng HISTCONTROL
có chứa ignorespace
. Bạn có thể muốn thêm HISTCONTROL=ignorespace
( HISTCONTROL=ignoredups:ignorespace
hoặc một cái gì đó) vào của bạn ~/.bashrc
. Sau đó, bất kỳ dòng lệnh bắt đầu với một khoảng trắng được bỏ qua khỏi lịch sử.
Một khả năng khác là bắt đầu một phiên bash mới không lưu lịch sử của nó.
$ bash
$ unset HISTFILE
$ sooper-sekret-command
$ exit
$ #back in the parent shell
Nếu bạn cần tránh lưu trữ một số lệnh và bạn vẫn muốn sử dụng mũi tên lên để truy cập các lệnh trước đó, hãy sử dụng:
$ bash # open a new session.
$ unset HISTFILE # avoid recording commands to file.
$ commands not recorded
.
.
$ exit
$
Có bốn cách (cấp độ) để kiểm soát cách các lệnh được lưu trữ.
Đầu tiên và đơn giản nhất là sử dụng ignorespace
(hoặc ignboth):
$ HISTCONTROL="ignorespace${HISTCONTROL:+:$HISTCONTROL}"
Điều đó sẽ cho phép sử dụng một khoảng trắng trước các lệnh mà bạn muốn tránh bị ghi lại trong danh sách bộ nhớ history
. Và, do đó, vì không có lệnh nào được ghi trong bộ nhớ có thể được gửi đến tệp, nên cũng sẽ tránh một lệnh được gửi đến tệp được liệt kê trong $HISFILE
.
Tránh ghi lệnh vào tệp trong $HISTFILE
:
$ unset HISTFILE
Nếu không được đặt, lịch sử lệnh sẽ không được lưu khi thoát khỏi trình bao.
Null HISTFILE=''
và / hoặc thiết lập để HISTFILE=/dev/null
hoạt động với cùng một hiệu ứng. Hiểu rằng các lệnh vẫn đang được ghi vào danh sách bộ nhớ, thử history
lệnh hoặc mũi tên lên.
Cảnh báo: nếu HISTFILE được đặt lại trước khi shell tồn tại, tất cả những gì đã được ghi trong bộ nhớ đều có thể được ghi vào tệp.
Tránh ghi các lệnh mới vào danh sách lịch sử trong bộ nhớ. Và, như không có trong bộ nhớ, không thể được ghi vào tệp.
$ shopt -ou history # or set +o history
Kích hoạt lại với shopt -os history
(hoặc set -o history
)
Xóa tất cả các lệnh từ danh sách lịch sử trong bộ nhớ:
$ HISTSIZE=0
Tất cả các lệnh bị xóa (từ bộ nhớ) và do đó, không có gì có thể được lưu trữ vào tệp, cho đến khi biến được đặt lại thành một số giá trị số hợp lệ.
man history
sẽ không cắt giảm cho hầu hết chúng ta.
HISTIGNORE
, subsumes
chức năng của HISTCONTROL
.
LESS=+'/^ *HISTI' man bash
(không phải là "trang thủ công"?). @NathanBasan
Có một cách đơn giản để tắt lịch sử, vì vậy các lệnh sẽ không được lưu trong .bash_history
tệp.
Bạn phải đặt khoảng trắng hoặc không gian tab trước bất kỳ lệnh nào, để lệnh đó sẽ không được lưu trong lịch sử. Ví dụ:
$ ls
print the list of file
$ history
ls
history
$ pwd
print the current working directory
$ history
ls
history
Các pwd
lệnh sẽ không được lưu trữ trong lịch sử, bởi vì nó có khoảng trắng ở phía trước.
export HISTFILE=/dev/null
Đó là cách goto của tôi. Chỉ trong trường hợp unset HISTORY / HISTFILE / HISTCONTROL, v.v ... không hoạt động, xuất nó sang / dev / null luôn hoạt động với tôi.
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16)
HISTFILE
chỉ được kiểm tra khi thoát bash, vì vậy phương thức đầu tiên không hoạt động như vậy (nếu bạn khôi phục giá trị, lệnh sẽ được lưu).set +o history
không làm việc theo chỉ dẫn.