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