Bạn có thể sử dụng khả năng thay thế văn bản của shell của bạn. Trong bash
, bạn có thể sử dụng một con thú như:
mv blob/a_long_directory_name/c/xx !#:$:gs^c/xx^evenmore/yy
Để phá vỡ nó:
!#
là dòng hiện tại được gõ cho đến nay
:$
yêu cầu chọn từ cuối cùng (thay thế bằng một số n
để chọn n
từ thứ ') của chuỗi đang xem xét ( !#
trong trường hợp này). Từ cuối cùng của dòng được gõ cho đến nay sẽ là từ trước đó.
:gs^xx^yy
không g
thay thế văn bản toàn cầu ( ) s
trên từ kết quả, thay thế 'xx' bằng 'yy'. ^
chỉ là một dấu phân cách cho s
lệnh để cho phép sử dụng /
trong các mẫu của bạn.
Phương pháp này hơi chung chung hơn vì nó cho phép bạn thay thế bất kỳ phần nào của đường dẫn ('xx') bằng bất kỳ từ nào khác ('yy').
Cuối cùng, giống như với bất kỳ thao tác lịch sử nào, thật tốt khi có các tùy chọn vỏ thích hợp được đặt (ví dụ: trong ~/.bashrc
). Trong trường hợp này
shopt -s histverify
sẽ hiển thị dòng đã chỉnh sửa sau khi bạn nhấn return, vì vậy bạn vẫn có thể chỉnh sửa nó và kiểm tra lỗi.
Tại sao bạn không sử dụng cấu trúc như vậy tôi không chắc, nhưng nó hoạt động trong trường hợp này.
even_more
đường dẫn tương đối ...