Document Actions

Bash Command Line Examples

After having spent years on unix systems, shell scripting still continues to elude me. Hence these reminders.


For Loops over lists

  • To add a bunch of files to subversion
for f in Button.phi Buttons.phi Cells.phi ; do svn add $f; done
for f in `ls -l *.phi`; do svn add $f; done
  • A more complete sample
ls *.xml
file1.xml  file2.xml  file3.xml

ls *.xml > list

for i in `cat list`; do cp "$i" "$i".bak ; done

ls *.xml*
file1.xml  file1.xml.bak  file2.xml  file2.xml.bak  file3.xml  file3.xml.bak

  • To clear emails to user@example.com out of my mail queue after inspecting the affected files
cd /path/to/mailqueue
ls -l `grep -l 'user@example.com' \`find . -type f\``
rm -f `grep -l 'user@example.com' \`find . -type f\``

Note: Be sure to run the ls before the rm.


  • A little awking. PIDs of all processes using alsa. Grabs the 2nd column out of a listing.
lsof | grep alsa | awk '{print $2}'
  • This alias produces a sorted list of services and the ports they're listening on.
alias ports='sudo /usr/sbin/lsof -nPi | grep LIST | awk '\''{printf "%-20s%-5s%-5s%s\n",$1,$5,$7,$8}'\'' | sort | uniq'
  • Running ports would then produce something like this:
cupsd               IPv4 TCP  127.0.0.1:631
master              IPv4 TCP  127.0.0.1:25
mysqld              IPv4 TCP  127.0.0.1:3306
portmap             IPv4 TCP  *:111
rpc.mount           IPv4 TCP  *:657
rpc.statd           IPv4 TCP  *:894
smbd                IPv4 TCP  *:139
smbd                IPv4 TCP  *:445
sshd                IPv6 TCP  *:22

While loop

  • Keeping my mail inbox from overflowing while running email stress tests
cd /path/to/maildir/new
while true; do rm -f *; sleep 5; done


Copyright © 2007 Mario Theodoridis. All rights reserved. Content licensed under AFL.
Content from the underlying Plone CMS is © 2000-2007 by the Plone Foundation