Hãy xem xét lệnh này:
ls /mydir/*.txt | xargs chown root
Mục đích là để thay đổi chủ sở hữu của tất cả các tệp văn bản trong mydir
root
Vấn đề là nếu không có .txt
tệp nào trong mydir
đó thì xargs sẽ báo lỗi rằng không có đường dẫn nào được chỉ định. Đây là một ví dụ vô hại vì một lỗi đang được đưa ra, nhưng trong một số trường hợp, như trong kịch bản mà tôi cần sử dụng ở đây, một đường dẫn trống được coi là thư mục hiện tại. Vì vậy, nếu tôi chạy lệnh /home/tom/
đó từ đó nếu không có kết quả ls /mydir/*.txt
và tất cả các tệp theo /home/tom/
chủ sở hữu của chúng đã thay đổi thành root.
Vì vậy, làm thế nào tôi có thể có xargs bỏ qua một kết quả trống?
git branch --merged | grep -v '^* ' | xargs git branch -d
, cũng không thành công với đầu vào trống
ls
để sử dụng lập trình; xem mywiki.wooledge.org/ParsingLs