在Unix操作中有太多太多的命令,這些命令的強大之處就是一個命令只干一件事,并把這件事干好。Do one thing, do it well。這是unix的哲學(xué)。而且Unix首創(chuàng)的管道可以把這些命令任意地組合,以完成一個更為強大功能。這些哲學(xué)到今天都在深深地影響著整個計算機產(chǎn)業(yè)。比如今天最流行的“云計算”——把一個軟件以碎片方式部署,然后這些功能可以任意組合。
這篇文章羅列了很多Unix下比較高級的命令,當然,Unix/Linux下還有更多更多的命令,我們相信你可能見過其中的某些命令,也有可能有一些命令沒有見過。不管怎么說,我們希望這些命令一方面可以讓你知道怎么使用Unix/Linux操作系統(tǒng),另一方面,我們也希望你能從中感到Unix的那種軟件開發(fā)的哲學(xué)思想。
ACCTCOM | :: |
查看所有用戶執(zhí)行過的進程(命令) | acctcom | tail -20 |
查看指定用戶執(zhí)行過的進程(命令) | acctcom -u <username> | tail -20 |
使用一個正則表達式查找相關(guān)進程 | acctcom -n <pattern> | tail -20 |
查找所有以l開頭的被用戶執(zhí)行過的命令 | acctcom -n ‘^l’ | tail -30 |
以反向順序顯示 | acctom -b | more |
AGREP | :: |
在文件中查找一個可能拼寫錯的單詞 | agrep -2 ‘macropperswan’ <file> |
AT | :: |
在未來某個時間執(zhí)行某個命令 | at now + 5 days < scriptfile |
AWK | :: |
顯示文件的第一列 | awk ‘{print $1}’ <file> |
反序顯示文件的前兩列 | awk ‘{print $2,”\t”,$1}’ <file> |
輸出前兩列的總和 | awk ‘{print $1 + $2}’ <file> |
查找所有包括”money” 行并輸出最后一列 | awk ‘/money/ {print $NF}’ <file> |
查找第二列中包含 “money” | awk ‘$2 ~ /money/ {print $0}’ <file> |
查找第三列中不包括”A” | awk ‘$3 !~ /A$/ {print $0}’ <file> |
BC | :: |
計算sin(5)的值 | echo ’s(5)’ | bc -l |
CANCEL | :: |
取消一個剛開始啟動的打印的作業(yè) | cancel <jobid> ( jobid可以由lpstat -o輸出) |
CASE in ESAC | :: |
sh/bash/ksh中的case語句 | |
CC | :: |
編譯一個C文件file.c | cc -o <outfile> <infile> |
CHGRP | :: |
修改文件的組所屬 | chgrp <newgroupname> <file> |
CHOWN | :: |
修改文件的所屬人 | chown <newowner> <file> |
CMP | :: |
比較兩個文件 | cmp <file1> <file2> || <command> |
COL | :: |
打印man pages,去除其中 “^H” | man <command> | col -b | <printcommand> |
CRONTAB | :: |
查看你的crontab 文件 | crontab -l |
編譯 crontab 文件 | crontab -e |
第周一的05:10 執(zhí)行/home/fred/foo.ksh | 10 5 * * 1 /home/fred/foo.ksh |
CRYPT | :: |
使用一個口令加密一個文件 | crypt password < infile > cryptfile |
解密一個被上面命令加密了的文件 | crypt password < cryptfile > cleanfile |
CSH | :: |
最好的Berkley shell | |
CUT | :: |
從last 命令的輸出中得到hostname字段 | last | cut -c11-40 |
DATE | :: |
設(shè)置時間(只能由root 執(zhí)行) | date <mmddhhmm> |
輸出指定日期格式 (如:月份) | date +%m |
DF | :: |
以kB單位查看磁盤空間 | df -k |
DIRCMP | :: |
比較兩個目錄 | dircmp <dir1> <dir2> |
DTKSH | :: |
dtksh 是一個 X11 圖形的ksh93 | dtksh |
DU | :: |
磁盤使用情況 | du -ks |
ED | :: |
命令行編譯器。 | ed <file> |
EGREP | :: |
使用“或”條件Grep 文件 | egrep ‘(A|B)’ <file> |
grep文件中即不包括A也不包括B | egrep -v ‘(A|B)’ <file> |
EX | :: |
使用一個shell腳來來編輯一個文件 | ex -s file <<EOF g/money/s//cash/ EOF |
以一個腳本文件來編輯一個文件 | ex -s file < scriptfile |
EXPR | :: |
求模 | expr 10 % 7 |
查看字串是否在變量$var中 | expr $var : ’string’ |
顯示第一個數(shù)字組成的字串 | expr $var : ‘[^0-9]*\([a-z]*\)’ |
FGREP | :: |
查找不匹配于某正規(guī)表達式的文件行 | fgrep ‘*,/.()’ <file> |
FILE | :: |
查看文件類型(如: ascii) | file <file> |
FIND | :: |
在整個文件系統(tǒng)中查的一個文件 | find / -type f -name <file> -print |
查找所有匹配于模式的文件 | find . -type f -name “*<foo>*” -print |
刪除系統(tǒng)中所有的core文件 | find / -type f -name core -exec /bin/rm -f {} \; |
查找所有包含某單詞的文件 | find . -type f -exec grep -l <word> {} \; |
查找所有修改日期在30天以前的文件 | find . -type f -ctime +30 -print |
使用xargs來備份所有的.c文件(加上.bak后綴) | find . -name “*.c” -print | xargs -i cp {} {}.bak |
只搜索本地文件系統(tǒng)(不搜索nfs文件系統(tǒng)) | find . -local … |
在搜索的過程中,跟隨link文件的實際位置 | find . -follow … |
查找大于1M的文件 | find /path -size 1000000c -print |
運行find命令但忽略”permission denied” | find … 2>/dev/null ( 只能在sh/bash/ksh ) |
查找所有的man目錄 | find / -type d -print | egrep ‘.*/(catman|man)$’ |
查找所有有寫權(quán)限的目錄 | find / -type d -perm -002 -print |
GAWK | :: |
GNU版本的nawk | |
GREP | :: |
以某個正規(guī)表達式查找包含其的文件行 | grep ‘[a-z][0-9]‘ <file> |
查找不包含指定正則表達式的文件行 | grep -v ‘^From’ <file> |
查找一組文件 | grep -l ‘^[cC]‘ *.f |
計算包括某正則表達式文件行的數(shù)目 | grep -c ‘[Ss]uccess’ <file> |
不區(qū)分大小寫的查找 | grep -i ‘lAbEgF’ <file> |
在匹配到的文件內(nèi)容前輸出文件的行號 | grep -n ‘mo.*y’ <file> |
HINV | :: |
命令顯示系統(tǒng)硬件的詳細列表,包括:CPU類型、內(nèi)存大小、所有的磁盤設(shè)備。 | hinv -v |
IF then else ENDIF | :: |
csh/tcsh中的if 語句 | |
IF then else FI | :: |
sh/bash/ksh 中的if 語句 | if [[ condition ]];then commands;fi |
KSH | :: |
Korn shell. (ksh88) | |
LN | :: |
創(chuàng)建一個硬鏈接文件a鏈接到文件A | ln a B |
創(chuàng)建一個符號鏈接文件a鏈接到文件A | ln -s a B |
刪除鏈接文件B | rm B |
LP | :: |
在默認打印機上打印文件 | lp <file> |
在指定打印機上打印文件 | lp -d <destination> <file> |
LPSTAT | :: |
顯示所有的打印機 | lpstat -a |
查看打印機任務(wù)隊列 | lpstat -o |
查看默認打印機 | lpstat -d |
查看打印機狀態(tài) | lpstat -p |
查看計劃任何狀態(tài) | lpstat -r |
MAKE | :: |
執(zhí)行一個 makefile中的第一個目標 | make |
執(zhí)行一個 makefile中的指點目標 | make <target> |
指定一個特定的makefile文件名 | make -f <mymakefile> |
顯示要做什么,但其實什么也沒做 | make -n <target> |
MKDIR | :: |
一次創(chuàng)鍵目錄和子目錄 | mkdir -p <path>/<path>/<path> |
MOUNT | :: |
查看掛載的文件卷 | mount |
查看掛載的文件卷(有格式的) | mount -p |
掛載一個光驅(qū)到目錄/cdrom | mount /dev/cdrom /cdrom |
掛載一個磁盤分區(qū)到目錄 /usr | mount /dev/dsk/c0t3d0s5 /usr |
NAWK | :: |
增強版的 awk | |
NL | :: |
以帶行號的方式輸出文件 | nl -bt -nln <file> |
NOHUP | :: |
啟動一個命令馬上退出 | nohup <command> & |
PACK | :: |
一個很老的文件打包程序,現(xiàn)在被gzip代替了。 | pack <file> |
PASSWD | :: |
修改你的賬號口令 | passwd |
刪除一個用戶的口令(root使用) | passwd -d <username> |
改變一個用戶的口令 (root使用) | passwd <username> |
PASTE | :: |
以列的方式把多個文件組合起來 | paste <file1> <file2> > <newfile> |
PERL | :: |
Perl腳本語言的解釋器 | |
PR | :: |
把一個文件做成可打印的格式(76行一頁) | pr -l76 -h”title” <filename> |
REGCMP | :: |
從一個文件中編譯正則表達式 | regcmp <file> |
文件內(nèi)容示例 | varname “^[a-z].*[0-9.*$" |
RESET | :: |
重置終端設(shè)備 | reset |
RPCINFO | :: |
取得某主機的TCP端口信息 | rpcinfo -p <host> |
RSH | :: |
執(zhí)行一個遠程服務(wù)器上的命令 | rsh <host> <comand> |
SCRIPT | :: |
用來捕捉當前的終端會話中的所有輸入輸出結(jié)果到一個指定的文件 | script <logfile> |
SED | :: |
把某文件中的fred替換成john | sed -e 's/fred/john/g' <file> |
替換文件中匹配正則表達式的字符串 | sed -e 's/[0-9]+/number/g’ <file> |
把HTML文件中的 “X” 變成紅色 | sed -e ’s!X!<font color=”#FF0000″>X</font>!g; |
把所有后綴為.suf1 改名成.suf2 | ls -1 | grep ‘\.suf1$’ | sed -e ’s/\(.*\.\)suf1/mv & \1suf2/’ | sh |
把文件中包含c的行中的a 替換成b | sed -e ‘/C/s/A/B/’ <infile> ><outfile> |
刪除所有包含 “you owe me”的文件行 | sed -e ‘/you owe me/d’ <infile> > <outfile> |
使用commandfile中的命令來編譯infile文件,并輸出到outfile中。其中的commandfile中包含了一系列的vi命令 | sed -f <commandfile> <infile> > <outfile> |
SH | :: |
最老的 AT&T shell程序,也是使用最廣泛的標準確shell。 | |
SHUTDOWN | :: |
關(guān)機 | shutdown -h now |
SLEEP | :: |
sleep 10秒鐘 | sleep 10 |
SORT | :: |
以字符順序把文件的每一行排序 | sort <file> |
以數(shù)字順序把文件的每一行排序 | sort -n <file> |
反向排序 | sort -r <file> |
排序時對于重復(fù)項只保留一個 | sort -u <file> |
SPELL | :: |
檢查拼寫錯誤 | spell <file> |
檢查拼寫錯誤,但是忽略okfile中包含的單詞 | spell +<okfile> <file> |
SPLIT | :: |
拆分一個大文件,每個文件1m | split -b1m <file> |
把拆分后的文件合并起來 | cat x* > <newfile> |
STRINGS | :: |
從二進制文件中讀取ascii 字符串 | strings <file> |
STTY | :: |
顯示終端設(shè)置 | stty -a |
設(shè)置 Ctrl+”H”為刪除鍵 | stty erase “^H” |
對于用戶的輸入不回顯 | stty -echo |
回顯用戶的輸入 | stty echo |
SU | :: |
切換到root用戶 | su |
切換到root用戶并使用其環(huán)境 | su - |
切換到另一用戶 | su <username> |
TAIL | :: |
顯示某文件中的文件尾中包含pattern的文件行 | tail -f <file> | grep <pattern> |
TAR | :: |
把整個目錄打包(沒有壓縮) | tar cvf <outfile>.tar <dir> |
解包某個tar文件 | tar xvf <file>.tar |
先解壓縮再解包 | gzip -dc <file>.tar.gz | tar xvf - |
打包成一個壓縮包 | tar xzvf <file>tar.gz |
在.cshrc中設(shè)置 tar命令的tape 變量 | tape=/dev/rmt/0mbn |
把一個目錄打包到tape變量所指的目錄中 | tar cv <dir> |
從tape中解包 | tar xv |
從tape中解出一個文件 | tar xv <file> |
從 tape中得到一個內(nèi)容表 | tar t |
以合適的權(quán)限和鏈接拷貝一個目錄 | (cd fromdir && tar -cBf – . ) | ( cd todir && tar -xBf – ) |
TCSH | :: |
Berkly的另一個非常不錯的shell | |
TEE | :: |
把標準輸入重定向到標準輸出 | who | tee -a > <file> |
TEST | :: |
檢查是否是一個文件 | test -a <file> |
檢查是否某文件是否是root屬性 | test -O /usr/bin/su |
檢查某變量是否為 null | test -n “$foo” |
以數(shù)字的方式比較兩個數(shù)字字符串 | test $var1 -gt $var2 |
在ksh 腳本中間接地使用”test” | if [[ -a <file> ]];then …;fi |
TIME | :: |
查看運行一個命令需要多少時間 | time <command> |
TOUCH | :: |
更新文件的修改時間為當前時間,文件不存在則創(chuàng)建文件 | touch <file> |
TR | :: |
使用x替換a,y替換b,c替換z | tr ‘[a-c]‘ ‘[x-z]‘ < infile > outfile |
TRAP | :: |
捕捉”^C” 并執(zhí)行子程序 | trap “mysub;exit” 0 1 2 15 |
TRUE | :: |
讓個不存在的命令返回0 | ln -s /usr/bin/true ranlib |
TRUSS | :: |
查看一個命令運行時的系統(tǒng)調(diào)用 | truss <command> > /dev/null |
TYPSET | :: |
查看被激活的功能 | typset |
TTY | :: |
查看終端所在的設(shè)備文件 | tty |
ULIMIT | :: |
查看系統(tǒng)所支持的最大文件長度 | ulimit |
UMASK | :: |
查看目前的umask | umask |
設(shè)置一個umask | umask 077 |
UNIQ | :: |
查看一個文件中有多少行是一樣的 | sort <file> | uniq -c |
僅輸出唯一的沒有重復(fù)的行 | sort <file> | uniq -u |
UPTIME | :: |
查看你的電腦開機多少時間了 | uptime |
UUENCODE | :: |
Encode一個文件以便發(fā)送電子郵件 | uuencode decodedname namenow > codedname |
UUDECODE | :: |
Decode 一個 uuencoded 文件 | uudecode <file> |
WAIT | :: |
等一個后進和運行結(jié)束 | wait $jobid |
VI | :: |
最主要的unix編譯器 | vi <file> |
WC | :: |
計算一個文件的行號 | wc -l <file> |
XARGS | :: |
把標準輸出作為參數(shù)來執(zhí)行一條命令 | <command> | xargs -i grep ‘pattern’ {} |
XON | :: |
從另一臺電腦上得到一個xterm | xon <host> |
從另一臺電腦上得到所有的東西 | xon <host> <X-client> |
(全文完)