KitzKikz  KitzKikz: ShellTricks   RecentChanges 
 PopularPages 
 SearchPages 
 Home | Trail - ShellTricks
 
 

These are some unix shell (bash/ksh/tcsh/...) tricks I've collected. I'm placing them here because, typically I'm away from my personal machine when I most need one.


Last Workday/Weekday of the Month (see here)

cal | awk '{print $2,$3,$4,$5,$6}' | tr -s '[:blank:]' '\n' | tail -1


Yesterday in Perl

perl -e '@T=localtime(time-86400);printf("%2d/%2d/%4d\n",$T[4]+1,$T[3],$T[5]+1900)'
perl -e 'use POSIX;print POSIX::strftime("%m/%d/%Y\n",localtime(time-86400))'


Fast Process Search (fps) - I'm constantly checking to see if a certain program or process is running. This helps reduce the typing and the clutter.

    function fps {
        (( $# )) &&
        ps -aux | sed -n "1p;/___fps___/d;/$1/p" ||
        echo "Usage: fps <search string>"
    }

Modified for use with multiple words in any order:

    function fps {
        typeset x y
        for x in $@; do y="$y/$x/!d;"; done
        ps -ef | sed -n "1p;/___fps___/d;${y}p"
    }


List All Available Man Pages:

man --path | perl -pe 's/:/\n/g' | xargs -J% -n1 find % -type f | xargs basename | sort -u


Dos2Unix Line Ending Conversion:

perl -pi -e 's/\r\n/\n/;' filename ...


Subtract Files: Output all lines in FileA not also in FileB

sort FileA | uniq | sort - FileB FileB | uniq -u

FileAFileBResult
a
a
b
c
d
e
c
d
e
f
g
a
b

If you know that FileA contains unique lines only, then this simplifies to:

sort FileA FileB FileB | uniq -u


Programmatically Edit Crontab

# Disable all cron jobs
EDITOR='perl -pi -e s/^/#off#/' crontab -e; crontab -l

# Enable all cron jobs
EDITOR='perl -pi -e s/^#off#//' crontab -e; crontab -l


Find the location of a Perl Module

perl -MXML::Parser -le 'print for grep /Parser/, values %INC'


Preserve File Modification Time

	x=filename

	/usr/bin/perl -e '
		my ($ss,$mm,$hh,$DD,$MM,$YY)=localtime((stat($ARGV[0]))[9]);
		printf "%04d%02d%02d%02d%02d.%02d",$YY+1900,$MM+1,$DD,$hh,$mm,$ss,$ARGV[0];
	' "$x" | read t

	Modify the file	

	/bin/touch -t $t "$x"

Entirely within perl:

	$filename = $ARGV[0];
	($atime,$mtime) = (stat($filename))[8,9];

	open(FP,">>$filename");
	print FP "Add a line of text.\n";
	close(FP);

	utime($atime,$mtime,$filename);


Oldest File in Directory Tree

pwd; find . -type f -print | {
   read OLDEST
   while read FILE; do
      [[ $OLDEST -nt $FILE ]] && OLDEST=$FILE
   done
   ls -l $OLDEST
}
 

   

 
 EditThisPage · LinksToPage · PageInfo 12/03/12 15:50:23  ·  0.0587s