Khi xử lý các đầu vào có khả năng không được xác nhận, tôi muốn thấy toàn bộ công việc 'đánh vần' từng dòng để kiểm tra trực quan trước khi tôi chạy nó (đặc biệt là khi đó là thứ gì đó phá hoại như làm sạch hộp thư của mọi người).
Vì vậy, những gì tôi làm là tạo một danh sách các tham số (ví dụ: tên người dùng), đưa nó vào một tệp theo kiểu một bản ghi trên mỗi dòng, như sau:
johndoe
jamessmith
janebrown
Sau đó, tôi mở danh sách vim
và đọc nó với các biểu thức tìm kiếm và thay thế cho đến khi tôi nhận được một danh sách các lệnh đầy đủ cần được thực thi, như thế này:
/bin/rm -fr /home/johndoe
/bin/rm -fr /home/jamessmith
Bằng cách này nếu regex của bạn không đầy đủ, bạn sẽ thấy trong lệnh nào sẽ có vấn đề tiềm ẩn (ví dụ. /bin/rm -fr johnnyo connor
). Bằng cách này, bạn có thể hoàn tác regex của mình và thử lại với phiên bản đáng tin cậy hơn. Tên mangling nổi tiếng về điều này, bởi vì thật khó để chăm sóc tất cả các trường hợp cạnh như Van Gogh, O'Connors, St. Clair, Smith-Wesson.
Có set hlsearch
ích khi thực hiện việc này vim
vì nó sẽ làm nổi bật tất cả các trận đấu, vì vậy bạn có thể dễ dàng phát hiện ra nếu nó không khớp hoặc khớp theo cách không mong muốn.
Khi regex của bạn hoàn hảo và nó nắm bắt được tất cả các trường hợp bạn có thể kiểm tra / nghĩ ra, sau đó tôi thường chuyển đổi nó thành biểu thức sed để nó có thể hoàn toàn tự động cho một lần chạy khác.
Đối với trường hợp số lượng dòng đầu vào ngăn bạn thực hiện kiểm tra trực quan, tôi khuyên bạn nên lặp lại lệnh cho màn hình (hoặc tốt hơn là nhật ký) trước khi thực thi, vì vậy nếu nó bị lỗi, bạn sẽ biết chính xác lệnh nào gây ra nó thất bại Sau đó, bạn có thể quay lại regex ban đầu của mình và điều chỉnh một lần nữa.
printf "foo bar\nbaz bat" | xargs echo whee
sẽ mang lạiwhee foo bar baz bat
. Có thể thêm các tùy chọn-L
hoặc-n
?