Terminal Linux chạy Bash có lịch sử tích hợp để theo dõi bạn làm gì gần đây. Để xem lịch sử phiên Bash, dùng lệnh built-in history:
$ echo "foo"
foo
$ echo "bar"
bar
$ history
1 echo "foo"
2 echo "bar"
3 history
Lệnh history không phải file thực thi trên filesystem như hầu hết lệnh, mà là hàm của Bash. Xác minh bằng type:
$ type history
history is a shell builtin
Điều khiển lịch sử
Giới hạn trên số dòng lịch sử shell định nghĩa bởi biến HISTSIZE. Bạn đặt biến này trong file .bashrc. Sau đây đặt lịch sử 3.000 dòng, sau đó dòng cũ nhất bị xóa nhường chỗ cho lệnh mới nhất ở cuối danh sách:
export HISTSIZE=3000
Có biến liên quan lịch sử khác. Biến HISTCONTROL kiểm soát lịch sử gì được lưu. Bạn ép Bash loại trừ lệnh bắt đầu bằng khoảng trống rỗng bằng cách đặt trong .bashrc:
export HISTCONTROL=$HISTCONTROL:ignorespace
Bây giờ, nếu gõ lệnh bắt đầu bằng khoảng trống, lệnh đó không ghi vào lịch sử:
$ echo "hello"
$ mysql -u bogus -h badpassword123 mydatabase
$ echo "world"
$ history
1 echo "hello"
2 echo "world"
3 history
Bạn cũng tránh entry trùng lặp:
export HISTCONTROL=$HISTCONTROL:ignoredups
Bây giờ, nếu gõ hai lệnh liên tiếp, chỉ một xuất hiện trong lịch sử:
$ ls
$ ls
$ ls
$ history
1 ls
2 history
Nếu thích cả hai loại bỏ, chỉ dùng ignoreboth:
export HISTCONTROL=$HISTCONTROL:ignoreboth
Xóa lệnh khỏi lịch sử
Đôi khi bạn lỡ gõ thông tin nhạy cảm vào shell, hoặc chỉ muốn dọn lịch sử để nó phản ánh chính xác bước bạn làm để thành công. Nếu muốn xóa lệnh khỏi lịch sử Bash, dùng tùy chọn -d với số dòng mục muốn xóa:
$ echo "foo"
foo
$ echo "bar"
bar
$ history | tail
535 echo "foo"
536 echo "bar"
537 history | tail
$ history -d 536
$ history | tail
535 echo "foo"
536 history | tail
537 history -d 536
538 history | tail
Để ngừng thêm entry history, đặt space trước lệnh, miễn là có ignorespace trong biến môi trường HISTCONTROL:
$ history | tail
535 echo "foo"
536 echo "bar"
$ history -d 536
$ history | tail
535 echo "foo"
Bạn xóa toàn bộ lịch sử phiên với tùy chọn -c:
$ history -c
$ history
$
Bài học lịch sử
Thao tác lịch sử thường ít nguy hiểm hơn nghe, đặc biệt khi bạn curating nó với mục đích. Ví dụ, nếu bạn tài liệu hóa vấn đề phức tạp, thường tốt nhất dùng lịch sử phiên ghi lệnh vì, bằng cách chèn vào lịch sử, bạn chạy chúng và test quy trình. Thường tài liệu hóa mà không làm dẫn đến bỏ sót bước nhỏ hoặc viết sai chi tiết nhỏ.
Dùng lịch sử phiên theo nhu cầu, và thực hiện quyền lực của bạn trên lịch sử khôn ngoan. Chúc hack lịch sử vui vẻ!