Skip to main content


Pipe HEREDOC to xargs

When creating a HEREDOC, you can use any keyword to denote the start and end of the HEREDOC block. In this case, I used the keyword HEREDOC but any word can be substituted in its place.

# -I % indicates the "placeholder" value for the current item in the pipeline
# Each line of the HEREDOC --,, -- is piped to xargs as stdin
# xargs processes each item one at a time and runs the specified command against stdin
# In this case, the command is a nmap scan of the top 1,000 ports of target IP
cat << HEREDOC | xargs -I % nmap -Pn --top-ports 1000 -oN % %