मैंने "xargs" के आसपास "xargsL" नामक एक छोटी पोर्टेबल आवरण लिपि बनाई, जो अधिकांश समस्याओं का समाधान करती है।
Xargs के विपरीत, xargsL प्रति पंक्ति एक पथनाम स्वीकार करता है। पाथने में कोई भी चरित्र हो सकता है (स्पष्ट रूप से) न्यूलाइन या एनयूएल बाइट्स को छोड़कर।
फ़ाइल सूची में किसी भी उद्धरण की अनुमति नहीं है या समर्थित नहीं है - आपके फ़ाइल नामों में सभी प्रकार के व्हाट्सएप, बैकस्लैश, बैकटिक्स, शेल वाइल्डकार्ड वर्ण और जैसे - xargsL उन्हें शाब्दिक वर्णों के रूप में संसाधित करेगा, कोई नुकसान नहीं हुआ।
अतिरिक्त बोनस सुविधा के रूप में, xargsL एक बार इनपुट न होने पर कमांड नहीं चलाएगा!
अंतर पर ध्यान दें:
$ true | xargs echo no data
no data
$ true | xargsL echo no data # No output
XargsL को दिए गए किसी भी तर्क को xargs के माध्यम से पारित किया जाएगा।
यहाँ "xargsL" POSIX शेल स्क्रिप्ट है:
#! /bin/sh
# Line-based version of "xargs" (one pathname per line which may contain any
# amount of whitespace except for newlines) with the added bonus feature that
# it will not execute the command if the input file is empty.
#
# Version 2018.76.3
#
# Copyright (c) 2018 Guenther Brunthaler. All rights reserved.
#
# This script is free software.
# Distribution is permitted under the terms of the GPLv3.
set -e
trap 'test $? = 0 || echo "$0 failed!" >& 2' 0
if IFS= read -r first
then
{
printf '%s\n' "$first"
cat
} | sed 's/./\\&/g' | xargs ${1+"$@"}
fi
स्क्रिप्ट को अपनी $ PATH में कुछ निर्देशिका में रखें और भूल न जाएं
$ chmod +x xargsL
स्क्रिप्ट इसे निष्पादन योग्य बनाने के लिए।