Notes‎ > ‎

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
 

Comments