aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/cli
diff options
context:
space:
mode:
Diffstat (limited to 'src/cli')
-rw-r--r--src/cli/README.md1
-rw-r--r--src/cli/xargs.md23
2 files changed, 24 insertions, 0 deletions
diff --git a/src/cli/README.md b/src/cli/README.md
index c20edc3..8144745 100644
--- a/src/cli/README.md
+++ b/src/cli/README.md
@@ -9,3 +9,4 @@
- [tac](./tac.md)
- [rev](./rev.md)
- [paste](./paste.md)
+- [xargs](./xargs.md) \ No newline at end of file
diff --git a/src/cli/xargs.md b/src/cli/xargs.md
new file mode 100644
index 0000000..a6f3c8c
--- /dev/null
+++ b/src/cli/xargs.md
@@ -0,0 +1,23 @@
+# xargs(1)
+
+```
+xargs [opts] [cmd [init-args]]
+ -l [<num>] maximal number of lines per cmd invocation
+ if <num> it not provided, num=1 is assumed
+ -I <str> replace <str> in the [init-args] with the arg;
+ this implies -l, and hence processes one arg at a time
+```
+
+## Example
+
+Collect arguments and prefix them with another option.
+```sh
+# Using -l to process one arg at a time.
+eval strace -f (find /dev -name 'std*' | xargs -l echo -P | xargs) ls
+
+# Using -I to place the arg at the specified location.
+eval strace -f (find /dev -name 'std*' | xargs -I {} echo -P {}) ls
+
+# Both commands achieve the same thing and result in something like:
+# eval strace -f -P /dev/stdin -P /dev/stdout -P /dev/stderr ls
+``` \ No newline at end of file