Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

Cách sử dụng lệnh lịch sử Bash

Bash có một lịch sử phong phú. Đó là, nó là một shell cũ với tổ tiên thậm chí còn cũ hơn (Bourne shell), nhưng nó cũng có một history tuyệt vời lệnh vượt qua tất cả các giao diện lịch sử shell khác dựa trên số lượng tính năng của nó. Phiên bản Bash của history cho phép tìm kiếm ngược, nhớ lại nhanh chóng, viết lại lịch sử và hơn thế nữa.

history lệnh không giống như nhiều lệnh khác. Bạn có thể quen với các lệnh là tệp thực thi được đặt ở các vị trí cấp hệ thống phổ biến như /usr/bin , /usr/local/bin hoặc ~/bin . history tích hợp sẵn lệnh không có trong PATH của bạn và không có vị trí thực tế:

$ which history

which: no history in [PATH]

Thay vào đó, history là một chức năng tích hợp của chính shell:

$ type history
history is a shell builtin
$ help history
history: history [-c] [-d offset] [n] or
history -anrw [filename] or
history -ps arg [arg...]

Display or manipulate the history list.
[...]

Vì lý do đó, chức năng lịch sử trong mỗi trình bao là duy nhất, vì vậy những gì bạn sử dụng trong Bash có thể không hoạt động trong Tcsh hoặc Fish hoặc Dash và những gì bạn sử dụng trong những trình này có thể không hoạt động trong Bash. Trong một số trường hợp, biết những gì Bash có thể làm có thể truyền cảm hứng cho người dùng các shell khác tạo ra các bản hack thú vị để sao chép hành vi của Bash và nó có thể mở khóa các tính năng của Bash mà bạn chưa từng biết là tồn tại.

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

Cách sử dụng history cơ bản và thường xuyên nhất lệnh là để xem lịch sử của phiên shell của bạn:

$ echo "hello"
hello
$ echo "world"
world
$ history
  1  echo "hello"
  2  echo "world"
  3  history

Người chỉ định sự kiện

Người chỉ định sự kiện tìm kiếm trong lịch sử của bạn theo sự kiện. Một sự kiện trong ngữ cảnh này là một lệnh được ghi trong lịch sử của bạn, được mô tả bằng một ký tự dòng mới. Nói cách khác, đó là một dòng, được đánh dấu bằng số chỉ mục để tham khảo.

Người chỉ định sự kiện chủ yếu bắt đầu bằng dấu chấm than, đôi khi còn được gọi là tiếng nổ (! ).

Để chạy lại một lệnh từ lịch sử của bạn, hãy sử dụng dấu chấm than ngay sau đó (không có dấu cách) bởi số chỉ mục của lệnh bạn muốn. Ví dụ:giả sử dòng 1 chứa lệnh echo "hello" và bạn muốn chạy lại:

$ !1
echo "hello"
hello

Bạn có thể sử dụng định vị tương đối bằng cách cung cấp một số dòng âm từ vị trí hiện tại của bạn trong lịch sử. Ví dụ:để quay lại ba mục trong lịch sử:

$ echo "foo"
foo
$ echo "bar"
bar
$ echo "baz"
baz
$ !-3
echo "foo"
foo

Nếu bạn chỉ quay lại một dòng, bạn có thể sử dụng viết tắt !! thay vì !-1 . Đó là một khoản tiết kiệm của toàn bộ một lần nhấn phím!

$ echo "foo"
$ !!
echo "foo"
foo

Ngược lại, bạn cũng có thể tìm kiếm một chuỗi cụ thể thông qua các mục nhập để chạy lệnh. Để tìm kiếm lệnh bắt đầu với một chuỗi cụ thể, hãy sử dụng dấu chấm than theo sau ngay lập tức (không có khoảng trắng) bởi chuỗi bạn muốn tìm kiếm:

$ echo "foo"
$ true
$ false
$ !echo
echo "foo"
foo

Bạn cũng có thể tìm kiếm lệnh chứa chuỗi ở bất kỳ vị trí nào (không chỉ ở đầu). Để làm điều đó, hãy sử dụng ! cộng với chuỗi bạn đang tìm kiếm, như thường lệ, nhưng bao quanh chuỗi bằng dấu chấm hỏi ở hai đầu. Bạn có thể bỏ qua dấu chấm hỏi ở cuối nếu bạn biết rằng chuỗi được theo sau bởi một ký tự dòng mới (có nghĩa là ký tự cuối cùng bạn đã nhập trước khi nhấn Quay lại ):

$ echo "foo"
$ true
$ false
$ !?foo?
echo "foo"
foo

Thay thế chuỗi

Tương tự như tìm kiếm chuỗi ở đầu dòng, bạn có thể tìm kiếm một chuỗi và thay thế nó bằng một chuỗi mới, thay đổi lệnh:

$ echo "hello"
hello
$ echo "world"
world
$ ^hello^foo
echo "foo"
foo

Làm cho lịch sử trở nên hữu ích

Trong Bash, lệnh history có nhiều khả năng hơn những gì được đề cập ở đây, nhưng đây là một khởi đầu tốt để làm quen với việc sử dụng lịch sử của bạn thay vì chỉ coi nó như một tài liệu tham khảo. Sử dụng history ra lệnh thường xuyên và xem bạn có thể làm được bao nhiêu mà không cần phải nhập lệnh. Bạn có thể làm chính mình ngạc nhiên!