2011-11-22 30 views
5

Tôi muốn biết cách/nếu tôi có thể sử dụng lại lệnh từ lịch sử thiết bị đầu cuối của mình, nhưng trong một phiên bản đã sửa đổi. Dưới đây là một ví dụ:Thực hiện tìm kiếm và thay thế các lệnh từ lịch sử đầu cuối

$ filter_script file2 > output_file2 
$ # ... 
# now run the same command, but replace '2' with '4' 
$ filter_script file4 > output_file4 

Đây là một ví dụ rất đơn giản, và tất nhiên tôi có thể dễ dàng truy cập vào các lệnh từ lịch sử và tự thay thế hai 2 s, nhưng là có một cách thanh lịch hơn?

Cảm ơn bạn rất nhiều vì đã dành thời gian!

Trả lời

12

Nếu chỉ có một thể hiện của bất cứ điều gì nó là bạn muốn thay thế, bash(1) có một tính năng dễ dàng đầu tiên được giới thiệu vào csh(1):

^old^new 

sẽ thay thế các trường hợp đầu tiên của old với new:

$ filter_script file2 > output_file2 
$ ^2^4 
filter_script file4 > output_file2 

Nếu bạn muốn thay thế tất cả trường hợp, yêu cầu nhập nhiều hơn:

$ filter_script file2 > output_file2 
$ !:gs/2/4/ 
filter_script file4 > output_file4 

Các g xác định toàn cầu thay thế trên dòng lệnh. Các ! đề cập đến một dòng từ lịch sử - có thể cụ thể hơn, nếu bạn muốn kéo một lệnh từ trở lại trong lịch sử mà lệnh trước đó ngay lập tức. Xem phần của bash(1) trên Event Designators.

+0

Tuyệt vời, hoạt động như một sự quyến rũ - cảm ơn rất nhiều :) – canavanin

+1

Công cụ tiện lợi, có quyền bầu cử! – plundra

+0

wow thật tuyệt vời. –

Các vấn đề liên quan