====== Commandline - Fu ====== Referencia: [[http://commandlinefu.com|Commandlinefu]] ===== Random ===== ==== Pick a random line from a file ==== head -$(($RANDOM % $(wc -l < file.txt) +1 )) file.txt | tail -1 ==== Generates random texts ==== tr -dc a-z1-4 50'|tr 3-4 ' '|sed 's/^ *//'| cat -s | fmt|head -40 ==== Play a random [album/movie] two rows down ==== mplayer "$(find . -maxdepth 2 -mindepth 2 -type d | grep -v '^.$' | sort -R | head -n1)"/* ==== Print random emoji in terminal ==== printf "\U$(printf '%x' $((RANDOM%79+128512)) )" ==== Set background image to random file from current dir. ==== feh –bg-center $(ls | shuf -n 1) ==== Set background image to random file from current dir. ==== feh –bg-center $(ls -U1 |sort -R |head -1) ===== Cron and crontab ===== ==== Print crontab entries for all the users that actually have a crontab ==== for USER in $(cut -d ":" -f1 /dev/null 2>&1; if [ ! ${?} -ne 0 ]; then echo -en "--- crontab for ${USER} ---\n$(crontab -u ${USER} -l)\n"; fi; done for USER in $(ls /var/spool/cron); do echo "=== crontab for $USER ==="; echo $USER; done ==== See crontabs for all users that have one ==== for USER in /var/spool/cron/\*; do echo “— crontab for $USER ---" cat "$USER” done ===== List of commands you use most often ===== history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head ===== Remove multiple consecutive blank lines leaving only one ===== for j in $(for i in *; do grep -A1 . $i|grep -q "^--$" && echo $i;done); do cp $j $j.bak -v;cat -s $j.bak > $j; done ===== Line numbering ===== cat -n FILE grep -n '^' FILE ===== Check for files containing multiple consecutive blank lines ===== for i in *; do grep -A1 . $i|grep -q "^--$" && echo $i; done ===== On-the-fly unrar movie in .rar archive and play it ===== Does also work on part archives. unrar p -inul foo.rar|mplayer - ===== Open/Close your co-worker’s cd player ===== while true; do eject && sleep $(expr $RANDOM % 5) && eject -t; done; ===== Optimal way of deleting huge numbers of files ===== find /path/to/dir -type f -print0 | xargs -0 rm ===== Organize a TV-Series season ===== season=1 for file in $(ls) ; do dir=$(echo $file | sed 's/.*S0$season\(E[0-9]\{2\}\).*/\1/') mkdir $dir mv $file $dir done ===== Output as many input ===== echo 'foo' | tee >(wc -c) >(grep o) >(grep f) ===== Output centralized text on command line ===== centralized(){ L=$(echo -n $*|wc -c) echo -e "\x1b[$[ ($COLUMNS / 2) - ($L / 2) ]C$*" } ===== Output Detailed Process Tree for any User ===== psu(){ command ps -Hcl -F S f -u ${1:-$USER}; } ===== Output system statistics every 5 seconds with timestamp ===== while [ 1 ]; do echo -n "$(date +%F_%T)" vmstat 1 2 | tail -1 sleep 4 done ===== Pad file names with zeros so that files sort easily ===== zeros=3; from=1; to=15; for foo in $(seq $from $to); do echo mv "front${foo}back" "front$(printf "%0${zeros}d\n" $foo)back" done ===== Parse an RPM name into its components - fast ===== parse_rpm() { RPM=$1 B=${RPM##*/} B=${B%.rpm} A=${B##*.} B=${B%.*} R=${B##*-} B=${B%-*} V=${B##*-} B=${B%-*} N=$B echo "$N $V $R $A" } ===== Parses the BIOS memory and prints information ===== About all structures (or entry points) it knows of. biosdecode ===== Path manipulation in bash ===== rp() { local p eval p=":\$$1:" export $1=${p//:$2:/:} } ap() { rp "$1" "$2" eval export $1=\$$1$2 } pp() { rp "$1" "$2" eval export $1=$2:\$$1 } ===== Peak amount of memory occupied by any process with “FOO” in its name ===== grep VmHWM /proc/$(pgrep -d '/status /proc/' FOO)/status ===== Per country GET report, based on access log. Easy to transform to unique IP ===== cat /var/log/nginx/access.log | grep -oe '^[0-9.]\+' | \ perl -ne 'system("geoiplookup $_")' | \ grep -v found | \ grep -oe ', [A-Za-z ]\+$' | sort | uniq -c | sort -n ===== Perform a branching conditional ===== true && { echo success;} || { echo failed; } ===== Perform a C-style loop in Bash. ===== for (( i = 0; i < 100; i++ )); do echo "$i"; done ===== Performance tip: compress /usr/ ===== [ ! -d /squashed/usr ] && mkdir -p /squashed/usr/{ro,rw} mksquashfs /usr /squashed/usr/usr.sfs.new -b 65536 mv /squashed/usr/usr.sfs.new /squashed/usr/usr.sfs reboot ===== Periodic Display of Fan Speed with Change Highlights ===== watch -n 10 -d eval "sensors | grep RPM | sed -e 's/.*: *//;s/ RPM.*//'" ===== Periodic Log Deletion ===== find /path/to/dir -type f -mtime +[#] -exec rm -f {} \; ===== Pick the first program found from a list of alternatives ===== find_alternatives(){ for i;do which "$i" >/dev/null && { echo "$i"; return 0;} done return 1 } ===== Pipe output to notify-send ===== echo 'Desktop SPAM!!!' | while read SPAM_OUT; do notify-send "$SPAM_OUT"; done ===== Pipe stdout and stderr, etc., to separate commands ===== some_command > >(/bin/cmd_for_stdout) 2> >(/bin/cmd_for_stderr) ===== Pipe system log to espeak ===== tail -f /var/log/messages.log | \ while read line ; do echo $line | cut -d \ -f5- | sed s/\\[[0-9]*\\]// | espeak done ===== P is for pager ===== p() { l=$LINES case $1 in do) shift; IFS=$'\n' _pg=( $("$@") ) && _pgn=0 && p r;; r) echo "${_pg[*]:_pgn:$((l-4))}";; d) (( _pgn+=l-4 )); (( _pgn=_pgn>=${#_pg[@]}?${#_pg[@]}-l+4:_pgn )); p r;; u) (( _pgn=_pgn<=l-4?0:_pgn-$l-4 )); p r;; esac; } ===== Place the argument of the most recent command on the shell ===== !$ ===== Play files with mplayer ===== Including files in sub-directories, and have keyboard shortcuts work mplayer -playlist <(find $PWD -type f) ===== Play Mediafile in multipart RAR archive on the fly ===== With buffer to seek back and forth unrar p -inul *.rar|mplayer -cache 100000 - ===== Play radio stream with mplayer ===== mplayer -nolirc http://5253.live.streamtheworld.com/VIRGINRADIO_DUBAIAAC ===== Plays Music from SomaFM ===== read -p "Which station? "; mplayer --reallyquiet -vo none -ao sdl http://somafm.com/startstream=${REPLY}.pls ===== Pop up a Growl alert if Amtrak wifi doesn’t know where to find The Google ===== while [ 1 ]; do (ping -c 1 google.com || growlnotify -m 'ur wifiz, it has teh sad'); sleep 10; done ===== Pop-up messages on a remote computer ===== while : ; do if [ ! $(ls -l commander | cut -d ' ' -f5) -eq 0 ]; then notify-send "$(less commander)"; > commander; fi; done ===== Port scan using parallel ===== seq 1 255 | parallel -j+0 'nc -w 1 -z -v 192.168.1.{} 80' ===== Power cd - Add a couple of useful features to ‘cd’ ===== cd() { if [ -n "$1" ]; then [ -f "$1" ] && set -- "${1%/*}"; else [ -n "$CDDIR" ] && set -- "$CDDIR"; fi; command cd "$@"; } ===== Print code 3-up and syntax-highlighted for easy beach-time study ===== enscript -E -B -3 -r -s 0 --borders -fCourier4.8 --mark-wrapped-lines=arrow ===== Print every Nth line (to a maximum) ===== function every() { sed -n -e "${2}q" -e "0~${1}p" ${3:-/dev/stdin}; } ===== Print failed units in systemd ===== systemctl --failed | head -n -6 | tail -n -1 ===== Print out “string” between “match1” and “match2” ===== echo "string" | sed -e 's/.*match1//' -e 's/match2.*$//' ===== Print shared library dependencies ===== function ldd(){ objdump -p $1 | grep -i need; } ===== Print shared library dependencies ===== LD_TRACE_LOADED_OBJECTS=1 name_of_executable ===== Print stack trace of a core file without needing to enter gdb interactively ===== gdb --batch --quiet -ex "thread apply all bt full" -ex "quit" ${exe} ${corefile} ===== Print text string vertically, one character per line. ===== echo Print text vertically|sed 's/\(.\)/\1\n/g' ===== Process each item with multiple commands (in while loop) ===== find -maxdepth 1 -type d | while read dir; do echo $dir; echo cmd2; done ===== Quick and easy way of validating a date format of yyyy-mm-dd and ===== returning a boolean echo 2006-10-10 | grep -c '^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$' ===== Quick and easy way of validating a date format of yyyy-mm-dd and ===== returning a boolean if date -d 2006-10-10 >> /dev/null 2>&1; then echo 1; else echo 0; fi ===== Quickest way to sort/display \# of occurences ===== "some line input" | sort | uniq -c | sort -nr ===== Quick find executable from locate db ===== find $(locate hello) -type f -executable -print|grep -E "hello\$" ===== Quick find function ===== quickfind () { find . -maxdepth 2 -iname "*$1*" } ===== Quickly graph a list of numbers ===== gnuplot -persist <(echo "plot '<(sort -n listOfNumbers.txt)' with lines") ===== Read a file line by line and perform some operation on each line ===== while read line; do echo "$(date),$(hostname),$line"; done < somefile.txt ===== Read a file with table like data ===== echo 1 2 3 > FILE; while read -a line; do echo ${line[2]}; done < FILE ===== Read a keypress without echoing it ===== stty cbreak -echo; KEY=$(dd bs=1 count=1 2>/dev/null); stty -cbreak echo ===== Read/Write output/input from sed to a file ===== seq 20 | sed '5,6 { w out.txt }' #Can't print correctly. See sample output ===== Realtime lines per second in a log file ===== tail -f /var/log/logfile|perl -e 'while (<>) {$l++;if (time > $e) {$e=time;print "$l\n";$l=0}}' ===== Receiving alerts about commands who exit with failure ===== export PROMPT_COMMAND='( x=$? ; let x!=0 && echo shell returned $x )' ===== Recover a deleted file ===== grep -a -B 25 -A 100 'some string in the file' /dev/sda1 > results.txt ===== Recursive cat - concatenate files (filtered by extension) across ===== multiple subdirectories into one file find . -type f -name *.ext -exec cat {} > file.txt \; ===== Recursive find and replace in h an cpp files ===== find . -name "*.h" -o -name "*.cpp" | xargs sed -i 's/addVertexes/addVertices/g' ===== Recursively add directories to $PATH ===== PATH="${PATH}:$(find ${HOME}/bin -type d | tr '\\n' ':' | sed 's/:$//’)" ===== Recursively remove "node_modules" directories ===== find . -name “node_modules” -exec rm -rf ‘{}’ ; ===== Recursively replace a string in files with lines matching string ===== find . -type f |xargs -I% sed -i ‘/group name/s/\>/ deleteMissing=“true”\>/’ % ===== Recursively replace a string in files with lines matching string ===== for i in $(find . -type f); do sed -i ‘/group name/s/\>/ deleteMissing=“true”\>/’ $i; done ===== Recursively search and replace old with new string, inside every instance of ===== filename.ext find . -type f -name filename.exe -exec sed -i “s/oldstring/oldstring/g” {} +; ===== Recursively sort files by modification time through multiple directories. ===== find /test -type f -printf “%AY%Aj%AH%AM%AS—%h/%f” | sort -n ===== Recursive Ownership Change ===== chown -cR –from=olduser:oldgroup newuser:newgroup \* ===== Recursive remove files by mask ===== find . -name “.DS_Store” -print0 | xargs -0 rm -rf ===== Recursive script to find all epubs in the current dir and subs, then convert ===== to mobi using calibre's ebook-convert utility find . -name ’\*.epub’ -exec sh -c ‘a={}; ebook-convert $a ${a%.epub}.mobi –still –more –options’ ; ===== Recursive search and replace old with new string, inside files ===== find . -type f -exec sed -i s/oldstring/newstring/g {} + ===== Recursive search and replace old with new string, inside files ===== grep -rl oldstring . | parallel sed -i -e ‘s/oldstring/newstring/’ Recursive search and replace old with new string, inside files $ grep -rl oldstring . |xargs sed -i -e ‘s/oldstring/newstring/’ ===== Recursive search and replace old with new string, inside files ===== grep -rlZ oldstring . | xargs -0 sed -i -e ‘s/oldstring/newstring/’ ===== Redirect bash built-in output to stdout ===== TIME=$( { time YOUR_COMMAND_HERE; } 2\>&1 ) ; echo $TIME ===== Redirect output to a write-protected file with sudo but without sh -c, using tee. ===== command foo bar | sudo tee /etc/write-protected \> /dev/null ===== Reducing image size ===== convert -quality 40% original_image reduced_image ===== Remote copy in batch, exclude specified pattern ===== scp -r $(ls | grep -vE “(Pattern1|Pattern2)”) user@remote_host:/location ===== Remove all but One ===== rm-but() { ls -Q | grep -v “$1” | xargs rm -r ; } ===== Remove all files previously extracted from a tar(.gz) file. ===== for i in $(tar -tf FILE.TAR.GZ); do rm $i; done; ===== Remove all leading and trailing spaces or tabs from all lines of a text file ===== while read l; do echo -e “$l”; done \<1.txt \>2.txt ===== Remove all lines beginning with words from another file ===== for wrd in $(cat file2) ; do sed -i .bk "/^$wrd/d" file1; done ===== Remove all snapshots from all virtual machines in vmware esx ===== time vmware-cmd -l | while read x; do printf “$x" vmware-cmd "$x” removesnapshots done ===== Remove an old gmetric statistic ===== gmetric -n $METRIC_NAME -v foo -t string -d 10 ===== Remove / delete file with ? or special characters in filename ===== ls -il; find \* ( -type d -prune ) -o -inum NUM -exec rm -i {} ; ===== Remove exact phrase from multiple files ===== grep -r “mystring” . |uniq | cut -d: -f1 | xargs sed -i “s/mystring//” ===== Remove files and directories with acces time older than a given date ===== touch -t “YYYYMMDDhhmm.ss” dummy ; find . -anewer dummy ===== Remove files of a specific size ===== find . -size 1400c -exec rm {} ; ===== Remove files that were modified 30 days ago ===== find . -mtime +30 -type f -exec rm -rf {} ; ===== Remove files unpacked by unzip ===== zipinfo -1 aap.zip | xargs -d ‘’ rm ===== Remove lines ending or trailing at least one slash (/) ===== cat file.txt | grep -v /$ \> newfile.txt ===== Remove recursively all txt files with number of lines less than 10 ===== find . -type f -name "\*.txt" | while read; do \[1\] && rm -vf "$THISFILE" done Remove text from file1 which is in file2 and stores it in an other file grep -Fvf file1 file2 \> file-new ===== Remove the last string character using rev and cut ===== echo “command lines” | rev | cut -c 2- | rev ===== Removing those pesky malformed lines at the end of a text file.. ===== cat -n $file | tail -n 100 && head -n number-of-lines-you-want-to-keep \> newfile ===== Renaming a file without overwiting an existing file name ===== mv -b old_file_name new_and_already_existent_file_name ===== Renaming files removing some unwanted extension ===== for i in \*ext; do mv $i ${i%.ext}; done ===== Renice a group of threads ===== renice -20 -g 2874 \# (2784 found with ps -Aj) ===== Renombrar un archivo que inicia con guion ===== find . -name “-help” -exec mv {} help.txt ; ===== Repeat any string or char n times without spaces between ===== echo -e ’’$_{1..80}‘’ ===== Repeat last executed command ===== \!\! ===== Replace all spaces with new lines ===== tr ’ ’ ‘’ \< FILENAME \> OUTPUT ===== Replace dots in filenames with dashes, using sed ===== for f in \*; do fn=$(echo $f | sed 's/\\(.\*\\)\\.\\(\[^.\]\*\\)$/\\1\\2/;s/./-/g;s//./g’); mv $f $fn; done ===== Replace dots in filenames with dashes ===== zmv ’(*.*)(.\*)’ ’${1//./_}$2’ ===== Reproduce test failure by running the test in loop ===== (set -e; while true; do TEST_COMMAND; done) | tee log ===== Re-read partition table on specified device without rebooting system (here ===== /dev/sda). partprobe ===== Rerun a command until there are no changes, but no more than N times. ===== for times in $(seq 10) ; do puppet agent -t && break ; done ===== Reset the time stamps on a file ===== touch -acm yyyymmddhhMM.ss \[file\] ===== Resolution of a image ===== identify -format “%\[fx:w\]x%\[fx:h\]” logo: ===== Restart command if it dies. ===== ps -C program_name || { program_name & } ===== Restore application on Openshift ===== rhc snapshot restore -a {appName} -f {/path/to/snapshot/appName.tar.gz} ===== Restoring some data from a corrupted text file ===== ( cat badfile.log ; tac badfile.log | tac ) \> goodfile.log ===== Restrict the bandwidth for the SCP command ===== scp -l10 pippo@serverciccio:/home/zutaniddu/\* . ===== Retrieve the final URL after redirect ===== curl $URL -s -L -o /dev/null -w ‘%{url_effective}’ ===== Retrofit a shebang to an existing script ===== shebang () { printf ‘%s’ 0a ‘\#\!’“$1” . w | ed -s “$2” ; } ===== Retry the previous command until it exits successfully ===== \!\!; while \[ $? -ne 0 \]; do \!\!; done ===== Return a titlecased version of the string ===== title() { string=( $@ ); echo ${string\[@\]^} } ===== Returns the absolute path to a command, using which if needed ===== get_absolute_path() { echo $1 | \ sed "s|^\\(\[^/\].\*/.\*\\)|$(pwd)/\\1|;s|^(\[^/\]\*)$|$(which – $1)|;s|^$|$1|"; } ===== Returns the absolute path to a command, using which if needed ===== which any_path/a_command.sh | sed “s|^./|$(pwd)|” ===== Returns top ten (sub)directories with the highest number of files ===== find . -type d | while read dir ; do num=$(ls -l $dir | grep '^-' |\ wc -l) ; echo "$num $dir" ; done | sort -rnk1 | head ===== Return threads count of a process ===== ps -o thcount -p PROCESS ID ===== Reuse all parameter of the previous command line ===== \!\* ===== Run a bash script in debug mode, show output and save it on a file ===== bash -x test.sh 2\>&1 | tee out.test ===== Run one of your auto test programs from GNU make ===== gmake runtestsingle testsingle=udtime ===== Run puppet agent in one-off debug mode ===== puppet agent –test –debug ===== Run puppet master in foreground in debug mode ===== puppet master –no-daemonize –debug ===== Run vmware virtual machine from the command line without the gui or X session ===== vmrun start /path/to/virtual_machine.vmx nogui ===== Save a result based on a command's output in a variable while printing the ===== command output num_errs=$(grep ERROR /var/log/syslog | tee \>(cat \>&2) | wc -l) ===== Scan a gz file for non-printable characters and display each line number and ===== line that contains them. zcat a_big_file.gz | sed -ne “$(zcat a_big_file.gz | tr -d "\[:print:\]" | cat -n | \\ grep *vP "^ \*\\d+\\t$” | cut -f 1 | sed -e “s/(\[0-9\]+)/\\1=;\\1p;/” | xargs)" | tr -c “\[:print:\]” “?” ===== Schedule a script or command in x num hours, silently run in the background ===== even if logged out ( ( sleep 2h; your-command your-args ) & ) ===== Schedule Nice Background Commands That Won't Die on Logout - Alternative to ===== nohup and at ( trap ’’ 1 ( nice -n 19 sleep 2h && command rm -v -rf /garbage/ &\>/dev/null && trap 1 ) & ) ===== Search for a process by name ===== psg(){ ps aux | grep -E “\[${1:0:1}\]${1:1}|^USER”; } ===== Search for a running process through grep ===== ps -e | grep SearchStringHere ===== Search for classes in Java JAR files. ===== find . -name "\*.jar" | \ while read line; do echo “\#\#\# $line” unzip -l $line done | \ grep “^\#\#\#|you-string” |less ===== Search for files or directories, then show a sorted list of just the unique ===== directories where the matches occur for i in $(locate your_search_phrase); do dirname $i; done | sort | uniq ===== Search for java explicit incrementation ===== egrep “(\[_a-zA-Z\]\[_a-zA-Z0-9\]//) //= //\\1 //\[\*/+-\] //\[0-9\]+ //;” ===== Search for string through files ===== grep -Rl “pattern” files_or_dir ===== Search for the file and open in vi editor. ===== vifind() { vi $(find . -name “$1”) } ===== Search gdb help pages ===== gdb command: apropos KEYWORD ===== Search in all cpp / hpp files using egrep ===== find . ( -name “*cpp" -o -name "*hpp” ) \ -exec grep -Hn -E “043\[eE\]|70\[Dd\]7” {} ; ===== Search office documents for credit card numbers and social security number SSN ===== docx xlsx find . -iname "*.???x" -type f -exec unzip -p ‘{}’ ’*’ ===== Search the pattern from bzip2'ed file ===== bzgrep -i “pattern” pattern.bz2 ===== Securely locate file and dir ===== slocate filename/dirname ===== See a list of ports running ===== netstat -an | grep -i listen ===== See how many more processes are allowed, awesome! ===== echo $(( $(ulimit -u) - $(find /proc -maxdepth 1 ( -user $USER -o -group $GROUPNAME ) -type d|wc -l) )) ===== See what a cassandra node is streaming ===== watch -d ‘echo -e “Remaining: $\[2\] : $\[3\]”’ ===== Set a Reminder for yourself via the notification system ===== sleep 6s && notify-send -t 10000 -u critical “remember to think” & ===== Set create time using file name for files pulled from android camera ===== find . -type f \-exec echo -n “touch -t $(echo” ; \-exec echo -n {} ; \-exec echo -n " | sed -E ’s/.\*([](/digit/){8})_([](/digit/){4})([](/digit/){2}).\*/\\1\\2.\\3/g’) " ; -exec echo {} ; | sh ===== Set file access control lists ===== setfacl -m u:john:r– myfile ===== Show all occurences of STRING with filename and line number for given FILE ===== pattern under the DIR. find DIR -name “FILE” -exec grep -IHn STRING {} ; ===== Show a notify popup in Gnome that expires in specified time and does not leave ===== an icon in notifications tray notify-send –hint=int:transient:1 -u low -t 100 “Command” “Finished” ===== Show bash's function definitions you defined in .bash_profile or .bashrc ===== declare -f \[ function_name \] ===== Show complete URL in netstat output ===== netstat -pnut -W | column -t -s $’ ===== Show complete URL in netstat output ===== netstat -tup -W | column -t ===== Show concurrent memory usage for individual instances of an application ===== ps -eo pmem,comm | grep application-name ===== Show current pathname in title of terminal ===== export PROMPT_COMMAND=‘echo -ne “\\033\]0;${PWD/\#$HOME/\~}\\007”;’ ===== Show each new entry in system messages as a popup ===== tail -n0 -f /var/log/messages | while read line; do notify-send “System Message” “$line”; done ===== Show exit status of all portions of a piped command eg. ls |this_doesn't_exist ===== |wc echo ${PIPESTATUS\[@\]} ===== Show highlighted text with full terminal width ===== printf “\]’ ‘’ | grep -v”^$" | sort | uniq -c | sort -bn ===== Show only existing executable dirs in PATH using only builtin bash commands ===== for p in ${PATH//:/ }; do [-d $p && -x $p](-d%20$p%20&&%20-x%20$p) && echo $p; done ===== Show open ports on computer ===== netstat -an | grep -i listen ===== Shows physically connected drives (SCSI or SATA) ===== ls /sys/bus/scsi/devices ===== Shows the line of the string you want to search for (like in normal grep) plus ===== 'n' number of lines above and below it. grep -C NO_OF_LINES STRING ===== Show's the main headline from drudgereport.com ===== curl -s http://www.drudgereport.com |\ sed -n ‘/\<\! MAIN HEADLINE\>/,//p’ |\ grep -oP "(?\<=\>)\[^\<\].\*\[^\>\](?=\<)" ===== Shows the torrent file name along with the trackers url ===== grep -ao -HP "http://\[^/\]///" // ===== Show the working directories of running processes ===== lsof -bw -d cwd -a -c java ===== Silently ensures that a FS is mounted on the given mount point (checks if it's ===== OK, otherwise unmount, create dir and mount) (mountpoint -q “/media/mpdr1” && df /media/mpdr1/\* \> /dev/null 2\>&1) || ((sudo umount “/media/mpdr1” \> /dev/null 2\>&1 || true) && (sudo mkdir “/media/mpdr1” \> /dev/null 2\>&1 || true) && sudo mount “/dev/sdd1” “/media/mpdr1”) ===== Simple read and write test with Iozone ===== iozone -s 2g -r 64 -i 0 -i 1 -t 1 ===== Size for all directories inside the current one ===== find . -type d -maxdepth 1 | xargs du -sh ===== Skip filenames with control characters, a.k.a tab,newline etc ===== find . \! -name “$(printf ‘*\[\\001-\\037\\177\]*’)” ===== Skipping five lines, at top, then at bottom ===== seq 1 12 | sed 1,5d ; seq 1 12 | head –lines=-5 ===== Skype conversation logs to IRC-format logs ===== cat skype_log | sed -s ’s/(\[.*\]) (.*): (.\*)/\<\\2\> \\3/’ ===== Sort a list of numbers on on line, separated by spaces. ===== echo $numbers | sed "s/\\( \\|$)//g" | sort -nu | tr “” " " | sed -e "s/^ \*//" -e “s/ $//” ===== Convert DOS to UNIX ===== tr -d \# GNU tr version 1.22 or higher \`\`\`