2017-06-11 21 views
5

Có cách nào để sử dụng !$ trong ngữ cảnh mở rộng tham số không? Cách sử dụng mong muốn tạo động lực cho câu hỏi này nhanh chóng (thay đổi nét chính) tên của tệp (ví dụ: thay vì lưu tên tệp trong biến và thực hiện rsvg-convert $svg > ${svg/.svg/.png}, thay vào đó, có thể sử dụng rsvg-convert $! > $!{/.svg/.png}, trong đó $!{/.svg/.png} là cú pháp sai Khi tệp được đề cập là mã thông báo cuối cùng trên dòng trước, lệnh này thường có thể được nhập nhanh hơn các lựa chọn thay thế như sử dụng hoàn thành tab khi có tiền tố chia sẻ tệp có độ dài khác nhau hoặc sao chép và dán tên tệp bằng cách chọn bằng chuột). Theo như tôi có thể nói, không có cách nào để sử dụng !$ trong bối cảnh như vậy, nhưng có lẽ thông qua một số chicanery một hiệu ứng tương tự có thể đạt được.

+2

Tôi đã chuyển sang sử dụng 'alt + .' nhiều hơn'! $ '. Thay vì mở rộng nó sau này, nó sẽ (giả sử bạn đang ở chế độ emacs) đặt đối số cuối cùng của dòng lệnh trước đó, đã mở rộng hoàn toàn. Điều đó sẽ không hoạt động nếu bạn đang sử dụng các từ khác hơn là cuối cùng, hoặc đi nhiều lệnh trở lại như '!: - 2' hoặc'! Mv: 1' –

+0

@EricRenouf Đó là khá hữu ích, cảm ơn. Tôi đã không nhận thức được 'alt + .', nhưng nó thậm chí còn nhanh hơn một tham số mở rộng'! $ 'Sẽ cho việc sử dụng được đề xuất. – user001

Trả lời

5

Tùy thuộc vào mức độ tinh vi mà bạn muốn thay thế, mở rộng lịch sử hỗ trợ thay thế lần xuất hiện đầu tiên của chuỗi bằng chuỗi khác. Bạn chỉ cần đặt trước sự thay thế với : như:

rsvg-convert !$ > !$:s/.svg/.png 

Bạn có thể xem tất cả các từ bổ nghĩa lịch sử here

Ít nhất trong emacs-mode bash cũng sẽ đưa đối số cuối cùng của inline lệnh trước đó (không cho mở rộng khi bạn chạy lệnh) nếu bạn nhấn alt + .. Vì vậy, trong trường hợp này nó có thể là nhanh nhất để gõ:

rsvg-convert 

sau đó alt + .>alt + . sau đó xóa phần mở rộng nó chỉ đưa ra với alt + bksp sau đó phần mở rộng mới: png

+0

Cả hai đề xuất tuyệt vời, cảm ơn. – user001

2

Nếu bạn nhìn sâu hơn vào các bổ ngữ trong ví dụ của Eric, bạn cũng có thể làm:

rsvg-convert !$ > !$:r.png 

Giả sử .svg là hậu tố của khóa học

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