Tại sao bash không lưu trữ các lệnh bắt đầu bằng dấu cách?


48

Nếu tôi thực hiện một chuỗi các lệnh như:

$ ls
$ grep abc file.txt

và sau đó sử dụng phím mũi tên lên để lấy cái trước đó, thiết bị đầu cuối sẽ hiển thị cmd cuối cùng (chính là grepở đây)

Nhưng nếu tôi làm một cái gì đó như thế này:

$ ls
$   grep abc file.txt

nơi grepcó trước không gian, nhấn lên cho ls, không grep.

Tại sao lại thế này?


Câu trả lời:


52
echo $HISTCONTROL
ignoreboth

người đàn ông bash:

LỊCH SỬ

Một danh sách các giá trị được phân tách bằng dấu hai chấm kiểm soát cách các lệnh được lưu trong danh sách lịch sử. Nếu danh sách các giá trị bao gồm ignorespace, các dòng bắt đầu bằng ký tự khoảng trắng sẽ không được lưu trong danh sách lịch sử. Giá trị của các ignoredupsdòng nguyên nhân khớp với mục lịch sử trước đó sẽ không được lưu. Một giá trị ignorebothlà tốc ký cho ignorespaceignoredups.


3
HISTCONTROLđược đặt thành ignorebothmặc định ~/.bashrcđược cung cấp bởi debianít nhất.
Stéphane Chazelas

1
Trường hợp sử dụng là ignorespacegì?
Ciro Santilli 心 心 事件

1
Trong Ubuntu 14.04, mặc định ignorebothlà loại gây phiền nhiễu.
Nick Gammon

6
Ciro, tôi cho rằng nó để bạn có thể nhập lệnh như thế nào echo "drop database mydb" | mysql -u root -pPasswordvà không lưu nó trong lịch sử.
Jeremy

2
Đối với người dùng mac, HISTCONTROL không được đặt thành bất cứ điều gì, vì vậy bạn sẽ cần thêm nó vào bash_profile hoặc tương tự - unix.stackexchange.com/questions/115917/ trộm
chrismarx
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.