Bourne Again Shell, tốt hơn được gọi là bash, là mặc định cho hầu hết các bản phân phối Linux. Nó cực kỳ mạnh mẽ như xa như vỏ lệnh đi, và nắm giữ tất cả các loại thủ thuật tiện lợi cho những người sẵn sàng để tìm hiểu. Một trong những tính năng tốt nhất, theo ý kiến ​​của tôi, hệ thống lịch sử lệnh.

Có rất nhiều tùy chọn để sử dụng với lịch sử bash, một số trong số chúng tôi sử dụng gần như mỗi khi tôi mở một lệnh shell. Hôm nay tôi sẽ đề cập đến một số khía cạnh hữu ích nhất của lịch sử, nhưng tôi chắc chắn sẽ không thể phủ nhận tất cả.

Mũi tên lên / xuống

Nhiều người trong số các bạn có thể biết điều này, nhưng đối với bất cứ ai không, nó sẽ làm cho cuộc sống của bạn dễ dàng hơn nhiều. Bất cứ lúc nào bạn đang ở trong trình bao lệnh, chỉ cần sử dụng các mũi tên lên và xuống trên bàn phím của bạn để di chuyển qua danh sách các lệnh đã nhập trước đó. Lần sau khi bạn nhập một lệnh dài để có lỗi đánh máy, bạn không phải nhập lại toàn bộ nội dung chỉ cần nhấn mũi tên lên và thực hiện bất kỳ chỉnh sửa nào là cần thiết.

!!

Một tính năng tương tự với một tính năng được liệt kê ở trên là cú đúp (!!). Các ký tự được nhập vào trong trình bao đại diện cho lệnh được gõ cuối cùng. Giả sử bạn đang cố chạy lệnh chỉ để tìm ra rằng bạn cần quyền root để thực hiện điều đó. Thay vì gõ lại toàn bộ lệnh, bạn có thể chỉ cần nhập

 sudo !! 

Bash sẽ thay thế !! cho lệnh trước, như trong ví dụ bên dưới.

Điều này cũng làm việc xa hơn nữa, bạn có thể làm một cái gì đó như

 ! -5 

để gọi lại lệnh 5 mục trong lịch sử.

! (từ)

Có lẽ một vài ngày trước, bạn đã gõ một lệnh dài, phức tạp vào trong trình bao của mình, ví dụ như một loạt các tùy chọn cho "wterm". Bạn có thể tìm và nhập lại bằng lệnh bằng cách sử dụng tìm kiếm tích hợp trong lịch sử. Bạn chỉ cần thêm vài chữ cái đầu tiên của lệnh sau! và bash sẽ tìm thấy nó.

Hãy cẩn thận với điều này. Bạn có thể kết thúc chạy một cái gì đó khác với những gì bạn mong đợi. Không sử dụng lệnh này cho các lệnh nguy hiểm như “rm” hoặc “fdisk”.

! (từ)

Điều này tương tự như tính năng cuối cùng ở chỗ nó tìm kiếm lịch sử cho từ đã nhập, nhưng không giống như! (Từ), từ này sẽ tìm thấy từ bất kỳ nơi nào trong lệnh, không chỉ từ đầu.

Hãy cẩn thận với điều này. Bạn có thể kết thúc chạy một cái gì đó khác với những gì bạn mong đợi. Không sử dụng lệnh này cho các lệnh nguy hiểm như “rm” hoặc “fdisk”.

Ctrl-R

Đây có thể là công cụ lịch sử yêu thích cá nhân của tôi. Đó là một chút giống như ! mục ở trên, nhưng tương tác. Trong shell lệnh của bạn, nhấn Ctrl-R, và nó sẽ bắt đầu tìm kiếm. Khi bạn nhập, bash sẽ tìm kiếm lịch sử và hiển thị cho bạn kết quả khi bạn nhập. Khi nó hiển thị lệnh bạn muốn, chỉ cần nhấn enter và nó sẽ chạy lệnh đó. Điều này có thể an toàn hơn những thứ như thế ! bởi vì bạn có thể thấy những gì lệnh sẽ được trước khi bạn chạy nó, vì vậy bạn không phải đoán hoặc dựa vào bộ nhớ.

Tìm kiếm thủ công

Có lẽ bạn không thích cách Ctrl-R hoạt động, hoặc bạn muốn xem TẤT CẢ các lệnh bạn đã nhập, hoặc chỉ các lệnh có chứa một từ cụ thể. Lệnh lịch sử sẽ hiển thị cho bạn toàn bộ lịch sử lệnh của bạn, cùng với số lịch sử của mỗi lệnh (giữ suy nghĩ đó, chúng tôi sẽ trình bày các số đó trong giây lát).

Bạn cũng có thể chỉ định số lượng các mục mà lệnh lịch sử sẽ hiển thị. Để xem 10 mục cuối cùng trong lịch sử, bạn có thể nhập

 lịch sử 10 

Để xem tất cả các mục lịch sử có chứa một từ cụ thể, bạn có thể sử dụng grep để lọc kết quả, như dưới đây.

!(con số)

Khi bạn sử dụng lệnh lịch sử để xem danh sách lịch sử lệnh của mình, bạn sẽ thấy mỗi mục trong danh sách có một số liên kết với nó. Bạn có thể sử dụng nó để gọi lại lệnh cụ thể đó. Ví dụ, mục 87 có thể chạy lại bằng cách nhập

 ! 87 

vào vỏ của bạn.

Thay thế từ

Cái này khá tuyệt. Đã bao nhiêu lần bạn viết ra một số lệnh dài lớn chỉ để nhận ra bạn đặt, nói, hdd khi bạn muốn hdc ? Vâng bash có bạn bảo hiểm. Bạn có thể thay thế một từ trong lệnh trước đó bằng một từ khác bằng cách sử dụng "^", như trong ví dụ bên dưới

Quản lý lịch sử của bạn

Theo mặc định, lịch sử được lưu trong ~ / .bash_history. Bạn có thể xử lý tệp này tuy nhiên bạn thấy phù hợp, nhưng có một số điều hữu ích mà bạn có thể thử để quản lý nó một cách tự động. Cụ thể là, thiết lập các biến môi trường HISTSIZEHISTFILESIZE . Để đặt số mục nhập có thể được lưu trong tệp lịch sử thành 1000, hãy nhập

 xuất HISTFILESIZE = 1000 

vào vỏ của bạn. Điều này sẽ giới hạn tập tin đến 1000 mục. Nếu bạn muốn thực hiện thay đổi này vĩnh viễn, hãy đặt lệnh xuất đó vào tệp .bashrc hoặc .bash_profile của bạn.