|
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@ Example shell scripts useful for many tasks and provided by the community @@
@@ Sat Jun 2 12:22:22 CDT 2001 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@ Guide to Advanced Shell Operations @@@@@ shell script examples @@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ discard the output of a command @
command > dev/null # eliminates output of STDOUT
command > /dev/null 2>&1 # redirects STDERR to STDOUT and
eliminates them
@ use the value of a shell variable in a sed command @
sed "/$DEL/d" file1 > file2 # deletes lines in file1 containing
the value of $DEL
@ check to see whether a variable has a value @
if [ -z "$VAR" ] ; then list ; fi # list is the command that executes if
$VAR doesn't have a value
@ determine the full pathname of a directory @
FULLPATH=`(cd dir ; pwd)` # determine full path of directory
@ determine the full pathname of a file @
CURDIR=`pwd` # save current directory path
cd `dirname file` # change to directory with the file
FULLPATH="`pwd`/`basename file`" # join output of pwd and filename
cd $CURDIR # go back to the original directory
@ rename all the *.html files to *.php in a directory @
OLDSUFFIX=html # variable with old suffix
NEWSUFFIX=php # variable with new suffix
for FILE in *."$OLDSUFFIX" # all files that start with old suffix
do
NEWNAME=`echo "$FILE" | sed -e "s/${OLDSUFFIX}\$/$NEWSUFFIX/"`
mv "$FILE" "$NEWFILE" # sed does a replace and then mv
done # to move the files
@ rename all the *.html files to *.htm using bash pattern matching @
for i in *.html; do
if [ -f ${i%l} ]; then
echo ${i%l} already exists
else
mv $i ${i%l}
fi
done
@ rename all default* files to index* @
OLDPREFIX=default # variables with old and new prefix
NEWPREFIX=index # for loop for all files with prefix
for FILE in "$OLDPREFIX"* # sed -e for script, s for substitute
do # carrot indicates start of line
NEWNAME=`echo "$FILE" | sed -e "s/^${OLDPREFIX}/$NEWPREFIX/"`
mv "$FILE" "$NEWNAME"
done # rename the file and exit loop
@ rename variations, example removes Shortcut to from beginning of files @
OLD="Shortcut to "; NEW=""; for FILE in "$OLD"*; do; NEWNAME=`echo "$FILE" | sed -e "s/^${OLD}/$NEW/"`; mv "$FILE" "$NEWNAME"; echo "$NEWNAME"; done
# places everything from above script
on a single line, does a substitute
OLD="Shortcut to "; for FILE in "$OLD"*; do NEWNAME=`echo "$FILE" | sed -e "s/^${OLD}//"`; mv "$FILE" "$NEWNAME"; echo "$NEWNAME"; done
# since it is not a substitute, this
uses 1 variable but still echos each
file as it is processed
OLD="Shortcut to "; for FILE in "$OLD"*; do NEWNAME=`echo "$FILE" | sed -e "s/^${OLD}//"`; mv "$FILE" "$NEWNAME"; done
# eliminate unecessary echo of filename
for FILE in "Shortcut to "*; do N=`echo "$FILE" | sed -e "s/^Shortcut\ to\ //"`; mv "$FILE" "$N"; done
# shortest method, eliminates use of
variables and filename echo
@ set all filenames in a directory to lowercase @
for FILE in * # use mv -i to avoid overwriting files
do # uses the tr command to convert case
mv -i "$FILE" `echo "$FILE" | tr '[A-Z]' '[a-z]'` 2> /dev/null
done
@ eliminate msdos carriage returns in files @
# dos uses \r\n (^M) where UNIX uses
only \n
tr -d '\015' < file1 > file2 # file1 contains carriage returns, file2
is created without carriage returns
# the \015 is oct representation of dos
carriage returns
-new entries-
@ search and replace a text string with another in multiple files @
for e in *; do mv $e $e.tmp ; sed 's/STRING1/STRING2/g' <$e.tmp >$e ; rm -f $e.tmp ; done
(works best in a directory without subdirectories; it does bad things to subdirectories)
@ replace a text string with another in files and recurse into directories @
for e in `find . -type f`; do mv $e $e.tmp ; sed 's/STRING1/STRING2/g' <$e.tmp >$e ; rm -f $e.tmp ; done
@ test to see if a file exists and print true if it does
if test -e /tmp/seclog.pid ; then echo "true"; fi
-lazygirl 4/29/2002
@ replace linux line feeds in file containing a LF delimited list with a comma
and space single line list. (file had space between last char and LF) @
sed 's/.$/,\ /g' < parseme.txt > tmpfile.txt; tr -d '\012' < tmpfile.txt > outfile.txt
-lazygirl 8/23/2004
@ compare IP address to C block and if it is part of that network @
host24=${ipaddress%.*}
if [ "${host24}" = "192.168.30" ]; then
echo "${ipaddress}";
fi
-Sun Nov 14 15:30:55 CST 2004
@ useful 'c' like FOR loop (for/next) for bash @
for i in `seq 0 99`;
do
echo number $i
done
-krissyj Dec 2004
@ unzip a directory of zip files all at once @
for FILE in *.zip; do unzip "$FILE"; done
@ convert list of usernames into delete user shell script @
:1,$s/^\(.*\)/userdel -r \1/
@ live active monitoring of tcp connections from the shell @
while $x <> 1; do
clear
echo "Current TCP connections for robotz.com"
netstat -np|grep "tcp\ ";
sleep 15s
done
@ old fashioned replace text string for every file in directory @
change string1 to string2 in every file within the directory
for e in *; do sed 's///g' $e >$e.tmp; rm -f $e; mv $e.tmp $e; done
@ strip HTML tags out of a text/html file. This works unless a tag is split @
and ends on the following line, such as long a href tags
e=index.html; sed 's/<[^>]*>//g' $e >$e.tmp; mv $e.tmp $e
[[added to wiki.robotz.com 5/22/2007]]
|