Commands
[general]
Clear the garbage on your screen after trying to view binary files or such
$ echo ^v^o
or
$ reset
Press ctrl+r in bash to reverse search command history; ctrl+r again to cycle
$ ^r
Erase a word
$ ^w
Runs a command with the last argument of the previous command
$ cmd !$
Run a previous command in including all params but with sudo
$ sudo !!
Runs the previous command replacing the last argument
$ !:- new_argument
Change to last working directory
$ cd -
View the system console remotely
# fold -w 80 /dev/vcs1
[alom]
Return alom console
#.
[baytech]
Return to the baytech console
; 5 times
[colors]
Colorize log files
$ tail -f /var/log/messages | ccze -A
or
$ tail -f FILE | perl -pe 's/KEYWORD/\e[1;31;43m$&\e[0m/g'
Colorize grep in less
$ grep --color=always | less -R
[operators]
Bash ternary operator
$ true && { echo sucess; } || { echo failed; }
or
[[ test_condition ]] && { if_true_do_this; and this; } || { otherwise_do_that; }
[json]
Validates and pretty-prints the json content from the url
$ curl -s "http://feeds.delicious.com/v2/json?count=5" | python -m json.tool | less -R
[output]
Using process substitution, we can 'trick' tee into sending a command's STDOUT to an arbitrary number of commands. The last command (command4) in this example will get its input from the pipe
$ some_command | tee >(command1) >(command2) >(command3) ... | command4
[disk]
Destroy the MBR
# dd if=/dev/zero of=/dev/sda bs=446 count=1
Disable fsck on critical servers
# tune2fs -c 0 -i 0 /dev/mapper/VolGroup00-LogVol00
[files]
Extract file direct from URL without saving to disk
$ wget -qO - "http://www.tarball.com/tarball.gz" | tar zxvf -
Renames files with spaces to underscores
$ for file in *;do mv $file ${file// /_};done
Edit remote files
$ vim scp://username@host//path/to/somefile
Remote and local diff
$ vimdiff scp://username@host//path/to/file /path/to/file
Share file through HTTP port 80
$ nc -w 5 -v -l -p 80 < file.ext
Tail a logfile over the network on port 1234
$ tail -F /var/log/messages | nc -l 1234
Kills the process locking the file
$ fuser -k filename
Compares directories recursively
$ diff -urp dir1/ dir2/
Diff output of two commands
$ diff <(tail -10 file1) <(tail -10 file2)
Split long file in files with same number of lines
$ split -l LINES -d file.txt output_prefix
Converting camelCaseWords to under_score_words and vice versa
$ sed 's/\([A-Z]\)/_\l\1/g' file.txt | sed 's/^_\([a-z]\)/\1/g'
and
$ sed 's/_\([a-z]\)/\u\1/g' file.txt | sed 's/^\([a-z]\)/\u\1/g'
Download from Rapidshare Premium using wget
$ wget -c -t 1 --load-cookies ~/.cookies/rapidshare
Delete files from a directory 30 days old efficiently and takes care of spaces in filenames
$ find /path -type f -print0 | xargs -0 -r rm
Delete mass files quickly in linux
$ mkdir /tmp/test && rsync --delete-before -a -H -v --progress --stats /tmp/test/ target/
Check permissions of each directory to a file
$ namei -l /path/to/file.txt
Cat backwords
$ tac file
Randomize lines in file
$ shuf file.txt
Create empty file of given size
$ fallocate -l 1G test.img
[process]
Greps for a process minus the grep line
$ ps -ef | grep [p]rocessname
Gets the number of lightweight processes
$ ps -o nlwp `pgrep <processname>`
Keep programs running after leaving ssh session
$ nohup ./script.sh &
Run a command for a limited time
$ timeout 10s ./script.sh
Assign a process to a CPU
# taskset -c <cpu_id> -p <pid>
Find the process causing high throughput
# iftop <- tool to find the connection with top throughput
# netstat -ap <- get the process that has the connection open
# netstat -anp <- in case our hostname from iftop has no forward lookup, we'll get the ip
Check resources' usage of command
$ /usr/bin/time -v ls
[memory]
Free memory on a linux host
sync; echo 3 | sudo tee /proc/sys/vm/drop_caches
Flush swap patition
# swapoff -a
# swapon -a
[accounts]
Change passwd non-interactive
echo 'newpasswd' | passwd --stdin user
[awk/sed]
Find a PATTERN and create betweenPATTERNhere
$ sed -e 's/pattern/between&here/g' filename
[References]
http://www.commandlinefu.com/commands/browse
http://www.itworld.com/operating-systems/100018/unix-tip-sed-awk-still-friendly-after-all-these-years
http://www.osnews.com/story/21004/Awk_and_Sed_One-Liners_Explained