Windows 下 命令行增强工具

Clink

Clink,将Bash强大的命令行编辑功能带到了Cmd.exe,

支持路径补充(TAB)、粘贴(Ctrl-V)

支持命令完成(Command-line completion)和环境变量

撤消/重做(CTRL-_或CTRL-X、CTRL-U),改进命令历史和脚本完成。

 

Gow

Gow 是Windows 上轻量级的Cygwin 替代品,包含了130多个*nix 命令行工具,整个包大概10MB,安装时会自动加到PATH中去,其exe包含:

  • agrep 3.37
  • ansi2knr
  • basename 1.9.4
  • bash 2.03
  • bc 1.05
  • bison 1.28
  • bunzip2 1.0.1
  • bzip2 1.0.1
  • bzip2recover 1.0
  • cat 2.0
  • chgrp 3.16
  • chmod 3.16
  • chown 3.16
  • cksum 2.0
  • cmp 2.7
  • comm 2.0
  • compress 2.0
  • cp 3.16
  • csplit 2.0
  • curl 7.15.0
  • cut 2.0
  • cvs 2.0.41a
  • dc 1.2
  • dd 3.16
  • df 3.16
  • diff 2.7
  • diff3 2.7
  • dircolors 3.16
  • dirname 1.13
  • dos2unix
  • du 3.16
  • egrep 2.4.2
  • env 1.9.4
  • expand 5.1.2600.0
  • expr 1.9.4
  • factor 1.13
  • find 4.1 (called as gfind to not overwrite the Windows find.exe)
  • fgrep 2.4.2
  • flex 2.5.4
  • fmt 2.0
  • fold 2.0
  • fsplit
  • gawk 3.1.0
  • gclip 1.0
  • gow
  • gplay
  • grep 2.4.2
  • gsar 1.12
  • gunzip 1.2.4
  • gzip 1.2.4
  • head 2.0
  • id 1.9.4
  • indent 2.2.6
  • install 3.16
  • join 2.0
  • jwhois 2.4.1
  • less 340
  • lesskey 340
  • ln 3.16
  • logname 1.9.4
  • ls 3.16
  • m4 1.4
  • make 3.78.1
  • md5sum 2.0
  • mkdir
  • mkfifo
  • mknod 3.16
  • mv 3.16
  • mvdir 3.16
  • ncftp 3.1.8
  • nl 2.0
  • od 2.0
  • pageant 0.60
  • paste 2.5
  • patch 2.0
  • pathchk 1.9.4
  • pclip 1.0
  • plink 0.60
  • pr 2.0
  • printenv 1.9.4
  • printf 1.9.4
  • pscp 0.60
  • psftp 0.60
  • putty 0.60
  • puttygen 0.57
  • pwd
  • recode 3.6
  • rm 3.16
  • rman 3.0.7
  • rmdir
  • rsync 2.6.3
  • scp
  • sdiff 2.7
  • sed 3.02
  • seq 1.13
  • sftp
  • sh
  • shar 4.1
  • sleep 1.9.4
  • sort 2.0
  • split 2.0
  • stego
  • su 1.9.4
  • sum 2.0
  • sync 3.16
  • tac 2.0
  • tail 2.0
  • tar 1.12
  • tee 1.9.4
  • test 1.9.4
  • touch 3.16
  • tr 2.0
  • type
  • uname 1.9.4
  • unexpand 2.0
  • uniq 2.0
  • unix2dos
  • unrar 3.4.3
  • unshar 4.1
  • unzip 2.3
  • uudecode 4.1
  • vim 6.3
  • wc 2.0
  • wget 1.8.1
  • whereis
  • which 2.4
  • whoami 1.9.4
  • xargs 4.1
  • yes 1.9.4
  • zcat 1.2.4
  • zip 3.0

*nix 命令行使用指南:

Command

Description

•

apropos whatis

Show commands pertinent to string. See also threadsafe

•

man -t ascii | ps2pdf - > ascii.pdf

make a pdf of a manual page

 

which command

Show full path name of command

 

time command

See how long a command takes

•

time cat

Start stopwatch. Ctrl-d to stop. See also sw

dir navigation

•

cd -

Go to previous directory

•

cd

Go to $HOME directory

 

(cd dir && command)

Go to dir, execute command and return to current dir

•

pushd .

Put current dir on stack so you can popd back to it

file searching

•

alias l='ls -l --color=auto'

quick dir listing

•

ls -lrt

List files by date. See also newest and find_mm_yyyy

•

ls /usr/bin | pr -T9 -W$COLUMNS

Print in 9 columns to width of terminal

 

find -name '*.[ch]' | xargs grep -E 'expr'

Search 'expr' in this dir and below. See also findrepo

 

find -type f -print0 | xargs -r0 grep -F 'example'

Search all regular files for 'example' in this dir and below

 

find -maxdepth 1 -type f | xargs grep -F 'example'

Search all regular files for 'example' in this dir

 

find -maxdepth 1 -type d | while read dir; do echo $dir; echo cmd2; done

Process each item with multiple commands (in while loop)

•

find -type f ! -perm -444

Find files not readable by all (useful for web site)

•

find -type d ! -perm -111

Find dirs not accessible by all (useful for web site)

•

locate -r 'file[^/]*\.txt'

Search cached index for names. This re is like glob *file*.txt

•

look reference

Quickly search (sorted) dictionary for prefix

•

grep --color reference /usr/share/dict/words

Highlight occurances of regular expression in dictionary

archives and compression

 

gpg -c file

Encrypt file

 

gpg file.gpg

Decrypt file

 

tar -c dir/ | bzip2 > dir.tar.bz2

Make compressed archive of dir/

 

bzip2 -dc dir.tar.bz2 | tar -x

Extract archive (use gzip instead of bzip2 for tar.gz files)

 

tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'

Make encrypted archive of dir/ on remote machine

 

find dir/ -name '*.txt' | tar -c --files-from=- | bzip2 > dir_txt.tar.bz2

Make archive of subset of dir/ and below

 

find dir/ -name '*.txt' | xargs cp -a --target-directory=dir_txt/ --parents

Make copy of subset of dir/ and below

 

( tar -c /dir/to/copy ) | ( cd /where/to/ && tar -x -p )

Copy (with permissions) copy/ dir to /where/to/ dir

 

( cd /dir/to/copy && tar -c . ) | ( cd /where/to/ && tar -x -p )

Copy (with permissions) contents of copy/ dir to /where/to/

 

( tar -c /dir/to/copy ) | ssh -C user@remote 'cd /where/to/ && tar -x -p'

Copy (with permissions) copy/ dir to remote:/where/to/ dir

 

dd bs=1M if=/dev/sda | gzip | ssh user@remote 'dd of=sda.gz'

Backup harddisk to remote machine

rsync (Network efficient file copier: Use the --dry-run option for testing)

 

rsync -P rsync://rsync.server.com/path/to/file file

Only get diffs. Do multiple times for troublesome downloads

 

rsync --bwlimit=1000 fromfile tofile

Locally copy with rate limit. It's like nice for I/O

 

rsync -az -e ssh --delete ~/public_html/ remote.com:'~/public_html'

Mirror web site (using compression and encryption)

 

rsync -auz -e ssh remote:/dir/ . && rsync -auz -e ssh . remote:/dir/

Synchronize current directory with remote one

ssh (Secure SHell)

 

ssh $USER@$HOST command

Run command on $HOST as $USER (default command=shell)

•

ssh -f -Y $USER@$HOSTNAME xeyes

Run GUI command on $HOSTNAME as $USER

 

scp -p -r $USER@$HOST: file dir/

Copy with permissions to $USER's home directory on $HOST

 

scp -c arcfour $USER@$LANHOST: bigfile

Use faster crypto for local LAN. This might saturate GigE

 

ssh -g -L 8080:localhost:80 root@$HOST

Forward connections to $HOSTNAME:8080 out to $HOST:80

 

ssh -R 1434:imap:143 root@$HOST

Forward connections from $HOST:1434 in to imap:143

 

ssh-copy-id $USER@$HOST

Install public key for $USER@$HOST for password-less log in

wget (multi purpose download tool)

•

(cd dir/ && wget -nd -pHEKk http://www.pixelbeat.org/cmdline.html)

Store local browsable version of a page to the current dir

 

wget -c http://www.example.com/large.file

Continue downloading a partially downloaded file

 

wget -r -nd -np -l1 -A '*.jpg' http://www.example.com/dir/

Download a set of files to the current directory

 

wget ftp://remote/file[1-9].iso/

FTP supports globbing directly

•

wget -q -O- http://www.pixelbeat.org/timeline.html | grep 'a href' | head

Process output directly

 

echo 'wget url' | at 01:00

Download url at 1AM to current dir

 

wget --limit-rate=20k url

Do a low priority download (limit to 20KB/s in this case)

 

wget -nv --spider --force-html -i bookmarks.html

Check links in a file

 

wget --mirror http://www.example.com/

Efficiently update a local copy of a site (handy from cron)

networking (Note ifconfig, route, mii-tool, nslookup commands are obsolete)

 

ethtool eth0

Show status of ethernet interface eth0

 

ethtool --change eth0 autoneg off speed 100 duplex full

Manually set ethernet interface speed

 

iwconfig eth1

Show status of wireless interface eth1

 

iwconfig eth1 rate 1Mb/s fixed

Manually set wireless interface speed

•

iwlist scan

List wireless networks in range

•

ip link show

List network interfaces

 

ip link set dev eth0 name wan

Rename interface eth0 to wan

 

ip link set dev eth0 up

Bring interface eth0 up (or down)

•

ip addr show

List addresses for interfaces

 

ip addr add 1.2.3.4/24 brd + dev eth0

Add (or del) ip and mask (255.255.255.0)

•

ip route show

List routing table

 

ip route add default via 1.2.3.254

Set default gateway to 1.2.3.254

•

host pixelbeat.org

Lookup DNS ip address for name or vice versa

•

hostname -i

Lookup local ip address (equivalent to host `hostname`)

•

whois pixelbeat.org

Lookup whois info for hostname or ip address

•

netstat -tupl

List internet services on a system

•

netstat -tup

List active connections to/from system

windows networking (Note samba is the package that provides all this windows specific networking support)

•

smbtree

Find windows machines. See also findsmb

 

nmblookup -A 1.2.3.4

Find the windows (netbios) name associated with ip address

 

smbclient -L windows_box

List shares on windows machine or samba server

 

mount -t smbfs -o fmask=666,guest //windows_box/share /mnt/share

Mount a windows share

 

echo 'message' | smbclient -M windows_box

Send popup to windows machine (off by default in XP sp2)

text manipulation (Note sed uses stdin and stdout. Newer versions support inplace editing with the -i option)

 

sed 's/string1/string2/g'

Replace string1 with string2

 

sed 's/\(.*\)1/\12/g'

Modify anystring1 to anystring2

 

sed '/ *#/d; /^ *$/d'

Remove comments and blank lines

 

sed ':a; /\\$/N; s/\\\n//; ta'

Concatenate lines with trailing \

 

sed 's/[ \t]*$//'

Remove trailing spaces from lines

 

sed 's/\([`"$\]\)/\\\1/g'

Escape shell metacharacters active within double quotes

•

seq 10 | sed "s/^/      /; s/ *\(.\{7,\}\)/\1/"

Right align numbers

 

sed -n '1000{p;q}'

Print 1000th line

 

sed -n '10,20p;20q'

Print lines 10 to 20

 

sed -n 's/.*<title>\(.*\)<\/title>.*/\1/ip;T;q'

Extract title from HTML web page

 

sed -i 42d ~/.ssh/known_hosts

Delete a particular line

 

sort -t. -k1,1n -k2,2n -k3,3n -k4,4n

Sort IPV4 ip addresses

•

echo 'Test' | tr '[:lower:]' '[:upper:]'

Case conversion

•

tr -dc '[:print:]' < /dev/urandom

Filter non printable characters

•

tr -s '[:blank:]' '\t' </proc/diskstats | cut -f4

cut fields separated by blanks

•

history | wc -l

Count lines

set operations (Note you can export LANG=C for speed. Also these assume no duplicate lines within a file)

 

sort file1 file2 | uniq

Union of unsorted files

 

sort file1 file2 | uniq -d

Intersection of unsorted files

 

sort file1 file1 file2 | uniq -u

Difference of unsorted files

 

sort file1 file2 | uniq -u

Symmetric Difference of unsorted files

 

join -t'\0' -a1 -a2 file1 file2

Union of sorted files

 

join -t'\0' file1 file2

Intersection of sorted files

 

join -t'\0' -v2 file1 file2

Difference of sorted files

 

join -t'\0' -v1 -v2 file1 file2

Symmetric Difference of sorted files

math

•

echo '(1 + sqrt(5))/2' | bc -l

Quick math (Calculate φ). See also bc

•

seq -f '4/%g' 1 2 99999 | paste -sd-+ | bc -l

Calculate π the unix way

•

echo 'pad=20; min=64; (100*10^6)/((pad+min)*8)' | bc

More complex (int) e.g. This shows max FastE packet rate

•

echo 'pad=20; min=64; print (100E6)/((pad+min)*8)' | python

Python handles scientific notation

•

echo 'pad=20; plot [64:1518] (100*10**6)/((pad+x)*8)' | gnuplot -persist

Plot FastE packet rate vs packet size

•

echo 'obase=16; ibase=10; 64206' | bc

Base conversion (decimal to hexadecimal)

•

echo $((0x2dec))

Base conversion (hex to dec) ((shell arithmetic expansion))

•

units -t '100m/9.58s' 'miles/hour'

Unit conversion (metric to imperial)

•

units -t '500GB' 'GiB'

Unit conversion (SI to IEC prefixes)

•

units -t '1 googol'

Definition lookup

•

seq 100 | (tr '\n' +; echo 0) | bc

Add a column of numbers. See also add and funcpy

calendar

•

cal -3

Display a calendar

•

cal 9 1752

Display a calendar for a particular month year

•

date -d fri

What date is it this friday. See also day

•

[ $(date -d '12:00 +1 day' +%d) = '01' ] || exit

exit a script unless it's the last day of the month

•

date --date='25 Dec' +%A

What day does xmas fall on, this year

•

date --date='@2147483647'

Convert seconds since the epoch (1970-01-01 UTC) to date

•

TZ='America/Los_Angeles' date

What time is it on west coast of US (use tzselect to find TZ)

•

date --date='TZ="America/Los_Angeles" 09:00 next Fri'

What's the local time for 9AM next Friday on west coast US

locales

•

printf "%'d\n" 1234

Print number with thousands grouping appropriate to locale

•

BLOCK_SIZE=\'1 ls -l

Use locale thousands grouping in ls. See also l

•

echo "I live in `locale territory`"

Extract info from locale database

•

LANG=en_IE.utf8 locale int_prefix

Lookup locale info for specific country. See also ccodes

•

locale -kc $(locale | sed -n 's/\(LC_.\{4,\}\)=.*/\1/p') | less

List fields available in locale database

recode (Obsoletes iconv, dos2unix, unix2dos)

•

recode -l | less

Show available conversions (aliases on each line)

 

recode windows-1252.. file_to_change.txt

Windows "ansi" to local charset (auto does CRLF conversion)

 

recode utf-8/CRLF.. file_to_change.txt

Windows utf8 to local charset

 

recode iso-8859-15..utf8 file_to_change.txt

Latin9 (western europe) to utf8

 

recode ../b64 < file.txt > file.b64

Base64 encode

 

recode /qp.. < file.qp > file.txt

Quoted printable decode

 

recode ..HTML < file.txt > file.html

Text to HTML

•

recode -lf windows-1252 | grep euro

Lookup table of characters

•

echo -n 0x80 | recode latin-9/x1..dump

Show what a code represents in latin-9 charmap

•

echo -n 0x20AC | recode ucs-2/x2..latin-9/x

Show latin-9 encoding

•

echo -n 0x20AC | recode ucs-2/x2..utf-8/x

Show utf-8 encoding

CDs

 

gzip < /dev/cdrom > cdrom.iso.gz

Save copy of data cdrom

 

mkisofs -V LABEL -r dir | gzip > cdrom.iso.gz

Create cdrom image from contents of dir

 

mount -o loop cdrom.iso /mnt/dir

Mount the cdrom image at /mnt/dir (read only)

 

cdrecord -v dev=/dev/cdrom blank=fast

Clear a CDRW

 

gzip -dc cdrom.iso.gz | cdrecord -v dev=/dev/cdrom -

Burn cdrom image (use dev=ATAPI -scanbus to confirm dev)

 

cdparanoia -B

Rip audio tracks from CD to wav files in current dir

 

cdrecord -v dev=/dev/cdrom -audio -pad *.wav

Make audio CD from all wavs in current dir (see also cdrdao)

 

oggenc --tracknum='track' track.cdda.wav -o 'track.ogg'

Make ogg file from wav file

disk space (See also FSlint)

•

ls -lSr

Show files by size, biggest last

•

du -s * | sort -k1,1rn | head

Show top disk users in current dir. See also dutop

•

du -hs /home/* | sort -k1,1h

Sort paths by easy to interpret disk usage

•

df -h

Show free space on mounted filesystems

•

df -i

Show free inodes on mounted filesystems

•

fdisk -l

Show disks partitions sizes and types (run as root)

•

rpm -q -a --qf '%10{SIZE}\t%{NAME}\n' | sort -k1,1n

List all packages by installed size (Bytes) on rpm distros

•

dpkg-query -W -f='${Installed-Size;10}\t${Package}\n' | sort -k1,1n

List all packages by installed size (KBytes) on deb distros

•

dd bs=1 seek=2TB if=/dev/null of=ext3.test

Create a large test file (taking no space). See also truncate

•

> file

truncate data of file or create an empty file

monitoring/debugging

•

tail -f /var/log/messages

Monitor messages in a log file

•

strace -c ls >/dev/null

Summarise/profile system calls made by command

•

strace -f -e open ls >/dev/null

List system calls made by command

•

strace -f -e trace=write -e write=1,2 ls >/dev/null

Monitor what's written to stdout and stderr

•

ltrace -f -e getenv ls >/dev/null

List library calls made by command

•

lsof -p $$

List paths that process id has open

•

lsof ~

List processes that have specified path open

•

tcpdump not port 22

Show network traffic except ssh. See also tcpdump_not_me

•

ps -e -o pid,args --forest

List processes in a hierarchy

•

ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed '/^ 0.0 /d'

List processes by % cpu usage

•

ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS

List processes by mem (KB) usage. See also ps_mem.py

•

ps -C firefox-bin -L -o pid,tid,pcpu,state

List all threads for a particular process

•

ps -p 1,$$ -o etime=

List elapsed wall time for particular process IDs

•

last reboot

Show system reboot history

•

free -m

Show amount of (remaining) RAM (-m displays in MB)

•

watch -n.1 'cat /proc/interrupts'

Watch changeable data continuously

•

udevadm monitor

Monitor udev events to help configure rules

system information (see also sysinfo) ('#' means root access is required)

•

uname -a

Show kernel version and system architecture

•

head -n1 /etc/issue

Show name and version of distribution

•

cat /proc/partitions

Show all partitions registered on the system

•

grep MemTotal /proc/meminfo

Show RAM total seen by the system

•

grep "model name" /proc/cpuinfo

Show CPU(s) info

•

lspci -tv

Show PCI info

•

lsusb -tv

Show USB info

•

mount | column -t

List mounted filesystems on the system (and align output)

•

grep -F capacity: /proc/acpi/battery/BAT0/info

Show state of cells in laptop battery

#

dmidecode -q | less

Display SMBIOS/DMI information

#

smartctl -A /dev/sda | grep Power_On_Hours

How long has this disk (system) been powered on in total

#

hdparm -i /dev/sda

Show info about disk sda

#

hdparm -tT /dev/sda

Do a read speed test on disk sda

#

badblocks -s /dev/sda

Test for unreadable blocks on disk sda

interactive (see also linux keyboard shortcuts)

•

readline

Line editor used by bash, python, bc, gnuplot, ...

•

screen

Virtual terminals with detach capability, ...

•

mc

Powerful file manager that can browse rpm, tar, ftp, ssh, ...

•

gnuplot

Interactive/scriptable graphing

•

links

Web browser

•

xdg-open .

open a file or url with the registered desktop application

 

posted on 2012-08-01 14:21  Haozes  阅读(11026)  评论(1)    收藏  举报