execute a program in the background, redirect stdout and stderr to null, and keep it from being hungup. [Depends on: Bourne shell, coreutils]
#!/bin/sh # ~/bin/amp nohup "$@" > /dev/null 2>&1 &
Command line calculator based on bc, along with commonly used math functions. [Depends on: Bourne shell, bc]
#!/bin/sh # ~/bin/calc echo 'define ln(a) { return l(a); } define exp(a) { return e(a); } define pow(a,b) { return e(b*l(a)); } define sqrtt(a) { return e(0.5*l(a)); } define log(a) { return l(a)/l(10); } define sin(a) { return s(a); } define cos(a) { return c(a); } define tan(a) { return s(a)/c(a); } define sec(a) { return 1/c(a); } define csc(a) { return 1/s(a); } define cot(a) { return c(a)/s(a); } define asin(x) { return a(x/sqrt(1-(x^2))); } define acos(x) { return a(sqrt(1-(x^2))/x); } define atan(x) { return a(x); } define asec(x) { return a(sqrt((x^2)-1)); } define acsc(x) { return a(1/sqrt((x^2)-1)); } define acot(x) { return a(1/x);} define sinh(x) { return (e(x)-e(-x))/2;} define cosh(x) { return (e(x)+e(-x))/2;} define tanh(x) { return (e(2*x) - 1)/(e(2*x) + 1); } define asinh(x) { return l(x+sqrt((x^2)+1)); } define acosh(x) { return l(x+sqrt((x^2)-1)); } define atanh(x) { return 0.5*l((1+x)/(1-x)); } pi = 4*a(1); scale = 6; ' "$@" | bc -l
Make a file executeable. Saves keystrokes. [Depends on: Bourne shell, coreutils]
#!/bin/sh # ~/bin/chx chmod +x "$@"
Egg timer. Be sure to make something LOUD for your alarm; use sox to ajust the volume. [Depends on: Bourne shell, coreutils, mplayer]
#!/bin/sh # EGG TIMER. #DTPD# # ${HOME}/bin/timer MINUTES=$1 echo ${MINUTES}:00 for M in `seq -w $(($MINUTES - 1)) -1 0`; do for S in `seq -w 55 -5 0`; do sleep 5 ; echo ${M}:${S} done done echo -e "\n\n\t\tALARM! ALARM! ALARM!\n\n" exec mplayer ~/Music/ALARM.mp3 &> /dev/null
Quickly update the system using yum. Yet another keystroke saver.[Depends on: Bourne shell, sudo, yum]
#!/bin/sh # ~/bin/syyu echo 'sudo yum -y update' exec sudo yum -y update
A somewhat safer way to shred all the files in a directory. [Depends on: Bourne shell, coreutils, findutils]
#!/bin/sh # ~/bin/rm-shred { for x in "$@" ; do # regular file find "$x" -type f -exec shred -u -n 1 {} \; # symlink find "$x" -type l -exec rm {} \; # wierd files find "$x" -type b -printf "%p is a block file" find "$x" -type c -printf "%p is a character file" find "$x" -type p -printf "%p is a named pipe" find "$x" -type s -printf "%p is a socket" # if we get here it is a directory or has been noted rm -r "$x" done } 2> /dev/null
Safe File Removal [Depends on: Bourne shell, coreutils]
#!/bin/sh ## rms ## "rm, safely." I also think it's funny ## that I've named my reimplementation ## of the MSFT recycling bin after RMS. ## (c) 2000-2003 Hal Canary ## ## License: ## This is free software, see ## http://www.gnu.org/licenses/gpl.txt ## This product is distributed ## WITHOUT ANY WARRANTY of any kind. ## TRASH=/tmp/$USER/trash TRASH=${HOME}/tmp/Trash if [ "$#" -lt 1 ]; then echo "Usage: $0 FILE"; echo "Move FILE to $TRASH."; exit 1; fi test -d "$TRASH" || mkdir -pv $TRASH for file in "$@"; do if [ -e "$file" ]; then mv -f -- "$file" $TRASH/ echo "$file -> $TRASH/" else echo "Does $file exist?" fi done exit 0;
A terminal locker [Depends on: bash, coreutils]
#!/bin/sh # ~/bin/tlock PASS='12345' ; TRY='' trap '' TERM INT clear while [ "$TRY" != "$PASS" ] ; do echo -en "\ntlock password: " stty -echo; read TRY; stty echo; done echo "";
Prepend a string to the beginning of each of a set of filename. [Depends on: Bourne shell, coreutils]
#!/bin/sh # ~/bin/prepend-something if [ "$#" -lt 2 ] ; then echo "useage: $0 PREFEX FILE[S]" exit 1 fi PREFEX=${1} for argc in `seq 2 $#`; do eval arg=\${$argc} mv -v "${arg}" "${PREFEX}${arg}" done
Make a Fair Use backup of a DVD that you own using mencoder. [Depends on: Bourne shell, coreutils, mencoder, mktemp]
#!/bin/sh # ~/bin/rip-and-encode-dvd X=`mktemp video-XXXXXXXXXX` mv $X ${X}.avi exec nice mencoder "dvd://1" -alang en \ -slang en -o ${X}.avi -ovc lavc \ -lavcopts "aspect=16/9:vcodec=mpeg4" \ -oac copy 2> /dev/null
Print date+time in ISO 8601 format. [Depends on: Bourne shell, coreutils]
#!/bin/sh # ~/bin/isodatetime #date --rfc-3339=seconds exec date +%Y-%m-%dT%T%z
Print just the date in ISO 8601 format. [Depends on: Bourne shell, coreutils]
#!/bin/sh # ~/bin/isodate exec date +%Y-%m-%d
Suppose you want to pipe something into a file as root using sudo. For example: sudo echo 1 > /proc/sys/net/ipv4/ip_forward
; this won't work. Instead try the sud script like this: sud 'echo 1 > /proc/sys/net/ipv4/ip_forward'
. [Depends on: Bourne shell, coreutils, sudo]
#!/bin/sh # ~/bin/sud sudo su -c " $* "
Self-documented. [Depends on: Bourne shell, coreutils]
#!/bin/sh # ~/bin/shorten if [ "$#" -ne 1 ] ; then echo "useage: shorten N" echo " where N is a nonnegative integer" echo " To print out the first N bytes of" echo " the stdin to stdout." exit 1 fi head -c $1 echo ""
Launch my favorite terminal editor. [Depends on: Bourne shell, emacs]
#!/bin/sh # ~/bin/e #exec nano "$@" exec emacs -nw "$@"
Launch my favorite gui editor, gedit. [Depends on: Bourne shell, coreutils, gedit]
#!/bin/sh # ~/bin/ge nohup gedit "$@" > /dev/null 2>&1 &
sudo ifup [Depends on: Bourne shell, sudo, intiscripts]
#!/bin/sh # ~/bin/u sudo /sbin/ifup "$@"
sudo ifdown [Depends on: Bourne shell, sudo, intiscripts]
#!/bin/sh # ~/bin/d sudo /sbin/ifdown "$@"
[Depends on: Bourne shell, xorg-x11-apps, sudo, Linux kernel]
#!/bin/sh # ~/bin/xconsole-proc-kmsg sudo -b xconsole -file /proc/kmsg
Launch gthumb in the current directory if no argument. otherwise pass over all arguments. [Depends on: Bourne shell, gthumb]
#!/bin/sh # ~/bin/gt if [ "$#" -eq 0 ] ; then echo gthumb . \> /dev/null 2\>\&1 \& gthumb . > /dev/null 2>&1 & else echo gthumb "$@" \> /dev/null 2\>\&1 \& gthumb "$@" > /dev/null 2>&1 & fi
Launch Evince [Depends on: Bourne shell, evince]
#!/bin/sh # ~/bin/ev evince "$@" > /dev/null 2>&1 &
Encrypt or decrypt with the ROT13 Cypher. Useage: rot13 Uryyb jbeyq.
or echo Uryyb jbeyq. | rot13
. [Depends on: Bourne shell, coreutils]
#!/bin/sh # ~/bin/rot13 if [ "$#" -gt 0 ] ; then echo "$@" | tr A-Za-z N-ZA-Mn-za-m else tr A-Za-z N-ZA-Mn-za-m fi
Grab a file over http and pipe it to stdout. [Depends on: Bourne shell, wget]
#!/bin/sh # ~/bin/wgeto exec wget -o /dev/null -O - "$@"
Extract a bunch of rar files. [Depends on: Bourne shell, unrar, coreutils]
#!/bin/sh # ~/bin/unrar-extract for x in "$@" ; do nice unrar x "$x" done
List only directories. [Depends on: Bourne shell, grep, coreutils]
#!/bin/sh # ~/bin/lsd /bin/ls --color='yes' -l "$@" | grep "^d" # /bin/ls --color=yes -p "$@" | grep "/$"
Generate Password. Self-documented. [Depends on: Bourne shell, Linux kernel, coreutils, sed]
#!/bin/sh # ~/bin/genpasswd # Generate a random password with about # 142 bits of randomness, making use of # /dev/random. # Note: # Most online services have somewhat # arbitrary rules about what characters # can be included in a password. So we # limit ourselves to A-Za-z0-9. # Copyright 2007 Hal Canary # Dedicated to the Public Domain. echo "Grabbing bits from /dev/random..." 1>&2 head -c 18 /dev/random | base64 | \ sed 's/\//Z/g;s/+/z/g;' # If you lack base64 on your system, try: # head -c 18 /dev/random | uuenview -b '' | \ # sed 's/\//Z/g;s/+/z/g;'
Convert mp3 files to CD-Audio. [Depends on Bourne Shell, coreutils, lame, sox.]
#!/bin/sh # ~/bin/makecdrfiles # Convert mp3s to .cdr format for an audio CD. # Copyright 2000-2007 Hal Canary # Dedicated to the Public Domain. if [ "$#" -lt 1 ] ; then echo " Useage: $0 file.mp3 [more files.mp3]" echo "" echo " After you're done, burn with:" echo -n ' sudo cdrecord -v -dao -eject dev=$DEV' echo ' -pad -audio *.cdr' exit 1 fi for FILE in "$@" ; do nice lame --decode "$FILE" - | \ nice sox -t wav - "$(basename $FILE .mp3).cdr" done