Bạn ít nhất có thể lưu các tùy chọn một phần trong một biến:
opts=$(echo --{ignore-case,word-regexp,count,exclude='"sys*.*"'})
Kiểm tra là quan trọng, bởi vì mặt nạ có thể khó khăn:
echo $opts
--ignore-case --word-regexp --count --exclude="sys*"
grep $opts bytes *.log
Vì có nhiều lựa chọn thay thế, như sử dụng lịch sử, sử dụng bí danh, sử dụng hàm, không có trường hợp sử dụng rõ ràng nào tôi có thể nghĩ ra. Ít khi có một tùy chọn chia sẻ phức tạp giữa các chương trình khác nhau, vì vậy đối với một giải pháp đặc biệt cho lớp vỏ tương tác, răng cưa có vẻ là một cách tốt hơn:
alias cgrep='grep --ignore-case --word-regexp --count --exclude="sys*"'
cgrep bytes *.log
Mẫu của bạn
VAR=rsync -avz --{partial,stats,delete,exclude=".*"}
không thể làm việc, vì bài tập được kết thúc ở ô trống đầu tiên. Bạn phải che dấu những khoảng trống:
VAR='rsync -avz --{partial,stats,delete,exclude=".*"}'
một điều khá nguy hiểm để thử nghiệm, với tùy chọn - đã hết, phải không? Vì các tùy chọn có thể chứa lại "," và các trích dẫn đơn, việc che dấu có thể gặp khó khăn rất sớm. Tôi sẽ đi cho một bí danh hoặc dựa vào lịch sử.
Một bí danh có thể được lưu trữ trong tệp ~ / .bashrc để sử dụng liên tục qua nhiều phiên. Các hàm cũng có thể được lưu trữ trong bashrc, nhưng bạn chỉ cần chúng, nếu bạn muốn xử lý các tham số, được chuyển vào hàm để được đánh giá trong đó.