Nếu bạn cố gắng pipe* đầu ra từ một lệnh Linux này sang một lệnh Linux khác, đôi khi bạn sẽ gặp phải lỗi lệnh không thành công vì danh sách đối số (argument) của nó quá dài.
*pipe lấy output từ câu lệnh này và dùng nó làm input cho câu lệnh kế tiếp.
May mắn là có một lệnh trên các hệ thống Linux giúp định dạng đúng các đối số cho các lệnh. Nó được gọi là xargs và đây là cách sử dụng nó.
1. Tại sao sử dụng lệnh xargs?
Những gì lệnh xargs làm là nó nhận đầu ra tiêu chuẩn (standard output) và định dạng (format) nó để một lệnh khác có thể nhận được. Trong khi nhiều tiện ích Linux có thể chấp nhận đầu vào tiêu chuẩn, một số chỉ chấp nhận đối số làm đầu vào.
Những lệnh này có thể không chạy được nếu bạn cố gắng chuyển hướng đầu vào tiêu chuẩn (standard input) đến lệnh. Một số lệnh vẫn chỉ chấp nhận một số đối số nhất định và xargs sẽ giải quyết việc này cho bạn.
>>> Đọc ngay: Cách cài đặt và cấu hình Tmux cho Linux
2. Cách sử dụng lệnh xargs trên Linux
Bạn có thể sử dụng xargs bằng cách gõ:
xargs [command]
xargs theo dõi độ dài của các đối số mà một lệnh chấp nhận và định dạng đầu vào chuẩn để xuất ra danh sách đối số cung cấp cho lệnh (xargs keeps track of the length of arguments a command accepts and formats standard input to output an argument list to supply to the command). Khi nó đạt đến giới hạn của một dòng lệnh, nó sẽ gọi lại lệnh với các đối số còn lại.
3. Sử dụng xargs trong Pipeline (đường ống)
xargs rất hữu ích khi được sử dụng trong các pipeline. Một ví dụ có sẵn sẽ là pipe lệnh cat với lệnh echo, đây là một lệnh chỉ chấp nhận các đối số, không phải đầu vào tiêu chuẩn.
cat | echo
Lệnh này sẽ khiến echo in bất kỳ thứ gì bạn nhập trên một dòng ngay khi bạn nhấn Ctrl + D.
xargs được sử dụng phổ biến nhất với lệnh find, khi lệnh find được sử dụng để liệt kê các tệp và xargs được sử dụng để xử lý danh sách các tệp theo một cách nào đó.
Cú pháp lệnh find đã đủ phức tạp, vậy tại sao lại sử dụng một lệnh khác? Nếu bạn sử dụng tùy chọn “-exec” của find , nó sẽ tạo ra một quy trình mới mỗi khi nó tìm kiếm qua một tệp trong thư mục. Sử dụng xargs hiệu quả hơn.
Bạn có thể muốn xóa các tệp trong thư mục cũ hơn một mốc nhất định, chẳng hạn như 90 ngày. Để làm điều này, bạn sẽ sử dụng pipeline này:
find . -mtime +90 -print | xargs rm
>>> Đọc ngay: Cách cập nhật tất cả ứng dụng trên Linux trong vài giây
4. Kết luận
Với xargs, bạn có thể đảm bảo rằng các lệnh sẽ nhận các đối số theo cách bạn mong đợi. Kết hợp với tính năng find, nó sẽ cho phép bạn xử lý các tệp trên máy của mình một cách nhanh chóng.
Khả năng chuyển hướng đầu vào và đầu ra trong shell là một trong những điểm mạnh lâu dài của Linux. Nếu bạn muốn tìm hiểu thêm về cách hoạt động của chuyển hướng đầu vào/đầu ra Linux, hãy đọc tiếp.
Bình luận (
)