Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình Bash

Nâng cao Bash History: Mẹo thực tế theo dõi lệnh tốt hơn

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ẻ!