Lịch sử bash có thể làm nhiều điều hữu ích, và tìm kiếm Strg-r
mà Terry Wang đã đề cập là một trong những điều quan trọng trong số đó. Nhưng nó cũng có thể làm chính xác những gì bạn yêu cầu.
Bạn có thể làm lại lệnh trước với !!
. Với điều này, bạn cũng có thể chỉnh sửa lệnh trước đó. Nếu ví dụ bạn quên lấy quyền root cho lệnh
apt-get install a-long-list-of-packages
bạn không phải gõ lại tất cả những điều đó một lần nữa. Thay vào đó chỉ cần gọi
sudo !!
Nếu bạn muốn thực hiện lại lệnh tại một vị trí cụ thể trong lịch sử của mình, bạn cũng có thể sử dụng !
, ví dụ
!3
để thực hiện lại lệnh ở vị trí 3. Hãy lưu ý rằng điều này được tính từ đầu. Vì vậy, nếu bạn đang lưu trữ 500 lệnh trong lịch sử của mình, !1
sẽ là "500 lệnh trước". Bạn cũng có thể sử dụng số âm. Ví dụ
!-2
sẽ thực hiện lại lệnh cuối cùng thứ hai.
Bạn cũng có thể thực hiện lại lệnh cuối cùng bắt đầu bằng một chuỗi như
!apt-
sẽ thực hiện lại dòng cuối cùng bắt đầu bằng "apt-". Nếu bạn muốn lệnh cuối cùng trong đó chuỗi xuất hiện ở bất kỳ đâu trong dòng, bạn có thể sử dụng một cái gì đó như
!?pt-ge
Có nhiều điều thú vị hơn lịch sử bash có thể làm. Chỉ để tạo ấn tượng về phạm vi khả năng rộng, bạn có thể truy cập cụ thể một tham số của lệnh từ lịch sử. Vì thế
!-5:3:p
sẽ in tham số thứ ba đến thứ năm từ lệnh cuối cùng.
EDIT: Liên quan đến nhận xét của Rudie bên dưới, với các cài đặt tiêu chuẩn, bản mở rộng lịch sử bash này thực sự được thực hiện trực tiếp. Nó có thể được mô tả tốt nhất như thế này: Một cuộc gọi như !-3
được thay thế bằng shell bằng lệnh cuối cùng thứ ba từ lịch sử của bạn và sau đó đầu vào của bạn (với sự thay thế) được thực thi. Vì vậy, nếu bạn gõ !-3
và nhấn ENTER
và lệnh cuối cùng thứ ba của bạn là ls ~
, nó sẽ có hiệu lực giống như khi bạn gõ ls ~
lại và nhấn ENTER
"một mình".
Nếu bạn không muốn điều đó, bạn có thể đặt tùy chọn shell histverify
. Để cài đặt và bỏ cài đặt tùy chọn shell, bạn có thể muốn đọc lên shopt
lệnh. Với histverify
thiết lập, một cuộc gọi như !-3
chỉ ghi thay thế từ lịch sử của bạn vào dòng lệnh của bạn, nhưng không thực hiện trực tiếp. Bạn có, vì vậy để sinh ra, nhấn ENTER
chính mình - hoặc kiềm chế nó, nếu bạn chọn.