Bạn nên đọc qua man bash trên hệ thống của mình, đặc biệt là phần trên Readline , vì đây là cơ chế nhập liệu tương tác của bash. Các nhãn hiệu Bash at gnu.org có một phần tốt đẹp trên dòng lệnh Biên tập sẽ giúp điền vào một số các khoảng trống.
Theo mặc định, bạn có thể sử dụng những thứ này để di chuyển trên dòng lệnh (chỉ liệt kê một vài ở đây; xem liên kết để biết danh sách đầy đủ):
- Ctrl+ adi chuyển đến đầu dòng (hoặc Hometùy thuộc vào cài đặt thiết bị đầu cuối)
- Ctrl+ edi chuyển đến cuối dòng (hoặc End...)
- Meta+ fdi chuyển về phía trước một "từ"
- Meta+ bdi chuyển ngược một "từ"
Bạn có thể sử dụng những văn bản này để "giết" (còn gọi là "cắt") từ một dòng:
- Ctrl+ kgiết văn bản ("cắt") từ vị trí con trỏ hiện tại đến cuối dòng
- Ctrl+ yyanks ("pastes") văn bản bị giết gần đây nhất trở lại bộ đệm tại con trỏ
Vì vậy, bạn có thể kết hợp những thứ này để chọn một đoạn của một số dòng lệnh bạn muốn lặp lại, giết nó, sau đó dán nó vào cuối lệnh tiếp theo của bạn.
Bây giờ, để làm cho nó thú vị hơn nữa, hãy xem xét Mở rộng Lịch sử của bash . Đây là !!
rằng câu trả lời của Studer đề cập đến . Mở rộng lịch sử chia thành các nhà chỉ định sự kiện , người chỉ định từ và người sửa đổi .
Người chỉ định sự kiện trông như thế này (một lần nữa, xem các liên kết cho danh sách đầy đủ):
!
- bắt đầu thay thế lịch sử
!n
- lệnh n-th trong danh sách lịch sử của bash, đối với một số số nguyên n (cũng hoạt động cho phủ định)
!!
- lệnh tiến hành; tương đương với!-1
!string
- lệnh gần đây nhất bắt đầu bằng chuỗi
Word chỉ định chọn một số phần nhất định từ một sự kiện. Sử dụng :
để tách sự kiện từ người chỉ định từ. Các từ được đánh số từ 0 bắt đầu từ đầu dòng và được chèn vào dòng hiện tại cách nhau bởi các khoảng trắng.
$
- chỉ định đối số cuối cùng (ví dụ: đối số !!:$
cuối cùng của lệnh cuối cùng; có thể rút ngắn thành !$
)
n
- chỉ định từ thứ n (ví dụ: !str:2
đối số thứ 2 của lệnh gần đây nhất bắt đầu bằng str ; !!:0
là lệnh của lệnh cuối cùng)
Vì vậy, để theo dõi ví dụ của bạn, nếu lệnh cuối cùng của bạn là mkdir /some/really/long/path
, chỉ cần chạy !!
sẽ chạy lại lệnh đó. Nhưng bạn muốn đi cd
vào con đường đó thay vào đó:
$ cd !$
Bây giờ hãy giả sử bạn thực hiện một số lệnh khác và sau đó muốn quay lại đường dẫn đó một lần nữa. Nếu đó là lệnh mkdir cuối cùng bạn đã chạy, bạn có thể sử dụng lệnh này để lặp lại đường dẫn đó:
$ tar czf ~/foo.tgz !mkdir:$