Two of the most important command line utilities used with pipelines to build command lines are:
xargs– reads streams of data from standard input, then generates and executes command lines.tee– reads from standard input and writes simultaneously to standard output and one or many files. It’s more of a redirection command.
Syntax for using a pipe:
$ command1 args | command2 args OR $ command1 args | command2 args | command3 args ...
How to Use xargs to Run Commands
In this example, the second command converts multi-line output into a single line using xargs.
$ ls -1 *.sh $ ls -1 *.sh | xargs
To count the number of lines/words/characters in each file in a list, use the commands below.
$ ls *.sh | xargs wc -l #count number of lines in each file $ ls *.sh | xargs wc -w #count number of words in each file $ ls *.sh | xargs wc -c #count number of characters in each file $ ls *.sh | xargs wc #count lines, words and characters in each file
The command below finds and recursively deletes the directory named All in the current directory.
$ find . -name "All" -type d -print0 | xargs -0 /bin/rm -rf "{}"
Where,-print0 action enables printing of the full directory path on the standard output, followed by a null character -0 xargs flag deals with space in filenames.
How to Use Tee with Commands in Linux
Allows you to view top running processes by highest memory and CPU usage in Linux.
$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee topprocs.txt $ cat topprocs.txt
To append data in an existing file(s), pass the -a flag.
$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee -a topprocs.txt
That's it !!
