Nếu bạn dành nhiều thời gian cho dòng lệnh, thì việc xem lịch sử các lệnh bạn đã chạy trước đó có thể là một tính năng hữu ích có thể giúp công việc hàng ngày của bạn dễ dàng hơn và cải thiện năng suất của bạn.

Trong bài này, chúng ta sẽ nói về lệnh history, cho phép bạn xem danh sách các lệnh đã thực hiện trước đó, tìm kiếm trong danh sách và thao tác với tệp lịch sử.

Sử dụng lệnh history và history mở rộng

history là một lệnh tích hợp sẵn của shell và hành vi của nó có thể hơi khác nhau giữa các shell. Chúng ta sẽ đề cập đến phiên bản nội trang Bash của history.

Ở dạng đơn giản nhất, khi được gọi mà không có bất kỳ tùy chọn hoặc đối số nào, history sẽ hiển thị toàn bộ danh sách lịch sử với số dòng.

history
...
467  git push
468  tail -f var/logs/error
469  nano +22,5 functions.sh
470  source project-env/bin/activate
471  history

Việc nhập !n thực hiện lệnh thứ n từ danh sách lịch sử và lệnh !-n n dòng trở lại. Trong ví dụ sau, chúng ta đang thực hiện lệnh trên dòng 467:

!467

Một cách khác để thực hiện một lệnh là sử dụng !word mở rộng. word đề cập đến lệnh gần đây nhất bắt đầu bằng ‘word’.

Thông thường, history hiển thị nhiều dòng đầu ra không vừa trên màn hình. Để xem đầu ra từng trang một, hãy chuyển nó đến một chương trình như more hoặc less lệnh:

history | less

Để hiển thị n dòng cuối cùng , hãy chuyển số làm đối số cho lệnh. Ví dụ, để chỉ xem năm dòng cuối cùng từ danh sách lịch sử, bạn sẽ nhập:

history -5

Sử dụng các phím up và down mũi tên để điều hướng các mục nhập trong danh sách. Khi lệnh bạn đã tìm kiếm được hiển thị, hãy nhấn Enter để thực hiện lệnh đó.

Gõ !! để thực hiện lệnh trước:

!!

Điều này đặc biệt hữu ích khi bạn quên sử dụng một lệnh sudo và thay vì nhập lại lệnh, bạn có thể nhập:

sudo !!

!-1 giống như !! và thực hiện lệnh cuối cùng từ danh sách lịch sử, !-2 thứ hai đến cuối cùng, v.v.

^word1^word2^ mở rộng cho phép bạn chạy lại lệnh cuối cùng thay thế “word1” bằng “word2”. Nếu bạn vô tình nhập sduo command thay vì sudo command bạn có thể lặp lại lệnh bằng cách sử dụng từ đúng với:

^sduo^sudo^

Sử dụng grep lệnh để lọc đầu ra. Ví dụ: để xem tất cả các lệnh bao gồm cả “nano”, bạn sẽ chạy:

history | grep nano
302  sudo nano /etc/resolv.conf
356  nano setup.py
413  sudo nano /etc/hosts
469  nano +22,5 functions.sh

Bây giờ, nếu bạn muốn chạy lại nano setup.py, chỉ cần gõ:

!356

Một cách khác để tìm kiếm lịch sử lệnh là nhấn Ctrl-R. Lời nhắc sẽ thay đổi thành như sau và bạn có thể bắt đầu tìm kiếm lệnh đã thực hiện trước đó.

(reverse-i-search)`':

Vỏ sẽ hiển thị một dòng phù hợp. Để chuyển đến đề xuất phù hợp tiếp theo, hãy nhấn Ctrl-Rlại.

Kiểm tra hướng dẫn sử dụng Bash để biết thêm thông tin về Mở rộng lịch sử , công cụ sửa đổi và chỉ định.

Lưu danh sách lịch sử

Theo mặc định, khi bắt đầu một phiên mới, Bash đọc danh sách lịch sử từ file .bash_history. Danh sách các lệnh được thực hiện trong phiên hiện tại được lưu trong bộ nhớ và được lưu vào tệp khi phiên đóng.

Nếu bạn đã mở một số phiên trình shell, chỉ lịch sử của phiên được đóng gần nhất mới được lưu.

Tùy chọn -a cho phép bạn lưu danh sách lịch sử phiên vãng lai trong các .bash_history:

history -a

Tùy chọn -w ghi danh sách lịch sử hoàn chỉnh để các tập tin lịch sử.

history -w

Xóa lịch sử

Lệnh history cho phép bạn xóa danh sách lịch sử hoàn chỉnh hoặc loại bỏ các phần nhất định.

Để xóa danh sách lịch sử, hãy sử dụng tùy chọn -c:

history -c

Để xóa một dòng cụ thể hoặc các dòng giữa vị trí bắt đầu và kết thúc khỏi danh sách lịch sử, hãy sử dụng tùy chọn -d.

Ví dụ: để loại bỏ các dòng từ 365 đến 375 (bao gồm các dòng đó), bạn sẽ nhập:

history -d 365 375

Nếu bạn chỉ cung cấp một số cho tùy chọn -d, lệnh sẽ xóa dòng đã cho.

Khi một số nguyên âm được sử dụng, các dòng được đếm ngược từ cuối danh sách lịch sử.

Các lệnh trên xóa danh sách lịch sử, được lưu trong bộ nhớ, nhưng không xóa các mục nhập khỏi file .bash_history trên đĩa. Để xóa tệp, bạn cần ghi danh sách lịch sử vào tệp:

history -c
history -w

Sửa đổi hành vi lịch sử

Hành vi của lịch sử Bash có thể được xác định bằng cách sử dụng một số biến môi trường khác nhau . Khi sửa đổi hành vi lịch sử, hãy đặt các biến trong ~/.bashrc hoặc bất kỳ tệp cấu hình nào khác được tải khi người dùng đăng nhập.

Theo mặc định, Bash giữ 500 dòng trong danh sách lịch sử lệnh. Các biến HISTSIZE cho phép bạn thay đổi giá trị này. Để đặt nó thành 10000, hãy thêm dòng sau vào file .bashrc của bạn :

HISTSIZE=10000

Các biến HISTCONTROL chấp nhận một danh sách phân cách bằng dấu hai chấm các giá trị mà xác định cách các lệnh được lưu trong danh sách lịch sử:

  • ignorespace – các lệnh bắt đầu bằng dấu cách không được lưu trong danh sách lịch sử.
  • ignoredups – các lệnh trùng lặp không được lưu.
  • ignoreboth– là cách viết tắt, bao gồm cả ignorespacev à ignoredups.
HISTCONTROL=ignoreboth

Khi biến HISTTIMEFORMAT được đặt, Bash sẽ thêm dấu thời gian thực thi lệnh trên mỗi dòng.

Ví dụ: nếu bạn đặt:

HISTTIMEFORMAT="%F %T: "

Lịch sử sẽ được hiển thị ở định dạng sau:

413  2019-10-27 21:13:07: sudo nano /etc/hosts

Phần kết luận

Lệnh history sẽ hiển thị một danh sách các lệnh thực thi trước đó. Ví dụ: bạn có thể sử dụng lịch sử để xem một lệnh dài mà bạn đã sử dụng trước đó mà bạn không thể nhớ.

Nếu bạn có bất kỳ câu hỏi hoặc phản hồi nào, vui lòng để lại bình luận.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments