Chạy lệnh trong bash mà không lưu trong lịch sử


Câu trả lời:


54

Thêm không gian trước lệnh. các lệnh bắt đầu bằng dấu cách không được đặt trong lịch sử:

root@ubuntu-1010-server-01:~# echo foo
foo
root@ubuntu-1010-server-01:~# history 
    1  echo foo
    2  history 
root@ubuntu-1010-server-01:~#  echo bar
bar
root@ubuntu-1010-server-01:~# history 
    1  echo foo
    2  history 

người đàn ông bash

  HISTCONTROL
         A  colon-separated  list of values controlling how commands are
         saved on the history list.  If  the  list  of  values  includes
         ignorespace,  lines  which begin with a space character are not
         saved in the history list.  A value of ignoredups causes  lines
         matching  the  previous history entry to not be saved.  A value
         of ignoreboth is shorthand for ignorespace and  ignoredups.   A
         value  of erasedups causes all previous lines matching the cur
         rent line to be removed from the history list before that  line
         is  saved.   Any  value  not  in the above list is ignored.  If
         HISTCONTROL is unset, or does not include a  valid  value,  all
         lines  read  by the shell parser are saved on the history list,
         subject to the value of HISTIGNORE.  The second and  subsequent
         lines  of a multi-line compound command are not tested, and are
         added to the history regardless of the value of HISTCONTROL.

1
Tốt hơn câu trả lời của tôi về $ HISTIGNORE sẽ là. +1
Matt Simmons

1
học điều mới mỗi ngày.
David Rickman

1
Tôi thường thiết lập này trong /etc/profilekhi HISTCONTROL=ignorebothvà xuất khẩu biến HISTCONTROL.
ewwhite

Điều này dường như không làm việc cho tôi? Nó dường như viết vào lịch sử, nhưng chỉ bao gồm không gian ở phía trước. 486 echo test 487 history 488 echo testspace 489 history
Peter

Bỏ qua nhận xét cuối cùng, có vẻ như nó hoạt động trong Ubuntu nhưng không phải là Debian / các hệ điều hành khác.
Peter

3

Cũng đáng đề cập đến thủ thuật để giết phiên đăng nhập hiện tại thay vì thoát bình thường (do đó không tạo cơ hội để lưu lịch sử). Điều này đặc biệt hữu ích khi bạn đăng nhập vào a / c được chia sẻ, thay vì nhớ tiền tố bằng dấu cách, bạn có thể kết thúc phiên bằng cách giết nó. Cách đơn giản nhất để giết là chạy lệnh này:

kill -9 0

Pid 0 luôn đề cập đến PID của quy trình hiện tại, vì vậy về cơ bản bạn đang gửi tín hiệu tiêu diệt chết người cho chính nó. Tôi cũng thường sử dụng điều này thay vì thoát bình thường, vì tôi thường có các phiên treo khi thoát bình thường, có thể do một số cấu hình sai.


1

Một giải pháp khác là đặt tệp lịch sử vào một thư mục:

export HISTFILE=/
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.