Shell实用技巧

以下内容大部分来自于All commands,感谢那些分享的人们!
Run the last command as root

$ sudo !!

Serve current directory tree at http://$HOSTNAME:8000/

$ python -m SimpleHTTPServer

Runs previous command but replacing

$ ^foo^bar

Rapidly invoke an editor to write a long, complex, or tricky command

$ ctrl-x e

Place the argument of the most recent command on the shell!

$ 'ALT+.' or <ESC> .'

Get your external IP address

curl ifconfig.me/ip -> IP Adress

curl ifconfig.me/host -> Remote Host

curl ifconfig.me/ua ->User Agent

curl ifconfig.me/port -> Port

$ curl ifconfig.me

Quick access to the ascii table

$ man ascii

Download an entire website!

-p parameter tells wget to include all files, including images.

-e robots=off you don’t want wget to obey by the robots.txt file

-U mozilla as your browsers identity.<\ br>
–random-wait to let wget chose a random number of seconds to wait, avoid get into black list.

Other Useful wget Parameters:

–limit-rate=20k limits the rate at which it downloads files.

-b continues wget after logging out.

-o $HOME/wget_log.txt logs the output

$ wget --random-wait -r -p -e robots=off -U mozilla http://www.example.com

A very simple and useful stopwatch

$ time read

Put a console clock in top right corner

$ while sleep 1;do tput sc;tput cup 0 $(($(tput cols)-29));date;tput rc;done &

List of commands you use most often

$ history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

32bits or 64bits?

$ getconf LONG_BIT

Display the top ten running processes - sorted by memory usage!

$ ps aux | sort -nk +4 | tail

Quickly rename a file

$ mv filename.{old,new}

Push your present working directory to a stack that you can pop later

If are a Bash user and you are in a directory and need to go else where for a while but don’t want to lose where you were, use pushd instead of cd.

cd /home/complicated/path/.I/dont/want/to/forget

pushd /tmp

cd thing/in/tmp

popd (returns you to /home/complicated/path/.I/dont/want/to/forget)

$ pushd /tmp

Create a script of the last executed command!

$ echo "!!" > foo.sh

Delete all files in a folder that don’t match a certain file extension!

$ rm !(*.foo|*.bar|*.baz)

Reuse all parameter of the previous command line!

$ !*

Remove duplicate entries in a file without sorting!

$ awk '!x[$0]++' 

Display which distro is installed!

$ cat /etc/issue

Google Translate

Usage: translate \ \ \

$ translate(){ wget -qO- "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=$1&langpair=$2|${3:-en}" | sed 's/.*"translatedText":"\([^"]*\)".*}/\1\n/'; }

Replace spaces in filenames with underscores!

$ rename 'y/ /_/' *

Define a quick calculator function!

$ ? () { echo "$*" | bc -l; }

mkdir & cd into it as single command

$ mkdir /home/foo/doc/bar && cd $_

Show numerical values for each of the 256 colors in bash

$ for code in {0..255}; do echo -e "\e[38;05;${code}m $code: Test"; done

Get the 10 biggest files/folders for the current direcotry!

$ du -s * | sort -n | tail

Create a quick back-up copy of a file

$ cp file.txt{,.bak}

Convert single digit to double digits

$ for i in ?.ogg; do mv $i 0$i; done

Create a single PDF from multiple images with ImageMagick

$ convert *.jpg output.pdf

Delete all empty lines from a file with vim!

$ :g/^$/d

Save man-page as pdf

$ man -t awk | ps2pdf - awk.pdf

Append content to file

$ cat footnotes.txt >> file

Generate a random password 30 characters long

$ Generate a random password 30 characters long

Remove all files previously extracted from a tar(.gz) file

$ tar -tf .tar.gz> | xargs rm -r

Retry the previous command until it exits successfully

$ until !!; do :; done

List only the directories!

$ ls -d */

Draw kernel module dependancy graph

$ lsmod | perl -e 'print "digraph \"lsmod\" {";<>;while(<>){@_=split/\s+/; print "\"$_[0]\" -> \"$_\"\n" for split/,/,$_[3]}print "}"' | dot -Tpng | display -

Remind yourself to leave in 15 minutes(install leave before using)

$ leave +15

Download all images from a site!

$ wget -r -l1 --no-parent -nH -nd -P/tmp -A".gif,.jpg" http://example.com/images

Bring the word under the cursor on the :ex line in Vim!

$ :

Compare two directory trees!

$ diff <(cd dir1 && find | sort) <(cd dir2 && find | sort)

Add timestamp to history

$ export HISTTIMEFORMAT="%F %T "

Recursively change permissions on files, leave directories alone!

$ find ./ -type f -exec chmod 644 {} \;

Find files that have been modified on your system in the past 60 minutes!

$ sudo find / -mmin 60 -type f

find files in a date range

$ find . -type f -newermt "2010-01-01" ! -newermt "2010-06-01"

Remove blank lines from a file using grep and save output to new file!

$ grep . filename > newfilename

Random Number Between 1 And X!
If X is 5, it will about a number between 1 and 5 inclusive.
This works in bash and zsh.
If you want between 0 and 4, remove the +1.

$ echo $[RANDOM%X+1]

prints file with line numbers!

$ nl

Go to parent directory of filename edited in last command!

$ cd !$:h

convert filenames in current directory to lowercase!

$ rename 'y/A-Z/a-z/' *

Using awk to sum/count a column of numbers!

$ cat count.txt | awk '{ sum+=$1} END {print sum}'

List all authors of a particular git project!

$ git log --format='%aN' | sort -u

你可能感兴趣的:(shell实用技巧,有趣的scripts,Linux)