Cách sử dụng Lịch sử Bash của bạn trong Linux hoặc MacOS Terminal

Mục lục:

Cách sử dụng Lịch sử Bash của bạn trong Linux hoặc MacOS Terminal
Cách sử dụng Lịch sử Bash của bạn trong Linux hoặc MacOS Terminal

Video: Cách sử dụng Lịch sử Bash của bạn trong Linux hoặc MacOS Terminal

Video: Cách sử dụng Lịch sử Bash của bạn trong Linux hoặc MacOS Terminal
Video: Cách kích hoạt chức năng ECG trên APPLEWATCH tại Việt Nam cực đơn giản-REVIEW ECG APPLEWATCH EASY - YouTube 2024, Có thể
Anonim
Vỏ bash là môi trường đầu cuối tiêu chuẩn đi kèm với hầu hết các bản phân phối Linux, đi kèm với macOS và có sẵn để cài đặt trên Windows 10. Nó ghi nhớ các lệnh bạn nhập và lưu trữ chúng trong một tệp lịch sử. Bạn có thể biết một số thông tin cơ bản về lịch sử bash, nhưng nó mạnh hơn rất nhiều so với bạn có thể nhận ra.
Vỏ bash là môi trường đầu cuối tiêu chuẩn đi kèm với hầu hết các bản phân phối Linux, đi kèm với macOS và có sẵn để cài đặt trên Windows 10. Nó ghi nhớ các lệnh bạn nhập và lưu trữ chúng trong một tệp lịch sử. Bạn có thể biết một số thông tin cơ bản về lịch sử bash, nhưng nó mạnh hơn rất nhiều so với bạn có thể nhận ra.

Các phím tắt bàn phím

Để cuộn qua lịch sử bash của bạn, bạn có thể sử dụng một vài phím tắt hữu ích của bash. Nhấn các phím tắt và lệnh bạn đã sử dụng trước đó sẽ xuất hiện tại dấu nhắc.

  • Mũi tên lên hoặc là Ctrl + P: Chuyển đến lệnh trước trong lịch sử của bạn. Nhấn phím nhiều lần để quay lại qua các lệnh bạn đã sử dụng.
  • Mũi tên xuống hoặc là Ctrl + N: Chuyển đến lệnh tiếp theo trong lịch sử của bạn. Nhấn phím nhiều lần để đi tiếp qua các lệnh bạn đã sử dụng.
  • Alt + R: Hoàn nguyên mọi thay đổi đối với lệnh bạn đã kéo từ lịch sử của mình nếu bạn đã chỉnh sửa lệnh đó trên dòng hiện tại.

Bash cũng có chế độ "thu hồi" đặc biệt mà bạn có thể sử dụng để tìm kiếm các lệnh bạn đã chạy trước đó, thay vì cuộn qua từng lệnh một.

  • Ctrl + R: Nhớ lại lệnh cuối cùng khớp với các ký tự bạn cung cấp. Nhấn phím tắt này và bắt đầu nhập để tìm kiếm lịch sử bash của bạn cho một lệnh.
  • Ctrl + O: Chạy lệnh bạn tìm thấy bằng Ctrl + R.
  • Ctrl + G: Để chế độ tìm kiếm lịch sử mà không cần chạy lệnh.
Image
Image

Xem Lịch sử Bash của bạn

Bạn có thể in toàn bộ lịch sử bash của mình vào màn hình bằng cách chạy một lệnh duy nhất:

history

Bạn sẽ thấy danh sách tất cả các lệnh trong lịch sử bash của mình, cùng với một số ở bên trái mỗi lệnh. Lệnh có “1” bên cạnh nó là lệnh cũ nhất trong lịch sử bash của bạn, trong khi lệnh có số cao nhất là số gần đây nhất.

Bạn có thể làm bất cứ điều gì bạn thích với đầu ra. Ví dụ: bạn có thể đưa nó vào
Bạn có thể làm bất cứ điều gì bạn thích với đầu ra. Ví dụ: bạn có thể đưa nó vào

grep

lệnh để tìm kiếm lịch sử lệnh của bạn.

history | grep your_search

Bạn cũng có thể ống nó vào
Bạn cũng có thể ống nó vào

tail

để chỉ xem một số lượng nhỏ các lệnh gần đây bạn đã chạy. Ví dụ, lệnh sau đây sẽ hiển thị 5 mục cuối cùng trong lịch sử của bạn.

history | tail -5

Image
Image

Chạy lệnh từ lịch sử của bạn

Bash có thể nhanh chóng "mở rộng" các lệnh trước đó, hoặc mở rộng chúng và sửa đổi chúng. Tính năng này được gọi là "mở rộng lịch sử" và sử dụng dấu chấm than, được gọi là "bang". Chỉ cần nhập chúng vào lời nhắc và nhấn Enter để chạy chúng như bạn sẽ chạy bất kỳ lệnh nào khác.

Để chạy một lệnh cụ thể từ lịch sử của bạn theo số của nó, sử dụng lệnh sau:

!#

Ví dụ: giả sử bạn muốn chạy lệnh thứ 12 từ lịch sử bash của bạn. Đó là lệnh có dấu “12” ở bên trái của nó khi bạn chạy

history

chỉ huy. Bạn gõ lệnh sau đây.

!12

Để chạy lại lệnh cuối cùng bạn đã chạy, hãy nhập như sau. Điều này có tác dụng tương tự như nhấn mũi tên Lên một lần để xem lệnh trước đó và sau đó nhấn Enter.
Để chạy lại lệnh cuối cùng bạn đã chạy, hãy nhập như sau. Điều này có tác dụng tương tự như nhấn mũi tên Lên một lần để xem lệnh trước đó và sau đó nhấn Enter.

!!

Bạn cũng có thể tham khảo một lệnh một số dòng nhất định. Ví dụ,

!-2

sẽ chạy lệnh thứ hai đến lệnh cuối cùng bạn đã chạy.

!!

có nghĩa giống như

!-1

This expansion works anywhere on the line. You can add anything you like before or after
This expansion works anywhere on the line. You can add anything you like before or after

!!

hoặc bất kỳ biểu thức nào khác trong phần này. Ví dụ, bạn có thể gõ lệnh sau để chạy lại lệnh cuối cùng bạn đã chạy qua

sudo

cho nó đặc quyền root. Điều này đặc biệt hữu ích nếu bạn quên thêm

sudo

trước khi chạy lệnh.

sudo !!

Hoặc, ví dụ, bạn có thể chạy lại lệnh trước đó và đặt đầu ra của nó thành grep để tìm kiếm một số văn bản.

!! | grep text

Để tìm kiếm một lệnh trong lịch sử của bạn và chạy nó, gõ như sau. Thao tác này sẽ chạy lệnh cuối cùng khớp với văn bản bạn chỉ định:
Để tìm kiếm một lệnh trong lịch sử của bạn và chạy nó, gõ như sau. Thao tác này sẽ chạy lệnh cuối cùng khớp với văn bản bạn chỉ định:

!text

Vì vậy, nếu gần đây bạn đã chạy lệnh bắt đầu bằng

ping

bạn có thể chạy lệnh sau để tìm kiếm nó. Thao tác này sẽ tìm kiếm ngược lại thông qua lịch sử của bạn, xác định lệnh gần đây nhất bắt đầu bằng “

pi

“, Và ngay lập tức chạy nó:

!pi

Bạn có thể nối thêm
Bạn có thể nối thêm

:p

với bất kỳ mở rộng ở trên và bash sẽ in lệnh đến thiết bị đầu cuối mà không cần chạy nó. Điều này hữu ích nếu bạn muốn xác nhận bạn đang chọn đúng lệnh trước khi bạn chạy nó.

!12:p

!!:p

!text:p

Image
Image

Sử dụng lại các đối số từ lịch sử của bạn

Bash cũng cho phép bạn chạy một lệnh mới, nhưng sử dụng các đối số từ các lệnh trước đó trong lịch sử của bạn. Điều này có thể giúp bạn nhanh chóng sử dụng lại các đối số dài hoặc phức tạp mà không phải nhập lại chúng.

command !$

Ví dụ: giả sử bạn đã chạy lệnh

touch /home/chris/some_long_file_name_you_dont_want_to_type_again

. Bây giờ bạn muốn chạy lệnh

nano /home/chris/some_long_file_name_you_dont_want_to_type_again

. Thay vì gõ toàn bộ điều từ đầu, bạn có thể chạy:

nano !$

Các

!$

sẽ làm cho bash tự động điền vào đối số cuối cùng từ lệnh trước của bạn.

Điều này chỉ lấp đầy trong đối số cuối cùng. Vì vậy, nếu bạn chạy
Điều này chỉ lấp đầy trong đối số cuối cùng. Vì vậy, nếu bạn chạy

ping google.com -c 4

và sau đó chạy

ping !$

điều này sẽ chỉ mở rộng thành “

ping 4

“.

Để khắc phục tình trạng này, bạn có thể sử dụng thủ thuật sau đây để mở rộng đối số đầu tiên trên dòng, thay vì đối số cuối cùng:

command !^

Vì vậy, nếu bạn chạy

ping google.com -c 4

và sau đó chạy

ping !^

bash sẽ mở rộng này thành “

ping google.com'

Để điền vào tất cả các đối số được sử dụng trong lệnh trước thay vì chỉ một đối số, bạn sẽ sử dụng các đối số sau:
Để điền vào tất cả các đối số được sử dụng trong lệnh trước thay vì chỉ một đối số, bạn sẽ sử dụng các đối số sau:

command !*

Vì vậy, nếu bạn chạy

ping !*

thay vào đó, bash sẽ tự động điền vào tất cả các đối số bạn đã sử dụng trong lệnh trước đó.

Bạn có thể sử dụng cùng một thủ thuật bạn sử dụng để chạy các lệnh từ lịch sử của mình để lấy các đối số từ chúng. Chỉ cần sử dụng mẫu sau.
Bạn có thể sử dụng cùng một thủ thuật bạn sử dụng để chạy các lệnh từ lịch sử của mình để lấy các đối số từ chúng. Chỉ cần sử dụng mẫu sau.

command !abc:#

Ví dụ, chúng tôi chạy lệnh

sudo hostname ubuntu

sớm hơn. Nếu chúng ta chạy lệnh sau, bash sẽ tìm kiếm ngược lại thông qua lịch sử để tìm lệnh cuối cùng bắt đầu bằng các chữ cái chúng ta gõ và điền vào đối số mà chúng ta chỉ định. Vì vậy, nếu chúng ta chạy

echo !su:2

bash sẽ tìm lại để tìm lệnh cuối cùng bắt đầu bằng “

su

”Và điền vào đối số thứ hai của nó, đó là“

ubuntu

“.

Thủ thuật khác hoạt động như bạn mong đợi. Ví dụ, thay thế số bằng dấu hoa thị, được gọi là ký tự đại diện, làm cho bash điền vào tất cả các đối số từ lệnh:

command !abc:*

Image
Image

Chạy lại lệnh trước và sửa đổi nó

Bash cũng cho phép bạn chạy lại lệnh trước và chỉ định một thứ cần được thay đổi. Điều này có thể hữu ích cho việc sửa lỗi đánh máy trong một lệnh. Ví dụ, lệnh sau sẽ chạy lại lệnh trước đó, thay thế văn bản “

abc

"Trong đó với văn bản"

xyz

“.

^abc^xyz

Ví dụ: nếu bạn vô tình chạy

ping gogle.com

sau đó bạn có thể chạy

^gog^goog

và bash sẽ chạy lệnh

ping google.com

thay thế.

Image
Image

Nơi lưu trữ lịch sử của bạn, và làm thế nào để xóa nó

Bash shell lưu trữ lịch sử các lệnh bạn đã chạy trong tệp lịch sử của tài khoản người dùng của bạn tại ~ /.bash_history theo mặc định. Ví dụ: nếu tên người dùng của bạn là bob, bạn sẽ tìm thấy tệp này tại /home/bob/.bash_history.

Bởi vì lịch sử của bạn được lưu trữ trong một tập tin, nó vẫn tồn tại giữa các phiên. Bạn có thể chạy một số lệnh, đăng xuất, quay lại vào ngày hôm sau và các lệnh đó sẽ vẫn nằm trong tệp lịch sử của bạn đã sẵn sàng để xem và sử dụng. Mỗi tài khoản người dùng có tệp lịch sử riêng của nó với một lịch sử lệnh riêng biệt.

Để xóa lịch sử bash của bạn, bạn có thể chạy lệnh sau. Thao tác này sẽ xóa nội dung của tệp.bash_history của tài khoản người dùng của bạn:

history -c

Bash chỉ ghi nhớ một số lệnh hạn chế theo mặc định, ngăn không cho tệp lịch sử phát triển quá lớn. Số lượng mục lịch sử bash nhớ được kiểm soát bởi
Bash chỉ ghi nhớ một số lệnh hạn chế theo mặc định, ngăn không cho tệp lịch sử phát triển quá lớn. Số lượng mục lịch sử bash nhớ được kiểm soát bởi

HISTSIZE

biến. Mặc định thường là 500 hoặc 1000 mục nhập. Bạn có thể chạy lệnh sau để xem kích thước lịch sử bash trên hệ thống của bạn.

echo $HISTSIZE

Để đặt lịch sử của bạn về 0, hãy chạy lệnh sau.

HISTSIZE=0

Đối với phiên hiện tại, bash sẽ không lưu trữ bất kỳ mục nhập lịch sử nào trừ khi bạn chạy lệnh như

HISTSIZE=1000

để đặt lại cho một số mục nhất định.

Image
Image

Cách bỏ qua không gian và trùng lặp

Bash cho phép bạn bỏ qua các mục lịch sử bắt đầu bằng dấu cách nếu bạn đặt

HISTCONTROL

biến thành

ignorespace.

HISTCONTROL=ignorespace

Nhập dấu cách trước lệnh trước khi chạy nó trong bash shell và lệnh sẽ chạy bình thường, nhưng sẽ không xuất hiện trong lịch sử của bạn nếu bạn đã bật biến này. Điều này cho phép bạn giữ lịch sử của bạn sạch hơn một chút, chọn chạy các lệnh mà không có chúng xuất hiện trong lịch sử của bạn.

Bash cũng cho phép bạn bỏ qua các lệnh trùng lặp có thể làm lộn xộn lịch sử của bạn. Để làm như vậy, hãy đặt
Bash cũng cho phép bạn bỏ qua các lệnh trùng lặp có thể làm lộn xộn lịch sử của bạn. Để làm như vậy, hãy đặt

HISTCONTROL

đến

ignoredups.

HISTCONTROL=ignoredups

Để sử dụng cả hai
Để sử dụng cả hai

ignorespace

ignoredups

tính năng, đặt

HISTCONTROL

biến thành

ignoreboth.

HISTCONTROL=ignoreboth

Lưu ý rằng các biến bash bạn đặt sẽ chỉ tồn tại cho phiên hiện tại. Bạn sẽ cần phải thêm các tệp này vào tệp.bashrc của tài khoản người dùng của bạn để tự động đặt các giá trị này trong mỗi phiên bash bạn bắt đầu, nếu bạn thích điều đó.

Đề xuất: