Cân nhắc lệnh này:Bỏ qua kết quả sản phẩm nào cho xargs
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 tin văn bản trong mydir
để nhổ tận gốc
Vấn đề là nếu không có .txt
file trong mydir
sau đó xargs đưa ra một lỗi nói rằng không có đường dẫn nào được chỉ định. Đây là một ví dụ vô hại bởi vì một lỗi đang được ném, nhưng trong một số trường hợp, như trong kịch bản mà tôi cần phải sử dụng ở đây, một đường dẫn trống được giả định là thư mục hiện hành. Vì vậy, nếu tôi chạy lệnh đó từ /home/tom/
thì nếu không có kết quả nào cho ls /mydir/*.txt
và tất cả các tệp theo /home/tom/
sẽ thay đổi chủ sở hữu của chúng thành thư mục gốc.
Vậy làm cách nào để xargs bỏ qua kết quả trống?
Ngoài: Không bao giờ đầu ra ống từ 'ls' để sử dụng có lập trình; xem http://mywiki.wooledge.org/ParsingLs –