Các lệnh và mở rộng lịch sử Bash

Cac Lenh Va Mo Rong Lich Su Bash



Trong hướng dẫn này, chúng tôi sẽ trình bày cách làm việc với các lệnh lịch sử Bash.

điều kiện tiên quyết:

Để thực hiện các bước được trình bày trong hướng dẫn này, bạn cần có các thành phần sau:

  • Một hệ thống Linux được cấu hình đúng cách. Thủ tục thanh toán cách thiết lập máy ảo Ubuntu trong VirtualBox .
  • Làm quen cơ bản với giao diện dòng lệnh.

Lịch sử Bash

Bash là shell mặc định trong hầu hết các hệ thống Linux hiện đại. Là phiên bản kế thừa của “sh”, shell UNIX ban đầu, nó đi kèm với nhiều tính năng và cải tiến như thao tác thư mục, kiểm soát công việc, bí danh, lịch sử lệnh, v.v.







Bash theo dõi tất cả các lệnh đã được thực hiện trước đó từ thiết bị đầu cuối. Điều này có thể cực kỳ hữu ích trong nhiều tình huống như gỡ lỗi. Nó cũng có thể làm giảm nhu cầu gõ đi gõ lại các lệnh giống nhau/tương tự.



Để quản lý lịch sử, Bash đi kèm với hai lệnh tích hợp:



$ kiểu lịch sử





$ kiểu fc

Để lưu trữ lịch sử, Bash sử dụng hai kỹ thuật khác nhau:



  • Bất cứ khi nào làm việc với phiên trình bao, lịch sử của nó sẽ được lưu trong bộ nhớ.
  • Khi đóng, lịch sử được lưu trữ trong bộ nhớ sẽ được đổ vào một tệp lịch sử.

Tệp lịch sử mặc định mà Bash sử dụng được đặt tại:

$ con mèo ~ / .bash_history

Ngoài ra còn có một số biến môi trường và phím tắt thay đổi cách Bash xử lý lịch sử.

Làm việc với Lịch sử Bash

Sử dụng cơ bản

Để lấy danh sách các lệnh được chạy gần đây, hãy sử dụng lệnh sau:

$ lịch sử

Ở đây, tất cả các lệnh được lưu trữ trong bộ đệm được liệt kê. Mỗi lệnh đã gán giá trị số. Lệnh cũ nhất được gán với 1.

Chúng ta có thể giới hạn số lệnh in bằng lệnh sau:

$ lịch sử N

Ở đây, N là một số nguyên trong đó N >= 0. Đầu ra chứa N lệnh cuối cùng từ lịch sử.

Chúng ta cũng có thể sử dụng đầu ra song song với grep để lọc:

$ lịch sử | nắm chặt < sợi dây >

Để duyệt qua một lịch sử lâu dài, chúng ta có thể sử dụng lệnh “less”:

$ lịch sử | ít hơn

Xóa các lệnh khỏi Lịch sử

Nếu bạn cần xóa một lệnh cụ thể khỏi lịch sử, hãy sử dụng các lệnh sau:

$ lịch sử

$ lịch sử -d < lệnh_số >

$ lịch sử

Tương tự, để xóa các lệnh từ M đến N khỏi lịch sử, chúng ta có thể sử dụng các lệnh sau:

$ lịch sử

$ lịch sử -d M-N

$ lịch sử

Để xóa lịch sử khỏi bộ đệm RAM cho phiên cuối hiện tại, thay vào đó hãy sử dụng các lệnh sau:

$ lịch sử -c

$ lịch sử

Để xóa lịch sử khỏi tệp lịch sử được lưu trữ trên đĩa, chúng ta có thể ghi đè hoàn toàn bằng NULL:

$ con mèo / nhà phát triển / vô giá trị > $HISTFILE

Cài đặt lịch sử Bash

Có nhiều cách để điều chỉnh cách Bash xử lý lịch sử. Nhiều tùy chọn trong số này được quản lý bởi các biến môi trường.

Để thay đổi giá trị của chúng, chúng tôi chỉnh sửa tệp “bashrc”:

$ nano ~ / .bashrc

Sau khi chỉnh sửa, hãy lưu tệp và tải lại tệp trong Bash.

$ nguồn ~ / .bashrc

Để thực hiện các thay đổi trên toàn hệ thống, hãy chỉnh sửa “bashrc” được đặt tại các vị trí sau:

$ nano / vân vân / bash.bashrc

$ nano / vân vân / bashrc

Kích thước bộ đệm

Như đã đề cập trước đó, Bash sử dụng hai bộ đệm để lưu trữ lịch sử lệnh trong RAM (cho phiên hiện tại) và trong tệp đĩa (cho tất cả các phiên trước đó).

Kích thước của các bộ đệm này được kiểm soát bởi hai biến môi trường:

  • KÍCH THƯỚC LỊCH SỬ : Nó xác định số lượng mục để lưu trữ trong bộ đệm RAM.
  • KÍCH THƯỚC LỊCH SỬ : Nó xác định số lượng mục để lưu trữ trong tệp đĩa.

Chúng ta có thể thay đổi giá trị của chúng trong “bashrc” để phù hợp với nhu cầu của mình:

$ nano ~ / .bashrc

Ví dụ: để lưu trữ 5000 mục trong cả hai bộ đệm, hãy cập nhật “bashrc” với mã sau:

$ KÍCH THƯỚC LỊCH SỬ = 5000

$ KÍCH THƯỚC LỊCH SỬ = 5000

Loại trừ lệnh

Theo mặc định, Bash lưu trữ mọi lệnh chạy trong bộ đệm lịch sử. Tuy nhiên, chúng ta có thể cấu hình để Bash bỏ qua một số lệnh nhất định. Nó có thể hữu ích trong các trường hợp bạn phải chạy cùng một lệnh nhiều lần, làm đầy bộ đệm bằng thư rác.

  • KIỂM SOÁT LỊCH SỬ

Hãy bắt đầu với ví dụ lệnh sau:

$ tiếng vang 'nhà sư' && lịch sử 5

$ tiếng vang 'bonk' && lịch sử 5

Như đầu ra của lệnh lịch sử chứng minh, chỉ lệnh echo đầu tiên được đăng ký chứ không phải lệnh thứ hai.

Đây là hoạt động của biến môi trường HISTIGNORE. Nó yêu cầu Bash không ghi nhật ký các lệnh trong bộ đệm lịch sử dựa trên các mẫu nhất định. Các giá trị sau đây có sẵn:

  • bỏ qua : Nó không được ghi lại nếu một lệnh khớp với mục nhập lịch sử trước đó.
  • bỏ qua không gian : Nó sẽ không được ghi lại nếu một lệnh bắt đầu bằng khoảng trắng ở đầu.
  • bỏ qua cả hai : Nó áp dụng quy tắc của cả bỏ qua và bỏ qua.
  • tẩy xóa : Tất cả các dòng trước khớp với lệnh hiện tại sẽ bị xóa khỏi lịch sử.

Trong ví dụ đầu tiên, chúng tôi đã trình bày cách sử dụng không gian bỏ qua. Tuy nhiên, không phải tất cả các bản phân phối đều có thể gửi Bash với cấu hình này. Như mọi khi, chúng ta có thể thêm chúng vào “bashrc”:

$ KIỂM SOÁT LỊCH SỬ = bỏ qua cả hai

Cũng có thể kích hoạt nhiều tùy chọn bằng lệnh sau:

$ KIỂM SOÁT LỊCH SỬ =ignoredups:ignorespace

Ở đây, bỏ qua: bỏ qua không gian tương đương với bỏ qua cả hai.

  • LỊCH SỬ

Biến môi trường này có thể chứa một hoặc nhiều mẫu. Bất kỳ lệnh nào khớp với bất kỳ mẫu nào được mô tả bởi HISTIGNORE sẽ không được đăng ký vào bộ đệm lịch sử. Các mẫu được xác định bằng cách sử dụng các biểu thức chính quy.

Cấu trúc như sau:

$ LỊCH SỬ = '' : '' : ''

Ví dụ: để loại trừ các lệnh history và echo khỏi lịch sử Bash, hãy cập nhật HISTIGNORE như sau:

$ LỊCH SỬ = 'lịch sử' : 'tiếng vang *'

Chúng ta có thể sử dụng chuỗi lệnh sau để kiểm tra:

$ ls -l / đã từng là / thùy &> / nhà phát triển / vô giá trị

$ lịch sử

$ tiếng vang Chào thế giới

$ lịch sử

đánh dấu thời gian

Bash cũng có thể được cấu hình để ghi lại thời gian chạy lệnh. Nó có thể hữu ích trong các tình huống khác nhau như gỡ lỗi.

Để bật dấu thời gian trong lịch sử Bash, hãy cập nhật giá trị của HISTTIMEFORMAT:

$ ĐỊNH DẠNG THỜI GIAN LỊCH SỬ = ''

Tất cả các ký tự điều khiển định dạng thời gian có sẵn đều có sẵn trong trang hướng dẫn của lệnh ngày.

$ người đàn ông ngày

Danh sách sau đây bao gồm một số đơn giản:

  • %T: Thời gian
  • %d: Ngày
  • %m: Tháng
  • %y:Năm
$ ĐỊNH DẠNG THỜI GIAN LỊCH SỬ = '%T %d:'

Lịch sử bền bỉ

Khi làm việc với CLI, trong nhiều trường hợp, bạn sẽ thấy mình phải làm việc với nhiều thiết bị đầu cuối. Đây là nơi quản lý lịch sử của Bash có thể trở thành một nguồn đau đớn.

Theo mặc định, tệp lịch sử được cập nhật sau khi phiên đóng. Mặc dù nó tốt cho một phiên duy nhất, nhưng nó không đủ cho nhiều phiên đồng thời. Chúng tôi có thể giải quyết vấn đề này bằng cách buộc Bash cập nhật tệp lịch sử mỗi khi chạy lệnh.

Để làm như vậy, hãy cập nhật giá trị của PROMPT_COMMAND:

$ PROMPT_COMMAND = 'lịch sử -a'

Ở đây, biến PROMPT_COMMAND có thể chứa các lệnh hợp lệ. Nội dung của PROMPT_COMMAND được chạy trước khi Bash bắt đầu lấy đầu vào của người dùng. Lệnh “history –a” buộc lịch sử nối thêm nội dung vào tệp lịch sử.

Mở rộng lịch sử và người chỉ định

Bash đi kèm với một vài phím tắt tích hợp để tận dụng tính năng lịch sử của nó. Đây là danh sách những người chỉ định:

  • !! : Chạy lệnh cuối cùng từ lịch sử.
  • !N : Chạy lệnh thứ N từ lịch sử.
  • !-N : Chạy lệnh thứ N trước lệnh gần đây nhất trong lịch sử.
  • ! : Chạy lệnh gần đây nhất.

Chuỗi lệnh sau minh họa cách sử dụng của chúng:

$ tiếng vang 1

$ tiếng vang 2

$ tiếng vang 3

$ lịch sử

$ ! tiếng vang

$ ! - 3

$ ! 1

$ !!

Một số người chỉ định cũng làm việc với các đối số lệnh từ lịch sử:

  • !:* : Sử dụng tất cả các đối số của lệnh gần đây nhất.
  • !:^ : Sử dụng đối số đầu tiên của lệnh gần đây nhất.
  • !:N : Sử dụng đối số thứ N của lệnh gần đây nhất.
  • !:M-N : Sử dụng các đối số từ M đến N của lệnh gần đây nhất.
  • !:$ : Sử dụng đối số cuối cùng của lệnh gần đây nhất.

Chuỗi lệnh sau minh họa cách sử dụng của chúng:

$ tiếng vang 1 2 3 4 5 6 7

$ tiếng vang ! : *

$ tiếng vang 1 2 3 4 5 6 7

$ tiếng vang ! :^

$ tiếng vang 1 2 3 4 5 6 7

$ tiếng vang ! : 5

$ tiếng vang 1 2 3 4 5 6 7

$ tiếng vang ! : 1 - 5

$ tiếng vang 1 2 3 4 5 6 7

$ tiếng vang ! :$

Nếu bạn cần làm việc với các tham số của một lệnh khác, các ký hiệu chỉ định sẽ giống như sau:

  • !^ : Sử dụng đối số đầu tiên của lệnh .
  • !$ : Sử dụng đối số cuối cùng của lệnh .

Chuỗi lệnh sau thể hiện cách sử dụng của chúng:

$ ls -lh / đã từng là / đăng nhập &> / nhà phát triển / vô giá trị

$ chạm 1 .txt 2 .txt 3 .txt 4 .txt 5 .txt

$ tiếng vang ! chạm ^

$ tiếng vang ! chạm $

Lịch sử Phím tắt

Bên cạnh tất cả các lệnh và biến môi trường, Bash cũng hỗ trợ một số phím tắt để điều hướng lịch sử dễ dàng hơn:

  • Hướng lên phím mũi tên: Di chuyển về phía sau
  • Xuống phím mũi tên: Di chuyển về phía trước

Ngoài ra còn có các phím tắt khả dụng cho tìm kiếm lịch sử tương tác:

  • Ctrl + R : Tìm kiếm lệnh trong lịch sử.
  • Ctrl + O : Chạy lệnh đã chọn.
  • Ctrl + G : Thoát khỏi tìm kiếm tương tác.

Phần kết luận

Chúng tôi đã thảo luận chi tiết về lịch sử Bash. Chúng tôi đã học cách Bash lưu trữ lịch sử lệnh và cách tận dụng nó theo những cách khác nhau. Chúng tôi đã trình bày cách làm việc với lịch sử Bash bằng nhiều ví dụ khác nhau.

Quan tâm đến việc tìm hiểu thêm về Bash? Các Tiểu thể loại lập trình Bash chứa hàng trăm hướng dẫn về các tính năng khác nhau của Bash.

Chúc bạn tính toán vui vẻ!