Android

Lệnh lịch sử trong linux (bash history)

Bash history, date and time for each command - Fecha y hora en tu historial de comandos

Bash history, date and time for each command - Fecha y hora en tu historial de comandos

Mục lục:

Anonim

, chúng tôi 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 thông qua danh sách và thao tác với tệp lịch sử.

Sử dụng lệnh mở rộng lịch sử và lịch sử

history là một vỏ dựng sẵn, và hành vi của nó có thể hơi khác nhau từ vỏ này sang vỏ khác. Chúng tôi sẽ đề cập đến phiên bản history dựng sẵn của Bash.

Ở 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, lệnh history sẽ hiển thị toàn bộ danh sách lịch sử với các 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

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

!467

Một cách khác để thực thi lệnh là sử dụng !word Mở rộng !word . word dùng để chỉ 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 phù hợp trên màn hình. Để xem đầu ra một trang tại một thời điểm, hãy chuyển nó sang chương trình máy nhắn tin như lệnh more hay less :

history | less

Để hiển thị n dòng cuối cùng, chuyển số dưới dạng đố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 mũi tên up down để điều hướng các mục trong danh sách. Khi lệnh bạn đã tìm kiếm được hiển thị, nhấn Enter để thực thi nó.

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

!!

Điều này đặc biệt hữu ích khi bạn quên gõ một lệnh bằng sudo và thay vì gõ lại lệnh bạn có thể gõ:

sudo !!

!-1 giống như !! và thực thi lệnh cuối cùng từ danh sách lịch sử, !-2 giây đế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ế từ Word11 bằng cách sử dụng Word word2. Nếu bạn vô tình gõ sduo command thay vì sudo command bạn có thể lặp lại lệnh bằng từ đúng với:

^sduo^sudo^

Sử dụng grep để lọc đầu ra. Ví dụ: để xem tất cả các lệnh, kể cả nano 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 lệnh nano setup.py chỉ cần gõ:

!356

Một cách khác để tìm kiếm trong lịch sử lệnh là bằng cách 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)`':

Shell sẽ hiển thị một dòng phù hợp. Để di chuyển đến đề xuất phù hợp tiếp theo, nhấn lại Ctrl-R .

Kiểm tra hướng dẫn Bash để biết thêm thông tin về Mở rộng Lịch sử, 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ừ tệp .bash_history . Danh sách các lệnh được thực thi trong phiên hiện tại được lưu trong bộ nhớ và được lưu vào tệp khi đóng phiên.

Tùy chọn -a cho phép bạn lưu danh sách lịch sử phiên hiện tại vào tệp .bash_history :

history -a

Tùy chọn -w ghi danh sách lịch sử đầy đủ vào tệp 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ử đầy đủ hoặc xóa một số phần nhất định.

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

history -c

Để xóa một dòng hoặc dòng cụ thể 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ụ: để xóa các dòng giữa 365 và 375 (bao gồm cả các dòng đó), bạn sẽ gõ:

history -d 365 375

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 khỏi tệp .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ử, đặ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. Biến HISTSIZE cho phép bạn thay đổi giá trị này. Để đặt thành 10000, hãy thêm dòng sau vào tệp .bashrc của bạn:

HISTSIZE=10000

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

  • ignorespace qua không gian - 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à một tốc ký, bao gồm cả bỏ qua và ignoredups .

HISTCONTROL=ignoreboth

Khi biến HISTTIMEFORMAT được đặt, Bash sẽ thêm dấu thời gian thực hiện cho 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ị theo định dạng sau:

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

Phần kết luận

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

thiết bị đầu cuối lịch sử