Bash

= Basics = Source: ss64.com

echo -n "Count: " >> files.txt find. | wc -l >> files.txt
 * Echo continue on same line:

$1, $2, $3   are the positional parameters. "$@"         is an array-like construct of all positional parameters, {$1, $2, $3 ...}. "$*"         is the IFS expansion of all positional parameters, $1 $2 $3 .... $#            is the number of positional parameters. $-           current options set for the shell. $$           pid of the current shell (not subshell). $_           most recent parameter (or the abs path of the command to start the current shell immediately after startup). $IFS         is the (input) field separator. $?           is the most recent foreground pipeline exit status. $!           is the PID of the most recent background command. $0           is the name of the shell or shell script.
 * Variable

dir="/data/.folder/" path="/home/system/Desktop/pending_files.txt" tree $dir | wc -l >> $path
 * Using Variables in Bash:

=Bash Scripts=

One Liners
find $dir -type f | perl -ne 'print $1 if m/\.([^.\/]+)$/' | sort -u
 * Script to find file extensions

find. -name "*.webp" -exec dwebp {} -o {}.png \; find. -name "*.webp" -delete
 * Convert files with name "webp" file to Png:

mkdir ep{1..16} mkdir -p sa{0..10}/{1,2,3,4} mkdir -p sa{0..10}/{1..4}
 * Create Multiple Directories with single command:

Medium Scripts

 * Checking Internet connectivity
 * 1) !/bin/bash

if ping -c 1 -W 2 google.com > /dev/null; then echo "Up" else echo "Down" fi


 * Mplayer Play Live Gurbani from 8 to 10AM

trickle -d 20 -u 15 mplayer mms://sgpc.net/live & sleep 2h kill $!
 * 1) !/bin/bash

Cron Entry: 0 8 * * * ./mplayer.sh


 * Download Newspaper front page

URL: http://newspaper.ajitjalandhar.com/newspages/20130226/20130226_1_1.jpg

 cd ~/Desktop D=$(date +"%Y%m%d") FILE="$D"_1_1.jpg if [ -f $FILE ]; then exit else wget "http://newspaper.ajitjalandhar.com/newspages/"$D"/"$D"_1_1.jpg" && notify-send -i /data/Softwares/Wallpapers/icons/ajit.png -t 50 "Ajit Jalandhar" "is saved at your desktop" fi
 * 1) !/bin/bash

Cron Entry to download daily: 0 7-11 * * * ./ajit.sh

PATH=/usr/games:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
 * Eye strain preventer:
 * 1) !/bin/bash

while true; do sleep 1200; sm --foreground=white --background=black Look at an Object 20 feet away for 20 Seconds & sleep 20s && killall sm; done

Add following line to startup programs: /home/aman/Scripts/eyesaver.sh >/dev/null 2>&1


 * Extension Doctor

for f in *.{jpg,JPG,png,PNG,jpeg,JPEG,webp}; do    type=$( file "$f" | grep -oP '\w+(?= image)' ) case $type in         PNG)  newext=png ;;         JPEG) newext=jpg ;; P) newext=webp ;;       *)    echo "??? what is this: $f"; continue ;; esac ext=${f##*.}  # remove everything up to and including the last dot if $ext != $newext ; then # remove "echo" if it's working correctly echo mv "$f" "${f%.*}.$newext" fi done

Big Scripts

 * Directory Stats
 * 1) !/bin/bash
 * 2) Script to export file/directory stats to a file.

dir="/data/" file="/home/aman/Desktop/pending_files.txt"
 * 1) Path Variables:

echo "###########################">> $file
 * 1) Script starts here:

date >> $file && echo " ">> $file
 * 1) Date of execution:

echo -n "No of Files: ">> $file find $dir -type f | wc -l >> $file && echo " ">> $file
 * 1) File Stats:

echo -n "No of Directories: ">> $file find $dir -type d | wc -l >> $file && echo " ">> $file

echo "Sub directory size: ">> $file du -h --max-depth=1 $dir | sort -h >> $file && echo " ">> $file
 * 1) Directory size:

echo "100 MB+ Files: ">> $file find $dir -size +100M -exec ls -sh {} \; | sort -r >> $file && echo " ">> $file
 * 1) Huge Files:

echo "No of Image Files: ">> $file echo -n "JPG : " >> $file find $dir -iname "*.jpg" | wc -l >> $file
 * 1) Image file extension counts:

echo -n "PNG : " >> $file find $dir -iname "*.png" | wc -l >> $file

echo -n "GIF : " >> $file find $dir -iname "*.gif" | wc -l >> $file

echo -n "JPEG: ">> $file find $dir -iname "*.jpeg" | wc -l >> $file

echo -n "WEBP: ">> $file find $dir -iname "*.webp" | wc -l >> $file && echo " ">> $file

echo "No of Video Files: ">> $file echo -n "WEBM: ">> $file find $dir -iname "*.webm" | wc -l >> $file
 * 1) Video file extension counts:

echo -n "MPG : ">> $file find $dir -iname "*.mpg" | wc -l >> $file

echo -n "3GP : ">> $file find $dir -iname "*.3gp" | wc -l >> $file

echo -n "DAT : ">> $file find $dir -iname "*.dat" | wc -l >> $file

echo -n "MP4 : ">> $file find $dir -iname "*.mp4" | wc -l >> $file

echo -n "AVI : ">> $file find $dir -iname "*.avi" | wc -l >> $file

echo -n "FLV : ">> $file find $dir -iname "*.flv" | wc -l >> $file && echo " ">> $file

echo "###########################">> $file exit


 * References
 * Reference Guide: gnu.org
 * Check Scripts for errors: shellcheck.net