锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久久久久一区二区三区,欧美日韩综合视频网址,91久久香蕉国产日韩欧美9色http://www.shnenglu.com/beautykingdom/category/8562.htmlzh-cnThu, 07 Jul 2011 15:01:15 GMTThu, 07 Jul 2011 15:01:15 GMT60shell浠?+鍒?00http://www.shnenglu.com/beautykingdom/archive/2010/10/28/131607.htmlchatlerchatlerThu, 28 Oct 2010 03:12:00 GMThttp://www.shnenglu.com/beautykingdom/archive/2010/10/28/131607.htmlhttp://www.shnenglu.com/beautykingdom/comments/131607.htmlhttp://www.shnenglu.com/beautykingdom/archive/2010/10/28/131607.html#Feedback0http://www.shnenglu.com/beautykingdom/comments/commentRss/131607.htmlhttp://www.shnenglu.com/beautykingdom/services/trackbacks/131607.html絎竴縐嶆柟娉曪細(xì)
 #!/bin/bash
echo -e "\t${!#}"
for (( i = 0; i < 100; i++ ))
do
        result=$[ ${result} + ${i} ]
done
echo $result
絎簩縐嶆柟娉曪細(xì)
seq -s"+" 1 100|bc
絎笁縐嶆柟娉曪細(xì)
s=0
for ((i=1;i<=100;i++)) ; do
    s=`expr $s + $i`
done
echo $s
絎洓縐嶆柟娉曪細(xì)
#!/bin/sh
s=0
for i in `seq 1 100`
do
s=`expr $s + $i`
done
echo $s

絎簲縐嶆柟娉曪細(xì)
echo {1..100}|sed 's/ /+/g'|bc


from錛?br>http://bbs.chinaunix.net/thread-1777298-1-1.html


chatler 2010-10-28 11:12 鍙戣〃璇勮
]]>
鏂囨湰榪囨護(hù)宸ュ叿GREPhttp://www.shnenglu.com/beautykingdom/archive/2010/06/01/116859.htmlchatlerchatlerTue, 01 Jun 2010 01:48:00 GMThttp://www.shnenglu.com/beautykingdom/archive/2010/06/01/116859.htmlhttp://www.shnenglu.com/beautykingdom/comments/116859.htmlhttp://www.shnenglu.com/beautykingdom/archive/2010/06/01/116859.html#Feedback0http://www.shnenglu.com/beautykingdom/comments/commentRss/116859.htmlhttp://www.shnenglu.com/beautykingdom/services/trackbacks/116859.html 浼犵粺鐨?grep 紼嬪簭, 鍦ㄦ病鏈夊弬鏁扮殑鎯呭喌涓? 鍙緭鍑虹鍚?RE 瀛楃涓蹭箣鍙ュ瓙. 甯歌鍙傛暟濡備笅:
-v: 閫嗗弽妯$ず, 鍙緭鍑?涓嶅惈" RE 瀛楃涓蹭箣鍙ュ瓙.
-r: 閫掑綊妯″紡, 鍙悓鏃跺鐞嗘墍鏈夊眰綰у瓙鐩綍閲岀殑鏂囦歡.
-q: 闈欓粯妯″紡, 涓嶈緭鍑轟換浣曠粨鏋?stderr 闄ゅ. 甯哥敤浠ヨ幏鍙?return value, 絎﹀悎涓?true, 鍚﹀垯涓?false .)
-i: 蹇界暐澶у皬鍐?
-w: 鏁磋瘝姣斿, 綾諱技 \<word\> .
-n: 鍚屾椂杈撳嚭琛屽彿.
-c: 鍙緭鍑虹鍚堟瘮瀵圭殑琛屾暟.
-l: 鍙緭鍑虹鍚堟瘮瀵圭殑鏂囦歡鍚嶇О.
-o: 鍙緭鍑虹鍚?RE 鐨勫瓧絎︿覆. (gnu 鏂扮増鐙湁, 涓嶈寰楁墍鏈夌増鏈兘鏀寔.)
-E: 鍒囨崲涓?egrep .

* egrep:
涓?grep 鐨勬墿鍏呯増鏈? 鏀硅壇浜嗚澶氫紶緇?grep 涓嶈兘鎴栦笉渚跨殑鎿嶄綔. 姣旀柟璇?
- grep 涔嬩笅涓嶆敮鎸?? 涓?+ 榪欎袱縐?modifier, 浣?egrep 鍒欏彲.
- grep 涓嶆敮鎸?a|b 鎴?(abc|xyz) 榪欑被"鎴栦竴"姣斿, 浣?egrep 鍒欏彲.
- grep 鍦ㄥ鐞?{n,m} 鏃? 闇鐢?\{ 涓?\} 澶勭悊, 浣?egrep 鍒欎笉闇.
璇稿姝ょ被鐨?.. 鎴戜釜浜轟細(xì)寤鴻鑳界敤 egrep 灝變笉鐢?grep 鍟?.. ^_^

* fgrep:
涓嶄綔 RE 澶勭悊, 琛ㄨ揪寮忎粎浣滀竴鑸瓧絎︿覆澶勭悊, 鎵鏈?meta 鍧囧け鍘誨姛鑳?

鍗曞紩鍙峰弻寮曞彿
鍦╣ r e p鍛戒護(hù)涓緭鍏ュ瓧絎︿覆鍙傛暟鏃訛紝鏈濂藉皢鍏剁敤鍙屽紩鍙鋒嫭璧鋒潵銆?/strong>
鍦ㄨ皟鐢ㄦā寮忓尮閰嶆椂錛屽簲浣跨敤鍗曞紩鍙楓?/strong>

寮濮嬭璁轟箣鍓嶏紝鍏堢敓鎴愪竴涓枃浠訛紝鎻掑叆涓孌墊枃鏈紝騫跺湪姣忓垪鍚庡姞鍏?lt; Ta b >閿紝g r e p鍛戒護(hù)紺轟緥涓粷澶у鏁板皢浠ユ涓轟緥錛屽叾鍛藉悕涓篸 a t a . . f銆傜敓鎴愪竴涓枃浠訛紝d a t a . f鐨勮褰曠粨鏋勫涓嬶細(xì)



QUOTE:
絎?鍒楋細(xì)鍩庡競浣嶇疆緙栧彿銆?br> 絎?鍒楋細(xì)鏈堜喚銆?br> 絎?鍒楋細(xì)瀛樺偍浠g爜鍙?qiáng)鍑哄簱骞翠唤銆?br> 絎?鍒楋細(xì)浜у搧浠e彿銆?br> 絎?鍒楋細(xì)浜у搧緇熶竴鏍囦環(huán)銆?br> 絎?鍒楋細(xì)鏍囪瘑鍙楓?br> 絎?鍒楋細(xì)鍚堟牸鏁伴噺銆?/div>



鏂囦歡鍐呭濡備笅錛?/strong>
  1. $ cat data.f
  2. 48      Dec     3BC1977 LPSX    68.00   LVX2A   138
  3. 483     Sept    5AP1996 USP     65.00   LVX2C   189
  4. 47      Oct     3ZL1998 LPSX    43.00   KVM9D   512
  5. 219     dec     2CC1999 CAD     23.00   PLV2C   68
  6. 484     nov     7PL1996 CAD     49.00   PLV2C   234
  7. 483     may     5PA1998 USP     37.00   KVM9D   644
  8. 216     sept    3ZL1998 USP     86.00   KVM9E   234

1銆佹煡璇㈠涓枃浠?/strong>
鍦ㄦ墍鏈夋枃浠朵腑鏌ヨ鍗曡瘝“ sort it”
  1. $ grep "sort it" *


2銆?琛屽尮閰?/strong>
1)鏄劇ず鍖呭惈“4 8”瀛楃涓茬殑鏂囨湰錛?br>
  1. $ grep  "48"data.f


2)杈撳嚭鍖歸厤琛岀殑鎬繪暟
  1. $ grep -c "48"data.f
  2. 4

g r e p榪斿洖鏁板瓧4錛岃〃紺猴細(xì)鍖呭惈瀛楃涓?#8220;4 8”鐨勬湁4琛屻?br>
3)琛屾暟
鏄劇ず婊¤凍鍖歸厤妯″紡鐨勬墍鏈夎琛屾暟錛?br>
  1. $ grep -n "48"data.f

琛屾暟鍦ㄨ緭鍑虹涓鍒楋紝鍚庤窡鍖呭惈4 8鐨勬瘡涓鍖歸厤琛屻?br>
4)鏄劇ず闈炲尮閰嶈
鏄劇ず鎵鏈変笉鍖呭惈4 8鐨勫悇琛?br>
  1. $ grep -v "48"data.f

5)綺劇‘鍖歸厤
鍙兘澶у宸叉敞鎰忓埌錛屽湪涓婁竴渚嬩腑錛屾娊鍙栧瓧絎︿覆“ 4 8”錛岃繑鍥炵粨鏋滃寘鍚濡? 8 4鍜? 8 3絳夊寘鍚?#8220;4 8”鐨勫叾浠栧瓧絎︿覆錛屽疄闄呬笂搴旂簿紜娊鍙栧彧鍖呭惈4 8鐨勫悇琛屻?br> 浣跨敤g r e p鎶藉彇綺劇‘鍖歸厤鐨勪竴縐嶆洿鏈夋晥鏂瑰紡鏄湪鎶藉彇瀛楃涓插悗鍔燶 >銆傚亣瀹氱幇鍦ㄧ簿紜娊鍙? 8錛屾柟娉曞涓嬶細(xì)
  1. $grep "48\>" data.f

QUOTE:
鍙︿竴縐嶆柟娉曟垜璇曡繃錛屽ソ鍍忎笉琛岋細(xì)
娉ㄦ剰鍦ㄦ瘡涓尮閰嶆ā寮忎腑鎶藉彇瀛楃涓插悗鏈変竴涓?lt; Ta b >閿紝鎵浠ュ簲鎿嶄綔濡備笅錛?br> < Ta b >琛ㄧず鐐瑰嚮t a b閿?br> $grep "48<tab>" data.f

6)澶у皬鍐欐晱鎰?/strong>
緙虹渷鎯呭喌涓嬶紝 g r e p鏄ぇ灝忓啓鏁忔劅鐨勶紝濡傝鏌ヨ澶у皬鍐欎笉鏁忔劅瀛楃涓詫紝蹇呴』浣跨敤- i寮鍏熾傚湪d a t a . f鏂囦歡涓湁鏈堜喚瀛楃S e p t錛屾棦鏈夊ぇ鍐欎篃鏈夊皬鍐欙紝瑕佸彇寰楁瀛楃涓插ぇ灝忓啓涓嶆晱鎰熸煡璇紝鏂規(guī)硶濡備笅錛?br>
  1. $grep -i "48" data.f

grep鍜屾鍒欒〃杈懼紡

浣跨敤姝e垯琛ㄨ揪寮忎嬌妯″紡鍖歸厤鍔犲叆涓浜涜鍒欙紝鍥犳鍙互鍦ㄦ娊鍙栦俊鎭腑鍔犲叆鏇村閫夋嫨銆備嬌鐢ㄦ鍒欒〃杈懼紡鏃舵渶濂界敤鍗曞紩鍙鋒嫭璧鋒潵錛岃繖鏍峰彲浠ラ槻姝 r e p涓嬌鐢ㄧ殑涓撴湁妯″紡涓庝竴浜泂 h e l l鍛戒護(hù)鐨勭壒孌婃柟寮忕浉娣鋒穯銆?br>                                                                               
1銆佹ā寮忚寖鍥?/strong>
鎶藉彇浠g爜涓? 8 4鍜? 8 3鐨勫煄甯備綅緗紝鍙互浣跨敤[ ]鏉ユ寚瀹氬瓧絎︿覆鑼冨洿銆?br>
  1. $ grep "48[34]" data.f
  2. 483     Sept    5AP1996 USP     65.00   LVX2C   189
  3. 484     nov     7PL1996 CAD     49.00   PLV2C   234
  4. 483     may     5PA1998 USP     37.00   KVM9D   644                                                                       
2銆佷笉鍖歸厤琛岄
浣胯棣栦笉鏄?鎴?錛屽彲浠ュ湪鏂規(guī)嫭鍙蜂腑浣跨敤^璁板彿銆?br>
  1. $ grep "^[^48]" data.f
  2. 219     dec     2CC1999 CAD     23.00   PLV2C   68
  3. 216     sept    3ZL1998 USP     86.00   KVM9E   234
濡傛灉鏄瓧絎︿覆48
  1. $ grep -v "^[^48]" data.f                                                                             
3銆佽緗ぇ灝忓啓
浣跨敤- i寮鍏沖彲浠ュ睆钄芥湀浠絊 e p t鐨勫ぇ灝忓啓鏁忔劅
  1. [sam@chenwy sam]$ grep -i "sept" data.f
  2. 483     Sept    5AP1996 USP     65.00   LVX2C   189
  3. 216     sept    3ZL1998 USP     86.00   KVM9E   234                                                                            
涔熷彲浠ョ敤鍙︿竴縐嶆柟寮廩 ]妯″紡鎶藉彇鍚勮鍖呭惈S e p t鍜宻 e p t鐨勬墍鏈変俊鎭?br>
  1. [sam@chenwy sam]$ grep '[sS]ept' data.f
濡傛灉瑕佹娊鍙栧寘鍚玈 e p t鐨勬墍鏈夋湀浠斤紝涓嶇鍏跺ぇ灝忓啓錛屽茍涓旀琛屽寘鍚瓧絎︿覆483錛屽彲浠ヤ嬌鐢ㄧ閬撳懡浠わ紝鍗崇鍙?#8220;|”宸﹁竟鍛戒護(hù)鐨勮緭鍑轟綔涓?#8220; |”鍙寵竟鍛戒護(hù)鐨勮緭鍏ャ備婦渚嬪涓嬶細(xì)
  1. [sam@chenwy sam]$ grep '[sS]ept' data.f | grep 48
  2. 483     Sept    5AP1996 USP     65.00   LVX2C   189
涓嶅繀灝嗘枃浠跺悕鏀懼湪絎簩涓猤 r e p鍛戒護(hù)涓紝鍥犱負(fù)鍏惰緭鍏ヤ俊鎭潵鑷簬絎竴涓猤 r e p鍛戒護(hù)鐨勮緭鍑?br>                                                                               
4銆佸尮閰嶄換鎰忓瓧絎?/strong>
濡傛灉鎶藉彇浠寮澶達(dá)紝浠緇撳熬鐨勬墍鏈変唬鐮侊紝鍙嬌鐢ㄤ笅榪版柟娉曪紝鍥犱負(fù)宸茬煡浠g爜闀垮害涓?涓瓧絎︼細(xì)
  1. [sam@chenwy sam]$ grep 'K...D' data.f
  2. 47      Oct     3ZL1998 LPSX    43.00   KVM9D   512
  3. 483     may     5PA1998 USP     37.00   KVM9D   644                                                                             
灝嗕笂榪頒唬鐮佸仛杞誨井鏀瑰彉錛屽ご涓や釜鏄ぇ鍐欏瓧姣嶏紝涓棿涓や釜浠繪剰錛屽茍浠緇撳熬錛?br>
  1. [sam@chenwy sam]$ grep '[A-Z]..C' data.f
  2. 483     Sept    5AP1996 USP     65.00   LVX2C   189
  3. 219     dec     2CC1999 CAD     23.00   PLV2C   68
  4. 484     nov     7PL1996 CAD     49.00   PLV2C   234
5銆佹棩鏈熸煡璇?/strong>
涓涓父鐢ㄧ殑鏌ヨ妯″紡鏄棩鏈熸煡璇€傚厛鏌ヨ鎵鏈変互5寮濮嬩互1 9 9 6鎴? 9 9 8緇撳熬鐨勬墍鏈夎褰曘備嬌鐢ㄦā寮? . . 1 9 9 [ 6 , 8 ]銆傝繖鎰忓懗鐫絎竴涓瓧絎︿負(fù)5錛屽悗璺熶袱涓偣錛屾帴鐫鏄? 9 9錛屽墿浣欎袱涓暟瀛楁槸6鎴?銆?br>
  1. [sam@chenwy sam]$ grep '5..199[6,8]' data.f
  2. 483     Sept    5AP1996 USP     65.00   LVX2C   189
  3. 483     may     5PA1998 USP     37.00   KVM9D   644                                                                             
6銆佽寖鍥寸粍鍚?/strong>
蹇呴』瀛︿細(xì)浣跨敤[ ]鎶藉彇淇℃伅銆傚亣瀹氳鍙栧緱鍩庡競浠g爜錛岀涓涓瓧絎︿負(fù)0-9錛岀浜屼釜瀛楃鍦?鍒?涔嬮棿錛岀涓変釜瀛楃鍦?鍒?涔嬮棿錛屼嬌鐢ㄤ笅鍒楁ā寮忓嵆鍙疄鐜般?br>
  1. [sam@chenwy sam]$ grep '[0-9][0-5[0-6]' data.f
  2. 48      Dec     3BC1977 LPSX    68.00   LVX2A   138
  3. 483     Sept    5AP1996 USP     65.00   LVX2C   189
  4. 47      Oct     3ZL1998 LPSX    43.00   KVM9D   512
  5. 219     dec     2CC1999 CAD     23.00   PLV2C   68
  6. 484     nov     7PL1996 CAD     49.00   PLV2C   234
  7. 483     may     5PA1998 USP     37.00   KVM9D   644
  8. 216     sept    3ZL1998 USP     86.00   KVM9E   234                                                                             
榪欓噷榪斿洖寰堝淇℃伅錛屾湁鎯寵鐨勶紝涔熸湁涓嶆兂瑕佺殑銆傚弬鐓фā寮忥紝榪斿洖緇撴灉鏄紜殑錛屽洜姝よ繖閲?br>
  1. [sam@chenwy sam]$ grep '^[0-9][0-5][0-6]' data.f
  2. 219     dec     2CC1999 CAD     23.00   PLV2C   68
  3. 216     sept    3ZL1998 USP     86.00   KVM9E   234
榪欐牱鍙互榪斿洖涓涓鏈熺殑姝g‘緇撴灉銆?br>                                                                        浠? 涓嬭娉ㄦ剰鏈夋棤杈圭晫瀛楃鐨勫尯鍒?      
7銆佹ā寮忓嚭鐜版満鐜?/strong>
鎶藉彇鍖呭惈鏁板瓧4鑷沖皯閲嶅鍑虹幇涓ゆ鐨勬墍鏈夎錛屾柟娉曞涓嬶細(xì)
  1. [sam@chenwy sam]$ grep '4\{2,\}' data.f
  2. 483     may     5PA1998 USP     37.00   KVM9D   644
涓婅堪璇硶鎸囨槑鏁板瓧4鑷沖皯閲嶅鍑虹幇涓ゆ錛屾敞鎰忔湁鏃犺竟 鐣屽瓧絎︾殑鍖哄埆銆?nbsp;                                                                             
鍚屾牱錛屾娊鍙栬褰曚嬌涔嬪寘鍚暟瀛? 9 9錛堜笁涓?錛夛紝鏂規(guī)硶濡備笅錛?br>
  1. [sam@chenwy sam]$ grep '9\{3,\}' data.f
  2. 219     dec     2CC1999 CAD     23.00   PLV2C   68
                                                                              
濡傛灉瑕佹煡璇㈤噸澶嶅嚭鐜版鏁頒竴瀹氱殑鎵鏈夎錛岃娉曞涓嬶紝鏁板瓧9閲嶅鍑虹幇涓ゆ鎴栦笁嬈★細(xì)
  1. [sam@chenwy sam]$ grep '9\{3\}' data.f
  2. 219     dec     2CC1999 CAD     23.00   PLV2C   68
  3. [sam@chenwy sam]$ grep '9\{2\}' data.f
  4. 483     Sept    5AP1996 USP     65.00   LVX2C   189
  5. 47      Oct     3ZL1998 LPSX    43.00   KVM9D   512
  6. 219     dec     2CC1999 CAD     23.00   PLV2C   68
  7. 484     nov     7PL1996 CAD     49.00   PLV2C   234                                                                            
鏈夋椂瑕佹煡璇㈤噸澶嶅嚭鐜版鏁板湪涓瀹氳寖鍥村唴錛屾瘮濡傛暟瀛楁垨瀛楁瘝閲嶅鍑虹幇2鍒?嬈★紝涓嬩緥鍖歸厤鏁板瓧8閲嶅鍑虹幇2鍒?嬈★紝騫朵互3緇撳熬錛?br>
  1. [sam@chenwy sam]$ cat myfile
  2. 83
  3. 888883
  4. 8884
  5. 88883
  6. [sam@chenwy sam]$ grep '8\{2,6\}3' myfile
  7. 888883
  8. 88883                                                                            
8銆佷嬌鐢╣rep鍖歸厤“涓?#8221;鎴栬?#8220;鎴?#8221;妯″紡
g r e p鍛戒護(hù)鍔? E鍙傛暟錛岃繖涓鎵╁睍鍏佽浣跨敤鎵╁睍妯″紡鍖歸厤銆備緥濡傦紝瑕佹娊鍙栧煄甯備唬鐮佷負(fù)2 1 9鎴? 1 6錛屾柟娉曞涓嬶細(xì)
  1. [sam@chenwy sam]$ grep -E '219|216' data.f
  2. 219     dec     2CC1999 CAD     23.00   PLV2C   68
  3. 216     sept    3ZL1998 USP     86.00   KVM9E   234                                                                             
9銆佺┖琛?/strong>
緇撳悎浣跨敤^鍜?鍙煡璇㈢┖琛屻備嬌鐢? c鍙傛暟鏄劇ず鎬昏鏁幫細(xì)
  1. [sam@chenwy sam]$ grep -c '^$' myfile
浣跨敤- n鍙傛暟鏄劇ず瀹為檯鍦ㄥ摢涓琛岋細(xì)
  1. [sam@chenwy sam]$ grep -c '^$' myfile
10銆佸尮閰嶇壒孌婂瓧絎?/strong>
鏌ヨ鏈夌壒孌婂惈涔夌殑瀛楃錛岃濡? . ' " * [] ^ | \ + ? ,蹇呴』鍦ㄧ壒瀹氬瓧絎﹀墠鍔燶銆傚亣璁捐鏌ヨ鍖呭惈“.”鐨勬墍鏈夎錛岃剼鏈涓嬶細(xì)
  1. [sam@chenwy sam]$ grep '\.' myfile
鎴栬呮槸涓涓弻寮曞彿錛?br>
  1. [sam@chenwy sam]$ grep '\"' myfile                                                                            
浠ュ悓鏍風(fēng)殑鏂瑰紡錛屽瑕佹煡璇㈡枃浠跺悕c o n f t r o l l . c o n f錛堣繖鏄竴涓厤緗枃浠訛級(jí)錛岃剼鏈涓嬶細(xì)
  1. [sam@chenwy sam]$ grep 'conftroll\.conf' myfile                                                                             
11銆佹煡璇㈡牸寮忓寲鏂囦歡鍚?/strong>
浣跨敤姝e垯琛ㄨ揪寮忓彲鍖歸厤浠繪剰鏂囦歡鍚嶃傜郴緇熶腑瀵規(guī)枃鏈枃浠舵湁鍏舵爣鍑嗙殑鍛藉悕鏍煎紡銆備竴鑸渶澶氬叚涓皬鍐欏瓧絎︼紝鍚庤窡鍙ョ偣錛屾帴鐫鏄袱涓ぇ鍐欏瓧絎︺?br>
  1. [sam@chenwy sam]$ grep '^[a-z]\{1,6\}\.[A-Z]\{1,2\}' filename
榪欎釜鍐欐硶鎴戜笉鐭ラ亾鏈夋病鏈夐敊 :oops:  :oops:  :oops:
                                                                              
12 鏌ヨIP鍦板潃
瑕佹煡鐪媙 n n . n n n緗戠粶鍦板潃錛屽鏋滃繕浜嗙浜岄儴鍒嗕腑鐨勫叾浣欓儴鍒嗭紝鍙煡鏈変袱涓彞鐐癸紝渚嬪n n n . n n . .銆傝鎶藉彇鍏朵腑鎵鏈塶nn.nnn IP鍦板潃錛屼嬌鐢╗ 0 - 9 ] \ { 3 \ } \ . [ 0 - 0 \ { 3 \ } \銆傚惈涔夋槸浠繪剰鏁板瓧鍑虹幇3嬈★紝鍚庤窡鍙ョ偣錛屾帴鐫鏄換鎰忔暟瀛楀嚭鐜?嬈★紝鍚庤窡鍙ョ偣銆?br>
  1. [0-9]\{3\}\.[0-9]\{3\}\.'

shell鍩虹鍏細(xì)鏂囨湰榪囨護(hù)宸ュ叿錛坓rep錛?/h2> 1銆佺被鍚?/strong>

g r e p鍏佽浣跨敤鍥介檯瀛楃妯″紡鍖歸厤鎴栧尮閰嶆ā寮忕殑綾誨悕褰㈠紡銆?br> 綾誨悕鍙?qiáng)鍏督{変環(huán)鐨勬鍒欒〃杈懼紡綾葷瓑浠風(fēng)殑姝e垯琛ㄨ揪寮忕被絳変環(huán)鐨勬鍒欒〃杈懼紡


QUOTE:
[ [ : u p p e r : ] ] [ A - Z ] [ [ : a l n u m : ] ] [ 0 - 9 a - zA-Z]
[ [ : l o w e r : ] ] [ a - z ] [ [ : s p a c e : ] ] 絀烘牸鎴杢 a b閿?br> [ [ : d i g i t : ] ] [ 0 - 9 ] [ [ : a l p h a : ] ] [ a - z A - Z ]



渚嬩竴錛氬彇浠?寮澶達(dá)紝鍚庤窡鑷沖皯涓や釜澶у啓瀛楁瘝錛?br>
  1. $grep '5[[:upper:]][[:upper]]' data.f

鍙栦互P鎴朌緇撳熬鐨勬墍鏈変駭鍝佷唬鐮侊細(xì)
  1. grep '[[:upper:]][[:upper:]][P,D]' data.f
2銆佷嬌鐢ㄩ氶厤絎?鐨勫尮閰嶆ā寮?/strong>
  1. $cat testfile
  2. looks
  3. likes
  4. looker
  5. long
璇曡瘯濡備笅錛?br>
  1. grep "l.*s" testfile
濡傚湪琛屽熬鏌ヨ鏌愪竴鍗曡瘝錛岃瘯濡備笅妯″紡錛?br>
  1. grep "ng$" testfile
榪欏皢鍦ㄦ墍鏈夋枃浠朵腑鏌ヨ琛屽熬鍖呭惈鍗曡瘝ng鐨勬墍鏈夎銆?br>
3銆佺郴緇焔rep

鏂囦歡passwd
  1. [root@Linux_chenwy sam]# grep "sam" /etc/passwd
  2. sam:x:506:4::/usr/sam:/bin/bash
涓婅堪鑴氭湰鏌ヨ/ e t c / p a s s w d鏂囦歡鏄惁鍖呭惈sam瀛楃涓?br>
濡傛灉璇緭鍏ヤ互涓嬭剼鏈細(xì)
  1. [root@Linux_chenwy sam]# grep "sam" /etc/password
  2. grep: /etc/password: 娌℃湁閭d釜鏂囦歡鎴栫洰褰?/li>
灝嗚繑鍥瀏 r e p鍛戒護(hù)閿欒浠g爜'No such file or directory'銆?br> 涓婅堪緇撴灉琛ㄦ槑杈撳叆鏂囦歡鍚嶄笉瀛樺湪錛屼嬌鐢╣ r e p鍛戒護(hù)- s寮鍏籌紝鍙睆钄介敊璇俊鎭?br> 榪斿洖鍛戒護(hù)鎻愮ず絎︼紝鑰屾病鏈夋枃浠朵笉瀛樺湪鐨勯敊璇彁紺恒?br>
  1. [root@Linux_chenwy sam]# grep -s "sam" /etc/password
濡傛灉g r e p鍛戒護(hù)涓嶆敮鎸? s寮鍏籌紝鍙浛浠d嬌鐢ㄤ互涓嬪懡浠わ細(xì)
  1. [root@Linux_chenwy sam]# grep "sam" /tec/password >/dev/null 2>&1
鑴氭湰鍚箟鏄尮閰嶅懡浠よ緭鍑烘垨閿欒錛?2 > $ 1錛夛紝騫跺皢緇撴灉杈撳嚭鍒扮郴緇熸睜銆傚ぇ澶氭暟緋葷粺綆$悊鍛樼О/ d e v / n u l l涓烘瘮鐗規(guī)睜錛屾病鍏崇郴錛屽彲浠ュ皢涔嬬湅鎴愪竴涓棤搴曟礊錛屾湁榪涙病鏈夊嚭錛屾案榪滀篃涓嶄細(xì)濉弧銆?br>
涓婅堪涓や釜渚嬪瓙騫朵笉綆楀ソ錛屽洜涓鴻繖閲岀殑鐩殑鍙兂鐭ラ亾鏌ヨ鏄惁鎴愬姛銆?br>
濡傝淇濆瓨g r e p鍛戒護(hù)鐨勬煡璇㈢粨鏋滐紝鍙皢鍛戒護(hù)杈撳嚭閲嶅畾鍚戝埌涓涓枃浠躲?br>
  1. [root@Linux_chenwy sam]# grep "sam" /etc/passwd >/usr/sam/passwd.out
  2. [root@Linux_chenwy sam]# cat /usr/sam/passwd.out
  3. sam:x:506:4::/usr/sam:/bin/bash
鑴氭湰灝嗚緭鍑洪噸瀹氬悜鍒扮洰褰? t m p涓嬫枃浠秔 a s s w d . o u t涓?br>
浣跨敤ps鍛戒護(hù)
浣跨敤甯︽湁ps x鍛戒護(hù)鐨刧 r e p鍙煡璇㈢郴緇熶笂榪愯鐨勮繘紼嬨俻s x鍛戒護(hù)鎰忎負(fù)鏄劇ず緋葷粺涓婅繍琛岀殑鎵鏈夎繘紼嬪垪琛ㄣ傝鏌ョ湅D N S鏈嶅姟鍣ㄦ槸鍚︽鍦ㄨ繍琛岋紙閫氬父縐頒負(fù)n a m e d錛夛紝鏂規(guī)硶濡備笅錛?br>
  1. [root@Linux_chenwy sam]# ps ax|grep "named"
  2. 2897 pts/1    S      0:00 grep named
杈撳嚭涔熷簲鍖呭惈姝 r e p鍛戒護(hù)錛屽洜涓篻 r e p鍛戒護(hù)鍒涘緩浜嗙浉搴旇繘紼嬶紝 ps x灝嗘壘鍒板畠銆傚湪g r e p鍛戒護(hù)涓嬌鐢? v閫夐」鍙涪寮僷 s鍛戒護(hù)涓殑g r e p榪涚▼銆傚鏋減s x涓嶉傜敤浜庣敤鎴風(fēng)郴緇燂紝鏇夸唬浣跨敤ps -ef銆傝繖閲岋紝鐢變簬鎴戞病鏈塂NS鏈嶅姟錛屽洜鑰屽彧鏈塯rep榪涚▼銆?br>
瀵逛竴涓瓧絎︿覆浣跨敤grep
g r e p涓嶅彧搴旂敤浜庢枃浠訛紝涔熷彲搴旂敤浜庡瓧絎︿覆銆備負(fù)姝や嬌鐢╡ c h o瀛楃涓插懡浠わ紝鐒跺悗瀵筭 r e p鍛戒護(hù)浣跨敤綆¢亾杈撳叆銆?br>
  1. [root@Linux_chenwy sam]# STR="Mary Joe Peter Pauline"
  2. [root@Linux_chenwy sam]# echo $STR | grep "Mary"
  3. Mary Joe Peter Pauline
鍖歸厤鎴愬姛瀹炵幇銆?br>
  1. [root@Linux_chenwy sam]# echo $STR | grep "Simon"
鍥犱負(fù)娌℃湁鍖歸厤瀛楃涓詫紝鎵浠ユ病鏈夎緭鍑虹粨鏋溿?br>
4銆乪grep
e g r e p浠h〃e x p r e s s i o n鎴杄xtended grep錛岄傛儏鍐佃屽畾銆俥 g r e p鎺ュ彈鎵鏈夌殑姝e垯琛ㄨ揪寮忥紝 e g r e p鐨勪竴涓樉钁楃壒鎬ф槸鍙互浠ヤ竴涓枃浠朵綔涓轟繚瀛樼殑瀛楃涓詫紝鐒跺悗灝嗕箣浼犵粰e g r e p浣滀負(fù)鍙傛暟錛屼負(fù)姝や嬌鐢? f寮鍏熾傚鏋滃垱寤轟竴涓悕涓篻 r e p s t r i n g s鐨勬枃浠訛紝騫惰緭鍏? 8 4鍜? 7錛?br>
  1. [root@Linux_chenwy sam]# vi grepstrings
  2. [root@Linux_chenwy sam]# cat grepstrings
  3. 484
  4. 47

  1. [root@Linux_chenwy sam]# egrep -f grepstrings data.f
  2. 47      Oct     3ZL1998 LPSX    43.00   KVM9D   512
  3. 484     nov     7PL1996 CAD     49.00   PLV2C   234
涓婅堪鑴氭湰鍖歸厤d a t a . f涓寘鍚? 8 4鎴? 7鐨勬墍鏈夎褰曘傚綋鍖歸厤澶ч噺妯″紡鏃訛紝 - f寮鍏沖緢鏈夌敤錛岃屽湪涓涓懡浠よ涓暡鍏ヨ繖浜涙ā寮忔樉鐒舵瀬涓虹箒鐞愩?br>
濡傛灉瑕佹煡璇㈠瓨鍌ㄤ唬鐮? 2 L鎴? C C錛屽彲浠ヤ嬌鐢紙|錛夌鍙鳳紝鎰忓嵆“|”絎﹀彿涓よ竟涔嬩竴鎴栧叏閮ㄣ?br>
  1. [root@Linux_chenwy sam]# egrep '(3ZL|2CC)' data.f
  2. 47      Oct     3ZL1998 LPSX    43.00   KVM9D   512
  3. 219     dec     2CC1999 CAD     23.00   PLV2C   68
  4. 216     sept    3ZL1998 USP     86.00   KVM9E   234
鍙互浣跨敤浠繪剰澶氱珫綰跨“ |”錛屼緥濡傝鏌ョ湅鍦ㄧ郴緇熶腑鏄惁鏈夊笎鍙穕 o u i s e銆乵 a t t y鎴杙auline 錛屼嬌鐢╳ h o鍛戒護(hù)騫剁閬撹緭鍑鴻嚦e g r e p銆?br>
  1. $who |egrep (louise|matty|pauline)
榪樺彲浠ヤ嬌鐢╚絎﹀彿鎺掗櫎瀛楃涓層傚鏋滆鏌ョ湅緋葷粺涓婄殑鐢ㄦ埛錛屼絾涓嶅寘鎷琺 a t t y鍜宲 a u l i n e錛屾柟娉曞涓嬶細(xì)
  1. $who |egrep -v '^(matty|pauline)'
濡傛灉瑕佹煡璇竴涓枃浠跺垪琛紝鍖呮嫭s h u t d o w n銆乻 h u t d o w n s銆乺 e b o o t鍜宺 e b o o t s錛屼嬌鐢╡ g r e p鍙鏄撳湴瀹炵幇銆?br>
  1. $egrep '(shutdown |reboot) (s)?' *

from錛?br>http://bbs.chinaunix.net/thread-446683-1-1.html


chatler 2010-06-01 09:48 鍙戣〃璇勮
]]>鍙蹭笂鏈寮篵ash鍑芥暟搴?/title><link>http://www.shnenglu.com/beautykingdom/archive/2010/05/03/114291.html</link><dc:creator>chatler</dc:creator><author>chatler</author><pubDate>Mon, 03 May 2010 14:42:00 GMT</pubDate><guid>http://www.shnenglu.com/beautykingdom/archive/2010/05/03/114291.html</guid><wfw:comment>http://www.shnenglu.com/beautykingdom/comments/114291.html</wfw:comment><comments>http://www.shnenglu.com/beautykingdom/archive/2010/05/03/114291.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/beautykingdom/comments/commentRss/114291.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/beautykingdom/services/trackbacks/114291.html</trackback:ping><description><![CDATA[<pre>## ---------------------------------------------------------<br>## common functions<br>## author: samli AT tencent.com | huanlf AT gmail.com<br>## usage: source "./func-common.sh"<br>## last mod: 2009-07-10<br>## ---------------------------------------------------------<br><br><br><br><br><br><br>## ---------------- classical usage ------------------------<br>## export WORKDIR=$( cd ` dirname $0 ` && pwd )<br>## <br>## if [[ ! -r "$WORKDIR/func-common.sh" ]]; then<br>## echo "[$WORKDIR/func-common.sh] NOT FOUND"<br>## exit 1<br>## fi<br>## <br>## . "$WORKDIR/func-common.sh" || exit 1<br>## <br>## cd "$WORKDIR" || exit 1<br>## ---------------------------------------------------------<br><br><br><br><br><br><br>## set -x <br>## set -e ## Sorry, can not set -e here, fix later<br><br>## -------------------- GLOBAL VAR -------------------------<br><br>## some vars initialized in the end of this file, check it<br><br>## make sure we will find commands needed<br>export PATH=/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:$PATH<br><br>## just a var to keep the val from get_localip<br>## use a strange var name to avoid collision<br>export LLLOCALIP<br><br>## the dir we are working in<br>export WORKDIR<br><br>## some addictional logs may redirected to here<br>## such as: make >> $LLLOG && make install >> $LLLOG<br>## use a strange var name to avoid collision<br>export LLLOG<br>export LLLOGDIR<br><br>## set locale as POSIX, to work around with i180-ed apps<br>export LANG=C<br>export LC_ALL=C<br><br>## set umask to 022 to avoid wrong access mode<br>umask 022<br><br>## ---------------------------------------------------------<br><br><br><br><br><br><br>## -------------------- colourful print --------------------<br><br>## ANSI Foreground color codes:<br>## 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white 39=default<br>## ANSI Background color codes:<br>## 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white 49=default<br><br>COLOR_RED=$( echo -e "\e[31;49m" ) <br>COLOR_GREEN=$( echo -e "\e[32;49m" )<br>COLOR_YELLO=$( echo -e "\e[33;49m" )<br>COLOR_BLUE=$( echo -e "\e[34;49m" )<br>COLOR_MAGENTA=$(echo -e "\e[35;49m" )<br>COLOR_CYAN=$( echo -e "\e[36;49m" )<br>COLOR_RESET=$( echo -e "\e[0m" )<br><br>## *msg argv: "$str"<br>msg() { gmsg "$@"; }<br>rmsg() { echo "${COLOR_RED}$*${COLOR_RESET}"; }<br>gmsg() { echo "${COLOR_GREEN}$*${COLOR_RESET}"; }<br>ymsg() { echo "${COLOR_YELLO}$*${COLOR_RESET}"; }<br>bmsg() { echo "${COLOR_BLUE}$*${COLOR_RESET}"; }<br>mmsg() { echo "${COLOR_MAGENTA}$*${COLOR_RESET}"; }<br>cmsg() { echo "${COLOR_CYAN}$*${COLOR_RESET}"; }<br><br># colourful print without "\n"<br>msg_() { msg "$@" | tr -d '\n'; }<br>rmsg_() { rmsg "$@" | tr -d '\n'; }<br>gmsg_() { gmsg "$@" | tr -d '\n'; }<br>ymsg_() { ymsg "$@" | tr -d '\n'; }<br>bmsg_() { bmsg "$@" | tr -d '\n'; }<br>mmsg_() { mmsg "$@" | tr -d '\n'; }<br>cmsg_() { cmsg "$@" | tr -d '\n'; }<br><br>## normal message print and log<br>logmsg()<br>{<br> local t=$( date '+%F %T' )<br><br> gmsg "[$t $LLLOCALIP]: $*"<br><br> ## no color in logs<br> mkdir -p "$LLLOGDIR" || { rmsg "can not create $LLLOGDIR"; exit 1; }<br> echo "[$t $ip]: $*" >> "$LLLOG"<br>}<br><br>## normal message print and log, without "\n"<br>logmsg_()<br>{<br> local t=$( date '+%F %T' )<br><br> gmsg_ "[$t $LLLOCALIP]: $*"<br><br> ## no color in logs<br> mkdir -p "$LLLOGDIR" || { rmsg "can not create $LLLOGDIR"; exit 1; }<br> echo -n "[$t $ip]: $*" >> "$LLLOG"<br>}<br><br>## warning<br>warn()<br>{<br> local t=$( date '+%F %T' )<br><br> ## write to STDERR<br> mmsg "[$t $LLLOCALIP]WARNING: $*" >&2<br><br> mkdir -p "$LLLOGDIR" || { rmsg "can not create $LLLOGDIR"; exit 1; }<br> echo "[$t $ip]WARNING: $*" >> "$LLLOG"<br>}<br><br>## fatal, will exit with code 1<br>die()<br>{<br> local t=$( date '+%F %T' )<br><br> ## write to STDERR<br> rmsg "[$t $LLLOCALIP]FATAL: $*" >&2<br><br> mkdir -p "$WORKDIR/log.d" || { rmsg "can not create $WORKDIR/log.d"; exit 1; }<br> echo "[$t $ip]FATAL: $*" >> "$LLLOG"<br><br> exit 1<br>}<br><br>## ---------------------------------------------------------<br><br><br><br><br><br><br>## ---------------------- IP / NIC ------------------------<br><br>## get all interfaces ip addr, but default lo<br>get_ipaddr()<br>{<br> local ipall=$(<br> /sbin/ifconfig | <br> awk '/inet addr:/ { if ($2 !~ /127.0.0.1/) { print substr($2,6)} } '<br> )<br><br> ipall=$( echo $ipall ) ## trim spaces, blank charachers<br> <br> if [[ -n $ipall ]]; then<br> echo $ipall<br> else<br> return 1<br> fi<br>}<br><br>## get all lan ipaddr. not strict<br>get_localip_all()<br>{<br> local ip ipall<br><br> for ip in $( get_ipaddr ); do<br> case $ip in<br> 172.*|192.*|10.*)<br> ## should deal with the newline symbol '\n' by yourself<br> ipall="$ipall $ip"<br> ;;<br> esac<br> done<br><br> ipall=$( echo $ipall ) ## trim spaces, blank charachers<br><br> if [[ -n $ipall ]]; then<br> echo $ipall<br> else<br> return 1<br> fi<br>}<br><br>## get login ip from ssh env val, useful if we have mutilple NICs<br>## this func is not very reliable, use get_localip instead<br>get_loginip()<br>{<br> local ip<br><br> for ip in $( echo $SSH2_CLIENT | awk '{ print $3 }' ) \<br> $( echo $SSH_CONNECTION | awk '{ print $3 }' ) \<br> $( echo $SSH_CLIENT | awk '{ print $1 }' ) ; do<br> if [[ -n $ip ]]; then ## never failed ?<br> echo $ip<br> return 0<br> fi<br> done<br><br> return 1<br>}<br><br>## get a lan ipaddr, must be an private IP, the ip we login is prefered<br>get_localip()<br>{<br> ## to speed up, this func may be called frequently<br> ## maybe we should use $LLLOCALIP directlly instead of callin get_localip<br> [[ -n "$LLLOCALIP" ]] && { echo $LLLOCALIP; return 0; }<br><br> local default_ip=127.0.0.1 ## make sure we return an "IP"<br> local ipall=$( get_localip_all )<br> local ip<br><br> for ip in $( get_loginip ) $ipall; do<br> case $ip in ## check if a private IP, need more strict checking ?<br> 172.*|192.*|10.*)<br> # make sure we find the ip on local host<br> # result from get_login may not correct<br> # note that we do not get '127.0.0.1' from get_localip_all<br> if echo $ipall | grep -wq $ip; then<br> LLLOCALIP=$ip <br> break<br> fi<br> ;;<br> esac<br> done<br><br> if [[ -n "$LLLOCALIP" ]]; then<br> echo $LLLOCALIP<br> return 0<br> else<br> echo $default_ip<br> return 1<br> fi<br>}<br><br>## return the the ip on the given interface<br>## argv: $interface<br>## example: get_ip_for_interface "eth0"<br>get_ip_for_interface()<br>{<br> local iface=$1<br><br> ## /sbin/ifconfig "$iface" 2>/dev/null |<br> /sbin/ifconfig "$iface" |<br> awk '/inet addr:/ { print substr($2,6) } '<br><br> # return the status of ifconfig<br> return ${PIPESTATUS[0]}<br>}<br><br>## include sub interface's ip<br>get_all_ip_for_interface()<br>{<br> local iface=$1<br> local ipall=$( <br> { <br> ## physical interface<br> /sbin/ifconfig | grep -A1 -E "^$iface[[:space:]]+"<br> ## sub interface, such as eth0:0<br> /sbin/ifconfig | grep -A1 -E "^$iface:[0-9]+[[:space:]]+"<br> } |<br> awk '/inet addr:/ { print substr($2,6) } '<br> )<br><br> ipall=$( echo $ipall ) ## trim spaces, blank charachers<br><br> if [[ -n $ipall ]]; then<br> echo $ipall<br> else<br> return 1<br> fi<br>}<br><br><br>## return the netmask for an interface<br>## argv: $interface<br>## example: get_netmask_for_interface "eth0"<br>get_netmask_for_interface()<br>{<br> local iface=$1<br> [[ -n $iface ]] || return 1<br><br> /sbin/ifconfig "$iface" | awk -F: '/Mask:/ { print $NF }'<br><br> ## return the status of ifconfig<br> return ${PIPESTATUS[0]}<br>}<br><br>## 2009-01-12, get mtu for an interface<br>## argv: $interface<br>## example: get_mtu_for_interface "eth0"<br>get_mtu_for_interface()<br>{<br> local iface=$1<br> ## mtu on the sub ifc is the same with the physical ifc<br> ## local iface=${1%%:*}<br><br> /sbin/ifconfig "$iface" | <br> awk '/MTU:/ {<br> if ( $3 ~ /RUNNING/ ) {<br> print substr($5,5)<br> }<br> else {<br> print substr($4,5)<br> } }'<br><br> ## return the status of ifconfig<br> return ${PIPESTATUS[0]}<br>}<br><br>## return the interface name having the "$ip"<br>## maybe a sub interface or a real physical interface<br>get_interface_by_ip()<br>{<br> local ip=$1<br> local ifc<br><br> ifc=$(<br> ## use -a to prevent that the iface is down by ip not cleared<br> /sbin/ifconfig -a | grep -B1 -w "$ip" |<br> awk ' NR == 1 { print $1 } ' <br> )<br><br> if [[ -n $ifc ]]; then<br> echo $ifc<br> else<br> return 1<br> fi<br>}<br><br>## return a real physical interface even if the ip is on a sub interface<br>get_real_interface_by_ip()<br>{<br> local ip=$1<br> local r_ifc<br><br> r_ifc=$( get_interface_by_ip "$ip" | sed 's/:[0-9]\+//' )<br><br> if [[ -n $r_ifc ]]; then<br> echo $r_ifc<br> else<br> return 1<br> fi<br>}<br><br>## return the interface with local ip<br>get_local_iface()<br>{<br> local ip<br> local ifcall=$( <br> for ip in $( get_localip_all ); do<br> get_interface_by_ip "$ip"<br> done<br> )<br><br> if [[ -n $ifcall ]]; then<br> echo $ifcall<br> else<br> return 1<br> fi<br>}<br><br>## return the interface with wan ip, actually, with not lan ip<br>get_wan_iface()<br>{<br> local wanall<br> ## one interface per line<br> get_local_iface | xargs -n1 > /tmp/local.iface<br> /sbin/ifconfig | grep -B1 'addr:[0-9]' |<br> awk '/^(eth|wlan|ppp)/ { print $1 }' > /tmp/all.iface<br><br> wanall=$( grep -xvf /tmp/local.iface /tmp/all.iface )<br> ## /bin/rm "/tmp/local.iface" "/tmp/all.iface"<br><br> if [[ -n $wanall ]]; then<br> echo $wanall<br> else<br> return 1<br> fi<br>}<br><br>## return physical iface with local ip<br>get_real_local_iface()<br>{<br> get_local_iface | xargs -n1 | sed 's/:.*//' | sort -u<br>}<br><br>## return physical iface with wan ip<br>get_real_wan_iface()<br>{<br> get_wan_iface | xargs -n1 | sed 's/:.*//' | sort -u<br>}<br><br>## return the interface without a ip configured on it<br>get_free_iface()<br>{<br> local ifcall=$(<br> /sbin/ifconfig -a |<br> grep -w 'BROADCAST' -B1 |<br> awk '/^[a-z\.]+/ { print $1 }'<br> )<br><br> if [[ -n $ifcall ]]; then<br> echo $ifcall<br> else<br> return 1<br> fi<br>}<br><br>## if we have eth0, this fun may return eth0:0<br>## if we have eth:0, may return eth0:1 ....<br>get_a_free_subname_on()<br>{<br> local iface=$1<br> local i=0<br> local ip=<br> <br> while (( i < 100 )); do<br> ip=$( get_ip_for_interface "${iface}:$i" )<br> if [[ -z $ip ]]; then ## no ip, so it's free<br> echo "${iface}:$i"<br> return 0 ## return directly, not use break<br> fi<br> <br> (( i++ ))<br> done<br> <br> return 1<br>}<br><br>## check if we have at least a sub interface, may used on lvs box<br>## return true / false<br>has_sub_iface()<br>{<br> /sbin/ifconfig | grep -m1 -Eq '^eth[0-9]+:[0-9]+'<br>}<br><br>## call this fun two times, the increment is the flux<br>## argv: $interface<br>get_current_transmit_flux_for()<br>{<br> local dev=$1<br> local NETDEV="/proc/net/dev"<br><br> grep -w "$dev" "$NETDEV" | awk -F: '{ print $2; }' | awk '{ print $9; }'<br><br> return ${PIPESTATUS[0]}<br>}<br><br>## try to find default gw, return the most used ip if default gw not found<br>## this func check gw ip loosely, check following code<br>get_gateway_ip()<br>{<br> /bin/netstat -nr | perl -lnwe '<br> ( $dest, $gw ) = (split)[0,1];<br> if ( $dest eq "0.0.0.0" ) {<br> $default_gw = $gw;<br> }<br> else { <br> $rec{ $gw }++; <br> }<br><br> END {<br> if ( defined $default_gw ) {<br> print $default_gw;<br> exit 0;<br> }<br> <br> $max = 0;<br> for $g ( keys %rec ) {<br> if ( $rec{ $g } > $max ) {<br> $max = $rec{ $g };<br> $default_gw = $g;<br> }<br> }<br> print "$default_gw";<br> }'<br>}<br><br>## this func check DEFAULT gw ip, may return more than one ip !<br>get_default_gateway_ip_on_interface()<br>{<br> local iface=$1<br><br> /bin/netstat -nr |<br> awk -vifc="$iface" '{ if ($1 == "0.0.0.0" && $NF == ifc) { print $2 } }' <br>}<br><br>## may return more than 1 ip, check it by yourself !<br>## this func check gwip loosely, check following code<br>get_gateway_ip_on_interface()<br>{ <br> local ifc=$1<br><br> if [[ -z $ifc ]]; then<br> return 1<br> fi<br><br> netstat -nr | perl -lne '<br> BEGIN{ $ifc = pop @ARGV; }<br><br> next unless /^\d/;<br><br> if (/^0\.0\.0\.0\s+(\d+\.\d+\.\d+\.\d+).*$ifc\s*$/) {<br> $found=1;<br> print $1;<br> exit 0;<br> }<br> elsif (/^\d+\.\d+\.\d+\.\d+\s+(\d+\.\d+\.\d+\.\d+).*$ifc\s*$/) {<br> next if $1 eq "0.0.0.0";<br> $gw{$1}++;<br><br> ## print "found [$_]"<br> }<br><br> END {<br> unless ( $found ) {<br> for ( sort keys %gw ) {<br> ## print "$_\t$gw{$_}";<br> print $_;<br> }<br> }<br> }<br><br> ' "$ifc"<br>}<br><br>## check if a host online<br>## return true / false<br>is_host_online()<br>{<br> local host=$1<br> local try=2<br><br> [[ -n $host ]] || return 1<br><br> ## some old versions of nmap seems more slowly when dest unreachable<br> while (( try >= 0 )); do<br> if ping -c2 -w2 "$host" 2>/dev/null | grep -q ' [12] received'; then<br> return 0<br> fi<br><br> (( try-- ))<br> done<br><br> return 1<br>}<br><br>## return true / false<br>is_a_valid_port()<br>{<br> local port=$1<br> local p=$( echo $port | tr -d '0-9' )<br><br> ## having non-digit character<br> if [[ -n "$p" ]]; then<br> return 1<br> fi<br> <br> if (( port >= 1 )) && (( port <= 65535 )); then<br> return 0<br> else<br> return 1<br> fi<br>}<br><br>## return true / false<br>is_an_valid_ip()<br>{<br> local ip=$1<br><br> ## simple checking<br> if [[ "$ip" == "0.0.0.0" ]] || [[ "$ip" == "255.255.255.255" ]]; then<br> return 1<br> fi<br><br> ## not perfect checking ...<br> echo "$ip" | grep -qE '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$'<br>}<br><br>ifdown_an_ip()<br>{<br> local ip=$1<br> <br> [[ -n $ip ]] || return 1<br><br> local iface=$( get_interface_by_ip "$ip" )<br> if [[ -z $iface ]]; then<br> return 1 ## no-op<br> fi<br><br> ifdown_an_iface "$iface"<br>}<br><br>## dangerous to down a phycal interface, use "force" as argv[2] if you know what you are doing<br>ifdown_an_iface()<br>{<br> local iface=$1<br> local downall=$2<br><br> local ip_cnt<br><br> [[ -n $iface ]] || return 1<br><br> case $iface in<br> *:[0-9]*) ## sub interface, just clear the ip configured<br> /sbin/ifconfig "$iface" 0 &> /dev/null || :<br> ;;<br> *) ## physical interface, if there is only one ip, down the nic<br> ## else just clear the ip configured<br> ip_cnt=$( get_all_ip_for_interface "$iface" | xargs -n1 | wc -l )<br> if (( ip_cnt > 1 )); then<br> if [[ $downall == "force" ]]; then<br> /sbin/ifconfig "$iface" 0 down &> /dev/null || :<br> else<br> /sbin/ifconfig "$iface" 0 &> /dev/null || :<br> fi<br> ## no mare than 1 ip on it, safe<br> else<br> /sbin/ifconfig "$iface" 0 down &> /dev/null || :<br> fi<br> ;;<br> esac<br><br> if [[ -z $( get_ip_for_interface "$iface" ) ]]; then<br> return 0<br> else<br> return 1<br> fi<br>}<br><br>use_ip_2ping()<br>{<br> local src_ip=$1<br> local dest_ip=$2<br><br> local cnt=3<br><br> while (( cnt >= 0 )); do<br> ping -c1 -w1 -I "$src_ip" "$dest_ip" 2>/dev/null | <br> grep -q '[[:blank:]]0% packet loss'<br><br> (( $? == 0 )) && return 0<br> (( cnt-- ))<br> done<br><br> return 1<br>}<br><br>## ---------------------------------------------------------<br><br><br><br><br><br>## ------------------- dir /path / --------------------------<br><br>## get the working dir name, may return the dirname of the script we are running<br>## actually, we may have to find the workdir first to source this file -_-!<br>## anyway, var LLLOG needs this<br>get_workdir()<br>{<br> local d<br><br> ## may be I should check $0 ~ *.sh simplly<br> case $- in<br> *i*) ## sourced in an interactive-bash ?<br> d=$( pwd )<br> ;;<br> *)<br> d=$( cd `dirname "$0"` && pwd )<br> ;;<br> esac<br><br> echo "$d"<br>}<br><br>## rename a file or dir to make sure the filename or dirname would be OK to reuse<br>## if "abc" exits, it will be renamed as "abc.old"<br>## argv: $pathname<br>## example: remove_old "/usr/local/apache" && ./configure --prefix=/usr/local/apache<br>remove_old()<br>{<br> local name="$1"<br> local oldname="${name}.old"<br><br> if ! [[ -e "$name" || -L "$name" ]]; then<br> return<br> fi<br> <br> ## never rename '/', $1 must be an error argv<br> [[ "$name" == "/" ]] && die "you really rename / ?"<br><br> [[ -e "$oldname" ]] && rm -rf "$oldname"<br> [[ -L "$oldname" ]] && rm -rf "$oldname"<br><br> /bin/mv "$name" "$oldname"<br>}<br><br>## a simple mktemp. some old os have no /bin/mktemp, to create uniq temp file/dir<br>## the command on slk and suse behaves differently, so re-write it<br>## argv1: -d / -f<br>## argv2: $path<br>## example: mktemp -f /tmp/<br>mktemp()<br>{<br> local opt=$1 ## file or dir<br> local dir=$2 ## base path<br> local tmp<br><br> ## make sure we find a uniq file / dir name<br> while :; do<br> if [[ -n "$dir" ]]; then<br> tmp="$dir/$( date +%s ).$$.$RANDOM"<br> elif [[ -n "$WORKDIR" ]]; then<br> tmp="$WORKDIR/$( date +%s ).$$.$RANDOM"<br> else<br> tmp="./$$.$RANDOM.$( date +%s )"<br> fi<br><br> [[ -e $tmp ]] || break<br> done<br><br> if [[ $opt == "-d" ]]; then<br> mkdir -p "$tmp" || return 1<br> else<br> mkdir -p "$( dirname $tmp )" || return 1<br> touch "$tmp" || return 1<br> fi<br><br> echo $tmp<br>}<br><br>## essential files/dirs must be there<br>## argv: $pathname<br>## example: must_exist "$WORKDIR/mysql.tar.bz"<br>must_exist()<br>{<br> local t<br> local flag=0<br><br> for t; do<br> if [[ -e "$t" ]]; then<br> logmsg "[$t] FOUND, OK"<br> else<br> flag=1<br> warn "[$t] NOT FOUND, NOTOK"<br> fi<br> done<br><br> (( flag != 0 )) && die "FILES NOT FOUND, ABORTING ..."<br>}<br><br>## try to find the mountpoint for a pathname<br>get_mountpoint_for_pathname()<br>{<br> local path=$1<br> <br> [[ -n $path ]] || return 1<br> [[ -e $path ]] || return 1<br><br> df "$path" 2>/dev/null | awk 'NR == 2 { print $NF }'<br>}<br><br>## try to find the mountpoint for a pathname<br>get_devname_for_mountpoint()<br>{<br> local path=$1<br><br> [[ -n $path ]] || return 1<br> [[ -d $path ]] || return 1<br><br> df "$path" 2>/dev/null | awk 'NR == 2 { print $1 }'<br>}<br><br>## ---------------------------------------------------------<br><br><br><br><br><br><br>## --------------------- OS / HW info ----------------------<br><br>## check if running on SUSE OS<br>## return true / false<br>check_suseos()<br>{<br> if [[ -f "/etc/SuSE-release" ]]; then<br> grep -wqF 'SUSE' /etc/SuSE-release && return 0<br> fi<br><br> [[ -x /sbin/yast2 ]] && return 0 || :<br> <br> return 1<br>}<br><br>## check if running on Slackware OS<br>## return true / false<br>check_slkos()<br>{<br> if [[ -f "/etc/slackware-version" ]]; then<br> grep -wqF 'Slackware' /etc/slackware-version &>/dev/null && return 0<br> fi<br><br> [[ -x /sbin/installpkg ]] && return 0 || :<br><br> return 1<br>}<br><br>## check if running on RedHat OS<br>## return true / false<br>check_rhos()<br>{<br> if [[ -f /etc/redhat-release ]]; then<br> grep -wqi red /etc/redhat-release &>/dev/null && return 0<br> fi<br><br> return 1<br>}<br><br>## print OS info, now just os version <br>get_osinfo()<br>{<br> ## use xargs to delete '\n', I love xargs!<br> if check_suseos; then<br> xargs < /etc/SuSE-release<br> elif check_slkos; then<br> xargs < /etc/slackware-version<br> elif check_rhos; then<br> xargs < /etc/redhat-release<br> else<br> ## lsb_release may be found on ubuntu, debian, etc.<br> lsb_release -d 2>/dev/null || echo 'UNKNOWD OS'<br> fi<br>}<br><br>## print OS name<br>get_osname()<br>{<br> if check_suseos; then<br> echo SUSE<br> elif check_slkos; then<br> echo SLK<br> elif check_rhos; then<br> echo RH<br> else<br> echo UNKNOWN<br> return 1<br> fi<br>}<br><br>## with bit flag<br>get_osname2()<br>{<br> echo $( get_osver )_$( get_cputype )<br>}<br><br>## return 32/64, based on OS but not hardware<br>get_cputype()<br>{<br> if uname -a | grep -Fq 'x86_64'; then<br> echo 64<br> else<br> echo 32<br> fi<br>}<br><br>get_osver()<br>{<br> if grep -Eq 'Slackware[[:blank:]]+8\.[0-9]' /etc/slackware-version; then<br> echo slk8<br> elif grep -Eq 'Slackware[[:blank:]]+10\.[0-9]' /etc/slackware-version; then<br> echo slk10<br> elif check_suseos; then<br> echo "suse$( get_cputype )"<br> elif check_rhos; then<br> echo "rh$( get_cputype )"<br> else<br> echo "UNKNOWN"<br> fi 2>/dev/null<br>}<br><br>## return kernel version: 2.4 / 2.6<br>get_kernver()<br>{<br> /sbin/kernelversion 2>/dev/null ||<br> uname -r | grep -o '^2\..'<br>}<br><br>## get free capacity of a partition by a filename/pathname<br>get_free_cap()<br>{<br> local path=$1<br><br> if [[ ! -e "$path" ]]; then<br> echo 0B<br> return<br> fi<br><br> ## df so cool!<br> df -h "$path" | awk 'NR==2 { print $4 }'<br>}<br><br><br>## get the size of files by du<br>## example: get_file_size "/var/log"<br>get_file_size()<br>{<br> ## do not quote [$file], may contain more than one filename<br> local file=$1<br> local size=$( du -sh $file 2>/dev/null | awk '{ print $1; exit }' || echo 0B )<br><br> echo ${size: -1} | grep -q '^[0-9]$' && size=${size}B<br> echo ${size:-0B}<br>}<br><br>## get the size of physical mem<br>get_mem_size()<br>{<br> local unit=$1<br> local resut dividend<br><br> case $unit in <br> k|K)<br> dividend=1<br> ;;<br> m|M)<br> dividend=1000<br> ;;<br> g|G)<br> dividend=1000000<br> ;;<br> t|T)<br> dividend=1000000000<br> ;;<br> *)<br> dividend=1 ## default, K<br> ;;<br> esac<br><br> resut=$( awk '/^MemTotal/ { print $2 }' /proc/meminfo )<br> calculate2 "$resut / $dividend"<br>}<br><br>## get the size of all hard disks<br>get_hdd_size()<br>{<br> local unit=$1<br> local resut dividend<br><br> case $unit in <br> k|K)<br> dividend=1<br> ;;<br> m|M)<br> dividend=1000<br> ;;<br> g|G)<br> dividend=1000000<br> ;;<br> t|T)<br> dividend=1000000000<br> ;;<br> *)<br> dividend=1 ## default, K<br> ;;<br> esac<br><br> ## check /proc/partitions, fdisk -l not reliable<br> resut=$( <br> awk 'BEGIN{ total = 0 }<br> {<br> if ( $1 !~ /^[[:space:]]*[0-9]+/ ) {<br> next<br> }<br> <br> if ( $NF ~ /cciss\/c[0-9]d[0-9][[:space:]]*$/ || $NF ~ /[sh]d[a-z][[:space:]]*$/ ) {<br> total += $3<br> }<br> }<br> END { printf("%d", total) }' /proc/partitions<br> )<br><br> calculate2 "$resut / $dividend"<br>}<br><br>## get cpu name: intel/amd x $core_num<br>get_cpu_name()<br>{<br> awk 'BEGIN{ num = 0; name = "unknow"; FS = ":" }<br> {<br> if ( $1 !~ /^model name/ ) {<br> next<br> }<br> if ( $0 ~ /[Ii]ntel/ ) {<br> name = "Intel"<br> }<br> else if ( $0 ~ /AMD/ ) {<br> name = "Amd"<br> }<br> else {<br> name = 'unknow'<br> }<br> num++<br> }<br> END { print name"x"num }' /proc/cpuinfo<br>}<br><br>## get cpu cache sizes<br>get_cpu_cachesize()<br>{<br> awk 'BEGIN{ num = 0; size = 0; FS = ":"; }<br> {<br> if ( $1 ~ /^cache size/ ) {<br> num++<br> size = $2 + 0<br> }<br> }<br> END { print size"Kx"num }' /proc/cpuinfo<br>}<br><br>## 2009-01-14 samli, check if a partition readonly<br>## argv: $mountpoint / $pathname<br>## return true / false<br>is_partition_readonly()<br>{<br> local p=$1<br> local mountpoint<br> local rw_flag<br> <br> mountpoint=$( get_mountpoint_for_pathname "$p" )<br><br> ## rw_flag: ro / rw<br> rw_flag=$(<br> awk -vp=$mountpoint '<br> {<br> if ( $1 != "/dev/root" && $2 == p ) {<br> str=$4<br> gsub(",.*", "", str)<br> print str<br> exit<br> }<br> }' /proc/mounts )<br> <br> if [[ $rw_flag == "ro" ]]; then<br> return 0<br> else<br> return 1<br> fi<br>}<br><br>## 2009-01-14 samli, check if a partition no space left<br>## argv: $mountpoint / $pathname<br>## return true / false<br>is_partition_full()<br>{<br> local p=$1<br> local full_flag<br><br> case $p in<br> /*)<br> ;;<br> *)<br> return 1<br> ;;<br> esac<br> <br> ## check inode and data area<br> full_flag=$( <br> { df -Pi "$p"; df -Pk "$p"; } |<br> awk '! /^Filesystem/ {<br> usage = $(NF-1) + 0<br> if ( usage == 100 ) {<br> print "Y"<br> exit<br> }<br> }'<br> )<br><br> if [[ $full_flag == "Y" ]]; then<br> return 0<br> else<br> return 1<br> fi<br>} <br><br>## find the username we added manually<br>## see man shadow to find the detail of the policy<br>find_non_sys_user()<br>{<br><br> # need root privilege to access '/etc/shadow'<br> (( UID == 0 )) || return 1<br><br> perl -we '<br> use strict;<br> my @users;<br> my $fd;<br> my ( $user, $pass, $uid );<br> <br> ## find the username having password<br> open ($fd, "<", "/etc/shadow") or die "Can not open /etc/shadow\n";<br> while (<$fd>) {<br> ($user, $pass ) = (split ":")[0,1];<br> next if $user eq "root";<br> <br> if ( $pass =~ m{ [a-zA-Z0-9/\$] }x ) {<br> push @users, $user;<br> } <br> elsif ( $pass eq "" ) {<br> push @users, $user;<br> }<br> }<br> close $fd or die "Can not close $fd\n";<br><br> ## find the username having uid >= normal uid<br> open ($fd, "<", "/etc/passwd") or die "Can not open /etc/passwd\n";<br> while (<$fd>) {<br> ($user, $uid ) = (split ":")[0,2];<br> next if $user eq "root";<br> next if $user eq "nobody";<br> <br> if ( $uid >= 1000 ) { ## should read this val from /etc/login.defs<br> push @users, $user unless grep { /\b$user\b/ } @users;<br> }<br> elsif ( $uid == 0 ) { ## make sure dangerous user with uid = 0<br> push @users, $user unless grep { /\b$user\b/ } @users;<br> }<br> }<br> close $fd or die "Can not close $fd\n";<br><br> for my $u (sort @users) {<br> print "$u", " ";<br> }<br> '<br>}<br><br>## ---------------------------------------------------------<br><br><br><br><br><br><br>## ------------------------ KERNELL ------------------------<br>## check if kernel supports iptables<br>## return true / false<br>kernel_support_iptables()<br>{<br> iptables -L -n &> /dev/null<br>}<br><br>## check if kernel supports ip conntrack<br>## return true / false<br>kernel_support_state()<br>{<br> ## [[ -f /proc/sys/net/ipv4/ip_conntrack_max ]]<br> [[ -f /proc/net/ip_conntrack ]]<br>}<br><br>## check if kernel supports lvs-rs by checking tunl interface <br>## return true / false<br>kernel_support_rs()<br>{<br> /sbin/ifconfig tunl0 &> /dev/null<br>}<br><br>## check if kernel supports lvs-ld<br>## return true / false<br>kernel_support_ld()<br>{<br> kernel_support_rs || return 1<br> [[ -f /proc/net/ip_vs ]] || return 1<br><br> return 0<br>}<br><br>## 2009-03-25, get the label name of stateful kernel from lilo.conf<br>#+ but do not change 2.4->2.6 or 2.6->2.4 unthinkingly, nic name may change after reboot<br>## argv: 2.4 / 2.6<br>get_state_label_for_slk()<br>{<br> ver=$1<br><br> case $ver in<br> 2.4) ##<br> grep -m1 -E 'vmlinuz-2\.4.*STATE' /etc/lilo.conf -A4 |<br> awk -F= '/label/{ print $2 }' |<br> trim<br> ;;<br> 2.6)<br> grep -m1 -E 'vmlinuz-2\.6.*STATE' /etc/lilo.conf -A4 |<br> awk -F= '/label/{ print $2 }' |<br> trim<br> ;;<br> *)<br> return 1<br> ;;<br> esac<br>}<br><br>## ---------------------------------------------------------<br><br><br><br><br><br><br>## ------------------------ tarball ------------------------<br><br>## get tarball dirname, /1/2/3/abc.tar.bz -> abc<br>## argv: $path_to_tarballname<br>## return dirname<br>get_tarball_dirname()<br>{<br> local tb="$1"<br> case $tb in<br> *.tar.bz2|*.tar.gz)<br> echo $tb | sed -e 's@.*/@@g' -e 's@\.tar\.\(bz2\|gz\)$@@'<br> ;;<br> *.tgz|*.tbz)<br> echo $tb | sed -e 's@.*/@@g' -e 's@\.\(tbz\|tgz\)$@@'<br> ;;<br> *.tar)<br> echo $tb | sed -e 's@.*/@@g' -e 's@\.tar$@@'<br> ;;<br> *)<br> echo $tb<br> return 1<br> ;;<br> esac<br>}<br><br>## argv: $path_to_tarballname<br>## return bzip2 / gzip / tar<br>get_tarball_type()<br>{<br> if file "$1" | grep -Fq 'bzip2 compressed data'; then<br> echo bzip2 <br> elif file "$1" | grep -Fq 'gzip compressed data'; then<br> echo gzip<br> elif file "$1" | grep -Fq "POSIX tar archive"; then<br> echo tar<br> else<br> return 1<br> fi<br>}<br><br>## ---------------------------------------------------------<br><br><br><br><br><br><br>## --------------------------- NUM -------------------------<br><br>## a simple int calculater<br>## argv: "$math_expression"<br>## example: calculate "10 / 2"<br>calculate()<br>{<br> local expr=$@<br><br> if which bc &>/dev/null; then<br> echo "scale = 0; $expr" | bc<br> elif which perl &>/dev/null; then<br> echo "$expr" | perl -lne ' print int (eval) '<br> else<br> echo $(( $expr ))<br> fi<br>}<br><br>## support float<br>calculate2()<br>{<br> local expr=$@<br><br> if which bc &>/dev/null; then<br> echo "scale = 2; $expr" | bc<br> elif which perl &>/dev/null; then<br> echo "$expr" | perl -lne ' printf ("%0.2f", (eval) ) '<br> else ## may try awk here<br> return 1<br> fi<br>}<br>## check if argv1 >= argv2<br>## argv1: $num_1<br>## argv2: $num_2<br>compare_two_num()<br>{<br> if (( $# != 2 )); then<br> return 1<br> fi<br><br> ## hope perl is install in every OS ...<br> perl -we ' my ($v1, $v2) = @ARGV; exit ( $v1 >= $v2 ? 0 : 1 ) ' $1 $2<br>}<br><br>## get a random num<br>## argv: $max, optionall<br>get_a_random_num()<br>{<br> local max=$1<br> local rand=0<br><br> if [[ -z $max ]]; then<br> echo $(( RANDOM + 1 )) ## 1 ~ 32768, see man bash<br> else<br> # echo $RANDOM$RANDOM % $1 | perl -lne ' print eval '<br> while (( rand == 0 )); do<br> ## 3276732767 < ( 2^32 = 4294967296 )<br> rand=$( calculate "( $RANDOM$RANDOM + $RANDOM + $RANDOM ) % $max" )<br> done<br> echo $rand<br> fi<br>}<br><br>## get ntp time offset<br>## sorry to hear that ntpdate is deprecated in opensuse 11.1<br>get_ntp_offset()<br>{<br> local NTP_SERVER="pool.ntp.org"<br> local offset<br><br> ## to speed up, just query one server every time<br> ## so , the ntp server must be reliable<br> for srv in $NTP_SERVER; do<br> offset=$( <br> /usr/sbin/ntpdate -q $NTP_SERVER 2> /dev/null |<br> awk '/time server.*sec$/ { print $( NF -1 ) }' |<br> sed 's/-//' ## get abs val<br> )<br><br> if [[ -n $offset ]]; then<br> echo $offset<br> return 0<br> fi<br> done<br><br> return 1<br>}<br><br>## ---------------------------------------------------------<br><br><br><br><br><br><br>## ------------------------- MISC --------------------------<br><br>dump_cron()<br>{<br> local user=$1<br><br> local user_flag<br><br> if [[ -n $user ]]; then<br> if (( UID != 0 )); then<br> return 1<br> fi<br><br> user_flag="-u $user"<br> fi<br><br> crontab $user_flag -l | <br> perl -lne ' print if ( ( $. > 3 ) || ( $. <= 3 && /^[^#] /) ) ' <br>}<br><br>## add a cron jobs line to crontab, with 'force' arg to add a comment line<br>## example: add_cron "### sync clock every hour" "force"<br>## example: add_cron "30 * * * * /usr/sbin/ntpdate 172.23.32.142 &> /dev/null"<br>## example: add_cron "30 * * * * /usr/sbin/ntpdate 172.23.32.142 &> /dev/null" "mqq"<br>add_cron()<br>{<br> local cmd=$1<br> local force=$2<br> local user=$3<br> local key<br> local is_comment<br><br> local user_flag<br><br> if [[ -n $user ]]; then<br> if (( UID != 0 )); then<br> return 1<br> fi<br><br> user_flag="-u $user"<br> fi<br><br> # good to use absolute path in crontab<br> local c<br> for c in $cmd; do<br> case $c in<br> /*)<br> ## key=$( basename $c )<br> key=$c<br> break<br> ;;<br> esac<br> done<br><br> if ! [[ $force == "force" || $force == "FORCE" ]]; then<br> if [[ -z "$key" ]]; then<br> warn "failed, [$cmd] not use abs_path to command"<br> return 1<br> fi<br><br> if [[ ! -x "$c" ]]; then<br> warn "failed, [$c] not executable"<br> return 1<br> fi<br><br> if crontab $user_flag -l | grep -F -v '#' | grep -Fqw -- "$key"; then<br> warn "failed, keyword [$key] found in crontab already"<br> return 1<br> fi<br> fi<br><br> if echo "$cmd" | grep -Eq '^[[:blank:]]+#'; then<br> is_comment=yes<br> fi<br><br> # update crontab<br> # crontab $user_flag -l | perl -lne ' print if ( ( $. > 3 ) || ( $. <= 3 && /^[^#] /) ) ' |<br> dump_cron "$user" |<br> { <br> cat <br> [[ $is_comment == "yes" ]] || echo "## DO NOT DELETE! [ $key ] added by AMC at $(date '+%F %T')"<br> echo "$cmd"<br> } | crontab - $user_flag<br>} <br><br>comment_cron()<br>{<br> local key=$1<br> local user=$2<br><br> local user_flag<br><br> [[ -n $key ]] || return 1<br><br> if [[ -n $user ]]; then<br> if (( UID != 0 )); then<br> return 1<br> fi<br><br> user_flag="-u $user"<br> fi<br><br> # crontab $user_flag -l | perl -lne ' print if ( ( $. > 3 ) || ( $. <= 3 && /^[^#] /) ) ' |<br> dump_cron "$user" |<br> sed "/$key/ s/^/## /" | crontab - $user_flag<br>}<br><br>del_cron()<br>{<br> local key=$1<br> local user=$2<br><br> local user_flag<br><br> [[ -n $key ]] || return 1<br><br> if [[ -n $user ]]; then<br> if (( UID != 0 )); then<br> return 1<br> fi<br><br> user_flag="-u $user"<br> fi<br><br> ## nonsense 3 lines header<br> # crontab $user_flag -l | perl -lne ' print if ( ( $. > 3 ) || ( $. <= 3 && /^[^#] /) ) ' |<br> dump_cron "$user" |<br> grep -v -- "$key" | crontab - $user_flag<br>}<br><br>## trim leading space and tailing space<br>## example: iptables -nvL | trim<br>## example: trim < file<br>trim()<br>{<br> sed -e 's/^[[:space:]]\+//' -e 's/[[:space:]]\+$//'<br>}<br><br>## check if a string already in a file which is not commented<br>## argv1: $str<br>## argv2: $filename<br>## return true / false<br>is_str_infile()<br>{<br> local str="$1"<br> local file="$2"<br><br> grep -Fv '#' "$file" | grep -Fwq -- "$str"<br>}<br><br>## kill a process if it's running<br>## argv: $app_name<br>try_kill_proc()<br>{<br> local proc="$1"<br><br> if killall -0 "$proc" &>/dev/null; then<br> if killall -9 "$proc"; then<br> logmsg "found old "$proc" running, kill OK"<br> else<br> die "found old "$proc" running, kill FAILED"<br> fi<br> fi<br>}<br><br>## to grep multipul times, supposed to be used after a pipe or with read redirection<br>## example: ps -ef | mgrep samli ssh<br>mgrep()<br>{<br> local key="$1"<br> local opt=<br><br> if [[ -z "$key" ]]; then<br> cat <br> return <br> fi<br><br> while [[ ${key:0:1} == '-' ]]; do<br> opt="$opt $key"<br> shift<br> key="$1"<br> done<br><br> shift <br> grep $opt $key | mgrep "$@"<br>}<br><br><br>## thanks kangkang <br>dectobin()<br>{<br> local s=$1<br> local n <br><br> while (( $s != 0 )); do<br> n=$(( s % 2 ))$n<br> s=$(( s / 2 ))<br> done <br><br> echo $n <br>}<br><br>## thanks kangkang <br>cidr_mask()<br>{<br> local i<br> local mask=$1<br> local out<br><br> for i in $( echo $mask | tr '.' ' ' ); do<br> out=$out$(dectobin $i)<br> done<br> <br> out=$(echo $out | sed 's/0*$//g' )<br><br> if echo $out | grep -q 0; then<br> return 1<br> fi<br><br> echo -n $out | wc -c<br>}<br><br>## xor op, usring P$1" <br>## argv[1]: key to xor with<br>## argv[2]: str to xor<br>myxor()<br>{<br> local key=$1<br> local str=$2<br><br> perl -lwe ' <br> my $key = shift;<br> $_ = shift;<br> my @new;<br> for my $s ( split( "" ) ) {<br> push @new, chr( (ord $s) ^ $key );<br> }<br> print join "", @new;<br> ' "$key" "$str"<br>}<br><br>## get_name_of_pid()<br>## {<br>## local pid=$1<br>## <br>## /bin/ls -l "/proc/$pid/exe" 2>/dev/null<br>## }<br><br>is_dos_file()<br>{<br> local file=$1<br><br> file "$file" | grep -q 'with CRLF line terminators'<br>}<br><br>## dos2unix is lost on some servers -_-!<br>my_dos2unix()<br>{<br> local file=$1<br><br> if which dos2unix ; then<br> dos2unix "$file"<br> else<br> perl -pi -e 's/\r$//' "$file"<br> fi &> /dev/null<br>}<br><br>dos2unix_if_necessary()<br>{<br> local file=$1<br><br> [[ -f $file ]] || return 1<br><br> if is_dos_file "$file"; then<br> my_dos2unix "$file"<br> else<br> return 0<br> fi<br>}<br><br>## find the java dirname without unpacking jdk*.bin<br>## we may return [jdk1.5.0_06] for [jdk-1_5_0_06-linux-i586.bin]<br>get_javadir_from_javabin()<br>{<br> javabin=$1 ## such as [jdk-1_5_0_06-linux-i586.bin]<br><br> if [[ -z $javabin ]] || [[ ! -f $javabin ]]; then<br> return 1<br> fi<br><br> grep -m1 -a '^javahome=jdk.*' "$javabin" |<br> awk -F= '{ print $2 }'<br>}<br><br>## ---------------------------------------------------------<br><br><br><br><br>## ----------------------- PROCESS -------------------------<br><br>## check if a given pid/appname running<br>## argv: pid / appname<br>is_app_running()<br>{<br> local $p=$1<br> local RC<br><br> [[ -n $p ]] || return 1<br> <br> ## pid<br> if [[ -z $( echo $p | tr -d '[0-9]') ]]; then<br> kill -0 "$p" &> /dev/null<br> RC=$?<br> ## app name<br> else<br> killall -0 "$p" &> /dev/null<br> RC=$?<br> fi<br><br> return $RC<br>}<br><br>lock_on()<br>{<br> local f=$1<br> local freefd=6 ## do not use fd 5<br><br> ## make sure the file be there<br> mkdir -p "$( dirname $f )"<br> touch "$f"<br><br> ## find a free fd<br> while (( freefd <= 9 )); do<br> [[ -L /dev/fd/$freefd ]] || break<br> (( freefd++ ))<br> done<br><br> (( freefd == 10 )) && return 1<br><br> ## open the lock file<br> eval "exec $freefd< \"$f\""<br>}<br><br>is_locked()<br>{<br> local f=$1<br><br> fuser "$f" &> /dev/null<br>}<br><br>## -------------------- init global vars -------------------<br><br>## init LLLOCALIP, do not delete following line, logmsg/warn/die use this val<br>LLLOCALIP=$( get_localip )<br><br>## init WORKDIR<br>[[ -n $WORKDIR ]] || WORKDIR=$( get_workdir )<br><br>## init LLLOG, LLLOGDIR <br>## this val must be used after the logdir created in func logmsg/logmsg_/warn/die<br>[[ -n $LLLOG ]] || LLLOG="$WORKDIR/log.d/log.$LLLOCALIP"<br>[[ -n $LLLOGDIR ]] || LLLOGDIR=${LLLOG%/*}<br><br>## ---------------------------------------------------------<br></pre> from:<br><a >http://bbs.linuxeden.com/thread-192227-1-1.html </a><br><a >http://huan.googlecode.com/svn/bash/func-common.sh </a><br><br><img src ="http://www.shnenglu.com/beautykingdom/aggbug/114291.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/beautykingdom/" target="_blank">chatler</a> 2010-05-03 22:42 <a href="http://www.shnenglu.com/beautykingdom/archive/2010/05/03/114291.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鎯蟲寕鎺夊氨榪愯鐨剆hell鑴氭湰錛屾渶濂戒笉瑕佸幓璇曞搱http://www.shnenglu.com/beautykingdom/archive/2010/03/26/110595.htmlchatlerchatlerFri, 26 Mar 2010 09:24:00 GMThttp://www.shnenglu.com/beautykingdom/archive/2010/03/26/110595.htmlhttp://www.shnenglu.com/beautykingdom/comments/110595.htmlhttp://www.shnenglu.com/beautykingdom/archive/2010/03/26/110595.html#Feedback0http://www.shnenglu.com/beautykingdom/comments/commentRss/110595.htmlhttp://www.shnenglu.com/beautykingdom/services/trackbacks/110595.html# <--- 閫欏嬪垾浜傝窇錛佸ソ濂囨渻姝諱漢鐨勶紒

echo '鍗佷漢|鏃ヤ竴|鍗佸崄o' | sed 's/.../&\n/g'  
# <--- 璺熶綘瓔涘氨涓嶈伣錛屽啀璺戦欏嬪ソ浜?..

chatler 2010-03-26 17:24 鍙戣〃璇勮
]]>
shell鐗堜縿緗楁柉鏂瑰潡http://www.shnenglu.com/beautykingdom/archive/2010/03/26/110578.htmlchatlerchatlerFri, 26 Mar 2010 03:51:00 GMThttp://www.shnenglu.com/beautykingdom/archive/2010/03/26/110578.htmlhttp://www.shnenglu.com/beautykingdom/comments/110578.htmlhttp://www.shnenglu.com/beautykingdom/archive/2010/03/26/110578.html#Feedback0http://www.shnenglu.com/beautykingdom/comments/commentRss/110578.htmlhttp://www.shnenglu.com/beautykingdom/services/trackbacks/110578.html#!/bin/bash

# Tetris Game
# 10.21.2003 xhchen<[email]xhchen@winbond.com.tw[/email]>

#APP declaration
APP_NAME="${0##*[\\/]}"
APP_VERSION="1.0"


#棰滆壊瀹氫箟
cRed=1
cGreen=2
cYellow=3
cBlue=4
cFuchsia=5
cCyan=6
cWhite=7
colorTable=($cRed $cGreen $cYellow $cBlue $cFuchsia $cCyan $cWhite)

#浣嶇疆鍜屽ぇ灝?br>iLeft=3
iTop=2
((iTrayLeft = iLeft + 2))
((iTrayTop = iTop + 1))
((iTrayWidth = 10))
((iTrayHeight = 15))

#棰滆壊璁劇疆
cBorder=$cGreen
cScore=$cFuchsia
cScoreValue=$cCyan

#鎺у埗淇″彿
#鏀規(guī)父鎴忎嬌鐢ㄤ袱涓繘紼嬶紝涓涓敤浜庢帴鏀惰緭鍏ワ紝涓涓敤浜庢父鎴忔祦紼嬪拰鏄劇ず鐣岄潰;
#褰撳墠鑰呮帴鏀跺埌涓婁笅宸﹀彸絳夋寜閿椂錛岄氳繃鍚戝悗鑰呭彂閫乻ignal鐨勬柟寮忛氱煡鍚庤呫?br>sigRotate=25
sigLeft=26
sigRight=27
sigDown=28
sigAllDown=29
sigExit=30

#涓冧腑涓嶅悓鐨勬柟鍧楃殑瀹氫箟
#閫氳繃鏃嬭漿錛屾瘡縐嶆柟鍧楃殑鏄劇ず鐨勬牱寮忓彲鑳芥湁鍑犵
box0=(0 0 0 1 1 0 1 1)
box1=(0 2 1 2 2 2 3 2 1 0 1 1 1 2 1 3)
box2=(0 0 0 1 1 1 1 2 0 1 1 0 1 1 2 0)
box3=(0 1 0 2 1 0 1 1 0 0 1 0 1 1 2 1)
box4=(0 1 0 2 1 1 2 1 1 0 1 1 1 2 2 2 0 1 1 1 2 0 2 1 0 0 1 0 1 1 1 2)
box5=(0 1 1 1 2 1 2 2 1 0 1 1 1 2 2 0 0 0 0 1 1 1 2 1 0 2 1 0 1 1 1 2)
box6=(0 1 1 1 1 2 2 1 1 0 1 1 1 2 2 1 0 1 1 0 1 1 2 1 0 1 1 0 1 1 1 2)
#鎵鏈夊叾涓柟鍧楃殑瀹氫箟閮芥斁鍒癰ox鍙橀噺涓?br>box=(${box0[@]} ${box1[@]} ${box2[@]} ${box3[@]} ${box4[@]} ${box5[@]} ${box6[@]})
#鍚勭鏂瑰潡鏃嬭漿鍚庡彲鑳界殑鏍峰紡鏁扮洰
countBox=(1 2 2 2 4 4 4)
#鍚勭鏂瑰潡鍐峛ox鏁扮粍涓殑鍋忕Щ
offsetBox=(0 1 3 5 7 11 15)

#姣忔彁楂樹竴涓熷害綰ч渶瑕佺Н绱殑鍒嗘暟
iScoreEachLevel=50        #be greater than 7

#榪愯鏃舵暟鎹?br>sig=0                #鎺ユ敹鍒扮殑signal
iScore=0        #鎬誨垎
iLevel=0        #閫熷害綰?br>boxNew=()        #鏂頒笅钀界殑鏂瑰潡鐨勪綅緗畾涔?br>cBoxNew=0        #鏂頒笅钀界殑鏂瑰潡鐨勯鑹?br>iBoxNewType=0        #鏂頒笅钀界殑鏂瑰潡鐨勭綾?br>iBoxNewRotate=0        #鏂頒笅钀界殑鏂瑰潡鐨勬棆杞搴?br>boxCur=()        #褰撳墠鏂瑰潡鐨勪綅緗畾涔?br>cBoxCur=0        #褰撳墠鏂瑰潡鐨勯鑹?br>iBoxCurType=0        #褰撳墠鏂瑰潡鐨勭綾?br>iBoxCurRotate=0        #褰撳墠鏂瑰潡鐨勬棆杞搴?br>boxCurX=-1        #褰撳墠鏂瑰潡鐨剎鍧愭爣浣嶇疆
boxCurY=-1        #褰撳墠鏂瑰潡鐨剏鍧愭爣浣嶇疆
iMap=()                #鑳屾櫙鏂瑰潡鍥捐〃

#鍒濆鍖栨墍鏈夎儗鏅柟鍧椾負(fù)-1, 琛ㄧず娌℃湁鏂瑰潡
for ((i = 0; i < iTrayHeight * iTrayWidth; i++)); do iMap[$i]=-1; done


#鎺ユ敹杈撳叆鐨勮繘紼嬬殑涓誨嚱鏁?br>function RunAsKeyReceiver()
{
        local pidDisplayer key aKey sig cESC sTTY

        pidDisplayer=$1
        aKey=(0 0 0)

        cESC=`echo -ne "\033"`
        cSpace=`echo -ne "\040"`

        #淇濆瓨緇堢灞炴с傚湪read -s璇誨彇緇堢閿椂錛岀粓绔殑灞炴т細(xì)琚殏鏃舵敼鍙樸?br>        #濡傛灉鍦╮ead -s鏃剁▼搴忚涓嶅垢鏉鎺夛紝鍙兘浼?xì)瀵艰嚧缁堢尕滀贡锛?br>        #闇瑕佸湪紼嬪簭閫鍑烘椂鎭㈠緇堢灞炴с?br>        sTTY=`stty -g`

        #鎹曟崏閫鍑轟俊鍙?br>        trap "MyExit;" INT TERM
        trap "MyExitNoSub;" $sigExit

        #闅愯棌鍏夋爣
        echo -ne "\033[?25l"


        while :
        do
                #璇誨彇杈撳叆銆傛敞-s涓嶅洖鏄撅紝-n璇誨埌涓涓瓧絎︾珛鍗寵繑鍥?br>                read -s -n 1 key

                aKey[0]=${aKey[1]}
                aKey[1]=${aKey[2]}
                aKey[2]=$key
                sig=0

                #鍒ゆ柇杈撳叆浜嗕綍縐嶉敭
                if [[ $key == $cESC && ${aKey[1]} == $cESC ]]
                then
                        #ESC閿?br>                        MyExit
                elif [[ ${aKey[0]} == $cESC && ${aKey[1]} == "[" ]]
                then
                        if [[ $key == "A" ]]; then sig=$sigRotate        #<鍚戜笂閿?gt;
                        elif [[ $key == "B" ]]; then sig=$sigDown        #<鍚戜笅閿?gt;
                        elif [[ $key == "D" ]]; then sig=$sigLeft        #<鍚戝乏閿?gt;
                        elif [[ $key == "C" ]]; then sig=$sigRight        #<鍚戝彸閿?gt;
                        fi
                elif [[ $key == "W" || $key == "w" ]]; then sig=$sigRotate        #W, w
                elif [[ $key == "S" || $key == "s" ]]; then sig=$sigDown        #S, s
                elif [[ $key == "A" || $key == "a" ]]; then sig=$sigLeft        #A, a
                elif [[ $key == "D" || $key == "d" ]]; then sig=$sigRight        #D, d
                elif [[ "[$key]" == "[]" ]]; then sig=$sigAllDown        #絀烘牸閿?br>                elif [[ $key == "Q" || $key == "q" ]]                        #Q, q
                then
                        MyExit
                fi

                if [[ $sig != 0 ]]
                then
                        #鍚戝彟涓榪涚▼鍙戦佹秷鎭?br>                        kill -$sig $pidDisplayer
                fi
        done
}

#閫鍑哄墠鐨勬仮澶?br>function MyExitNoSub()
{
        local y

        #鎭㈠緇堢灞炴?br>        stty $sTTY
        ((y = iTop + iTrayHeight + 4))

        #鏄劇ず鍏夋爣
        echo -e "\033[?25h\033[${y};0H"
        exit
}


function MyExit()
{
        #閫氱煡鏄劇ず榪涚▼闇瑕侀鍑?br>        kill -$sigExit $pidDisplayer

        MyExitNoSub
}


#澶勭悊鏄劇ず鍜屾父鎴忔祦紼嬬殑涓誨嚱鏁?br>function RunAsDisplayer()
{
        local sigThis
        InitDraw

        #鎸傝澆鍚勭淇″彿鐨勫鐞嗗嚱鏁?br>        trap "sig=$sigRotate;" $sigRotate
        trap "sig=$sigLeft;" $sigLeft
        trap "sig=$sigRight;" $sigRight
        trap "sig=$sigDown;" $sigDown
        trap "sig=$sigAllDown;" $sigAllDown
        trap "ShowExit;" $sigExit

        while :
        do
                #鏍規(guī)嵁褰撳墠鐨勯熷害綰Level涓嶅悓錛岃瀹氱浉搴旂殑寰幆鐨勬鏁?br>                for ((i = 0; i < 21 - iLevel; i++))
                do
                        sleep 0.02
                        sigThis=$sig
                        sig=0

                        #鏍規(guī)嵁sig鍙橀噺鍒ゆ柇鏄惁鎺ュ彈鍒扮浉搴旂殑淇″彿
                        if ((sigThis == sigRotate)); then BoxRotate;        #鏃嬭漿
                        elif ((sigThis == sigLeft)); then BoxLeft;        #宸︾Щ涓鍒?br>                        elif ((sigThis == sigRight)); then BoxRight;        #鍙崇Щ涓鍒?br>                        elif ((sigThis == sigDown)); then BoxDown;        #涓嬭惤涓琛?br>                        elif ((sigThis == sigAllDown)); then BoxAllDown;        #涓嬭惤鍒板簳
                        fi
                done
                #kill -$sigDown $$
                BoxDown        #涓嬭惤涓琛?br>        done
}


#BoxMove(y, x), 嫻嬭瘯鏄惁鍙互鎶婄Щ鍔ㄤ腑鐨勬柟鍧楃Щ鍒?x, y)鐨勪綅緗? 榪斿洖0鍒欏彲浠? 1涓嶅彲浠?br>function BoxMove()
{
        local j i x y xTest yTest
        yTest=$1
        xTest=$2
        for ((j = 0; j < 8; j += 2))
        do
                ((i = j + 1))
                ((y = ${boxCur[$j]} + yTest))
                ((x = ${boxCur[$i]} + xTest))
                if (( y < 0 || y >= iTrayHeight || x < 0 || x >= iTrayWidth))
                then
                        #鎾炲埌澧欏浜?br>                        return 1
                fi
                if ((${iMap[y * iTrayWidth + x]} != -1 ))
                then
                        #鎾炲埌鍏朵粬宸茬粡瀛樺湪鐨勬柟鍧椾簡
                        return 1
                fi
        done
        return 0;
}


#灝嗗綋鍓嶇Щ鍔ㄤ腑鐨勬柟鍧楁斁鍒拌儗鏅柟鍧椾腑鍘?
#騫惰綆楁柊鐨勫垎鏁板拰閫熷害綰с?鍗充竴嬈℃柟鍧楄惤鍒板簳閮?
function Box2Map()
{
        local j i x y xp yp line

        #灝嗗綋鍓嶇Щ鍔ㄤ腑鐨勬柟鍧楁斁鍒拌儗鏅柟鍧椾腑鍘?br>        for ((j = 0; j < 8; j += 2))
        do
                ((i = j + 1))
                ((y = ${boxCur[$j]} + boxCurY))
                ((x = ${boxCur[$i]} + boxCurX))
                ((i = y * iTrayWidth + x))
                iMap[$i]=$cBoxCur
        done

        #娑堝幓鍙娑堝幓鐨勮
        line=0
        for ((j = 0; j < iTrayWidth * iTrayHeight; j += iTrayWidth))
        do
                for ((i = j + iTrayWidth - 1; i >= j; i--))
                do
                        if ((${iMap[$i]} == -1)); then break; fi
                done
                if ((i >= j)); then continue; fi

                ((line++))
                for ((i = j - 1; i >= 0; i--))
                do
                        ((x = i + iTrayWidth))
                        iMap[$x]=${iMap[$i]}
                done
                for ((i = 0; i < iTrayWidth; i++))
                do
                        iMap[$i]=-1
                done
        done

        if ((line == 0)); then return; fi

        #鏍規(guī)嵁娑堝幓鐨勮鏁發(fā)ine璁$畻鍒嗘暟鍜岄熷害綰?br>        ((x = iLeft + iTrayWidth * 2 + 7))
        ((y = iTop + 11))
        ((iScore += line * 2 - 1))
        #鏄劇ず鏂扮殑鍒嗘暟
        echo -ne "\033[1m\033[3${cScoreValue}m\033[${y};${x}H${iScore}         "
        if ((iScore % iScoreEachLevel < line * 2 - 1))
        then
                if ((iLevel < 20))
                then
                        ((iLevel++))
                        ((y = iTop + 14))
                        #鏄劇ず鏂扮殑閫熷害綰?br>                        echo -ne "\033[3${cScoreValue}m\033[${y};${x}H${iLevel}        "
                fi
        fi
        echo -ne "\033[0m"


        #閲嶆柊鏄劇ず鑳屾櫙鏂瑰潡
        for ((y = 0; y < iTrayHeight; y++))
        do
                ((yp = y + iTrayTop + 1))
                ((xp = iTrayLeft + 1))
                ((i = y * iTrayWidth))
                echo -ne "\033[${yp};${xp}H"
                for ((x = 0; x < iTrayWidth; x++))
                do
                        ((j = i + x))
                        if ((${iMap[$j]} == -1))
                        then
                                echo -ne "  "
                        else
                                echo -ne "\033[1m\033[7m\033[3${iMap[$j]}m\033[4${iMap[$j]}m[]\033[0m"
                        fi
                done
        done
}


#涓嬭惤涓琛?br>function BoxDown()
{
        local y s
        ((y = boxCurY + 1))        #鏂扮殑y鍧愭爣
        if BoxMove $y $boxCurX        #嫻嬭瘯鏄惁鍙互涓嬭惤涓琛?br>        then
                s="`DrawCurBox 0`"        #灝嗘棫鐨勬柟鍧楁姽鍘?br>                ((boxCurY = y))
                s="$s`DrawCurBox 1`"        #鏄劇ず鏂扮殑涓嬭惤鍚庢柟鍧?br>                echo -ne $s
        else
                #璧板埌榪欏効, 濡傛灉涓嶈兘涓嬭惤浜?br>                Box2Map                #灝嗗綋鍓嶇Щ鍔ㄤ腑鐨勬柟鍧楄創(chuàng)鍒拌儗鏅柟鍧椾腑
                RandomBox        #浜х敓鏂扮殑鏂瑰潡
        fi
}

#宸︾Щ涓鍒?br>function BoxLeft()
{
        local x s
        ((x = boxCurX - 1))
        if BoxMove $boxCurY $x
        then
                s=`DrawCurBox 0`
                ((boxCurX = x))
                s=$s`DrawCurBox 1`
                echo -ne $s
        fi
}

#鍙崇Щ涓鍒?br>function BoxRight()
{
        local x s
        ((x = boxCurX + 1))
        if BoxMove $boxCurY $x
        then
                s=`DrawCurBox 0`
                ((boxCurX = x))
                s=$s`DrawCurBox 1`
                echo -ne $s
        fi
}


#涓嬭惤鍒板簳
function BoxAllDown()
{
        local k j i x y iDown s
        iDown=$iTrayHeight

        #璁$畻涓鍏遍渶瑕佷笅钀藉灝戣
        for ((j = 0; j < 8; j += 2))
        do
                ((i = j + 1))
                ((y = ${boxCur[$j]} + boxCurY))
                ((x = ${boxCur[$i]} + boxCurX))
                for ((k = y + 1; k < iTrayHeight; k++))
                do
                        ((i = k * iTrayWidth + x))
                        if (( ${iMap[$i]} != -1)); then break; fi
                done
                ((k -= y + 1))
                if (( $iDown > $k )); then iDown=$k; fi
        done

        s=`DrawCurBox 0`        #灝嗘棫鐨勬柟鍧楁姽鍘?br>        ((boxCurY += iDown))
        s=$s`DrawCurBox 1`        #鏄劇ず鏂扮殑涓嬭惤鍚庣殑鏂瑰潡
        echo -ne $s
        Box2Map                #灝嗗綋鍓嶇Щ鍔ㄤ腑鐨勬柟鍧楄創(chuàng)鍒拌儗鏅柟鍧椾腑
        RandomBox        #浜х敓鏂扮殑鏂瑰潡
}


#鏃嬭漿鏂瑰潡
function BoxRotate()
{
        local iCount iTestRotate boxTest j i s
        iCount=${countBox[$iBoxCurType]}        #褰撳墠鐨勬柟鍧楃粡鏃嬭漿鍙互浜х敓鐨勬牱寮忕殑鏁扮洰

        #璁$畻鏃嬭漿鍚庣殑鏂扮殑鏍峰紡
        ((iTestRotate = iBoxCurRotate + 1))
        if ((iTestRotate >= iCount))
        then
                ((iTestRotate = 0))
        fi

        #鏇存柊鍒版柊鐨勬牱寮? 淇濆瓨鑰佺殑鏍峰紡(浣嗕笉鏄劇ず)
        for ((j = 0, i = (${offsetBox[$iBoxCurType]} + $iTestRotate) * 8; j < 8; j++, i++))
        do
                boxTest[$j]=${boxCur[$j]}
                boxCur[$j]=${box[$i]}
        done

        if BoxMove $boxCurY $boxCurX        #嫻嬭瘯鏃嬭漿鍚庢槸鍚︽湁絀洪棿鏀劇殑涓?br>        then
                #鎶瑰幓鏃х殑鏂瑰潡
                for ((j = 0; j < 8; j++))
                do
                        boxCur[$j]=${boxTest[$j]}
                done
                s=`DrawCurBox 0`

                #鐢諱笂鏂扮殑鏂瑰潡
                for ((j = 0, i = (${offsetBox[$iBoxCurType]} + $iTestRotate) * 8; j < 8; j++, i++))
                do
                        boxCur[$j]=${box[$i]}
                done
                s=$s`DrawCurBox 1`
                echo -ne $s
                iBoxCurRotate=$iTestRotate
        else
                #涓嶈兘鏃嬭漿錛岃繕鏄戶緇嬌鐢ㄨ佺殑鏍峰紡
                for ((j = 0; j < 8; j++))
                do
                        boxCur[$j]=${boxTest[$j]}
                done
        fi
}


#DrawCurBox(bDraw), 緇樺埗褰撳墠縐誨姩涓殑鏂瑰潡, bDraw涓?, 鐢諱笂, bDraw涓?, 鎶瑰幓鏂瑰潡銆?br>function DrawCurBox()
{
        local i j t bDraw sBox s
        bDraw=$1

        s=""
        if (( bDraw == 0 ))
        then
                sBox="\040\040"
        else
                sBox="[]"
                s=$s"\033[1m\033[7m\033[3${cBoxCur}m\033[4${cBoxCur}m"
        fi

        for ((j = 0; j < 8; j += 2))
        do
                ((i = iTrayTop + 1 + ${boxCur[$j]} + boxCurY))
                ((t = iTrayLeft + 1 + 2 * (boxCurX + ${boxCur[$j + 1]})))
                #\033[y;xH, 鍏夋爣鍒?x, y)澶?br>                s=$s"\033[${i};${t}H${sBox}"
        done
        s=$s"\033[0m"
        echo -n $s
}


#鏇存柊鏂扮殑鏂瑰潡
function RandomBox()
{
        local i j t

        #鏇存柊褰撳墠縐誨姩鐨勬柟鍧?br>        iBoxCurType=${iBoxNewType}
        iBoxCurRotate=${iBoxNewRotate}
        cBoxCur=${cBoxNew}
        for ((j = 0; j < ${#boxNew[@]}; j++))
        do
                boxCur[$j]=${boxNew[$j]}
        done


        #鏄劇ず褰撳墠縐誨姩鐨勬柟鍧?br>        if (( ${#boxCur[@]} == 8 ))
        then
                #璁$畻褰撳墠鏂瑰潡璇ヤ粠欏剁鍝竴琛?鍐?鍑烘潵
                for ((j = 0, t = 4; j < 8; j += 2))
                do
                        if ((${boxCur[$j]} < t)); then t=${boxCur[$j]}; fi
                done
                ((boxCurY = -t))
                for ((j = 1, i = -4, t = 20; j < 8; j += 2))
                do
                        if ((${boxCur[$j]} > i)); then i=${boxCur[$j]}; fi
                        if ((${boxCur[$j]} < t)); then t=${boxCur[$j]}; fi
                done
                ((boxCurX = (iTrayWidth - 1 - i - t) / 2))

                #鏄劇ず褰撳墠縐誨姩鐨勬柟鍧?br>                echo -ne `DrawCurBox 1`

                #濡傛灉鏂瑰潡涓鍑烘潵灝辨病澶勬斁錛孏ame over!
                if ! BoxMove $boxCurY $boxCurX
                then
                        kill -$sigExit ${PPID}
                        ShowExit
                fi
        fi



        #娓呴櫎鍙寵竟棰勬樉紺虹殑鏂瑰潡
        for ((j = 0; j < 4; j++))
        do
                ((i = iTop + 1 + j))
                ((t = iLeft + 2 * iTrayWidth + 7))
                echo -ne "\033[${i};${t}H        "
        done

        #闅忔満浜х敓鏂扮殑鏂瑰潡
        ((iBoxNewType = RANDOM % ${#offsetBox[@]}))
        ((iBoxNewRotate = RANDOM % ${countBox[$iBoxNewType]}))
        for ((j = 0, i = (${offsetBox[$iBoxNewType]} + $iBoxNewRotate) * 8; j < 8; j++, i++))
        do
                boxNew[$j]=${box[$i]};
        done

        ((cBoxNew = ${colorTable[RANDOM % ${#colorTable[@]}]}))

        #鏄劇ず鍙寵竟棰勬樉紺虹殑鏂瑰潡
        echo -ne "\033[1m\033[7m\033[3${cBoxNew}m\033[4${cBoxNew}m"
        for ((j = 0; j < 8; j += 2))
        do
                ((i = iTop + 1 + ${boxNew[$j]}))
                ((t = iLeft + 2 * iTrayWidth + 7 + 2 * ${boxNew[$j + 1]}))
                echo -ne "\033[${i};${t}H[]"
        done
        echo -ne "\033[0m"
}


#鍒濆緇樺埗
function InitDraw()
{
        clear
        RandomBox        #闅忔満浜х敓鏂瑰潡錛岃繖鏃跺彸杈歸鏄劇ず紿楀彛涓湁鏂瑰揩浜?br>        RandomBox        #鍐嶉殢鏈轟駭鐢熸柟鍧楋紝鍙寵竟棰勬樉紺虹獥鍙d腑鐨勬柟鍧楄鏇存柊錛屽師鍏堢殑鏂瑰潡灝嗗紑濮嬩笅钀?br>        local i t1 t2 t3

        #鏄劇ず杈規(guī)
        echo -ne "\033[1m"
        echo -ne "\033[3${cBorder}m\033[4${cBorder}m"

        ((t2 = iLeft + 1))
        ((t3 = iLeft + iTrayWidth * 2 + 3))
        for ((i = 0; i < iTrayHeight; i++))
        do
                ((t1 = i + iTop + 2))
                echo -ne "\033[${t1};${t2}H||"
                echo -ne "\033[${t1};${t3}H||"
        done

        ((t2 = iTop + iTrayHeight + 2))
        for ((i = 0; i < iTrayWidth + 2; i++))
        do
                ((t1 = i * 2 + iLeft + 1))
                echo -ne "\033[${iTrayTop};${t1}H=="
                echo -ne "\033[${t2};${t1}H=="
        done
        echo -ne "\033[0m"


        #鏄劇ず"Score"鍜?Level"瀛楁牱
        echo -ne "\033[1m"
        ((t1 = iLeft + iTrayWidth * 2 + 7))
        ((t2 = iTop + 10))
        echo -ne "\033[3${cScore}m\033[${t2};${t1}HScore"
        ((t2 = iTop + 11))
        echo -ne "\033[3${cScoreValue}m\033[${t2};${t1}H${iScore}"
        ((t2 = iTop + 13))
        echo -ne "\033[3${cScore}m\033[${t2};${t1}HLevel"
        ((t2 = iTop + 14))
        echo -ne "\033[3${cScoreValue}m\033[${t2};${t1}H${iLevel}"
        echo -ne "\033[0m"
}


#閫鍑烘椂鏄劇ずGameOVer!
function ShowExit()
{
        local y
        ((y = iTrayHeight + iTrayTop + 3))
        echo -e "\033[${y};0HGameOver!\033[0m"
        exit
}


#鏄劇ず鐢ㄦ硶.
function Usage
{
        cat << EOF
Usage: $APP_NAME
Start tetris game.

  -h, --help              display this help and exit
      --version           output version information and exit
EOF
}


#娓告垙涓葷▼搴忓湪榪欏効寮濮?
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
        Usage
elif [[ "$1" == "--version" ]]; then
        echo "$APP_NAME $APP_VERSION"
elif [[ "$1" == "--show" ]]; then
        #褰撳彂鐜板叿鏈夊弬鏁?-show鏃訛紝榪愯鏄劇ず鍑芥暟
        RunAsDisplayer
else
        bash $0 --show&        #浠ュ弬鏁?-show灝嗘湰紼嬪簭鍐嶈繍琛屼竴閬?br>        RunAsKeyReceiver $!        #浠ヤ笂涓琛屼駭鐢熺殑榪涚▼鐨勮繘紼嬪彿浣滀負(fù)鍙傛暟
fi


from:
http://bbs.chinaunix.net/thread-184858-1-1.html


chatler 2010-03-26 11:51 鍙戣〃璇勮
]]>ANSI鎺у埗鐮?/title><link>http://www.shnenglu.com/beautykingdom/archive/2010/03/26/110577.html</link><dc:creator>chatler</dc:creator><author>chatler</author><pubDate>Fri, 26 Mar 2010 03:41:00 GMT</pubDate><guid>http://www.shnenglu.com/beautykingdom/archive/2010/03/26/110577.html</guid><wfw:comment>http://www.shnenglu.com/beautykingdom/comments/110577.html</wfw:comment><comments>http://www.shnenglu.com/beautykingdom/archive/2010/03/26/110577.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/beautykingdom/comments/commentRss/110577.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/beautykingdom/services/trackbacks/110577.html</trackback:ping><description><![CDATA[ANSI鎺у埗鐮佺殑璇存槑<br> 渚嬪:<br>   echo -ne "\33[32m" 鍙互灝嗗瓧絎︾殑鏄劇ず棰滆壊鏀逛負(fù)緇胯壊<br>   echo -ne "\33[3;1H" 鍙互灝嗗厜鏍囩Щ鍒扮3琛岀1鍒楀<br> 鍏蜂綋鐨勬憳鎶勪竴浜涘涓嬶細(xì)<br> \33[0m  鍏抽棴鎵鏈夊睘鎬?br> \33[1m  璁劇疆楂樹寒搴?br> \33[4m  涓嬪垝綰?br> \33[5m  闂儊<br> \33[7m  鍙嶆樉<br> \33[8m  娑堥殣<br> \33[30m -- \33[37m  璁劇疆鍓嶆櫙鑹?br> \33[40m -- \33[47m  璁劇疆鑳屾櫙鑹?br> \33[nA  鍏夋爣涓婄Щn琛?br> \33[nB  鍏夋爣涓嬬Щn琛?br> \33[nC  鍏夋爣鍙崇Щn琛?br> \33[nD  鍏夋爣宸︾Щn琛?br> \33[y;xH璁劇疆鍏夋爣浣嶇疆<br> \33[2J  娓呭睆<br> \33[K   娓呴櫎浠庡厜鏍囧埌琛屽熬鐨勫唴瀹?br> \33[s   淇濆瓨鍏夋爣浣嶇疆<br> \33[u   鎭㈠鍏夋爣浣嶇疆<br> \33[?25l  闅愯棌鍏夋爣<br> \33[?25h  鏄劇ず鍏夋爣<br><br>涓嶅悓鐨剆hell,杞箟鏄笉鍚岀殑,<br> /home/lee#echo "\\033[32mddd"<br> <font color="green">ddd<br> /home/lee#<br> /home/lee#bash<br> /home/lee#echo "\\033[33maddd"<br> \033[33maddd<br> /home/lee#exit<br> /home/lee#echo "\\033[34maddd"</font><br> <font color="blue">addd<br> /home/lee#echo $0<br> -ksh<br> /home/lee#<br><br>from:<br>http://bbs.chinaunix.net/thread-207837-1-1.html<br></font><img src ="http://www.shnenglu.com/beautykingdom/aggbug/110577.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/beautykingdom/" target="_blank">chatler</a> 2010-03-26 11:41 <a href="http://www.shnenglu.com/beautykingdom/archive/2010/03/26/110577.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>shell鍩虹浜岋細(xì)鏌ユ壘鎶宸?find鍙?qiáng)xargs鐨勪嬌鐢?/title><link>http://www.shnenglu.com/beautykingdom/archive/2010/03/17/109880.html</link><dc:creator>chatler</dc:creator><author>chatler</author><pubDate>Wed, 17 Mar 2010 03:14:00 GMT</pubDate><guid>http://www.shnenglu.com/beautykingdom/archive/2010/03/17/109880.html</guid><wfw:comment>http://www.shnenglu.com/beautykingdom/comments/109880.html</wfw:comment><comments>http://www.shnenglu.com/beautykingdom/archive/2010/03/17/109880.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/beautykingdom/comments/commentRss/109880.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/beautykingdom/services/trackbacks/109880.html</trackback:ping><description><![CDATA[     鎽樿: Normal 0 7.8 紓?0 2 false false false MicrosoftInternetExplorer4 st1\:*{behavior:url(#ieooui) } /* Style Definitions */ table.MsoNormalT...  <a href='http://www.shnenglu.com/beautykingdom/archive/2010/03/17/109880.html'>闃呰鍏ㄦ枃</a><img src ="http://www.shnenglu.com/beautykingdom/aggbug/109880.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/beautykingdom/" target="_blank">chatler</a> 2010-03-17 11:14 <a href="http://www.shnenglu.com/beautykingdom/archive/2010/03/17/109880.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>浜斿ぇ闈炲父瑙丩inux鍛戒護(hù)http://www.shnenglu.com/beautykingdom/archive/2010/03/06/109024.htmlchatlerchatlerSat, 06 Mar 2010 03:26:00 GMThttp://www.shnenglu.com/beautykingdom/archive/2010/03/06/109024.htmlhttp://www.shnenglu.com/beautykingdom/comments/109024.htmlhttp://www.shnenglu.com/beautykingdom/archive/2010/03/06/109024.html#Feedback0http://www.shnenglu.com/beautykingdom/comments/commentRss/109024.htmlhttp://www.shnenglu.com/beautykingdom/services/trackbacks/109024.htmlLinux鏈夊ぇ閲忕殑鍛戒護(hù)琛屽伐鍏鳳紝浠庢瘡澶╅兘浼?xì)鋴社敤鐨刲s銆乧d浠ュ強(qiáng)ps榪欎簺宸ュ叿錛屽埌鎮(zhèn)ㄥ彲鑳借繕娌℃湁浣跨敤榪囷紝鎴栬呯敋鑷蟲病鏈夊惉璇磋繃鐨勪笉甯歌鐨勫伐鍏楓?/p>

銆銆鎴戜滑灝嗙湅涓涓嬩簲涓笉甯歌錛屼絾鍙互璁╂?zhèn)ㄧ殑鋴社敤鏇磋嚼L澗鐨勫伐鍏楓傛垜浠細(xì)綆鍗曞湴鐪嬬湅姣忎竴涓懡浠ゅ強(qiáng)鍏舵爣蹇楀拰鍙傛暟錛屼絾璇蜂笉瑕佸繕浜嗗姣忎竴涓懡浠や嬌鐢╩an鍛戒護(hù)錛屽幓鑾峰彇鎵鏈夊彲鑳界殑鏍囧織鍜屽弬鏁頒俊鎭?/p>

銆銆logsave

銆銆鎴戜滑灝嗘煡鐪嬬殑絎竴涓伐鍏鋒槸logsave銆俵ogsave鍛戒護(hù)鍙互灝嗕竴涓懡浠ょ殑杈撳嚭淇濆瓨鍒頒竴涓棩蹇楁枃浠朵腑錛?/p>

銆銆$ logsave /var/log/partsize df –h

銆銆榪欓噷錛宭ogsave鍛戒護(hù)灝哾f鍛戒護(hù)鐨勮緭鍑轟繚瀛樺埌/var/log/partsize鏂囦歡涓紝鍚屾椂浼?xì)娣诲姞涓涓椂闂存埑騫跺皢鍛戒護(hù)鐨勬墽琛岀粨鏋滆緭鍑哄埌鏍囧噯杈撳嚭銆?/p>

鍚搗鏉ュ茍涓嶆槸閭d箞鐨勬湁瓚o紝鏄悧錛焞ogsave鐗規(guī)畩鐨勯瓟鍔涘湪浜庯紝濡傛灉鏂囦歡錛屽湪榪欎釜渚嬪瓙涓槸/var/log/partsize錛屽茍涓嶅瓨鍦紝閭d箞 logsave浼?xì)鍦ㄥ唴瀛樹腑灏嗘暟鎹畼q涜鎺掗槦錛岀瓑寰呰鏂囦歡鐨勪駭鐢熴傚浜庡湪鍚姩榪囩▼涓紝褰撴?zhèn)ㄥ湪瀵逛竴涓繕娌℃湁鎸傝澆涓婄殑鍒嗗尯榪涜鍐欐搷浣滄椂錛岀敤logsave鍘昏窡韙懡 浠ょ殑鎵ц杈撳嚭鏄潪甯告湁鐢ㄧ殑銆備負(fù)浜嗕繚瀛樺彲鑳戒細(xì)涓㈠け鐨勫懡浠よ杈撳嚭錛屾垜緇忓父鍦ㄨ嚜鍔ㄩ厤緗拰寮曞榪囩▼涓紝浣跨敤logsave銆?/p>

銆銆diff3

涓嬩竴涓伐鍏鋒槸diff3鍛戒護(hù)銆傛?zhèn)ㄥ彲鑳藉凡缁忎娇鐢q嘾iff鍛戒護(hù)鍘葷敓鎴愭枃浠朵箣闂寸殑宸紓銆傜浉瀵逛簬diff鐨勪袱涓枃浠訛紝diff3鍙互瀵逛笁涓枃浠舵墽琛屽悓鏍風(fēng)殑鍔? 鑳斤紝浣嗗寘鎷琩iff涓殑涓浜涙洿澶嶆潅鐨勯夐」銆傝鎴戜滑鐪嬩竴涓畝鍗曠殑渚嬪瓙銆傛垜浠湁涓変釜鏂囦歡錛歝at銆乨og浠ュ強(qiáng)mouse錛屽畠浠悇鑷寘鍚竴涓瓧絎︿覆銆傛垜浠彲浠ョ敤 diff3瀵規(guī)墍鏈夌殑涓変釜鏂囦歡榪涜姣旇緝錛?/p>

$ diff3 dog cat mouse
====
1:1c
  This is a dog
2:1c
  This is a cat
3:1c
  This is a mouse

銆銆diff3鍛戒護(hù)鏄劇ず浜嗕笁涓枃浠朵腑涓嶅悓鐨勫瓧絎︿覆銆傛?zhèn)ㄤ篃鍙互鐢?#8220;-”鏍囪浠h〃涓涓枃浠躲傝繖灝嗕細(xì)鎶婃爣鍑嗚緭鍏ュ拰鍏朵粬鏂囦歡榪涜姣旇緝銆?

銆銆鎮(zhèn)ㄤ篃鍙互浣跨敤-A鏍囪錛屽湪鎵鏈夌殑鏂囦歡閲岄潰錛屽幓鍚堝茍涓嶅悓錛屽茍瀵逛換浣曞啿紿佷箣澶勮繘琛岄珮浜樉紺恒?/p>

$ diff3 -A dog cat mouse
1a
||||||| cat
This is a cat
=======
This is a mouse
>>>>>>> mouse
.
0a
<<<<<<< dog
.

銆銆pstree

鎮(zhèn)ㄥ彲鑳藉凡緇忓湪鎮(zhèn)ㄧ殑涓繪満涓婏紝浣跨敤榪噋s鍘誨垪鍑烘墍鏈夌殑榪涚▼銆備絾鎮(zhèn)ㄥ彲鑳借繕娌℃湁鍚榪噋stree鈥斺斾竴涓敤浜庝互鏍?wèi)鐨勫舰寮忔槃·烘?zhèn)ㄧ殑榪涚▼鐨勫懡浠ゃ備竴涓繘紼嬫垨鑰呬粠 init榪涚▼錛屼粠涓涓?zhèn)ㄥ彲浠ユ寚瀹氱殑PID錛堣繘紼婭D錛夊垎鏀嚭鏉ワ紝鎴栬呬粠涓涓?zhèn)ㄥ彲浠ユ寚瀹氱殑鐢ㄦ埛鍒嗘敮鍑烘潵銆傛瘡涓涓繘紼嬪強(qiáng)鍏跺瓙榪涚▼濡備笅鎵紺猴細(xì)

pstree鍛戒護(hù)
 
銆銆pstree鍛戒護(hù)涔熷寘鎷竴浜涙?zhèn)ㄥ彲浠ヤ娇鐢ㄧ殑鍛戒护琛屾爣蹇椼傛瘮濡?a鏍囧織浼?xì)鏄窘C鴻繘紼嬫墍浣跨敤鐨勫懡浠よ錛岃?p鏍囧織浼?xì)鍦ㄦ爲(wèi)涓氛d姞榪涚▼鐨勮繘紼婭D銆?/p>

銆銆nl

銆銆nl鍛戒護(hù)寰堝皯鏈変漢鐭ラ亾錛屼絾鍗村彲浠ユ墽琛屼竴涓緢婕備寒鐨勫皬鍔熻兘鈥斺斿畠鍦ㄨ緭鍑轟腑娣誨姞琛屽彿銆傝鎴戜滑鐪嬩竴涓畝鍗曠殑渚嬪瓙錛屽涓涓彨鍋歞og鐨勬枃浠舵墽琛宯l鍛戒護(hù)銆?/p>

$ nl dog
1 This is a dog
2 This is not a dog

銆銆鎮(zhèn)ㄥ彲浠ョ湅鍒皀l鑾峰彇浜哾og鏂囦歡鐨勫唴瀹癸紝騫跺湪杈撳嚭涓坊鍔犱簡琛屽彿銆傜劧鍚庯紝鎮(zhèn)ㄥ彲浠ュ皢榪欎簺杈撳嚭閫氳繃綆¢亾鏀懼埌涓涓柊鏂囦歡涓?/p>

銆銆$ nl dog > dog_numbered

銆銆鐒跺悗錛屾垜浠氨鍙互鏄劇ず榪欎釜甯︽湁鏂扮殑琛屽彿鍐呭鐨勬枃浠訛細(xì)

$ cat dog_numbered
1 This is a dog
2 This is not a dog

銆銆split

銆銆鎴戜滑瑕佺湅鐨勬渶鍚庝竴涓懡浠ゆ槸split銆俿plit鍛戒護(hù)閫氬父鍩轟簬灝哄灝嗘枃浠跺垎鍓蹭負(fù)澶氫釜鐗囨銆傛垜浣跨敤榪欎釜鍛戒護(hù),鍘誨皢澶х殑鏃ュ織鏂囦歡鍒嗗壊涓烘洿濂界鐞嗙殑鏃ュ織鐗囨錛屼緥濡傦細(xì)

銆銆$ split --bytes=1m /tmp/largelogfile /tmp/smallerfile

銆銆split鍛戒護(hù)鏈夋牴鎹瓧鑺傛暟鍜岃鏁板鏂囦歡榪涜鍒嗗壊鐨勫弬鏁般傝繖閲?鎴戜滑閫氳繃鎸囧畾--bytes=1m鍙傛暟錛屽皢澶х殑鏃ュ織鏂囦歡鍒嗗壊涓?M瀛楄妭鐨勫潡錛堟?zhèn)ㄥ彲浠ユ寚瀹歜鍘諱唬琛ㄥ瓧鑺傦紝k浠h〃鍗冨瓧鑺傦紝g浠h〃鍗佷嚎瀛楄妭錛夈?/p>

銆銆鎴戜滑鍙互鍍忚繖鏍鋒牴鎹鏁板鏂囦歡榪涜鍒嗗壊錛?/p>

銆銆$ split --lines=1000 /tmp/largelogfile /tmp/smallerfile

銆銆榪欓噷錛屾枃浠朵細(xì)琚垎涓哄涓?000琛岀殑鍧椼?

鍦ㄦ垜浠殑渚嬪瓙涓紝浼?xì)灏嗘瘡涓潡閮藉瓨鍦?tmp鐩綍涓嬶紝鍏舵枃浠跺悕浼?xì)鍖呭惈涓涓墠緙smallerfile銆傜涓涓枃浠朵負(fù)smallerfileaa錛岀浜屼釜鏄? smallerfileab絳夌瓑銆傛?zhèn)ㄤ篃鍙互鋴社?d鏍囪錛屽幓浣跨敤鏁板瓧鑰屼笉鏄氳繃瀛楁瘝鐨勫闀挎潵瀵瑰潡榪涜璁℃暟銆傛渶鍚庯紝闄や簡鍙互鎸囧畾涓涓枃浠訛紝鎮(zhèn)ㄤ篃鍙互浣跨敤 “-”鍘昏split鍛戒護(hù)浠ユ爣鍑嗚緭鍏ヤ負(fù)杈撳叆錛屽茍鍒嗗壊涓虹嫭绔嬬殑鏂囦歡銆?/p>
from:
http://www.searchsv.com.cn/showcontent_31396.htm



chatler 2010-03-06 11:26 鍙戣〃璇勮
]]>
LINUX鍛戒護(hù)xargs鐨勭畝鍗曞簲鐢ㄥ強(qiáng)涓句緥http://www.shnenglu.com/beautykingdom/archive/2010/02/17/107949.htmlchatlerchatlerTue, 16 Feb 2010 20:11:00 GMThttp://www.shnenglu.com/beautykingdom/archive/2010/02/17/107949.htmlhttp://www.shnenglu.com/beautykingdom/comments/107949.htmlhttp://www.shnenglu.com/beautykingdom/archive/2010/02/17/107949.html#Feedback0http://www.shnenglu.com/beautykingdom/comments/commentRss/107949.htmlhttp://www.shnenglu.com/beautykingdom/services/trackbacks/107949.htmlxargs
澶у鏁?Linux 鍛戒護(hù)閮戒細(xì)浜х敓杈撳嚭錛氭枃浠跺垪琛ㄣ佸瓧絎︿覆鍒楄〃絳夈備絾濡傛灉瑕佷嬌鐢ㄥ叾浠栨煇涓懡浠ゅ茍灝嗗墠涓涓懡浠ょ殑杈撳嚭浣滀負(fù)鍙傛暟璇ユ庝箞鍔烇紵渚? 濡傦紝file 鍛戒護(hù)鏄劇ず鏂囦歡綾誨瀷錛堝彲鎵ц鏂囦歡銆乤scii 鏂囨湰絳夛級(jí)錛涙?zhèn)ㄥ彲浠ュ鐞嗚緭鍑哄Q屼嬌鍏朵粎鏄劇ず鏂囦歡鍚嶏紝鐜板湪鎮(zhèn)ㄥ笇鏈涘皢榪欎簺鍚嶇О浼犻掔粰 ls -l 鍛戒護(hù)浠ユ煡鐪嬫椂闂存埑璁般倄args 鍛戒護(hù)灝辨槸鐢ㄦ潵瀹屾垚姝ら」宸ヤ綔鐨勩傚畠鍏佽鎮(zhèn)ㄥ杈撳嚭鎵ц鍏朵粬鏌愪簺鍛戒護(hù)銆傝浣忎笅闈㈣繖涓潵鑷簬絎?1 閮ㄥ垎涓殑璇硶錛?

file -Lz * | grep ASCII | cut -d":" -f1 | xargs ls -ltr

璁╂垜浠潵鍓栨瀽榪欎釜鍛戒護(hù)瀛楃涓層傜涓涓紝file -Lz *錛岀敤浜庢煡鎵炬槸絎﹀彿閾炬帴鎴栬呯粡榪囧帇緙╃殑鏂囦歡銆傚畠?yōu)畣杈撳囖Z紶閫掔粰涓嬩竴涓懡浠?grep ASCII錛岃鍛戒護(hù)鍦ㄥ叾涓悳绱?"ASCII" 瀛楃涓插茍浜х敓濡備笅鎵紺虹殑杈撳嚭錛?
alert_DBA102.log:        ASCII English text
alert_DBA102.log.Z:      ASCII text (compress'd data 16 bits)
dba102_asmb_12307.trc.Z: ASCII English text (compress'd data 16 bits)
dba102_asmb_20653.trc.Z: ASCII English text (compress'd data 16 bits)

鐢變簬鎴戜滑鍙鏂囦歡鍚嶆劅鍏磋叮錛屽洜姝ゆ垜浠簲鐢ㄤ笅涓涓懡浠?cut -d":" -f1錛屼粎鏄劇ず絎竴涓瓧孌碉細(xì)
alert_DBA102.log
alert_DBA102.log.Z
dba102_asmb_12307.trc.Z
dba102_asmb_20653.trc.Z

鐜板湪錛屾垜浠笇鏈涗嬌鐢?ls -l 鍛戒護(hù)錛屽皢涓婅堪鍒楄〃浣滀負(fù)鍙傛暟榪涜浼犻掞紝涓嬈′紶閫掍竴涓倄args 鍛戒護(hù)鍏佽鎮(zhèn)ㄨ繖鏍峰仛銆傛渶鍚庝竴閮ㄥ垎錛寈args ls -ltr錛岀敤浜庢帴鏀惰緭鍑哄茍瀵瑰叾鎵ц ls -ltr 鍛戒護(hù)錛屽涓嬫墍紺猴細(xì)

ls -ltr alert_DBA102.log
ls -ltr alert_DBA102.log.Z
ls -ltr dba102_asmb_12307.trc.Z
ls -ltr dba102_asmb_20653.trc.Z

鍥犳錛寈args 鏈韓铏界劧娌℃湁澶氬ぇ鐢ㄥ錛屼絾鍦ㄤ笌鍏朵粬鍛戒護(hù)鐩哥粨鍚堟椂錛屽畠鐨勫姛鑳介潪甯稿己澶с?/font>

涓嬮潰鏄彟涓涓ず渚嬶紝鎴戜滑甯屾湜璁$畻榪欎簺鏂囦歡涓殑琛屾暟錛?/font>

$ file * | grep ASCII | cut -d":" -f1 | xargs wc -l
47853 alert_DBA102.log
     19 dba102_cjq0_14493.trc
29053 dba102_mmnl_14497.trc
    154 dba102_reco_14491.trc
     43 dba102_rvwr_14518.trc
77122 total

錛堟敞錛氫笂榪頒換鍔¤繕鍙敤浠ヤ笅鍛戒護(hù)瀹屾垚錛氾級(jí)

$ wc -l ‘file * | grep ASCII | cut -d":" -f1 | grep ASCII | cut -d":" -f1‘

璇?xargs 鐗堟湰鐢ㄤ簬闃愰噴姒傚康銆侺inux 鍙互鐢ㄥ嚑縐嶆柟娉曟潵瀹屾垚鍚屼竴涓換鍔★紱璇蜂嬌鐢ㄦ渶閫傚悎鎮(zhèn)ㄧ殑鎯呭喌鐨勬柟娉曘?/font>

浣跨敤璇ユ柟娉曪紝鎮(zhèn)ㄥ彲浠ュ揩閫熼噸鍛藉悕鐩綍涓殑鏂囦歡銆?/font>

$ ls | xargs -t -i mv {} {}.bak

-i 閫夐」鍛婅瘔 xargs 鐢ㄦ瘡欏圭殑鍚嶇О鏇挎崲 {}銆?t 閫夐」鎸囩ず xargs 鍏堟墦鍗板懡浠わ紝鐒跺悗鍐嶆墽琛屻?/font>

鍙︿竴涓潪甯告湁鐢ㄧ殑鎿嶄綔鏄綋鎮(zhèn)ㄤ嬌鐢?vi 鎵撳紑瑕佺紪杈戠殑鏂囦歡鏃訛細(xì)

$ file * | grep ASCII | cut -d":" -f1 | xargs vi

璇ュ懡浠や嬌鐢?vi 閫愪釜鎵撳紑鏂囦歡銆傚綋鎮(zhèn)ㄥ笇鏈涙悳绱㈠涓枃浠跺茍鎵撳紑瀹冧滑榪涜緙栬緫鏃訛紝浣跨敤璇ュ懡浠ら潪甯告柟渚褲?

瀹冭繕鏈夊嚑涓夐」銆傛渶鏈夌敤鐨勫彲鑳芥槸 -p 閫夐」錛屽畠浣挎搷浣滃叿鏈夊彲浜や簰鎬э細(xì)

$ file * | grep ASCII | cut -d":" -f1 | xargs -p vi
vi alert_DBA102.log dba102_cjq0_14493.trc dba102_mmnl_14497.trc   dba102_reco_14491.trc dba102_rvwr_14518.trc ?...

姝ゅ鐨?xarg 瑕佹眰鎮(zhèn)ㄥ湪榪愯姣忎釜鍛戒護(hù)涔嬪墠榪涜紜銆傚鏋滄?zhèn)ㄦ寜涓?"y"錛屽垯鎵ц鍛戒護(hù)銆傚綋鎮(zhèn)ㄥ鏂囦歡榪涜鏌愪簺鍙兘鏈夌牬鍧忎笖涓嶅彲鎭㈠鐨勬搷浣滐紙濡傚垹闄ゆ垨瑕嗙洊錛夋椂錛屾?zhèn)ㄤ細(xì)鍙戠幇璇ラ夐」闈炲父鏈夌敤銆?/font>

-t 閫夐」浣跨敤涓涓緇嗘ā寮忥紱瀹冩樉紺鴻榪愯鐨勫懡浠わ紝鏄皟璇曡繃紼嬩腑涓涓潪甯告湁甯姪鐨勯夐」銆?/font>

濡傛灉浼犻掔粰 xargs 鐨勮緭鍑轟負(fù)絀烘庝箞鍔烇紵鑰冭檻浠ヤ笅鍛戒護(hù)錛?/font>

$ file * | grep SSSSSS | cut -d":" -f1 | xargs -t wc -l
wc -l
            0
$

鍦ㄦ澶勶紝鎼滅儲(chǔ) "SSSSSS" 鍚庢病鏈夊尮閰嶇殑鍐呭錛涘洜姝?xargs 鐨勮緭鍏ュ潎涓虹┖錛屽絎簩琛屾墍紺猴紙鐢變簬鎴戜滑浣跨敤 -t 榪欎釜璇︾粏閫夐」鑰屼駭鐢熺殑緇撴灉錛夈傝櫧鐒惰繖鍙兘浼?xì)鏈夋墍甯姪錛屼絾鍦ㄦ煇浜涙儏鍐典笅錛屽鏋滄病鏈夎澶勭悊鐨勫唴瀹癸紝鎮(zhèn)ㄥ彲鑳藉笇鏈涘仠姝?xargs錛涘鏋滄槸榪欐牱錛屽彲浠ヤ嬌鐢?-r 閫夐」錛?
$ file * | grep SSSSSS | cut -d":" -f1 | xargs -t -r wc -l
$

濡傛灉娌℃湁瑕佽繍琛岀殑鍐呭錛岃鍛戒護(hù)閫鍑恒?/font>

鍋囪鎮(zhèn)ㄥ笇鏈涗嬌鐢?rm 鍛戒護(hù)錛堣鍛戒護(hù)灝嗕綔涓?xargs 鍛戒護(hù)鐨勫弬鏁幫級(jí)鍒犻櫎鏂囦歡銆傜劧鑰岋紝rm 鍙兘鎺ュ彈鏈夐檺鏁伴噺鐨勫弬鏁般傚鏋滄?zhèn)ㄧ殑鍙傛暟鍒楄〃瓒呭國櫙ラ檺鍒舵庝箞鍔烇紵xargs 鐨?-n 閫夐」闄愬埗鍗曚釜鍛戒護(hù)琛岀殑鍙傛暟涓暟銆?

涓嬮潰鏄劇ず浜嗗浣曢檺鍒舵瘡涓懡浠よ浠呬嬌鐢ㄤ袱涓弬鏁幫細(xì)鍗充嬌鍚?xargs ls -ltr 浼犻掍簲涓枃浠訛紝浣嗘瘡嬈″悜 ls -ltr 浠呬紶閫掍袱涓枃浠躲?/font>

$ file * | grep ASCII | cut -d":" -f1 | xargs -t -n2 ls -ltr
ls -ltr alert_DBA102.log dba102_cjq0_14493.trc
-rw-r-----    1 oracle   dba           738 Aug 10 19:18 dba102_cjq0_14493.trc
-rw-r--r--    1 oracle   dba       2410225 Aug 13 05:31 alert_DBA102.log
ls -ltr dba102_mmnl_14497.trc dba102_reco_14491.trc
-rw-r-----    1 oracle   dba       5386163 Aug 10 17:55 dba102_mmnl_14497.trc
-rw-r-----    1 oracle   dba          6808 Aug 13 05:21 dba102_reco_14491.trc
ls -ltr dba102_rvwr_14518.trc
-rw-r-----    1 oracle   dba          2087 Aug 10 04:30 dba102_rvwr_14518.trc

浣跨敤璇ユ柟娉曪紝鎮(zhèn)ㄥ彲浠ュ揩閫熼噸鍛藉悕鐩綍涓殑鏂囦歡銆?

$ ls | xargs -t -i mv {} {}.bak

-i 閫夐」鍛婅瘔 xargs 鐢ㄦ瘡欏圭殑鍚嶇О鏇挎崲 {}銆?


鎴? 闇瑕佸皢涓涓敤.svn綆$悊鐨勯」鐩敼鎴愮敱CVS鏉ョ鐞嗭紝鍥犳錛屽湪瀵煎叆鏁翠釜欏圭洰鍒癈VS涓箣鍓嶏紝鎴戦渶瑕佸垹闄ゆ墍鏈夌洰褰曚笅浠ュ強(qiáng)瀛愬瓩鐩綍涓嬬殑.svn鐩綍鍙?svn 鐩綍涓嬬殑鐨勫瓙鐩綍鍜屾枃浠躲傛垜涓鐩村鎵句竴縐嶆渶綆鍗曠殑鏂規(guī)硶錛屾渶鍚庡啓浜嗕竴涓▼搴忓幓騫茶繖浜嬫儏銆傜粨鏋滃悓浜嬪憡璇夋垜鍙渶瑕佷竴鏉℃寚浠ゅ氨鍙互浜嗭細(xì)
find -name '.svn' |xargs rm -rf
榪欎釜鏁欒闈炲父鎯ㄩ噸錛屾垜涓鐢熻鍘屽偦鐡滐紝鍙偅涓鍒誨彂鐜拌嚜宸辨槸鏈澶х殑鍌?cè)潛滃Q?br>
鏄殑錛岃櫧鐒舵垜浠斺旇嚦灝戞槸鎴戯紝澶╁ぉ浣跨敤LINUX浣嗘槸鐪熺殑鏄湪楂樻晥鐨勪嬌鐢ㄨ繖涓郴緇熷悧錛熶笉錛屽緢澶氭椂鍊欏茍娌℃湁鑺辨椂闂村幓鐮旂┒瀹冿紝浣跨敤涓浜涘浐鏈夋剼锠㈢殑鏂瑰紡鍜屾濈淮妯″紡鍦ㄤ嬌鐢ㄨ繖涓郴緇熴?br>

1. 寤虹珛澶氱駭鐩綍:

mkidr 鎸囦護(hù)鐢ㄦ潵寤虹珛鐩綍錛屼簨瀹炰笂錛屾垜浠竴鐩撮兘鏄繖涔堝共鐨勩備絾鏄湪榪欎箞浣跨敤鐨勬椂鍊欐垜浠茍娌℃湁鍘葷湅瀹冪殑閭d簺鍙傛暟鎻愪緵浜嗗摢浜涢澶栫殑鍔熻兘.

mkidr -p /share/dragon   ; 鍦ㄦ牴鐩綍涓嬪緩绔媠hare鐩綍錛屽茍鍦?share鐩綍涓嬪緩绔媎ragon鐩綍銆?/font>mkdir -p guicmd/{bin,lib,src,share/version,doc/{html,pdf,info,man}}
;鐢ㄦ潵寤虹珛涓涓鏉傜殑欏圭洰鐩綍鏍?wèi)銆?br>
2.find 閰嶅悎xargs浣跨敤錛?br>
find -name '.svn' |xargs rm -rf ;榪欎釜涓嶇敤璇翠簡錛屽氨鏄垜鍓嶉潰鎻愬埌鐨勩?br>xargs鏇村姞璞′竴涓瓫閫夊櫒錛屽皢絎﹀悎綆¢亾浼犻掕繃鏉ョ殑鏂囦歡鍚嶇殑鍐呭涓騫跺鐞嗘帀錛岃繖鏄竴涓瀬搴﹂珮鏁堢殑鏂規(guī)硶銆?/font>


from: http://www.shnenglu.com/prayer/archive/2009/11/17/90188.html#101210



chatler 2010-02-17 04:11 鍙戣〃璇勮
]]>
濡備綍鍑嗙‘鐨勬埅鍙栧嚭IP孌?/title><link>http://www.shnenglu.com/beautykingdom/archive/2010/02/16/107925.html</link><dc:creator>chatler</dc:creator><author>chatler</author><pubDate>Tue, 16 Feb 2010 10:19:00 GMT</pubDate><guid>http://www.shnenglu.com/beautykingdom/archive/2010/02/16/107925.html</guid><wfw:comment>http://www.shnenglu.com/beautykingdom/comments/107925.html</wfw:comment><comments>http://www.shnenglu.com/beautykingdom/archive/2010/02/16/107925.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/beautykingdom/comments/commentRss/107925.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/beautykingdom/services/trackbacks/107925.html</trackback:ping><description><![CDATA[姣斿鐢ㄥ埌涓嬮潰鐨勫懡浠ゅ緱鍑轟簡涓鍫嗕俊鎭紝濡備綍鑾峰彇鍒版湰鍦板拰榪滅鐨刬p鍛?div><div> netstat -an | grep tcp</div><div>tcp        0      0 0.0.0.0:5989            0.0.0.0:*               LISTEN</div><div>tcp        0      0 127.0.0.1:427           0.0.0.0:*               LISTEN</div><div>tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN</div><div>tcp        0      0 127.0.0.1:2544          0.0.0.0:*               LISTEN</div><div>tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN</div><div>tcp        0      0 :::22                   :::*                    LISTEN</div><div>tcp        0      0 ::1:25                  :::*                    LISTEN</div><div>tcp        0     52 192.168.2.4:22          192.168.2.2:3107        ESTABLISHED</div><div>tcp        0      0 192.168.2.4:22          192.168.2.100:2184      ESTABLISHED</div><div>鍙互鑰冭檻鐢╝wk鍜宑ut鐨勭粨鍚?/div><div><div>netstat -an | grep tcp | awk '{print $5}' | cut -d: -f1</div><div>寰楀嚭榪滅ip鐨勪俊鎭?/div><div><div>0.0.0.0</div><div>0.0.0.0</div><div>0.0.0.0</div><div>0.0.0.0</div><div>0.0.0.0</div><div><br></div><div><br></div><div>192.168.2.2</div><div>192.168.2.100</div><div>鑻ユ槸鏈湴鐨刬p淇℃伅涔熷彲浠ョ敤綾諱技鐨勬柟娉曠偖鍒訛紝鍙槸awk閲岀殑$n鏈夌偣鍙樺寲緗簡銆?/div></div></div></div><img src ="http://www.shnenglu.com/beautykingdom/aggbug/107925.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/beautykingdom/" target="_blank">chatler</a> 2010-02-16 18:19 <a href="http://www.shnenglu.com/beautykingdom/archive/2010/02/16/107925.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>shell涓閬撲袱杈圭殑榪涚▼鏄庝箞閫氫俊鐨?/title><link>http://www.shnenglu.com/beautykingdom/archive/2010/02/13/107824.html</link><dc:creator>chatler</dc:creator><author>chatler</author><pubDate>Sat, 13 Feb 2010 15:42:00 GMT</pubDate><guid>http://www.shnenglu.com/beautykingdom/archive/2010/02/13/107824.html</guid><wfw:comment>http://www.shnenglu.com/beautykingdom/comments/107824.html</wfw:comment><comments>http://www.shnenglu.com/beautykingdom/archive/2010/02/13/107824.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/beautykingdom/comments/commentRss/107824.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/beautykingdom/services/trackbacks/107824.html</trackback:ping><description><![CDATA[ <span style="font-family: verdana, arial, sans-serif; font-size: 13px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; ">     瑕佹墽琛屼竴涓畝鍗曞懡浠?shell 棣栧厛澶嶅埗鑷韓錛岀劧鍚?shell 絳夊緟瀹為檯涓婃墽琛屽懡浠ょ殑 subshell 錛堝瓙shell錛夊畬鎴愶紝鍦?subshell 涓仛閲嶅畾鍚戝拰鎵ц exec 緋葷粺璋冪敤錛岀敤鎸囧畾紼嬪簭鐨勪唬鐮佹鍜屾暟鎹鏇夸唬 shell 浠g爜孌靛拰鏁版嵁孌碉紝榪涚▼ id 絳夊厓淇℃伅涓嶅彉銆?nbsp;<br>     綆¢亾綰?a | b 鎵ц錛歴hell 鍒涘緩涓涓閬擄紝澶嶅埗涓涓?subshell, 鍦ㄥ叾涓妸杈撳嚭鏍囧噯閲嶅畾鍚戝埌綆¢亾鍐欑鐒跺悗 exec a錛宻hell 涓嶇瓑寰呰繖涓?subshell 鎵ц瀹屾垚; shell 鎺ョ潃澶嶅埗涓涓?subshell錛屽湪鍏朵腑鎶婃爣鍑嗚緭鍏ラ噸瀹氬悜鍒扮閬撹绔劧鍚?exec b, shell 絳夊緟瀹冭繖涓?subshell 瀹屾垚銆?nbsp;<br>     鍦?(...) 鏂瑰紡鎵ц鍛戒護(hù)鏃跺欐秹鍙?qiáng)鍒皹q涗竴姝ョ殑榪涚▼澶嶅埗錛宻hell 鍦ㄥ鍒?subshell 涔嬪悗涓嶇瓑寰呭叾瀹屾垚錛泂ubshell 鍦ㄦ墽琛岄櫎浜嗘渶鍚庝竴涓懡浠や箣澶栨墍鏈夊懡浠ょ殑鏃跺欓兘澶嶅埗涓涓?subsubshell錛屽湪鍏朵腑鍋氶噸瀹氬悜鍜?exec, subshell 鍦ㄨ嚜韜腑閲嶅畾鍚戝拰 exec 鏈鍚庝竴涓懡浠?                  濡傛灉綆¢亾鐢?subshell( exec a) 鍒涘緩錛岄偅涔坰ubshell(exec b)灝辨棤娉曢氳繃緇ф壙寰楀埌璇ョ閬撴弿榪扮錛屼粠鑰岃繘琛岄噸瀹氬悜錛岄偅涔堝彧鑳戒嬌鐢ㄤ嬌鐢╪amed pipe浜嗭紵 </span> <div><span style="font-family: verdana, arial, sans-serif; font-size: 13px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; ">from錛歭inuxforum</span></div><img src ="http://www.shnenglu.com/beautykingdom/aggbug/107824.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/beautykingdom/" target="_blank">chatler</a> 2010-02-13 23:42 <a href="http://www.shnenglu.com/beautykingdom/archive/2010/02/13/107824.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>GNU Linux鏍稿績鍛戒護(hù)鍜屽伐鍏風(fēng)殑婧愪唬鐮佽礬寰?/title><link>http://www.shnenglu.com/beautykingdom/archive/2010/01/01/104607.html</link><dc:creator>chatler</dc:creator><author>chatler</author><pubDate>Fri, 01 Jan 2010 08:09:00 GMT</pubDate><guid>http://www.shnenglu.com/beautykingdom/archive/2010/01/01/104607.html</guid><wfw:comment>http://www.shnenglu.com/beautykingdom/comments/104607.html</wfw:comment><comments>http://www.shnenglu.com/beautykingdom/archive/2010/01/01/104607.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/beautykingdom/comments/commentRss/104607.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/beautykingdom/services/trackbacks/104607.html</trackback:ping><description><![CDATA[<p>Commands and Utilities</p> <p>--------------------------------------------------------------------------------</p> <p>The table below lists all of the commands and utilities set forth in chapter 17 of the Linux Standard Base specification. Also listed are the source code packages used by Architect to provide the commands as well as the primary download location for the source code. </p> <p>command   source package  primary download site<br>--------------------------------------------------------------------------------<br>[   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>ar   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>at   at   <a >http://www.happy-monkey.net/architect/src</a><br>awk   gawk   <a href="ftp://ftp.gnu.org/gnu/gawk">ftp.gnu.org/gnu/gawk</a><br>basename  coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>batch   at   <a >http://www.happy-monkey.net/architect/src</a><br>bc   bc   <a href="ftp://ftp.gnu.org/gnu/bc">ftp.gnu.org/gnu/bc</a><br>cat   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>chfn   shadow   <a href="ftp://ftp.pld-linux.org/software/shadow">ftp.pld-linux.org/software/shadow</a><br>chgrp   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>chmod   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>chown   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>chsh   shadow   <a href="ftp://ftp.pld-linux.org/software/shadow">ftp.pld-linux.org/software/shadow</a><br>cksum   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>cmp   diffutils  <a href="ftp://ftp.gnu.org/gnu/diffutils">ftp.gnu.org/gnu/diffutils</a><br>col   util-linux  <a href="ftp://ftp.win.tue.nl/pub/linux-local/utils/util-linux">ftp.win.tue.nl/pub/linux-local/utils/util-linux</a><br>comm   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>cp   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>cpio   cpio   <a href="ftp://ftp.gnu.org/gnu/cpio">ftp.gnu.org/gnu/cpio</a><br>crontab   dcron   <a href="ftp://ftp.ibiblio.org/pub/linux/system/daemons/cron">ftp.ibiblio.org/pub/linux/system/daemons/cron</a><br>csplit   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>cut   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>date   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>dd   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>df   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>diff   diffutils  <a href="ftp://ftp.gnu.org/gnu/diffutils">ftp.gnu.org/gnu/diffutils</a><br>dirname   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>dmesg   util-linux  <a href="ftp://ftp.win.tue.nl/pub/linux-local/utils/util-linux">ftp.win.tue.nl/pub/linux-local/utils/util-linux</a><br>du   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>echo   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>egrep   grep   <a href="ftp://ftp.gnu.org/gnu/grep">ftp.gnu.org/gnu/grep</a><br>env   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>expand   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>expr   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>false   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>fgrep   grep   <a href="ftp://ftp.gnu.org/gnu/grep">ftp.gnu.org/gnu/grep</a><br>file   file   <a href="ftp://ftp.astron.com/pub/file">ftp.astron.com/pub/file</a><br>fold   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>fuser   psmisc   <a >http://sourceforge.net/projects/psmisc</a><br>gencat   man   <a href="ftp://ftp.win.tue.nl/pub/linux-local/utils/man">ftp.win.tue.nl/pub/linux-local/utils/man</a><br>getconf   glibc   <a href="ftp://ftp.gnu.org/gnu/glibc">ftp.gnu.org/gnu/glibc</a><br>gettext   gettext   <a href="ftp://ftp.gnu.org/gnu/gettext">ftp.gnu.org/gnu/gettext</a><br>grep   grep   <a href="ftp://ftp.gnu.org/gnu/grep">ftp.gnu.org/gnu/grep</a><br>groupadd  shadow   <a href="ftp://ftp.pld-linux.org/software/shadow">ftp.pld-linux.org/software/shadow</a><br>groupdel  shadow   <a href="ftp://ftp.pld-linux.org/software/shadow">ftp.pld-linux.org/software/shadow</a><br>groupmod  shadow   <a href="ftp://ftp.pld-linux.org/software/shadow">ftp.pld-linux.org/software/shadow</a><br>groups   shadow   <a href="ftp://ftp.pld-linux.org/software/shadow">ftp.pld-linux.org/software/shadow</a><br>gunzip   gzip   <a href="ftp://ftp.gnu.org/gnu/gzip">ftp.gnu.org/gnu/gzip</a><br>gzip   gzip   <a href="ftp://ftp.gnu.org/gnu/gzip">ftp.gnu.org/gnu/gzip</a><br>head   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>hostname  coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>iconv   glibc   <a href="ftp://ftp.gnu.org/gnu/glibc">ftp.gnu.org/gnu/glibc</a><br>id   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>install   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>install_initd  [not implemented]       [N/A]<br>ipcrm   util-linux  <a href="ftp://ftp.win.tue.nl/pub/linux-local/utils/util-linux">ftp.win.tue.nl/pub/linux-local/utils/util-linux</a><br>join   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>kill   procps   <a >http://procps.sourceforge.net</a><br>killall   psmisc   <a >http://sourceforge.net/projects/psmisc</a><br>ln   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>locale   glibc   <a href="ftp://ftp.gnu.org/gnu/glibc">ftp.gnu.org/gnu/glibc</a><br>localedef  glibc   <a href="ftp://ftp.gnu.org/gnu/glibc">ftp.gnu.org/gnu/glibc</a><br>logname   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>lpr   LPRng   <a href="ftp://ftp.lprng.com/pub/LPRng/LPRng">ftp.lprng.com/pub/LPRng/LPRng</a><br>ls   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>lsb_release  [not implemented] [N/A]<br>m4   m4   <a href="ftp://ftp.gnu.org/gnu/m4">ftp.gnu.org/gnu/m4</a><br>make   make   <a href="ftp://ftp.gnu.org/gnu/make">ftp.gnu.org/gnu/make</a><br>man   man   <a href="ftp://ftp.win.tue.nl/pub/linux-local/utils/man">ftp.win.tue.nl/pub/linux-local/utils/man</a><br>md5sum   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>mkdir   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>mkfifo   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>mknod   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>mktemp   mktemp   <a href="ftp://ftp.mktemp.org/pub/mktemp">ftp.mktemp.org/pub/mktemp</a><br>more   less   <a href="ftp://ftp.gnu.org/gnu/less">ftp.gnu.org/gnu/less</a><br>mount   util-linux  <a href="ftp://ftp.win.tue.nl/pub/linux-local/utils/util-linux">ftp.win.tue.nl/pub/linux-local/utils/util-linux</a><br>msgfmt   getttext  <a href="ftp://ftp.gnu.org/gnu/gettext">ftp.gnu.org/gnu/gettext</a><br>mv   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>newgrp   shadow   <a href="ftp://ftp.pld-linux.org/software/shadow">ftp.pld-linux.org/software/shadow</a><br>nice   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>nl   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>nohup   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>od   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>passwd   shadow   <a href="ftp://ftp.pld-linux.org/software/shadow">ftp.pld-linux.org/software/shadow</a><br>paste   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>patch   patch   <a href="ftp://ftp.gnu.org/gnu/patch">ftp.gnu.org/gnu/patch</a><br>pathck   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>pidof   procps   <a >http://procps.sourceforge.net</a><br>pr   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>printf   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>ps   procps   <a >http://procps.sourceforge.net</a><br>pwd   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>remove_initd  [not implemented] [N/A]<br>renice   util-linux  <a href="ftp://ftp.win.tue.nl/pub/linux-local/utils/util-linux">ftp.win.tue.nl/pub/linux-local/utils/util-linux</a><br>rm   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>rmdir   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>rsync   rsync   <a href="ftp://ftp.samba.org/pub/rsync">ftp.samba.org/pub/rsync</a><br>sed   sed   <a href="ftp://ftp.gnu.org/gnu/sed">ftp.gnu.org/gnu/sed</a><br>sendmail  postfix   <a href="ftp://ftp.porcupine.org/mirrors/postfix-release/official">ftp.porcupine.org/mirrors/postfix-release/official</a><br>sh   bash   <a href="ftp://ftp.gnu.org/gnu/bash">ftp.gnu.org/gnu/bash</a><br>shutdown  sysvinit  <a href="ftp://ftp.cistron.nl/pub/people/miquels/sysvinit">ftp.cistron.nl/pub/people/miquels/sysvinit</a><br>sleep   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>sort   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>split   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>strip   binutils  <a href="ftp://ftp.gnu.org/gnu/binutils">ftp.gnu.org/gnu/binutils</a><br>stty   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>su   shadow   <a href="ftp://ftp.pld-linux.org/software/shadow">ftp.pld-linux.org/software/shadow</a><br>sum   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>sync   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>tail   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>tar   tar   <a href="ftp://ftp.gnu.org/gnu/tar">ftp.gnu.org/gnu/tar</a><br>tee   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>test   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>time   time   <a href="ftp://ftp.gnu.org/gnu/time">ftp.gnu.org/gnu/time</a><br>touch   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>tr   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>true   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>tsort   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>tty   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>umount   util-linux  <a href="ftp://ftp.win.tue.nl/pub/linux-local/utils/util-linux">ftp.win.tue.nl/pub/linux-local/utils/util-linux</a><br>uname   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>unexpand  coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>uniq   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>useradd   shadow   <a href="ftp://ftp.pld-linux.org/software/shadow">ftp.pld-linux.org/software/shadow</a><br>userdel   shadow   <a href="ftp://ftp.pld-linux.org/software/shadow">ftp.pld-linux.org/software/shadow</a><br>usermod   shadow   <a href="ftp://ftp.pld-linux.org/software/shadow">ftp.pld-linux.org/software/shadow</a><br>wc   coreutils  <a href="ftp://ftp.gnu.org/gnu/coreutils">ftp.gnu.org/gnu/coreutils</a><br>xargs   findutils  <a href="ftp://ftp.gnu.org/gnu/findutils">ftp.gnu.org/gnu/findutils</a><br>from:<br><a >http://blog.chinaunix.net/u2/76292/showart.php?id=2135340</a></p> <img src ="http://www.shnenglu.com/beautykingdom/aggbug/104607.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/beautykingdom/" target="_blank">chatler</a> 2010-01-01 16:09 <a href="http://www.shnenglu.com/beautykingdom/archive/2010/01/01/104607.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>ftp涓嬭澆鏂囦歡瀹屾暣鎬ф牎楠?shell鑴氭湰http://www.shnenglu.com/beautykingdom/archive/2009/11/23/101740.htmlchatlerchatlerMon, 23 Nov 2009 13:23:00 GMThttp://www.shnenglu.com/beautykingdom/archive/2009/11/23/101740.htmlhttp://www.shnenglu.com/beautykingdom/comments/101740.htmlhttp://www.shnenglu.com/beautykingdom/archive/2009/11/23/101740.html#Feedback0http://www.shnenglu.com/beautykingdom/comments/commentRss/101740.htmlhttp://www.shnenglu.com/beautykingdom/services/trackbacks/101740.html#!/bin/sh                       
#date=20080916                  
#echo $date                     
ftp -i -n 192.168.1.161 <<EOF  
user name password             
cd bj                           
ls *20080916* 20080916          
bye                             
EOF                             
aaaa=`ls *20080916* |wc -l`     
echo $aaaa                      
bbbb=`cat  20080916|wc -l`      
echo $bbbb                      
if [ $aaaa -eq $bbbb ]          
then                            
echo "ftp transfered completely "
else                            
echo "ftp transfered error"     
 fi    

 
 
#!/bin/sh                                                              
ftp -i -n 192.168.1.152 <<EOF                                         
user name password                                                     
ls -lt file1                                                           
bye                                                                    
EOF                                                                    
ls -lt >file2                                                          
awk '{print $5}'file2 | while read tty                                 
do\                                                                    
awk 'BEGIN {...}END{name="'tty'";\                                     
if($5==$name)\                                                         
printf("%s",zhengque);\                                                
else\                                                                  
printf("%s transfer error\n",$9);\                                     
printf("the size of source file is %d,the size of this file after ftp\ 
transferred is %d",$name,$5);\                                         
}\                                                                     
' file1\                                                               
done\
杞嚜錛?br>http://blog.chinaunix.net/u/28584/showart.php?id=1211619

chatler 2009-11-23 21:23 鍙戣〃璇勮
]]>
SED鐢ㄦ硶灝忕粨http://www.shnenglu.com/beautykingdom/archive/2009/11/23/101738.htmlchatlerchatlerMon, 23 Nov 2009 13:21:00 GMThttp://www.shnenglu.com/beautykingdom/archive/2009/11/23/101738.htmlhttp://www.shnenglu.com/beautykingdom/comments/101738.htmlhttp://www.shnenglu.com/beautykingdom/archive/2009/11/23/101738.html#Feedback0http://www.shnenglu.com/beautykingdom/comments/commentRss/101738.htmlhttp://www.shnenglu.com/beautykingdom/services/trackbacks/101738.html

quote.txt

The honeysuckle hand played all night long for only $90.

It was an evening of splendid music and company.

Too bad the disco floor fell through at 23:10.

The local nurse Miss P.Neave was in attendance.

鏄劇ず琛?/p>

$sed -n '2p' quote.txt

鑼冨洿

$sed -n '1,3p' quote.txt

鍖歸厤鍗曡瘝

$sed -n '/The/'p quote.txt

鍖歸厤鏌愯鍗曡瘝

$sed -n '4,/The/'p quote.txt

鍖歸厤鍏冨瓧絎?/p>

$sed -n '/\$/'p quote.txt

鏄劇ず鏁翠釜鏂囦歡

$sed -n '1,$p' quote.txt    sed -n '1,$'p quote.txt

浠繪剰瀛楃

$sed -n '/.*ing/'p quote.txt  浠繪剰瀛楃鍑虹幇涓嬈℃垨N嬈?浠ng緇撳熬

棣栨湯琛?/p>

$sed -n '1p' quote.txt

$sed -n '$p' quote.txt

鎵撳嵃琛屽彿

$sed -n '/music/=' quote.txt

2

$sed -n -e '/music/p' -e '/music/=' quote.txt

It was an evening of splendid music and company.

2

闄勫姞鏂囦歡

!/bin/sed -f

/鏂囦歡涓尮閰嶇殑瀛楃/ a\

鎻掑叆鐨勫瓧絎?+x; *.sed quote.txt

鍒犻櫎琛?/p>

$sed '1d' quote.txt 鍒犻櫎絎竴琛?/p>

$sed '1,3d' quote.txt 鍒犻櫎1鍒?琛?/p>

$sed '$d' quote.txt 鍒犻櫎鏈鍚庝竴琛?/p>

$sed '/Neave/d' quote.txt 鍒犻櫎甯eave鐨勮

鏇挎崲鏂囨湰

$sed 's/night/NIGHT/' quote.txt  s鏇挎崲/night/NIGHT/

$sed 's/\$//' quote.txt  $鎹㈡垚絀烘牸

$sed 's/The/Wow!/g' quote.txt    g鏇挎崲鎵鏈?/p>

$sed 's/splendid/SPLENDID/w sed.out' quote.txt  w sed.out姝よ鍐欏叆鏂囦歡

$sed -n 's/nurse/"Hello" &/p' quote.txt  

The local "Hello" nurse Miss P.Neave was in attendance.

$sed -n 's/played/from Hockering &/p' quote.txt

灝唖ed緇撴灉鍐欏叆鏂囦歡鍛戒護(hù)

$sed '1,2 w filedt' quote.txt 絎竴浜岃鍐欏叆鏂囦歡

$sed '/Neave/ w dht' quote.txt 鍖歸厤//鐨勫啓鍏ユ枃浠?/p>

浠庢枃浠朵腑璇繪枃鏈?/p>

$sed '/company./r sedex.txt' quote.txt

鍦╭uote.txt鐨刢ompany鍚庢崲琛?鍐欏叆sedex.txt鐨勫唴瀹?/p>

鍖歸厤鍚庨鍑?/p>

$sed '/.a.*/q' quote.txt

浠繪剰瀛楃鍚庤窡a,鍐嶈窡浠繪剰瀛楃0嬈℃垨浠繪剰嬈″尮閰?

Line 1.band  Line 2.bad  Liner3.was  Line 4.was

The honeysuckle hand played all night long for only $90.

vi dos.txt

12332##DISO##45.12^M

00332##LPSO##23.11^M

01299##USPD##34.46^M

鐢ㄤ竴涓┖鏍兼浛鎹㈡墍鏈夌殑##,鍒犻櫎鏈鍓嶈竟鐨?,鍒犻櫎灝鵑儴^M

$sed 's/##*/ /g' dos.txt

$sed 's/^0*/ /g' dos.txt

$sed 's/\^M//g' dos.txt

$cat dos.txt |sed 's/##*/ /g'|sed 's/^0*/ /'|sed 's/\^M//g'

澶勭悊鎶ユ枃杈撳嚭

Database      Size(MB)   Date Created

-------------------------------------

GOSOUTH       2244       12/11/97

TRISUD        5632       8/9/99

(2 rows affected)

1>浣跨敤s/-*//g鍒犻櫎 -----------

2>浣跨敤/^$/d鍒犻櫎絀鴻

3>浣跨敤$d鍒犻櫎鏈鍚庝竴琛?/p>

4>浣跨敤1d鍒犻櫎絎竴琛?/p>

5>浣跨敤awk {print $1}鎵撳嵃絎竴鍒?/p>

cat sql.txt | sed 's/--*//g' | sed '/^$/d' | sed '$d' | sed '1d' | awk '{print $1}'

鍘婚櫎琛岄鏁板瓧

$vi UNH.txt

12345UND SPLLFC 234344

9999999UND SKKLT 3423

1UND SPLLY 434

$sed 's/^[0-9]*//g' UND.txt

闄勫姞鏂囨湰姣忎竴琛屾湯灝懼姞涓婂瓧絎︿覆'passwd'

vi ok.txt

AC456

AC492169

AC9967

AC88345

$sed 's/[0-9]*/& Passwd/g' ok.txt

浠巗ed杈撳嚭涓緗畇hell鍙橀噺

$NAME="It's a go situation"

$REPLACE="GO"

$NEW_NAME='echo $NAME | sed "s/go/$REPLACE/g"'

$echo $NEW_NAME

蹇熶竴琛屽懡浠?/p>

's/\.$//g'       鍒犻櫎浠?緇撳熬鐨勮

'-e /abcd/d'     鍒犻櫎鍖呭惈abcd鐨勮

's/[][][]*/[]/g' 鍒犻櫎涓涓互涓婄殑絀烘牸,鐢ㄤ竴涓┖鏍間唬鏇?/p>

's/^[][]*//g'    鍒犻櫎琛岄絀烘牸

's/\.[][]*/[]//g 鍒犻櫎.鍚庤窡2鎴栧涓┖鏍?浠ヤ竴涓┖鏍間唬鏇?/p>

's/COL\(...\)//g'鍒犻櫎COL鍜屽畠鍚庤竟鐨?涓瓧姣嶇殑琛?/p>

's/^\//g'        鍒犻櫎絎竴涓猏

's/[]/[]//g'     鍒犻櫎鎵鏈夌┖鏍煎茍鐢╰ab鏇夸唬

's/^[]//g'       鍒犻櫎琛岄tab閿?/p>

's/[]*//g'       鍒犻櫎鎵鏈塼ab閿?/p>

鎻掑叆鏂囨湰

$echo "Mr Willis"|sed 's/Mr/& Bruce/g'

鍒犻櫎棣栧瓧絎?/p>

$echo "attkla.dc"|sed 's/^./g'

鍒犻櫎鏂囦歡鎵╁睍鍚?/p>

$echo "attkla.dc"|sed 's/.dc//g'

澧炲姞鎵╁睍鍚?/p>

$echo "attkla"|sed 's/$/.dc/g'

鏇挎崲瀛楃緋誨垪

$x="Department+payroll%Building G"

+ 鎹㈡垚of %鎹㈡垚located

$echo $x | sed 's/\+/ of /g' | sed 's/\%/ Located at /g '

      鐩存帴鏇挎崲
      sed -i  's/from/to/' filename

杞嚜錛?br />http://blog.chinaunix.net/u/28584/showart.php?id=1712332

chatler 2009-11-23 21:21 鍙戣〃璇勮
]]>
AWK浣跨敤http://www.shnenglu.com/beautykingdom/archive/2009/11/23/101737.htmlchatlerchatlerMon, 23 Nov 2009 13:20:00 GMThttp://www.shnenglu.com/beautykingdom/archive/2009/11/23/101737.htmlhttp://www.shnenglu.com/beautykingdom/comments/101737.htmlhttp://www.shnenglu.com/beautykingdom/archive/2009/11/23/101737.html#Feedback0http://www.shnenglu.com/beautykingdom/comments/commentRss/101737.htmlhttp://www.shnenglu.com/beautykingdom/services/trackbacks/101737.html浠ュ墠榪樺湪鐜︰NIX鐨勬椂鍊欏氨瑙夊緱閲岄潰鏈変釜鍛戒護(hù)寰堝ソ鐢ˋWK,鍔熻兘寮哄ぇ.榪樻湁SED鍜孍D錛岀敤榪欎笁涓懡浠ゅ氨鍙互瑙e喅騫蟲椂宸ヤ綔涓殑闂銆?
鍓嶅嚑澶╁湪鍗曚綅鍋氭姤鎵歸噺澶勭悊鏃?瑕佹槸鐢ㄦ墜宸ヤ竴涓綉鐐逛竴涓綉鐐規(guī)參鎱㈢殑鏀圭殑璇?涓嶉氬涔熷緱鎼炲埌3銆?鐐歸挓銆傚浜庢垜榪欑鎳掍漢錛岄偅鏄緢鐥涜嫤鐨勪簨錛屼簬鏄彧寰楀仛浜涙噿浜哄枩嬈㈠仛鐨勪簨浜嗐傝姳浜嗕簩鍗佸垎閽熷乏鍙籌紝緇堜簬鎶奡HELL鐨勮剼鏈啓濂斤紝姣忔澶勭悊43涓綉鐐圭殑鎶ヨ〃錛岀敤鏃朵笉鍒?5縐掋?
鑴氭湰涓墍鐢ㄥ懡浠や負(fù)錛?
find
awk
鐢變簬闀挎椂闂存病鏈夊啓SHELL閲岀殑鑴氭湰浜嗭紝鑺變簡濂戒簺鏃墮棿嫻嬭瘯錛岃繖閲岄噸娓╀笅AWK鐨勪竴浜涘父鐢ㄧ殑鐢ㄦ硶錛?
awk 鐢ㄦ硶錛歛wk ' pattern {action} '
鍙橀噺鍚?nbsp;  鍚箟
ARGC   鍛戒護(hù)琛屽彉鍏冧釜鏁?
ARGV   鍛戒護(hù)琛屽彉鍏冩暟緇?
FILENAME  褰撳墠杈撳叆鏂囦歡鍚?
FNR   褰撳墠鏂囦歡涓殑璁板綍鍙?
FS   杈撳叆鍩熷垎闅旂錛岄粯璁や負(fù)涓涓┖鏍?
RS   杈撳叆璁板綍鍒嗛殧絎?
NF   褰撳墠璁板綍閲屽煙涓暟
NR   鍒扮洰鍓嶄負(fù)姝㈣褰曟暟
OFS   杈撳嚭鍩熷垎闅旂
ORS   杈撳嚭璁板綍鍒嗛殧絎?
1銆乤wk '/101/' file 鏄劇ず鏂囦歡file涓寘鍚?01鐨勫尮閰嶈銆?
awk '/101/,/105/' file
awk '$1 == 5' file
awk '$1 == "CT"' file 娉ㄦ剰蹇呴』甯﹀弻寮曞彿
awk '$1 * $2 >100 ' file
awk '$2 >5 && $2<=15' file
2銆乤wk '{print NR,NF,$1,$NF,}' file 鏄劇ず鏂囦歡file鐨勫綋鍓嶈褰曞彿銆佸煙鏁板拰姣忎竴琛岀殑絎竴涓拰鏈鍚庝竴涓煙銆?
awk '/101/ {print $1,$2 + 10}' file 鏄劇ず鏂囦歡file鐨勫尮閰嶈鐨勭涓銆佷簩涓煙鍔?0銆?
awk '/101/ {print $1$2}' file
awk '/101/ {print $1 $2}' file 鏄劇ず鏂囦歡file鐨勫尮閰嶈鐨勭涓銆佷簩涓煙錛屼絾鏄劇ず鏃跺煙涓棿娌℃湁鍒嗛殧絎︺?
3銆乨f | awk '$4>1000000 ' 閫氳繃綆¢亾絎﹁幏寰楄緭鍏ワ紝濡傦細(xì)鏄劇ず絎?涓煙婊¤凍鏉′歡鐨勮銆?
4銆乤wk -F "|" '{print $1}' file 鎸夌収鏂扮殑鍒嗛殧絎?#8220;|”榪涜鎿嶄綔銆?
awk 'BEGIN { FS="[: \t|]" }
{print $1,$2,$3}' file 閫氳繃璁劇疆杈撳叆鍒嗛殧絎︼紙F(tuán)S="[: \t|]"錛変慨鏀硅緭鍏ュ垎闅旂銆?
Sep="|"
awk -F $Sep '{print $1}' file 鎸夌収鐜鍙橀噺Sep鐨勫煎仛涓哄垎闅旂銆?
awk -F '[ :\t|]' '{print $1}' file 鎸夌収姝e垯琛ㄨ揪寮忕殑鍊煎仛涓哄垎闅旂錛岃繖閲屼唬琛ㄧ┖鏍箋?銆乀AB銆亅鍚屾椂鍋氫負(fù)鍒嗛殧絎︺?
awk -F '[][]' '{print $1}' file 鎸夌収姝e垯琛ㄨ揪寮忕殑鍊煎仛涓哄垎闅旂錛岃繖閲屼唬琛╗銆乚
5銆乤wk -f awkfile file 閫氳繃鏂囦歡awkfile鐨勫唴瀹逛緷嬈¤繘琛屾帶鍒躲?
cat awkfile
/101/{print "\047 Hello! \047"} --閬囧埌鍖歸厤琛屼互鍚庢墦鍗?' Hello! '.\047浠h〃鍗曞紩鍙楓?
{print $1,$2} --鍥犱負(fù)娌℃湁妯″紡鎺у埗錛屾墦鍗版瘡涓琛岀殑鍓嶄袱涓煙銆?
6銆乤wk '$1 ~ /101/ {print $1}' file 鏄劇ず鏂囦歡涓涓涓煙鍖歸厤101鐨勮錛堣褰曪級(jí)銆?
7銆乤wk 'BEGIN { OFS="%"}
{print $1,$2}' file 閫氳繃璁劇疆杈撳嚭鍒嗛殧絎︼紙OFS="%"錛変慨鏀硅緭鍑烘牸寮忋?
8銆乤wk 'BEGIN { max=100 ;print "max=" max} BEGIN 琛ㄧず鍦ㄥ鐞嗕換鎰忚涔嬪墠榪涜鐨勬搷浣溿?
{max=($1 >max ?$1:max); print $1,"Now max is "max}' file 鍙栧緱鏂囦歡絎竴涓煙鐨勬渶澶у箋?
錛堣〃杈懼紡1?琛ㄨ揪寮?:琛ㄨ揪寮? 鐩稿綋浜庯細(xì)
if (琛ㄨ揪寮?)
琛ㄨ揪寮?
else
琛ㄨ揪寮?
awk '{print ($1>4 ? "high "$1: "low "$1)}' file
9銆乤wk '$1 * $2 >100 {print $1}' file 鏄劇ず鏂囦歡涓涓涓煙鍖歸厤101鐨勮錛堣褰曪級(jí)銆?
10銆乤wk '{$1 == 'Chi' {$3 = 'China'; print}' file 鎵懼埌鍖歸厤琛屽悗鍏堝皢絎?涓煙鏇挎崲鍚庡啀鏄劇ず璇ヨ錛堣褰曪級(jí)銆?
awk '{$7 %= 3; print $7}' file 灝嗙7鍩熻3闄わ紝騫跺皢浣欐暟璧嬬粰絎?鍩熷啀鎵撳嵃銆?
11銆乤wk '/tom/ {wage=$2+$3; printf wage}' file 鎵懼埌鍖歸厤琛屽悗涓哄彉閲弚age璧嬪煎茍鎵撳嵃璇ュ彉閲忋?
12銆乤wk '/tom/ {count++;}
END {print "tom was found "count" times"}' file END琛ㄧず鍦ㄦ墍鏈夎緭鍏ヨ澶勭悊瀹屽悗榪涜澶勭悊銆?
13銆乤wk 'gsub(/\$/,"");gsub(/,/,""); cost+=$4;
END {print "The total is $" cost>"filename"}' file gsub鍑芥暟鐢ㄧ┖涓叉浛鎹?鍜?鍐嶅皢緇撴灉杈撳嚭鍒癴ilename涓?
1 2 3 $1,200.00
1 2 3 $2,300.00
1 2 3 $4,000.00
awk '{gsub(/\$/,"");gsub(/,/,"");
if ($4>1000&&$4<2000) c1+=$4;
else if ($4>2000&&$4<3000) c2+=$4;
else if ($4>3000&&$4<4000) c3+=$4;
else c4+=$4; }
END {printf "c1=[%d];c2=[%d];c3=[%d];c4=[%d]\n",c1,c2,c3,c4}"' file
閫氳繃if鍜宔lse if瀹屾垚鏉′歡璇彞
awk '{gsub(/\$/,"");gsub(/,/,"");
if ($4>3000&&$4<4000) exit;
else c4+=$4; }
END {printf "c1=[%d];c2=[%d];c3=[%d];c4=[%d]\n",c1,c2,c3,c4}"' file
閫氳繃exit鍦ㄦ煇鏉′歡鏃墮鍑猴紝浣嗘槸浠嶆墽琛孍ND鎿嶄綔銆?
awk '{gsub(/\$/,"");gsub(/,/,"");
if ($4>3000) next;
else c4+=$4; }
END {printf "c4=[%d]\n",c4}"' file
閫氳繃next鍦ㄦ煇鏉′歡鏃惰煩榪囪琛岋紝瀵逛笅涓琛屾墽琛屾搷浣溿?

14銆乤wk '{ print FILENAME,$0 }' file1 file2 file3>fileall 鎶奻ile1銆乫ile2銆乫ile3鐨勬枃浠跺唴瀹瑰叏閮ㄥ啓鍒癴ileall涓紝鏍煎紡涓?
鎵撳嵃鏂囦歡騫跺墠緗枃浠跺悕銆?
15銆乤wk ' $1!=previous { close(previous); previous=$1 }
{print substr($0,index($0," ") +1)>$1}' fileall 鎶婂悎騫跺悗鐨勬枃浠墮噸鏂板垎鎷嗕負(fù)3涓枃浠躲傚茍涓庡師鏂囦歡涓鑷淬?
16銆乤wk 'BEGIN {"date"|getline d; print d}' 閫氳繃綆¢亾鎶奷ate鐨勬墽琛岀粨鏋滈佺粰getline錛屽茍璧嬬粰鍙橀噺d錛岀劧鍚庢墦鍗般?
17銆乤wk 'BEGIN {system("echo "Input your name:\\c""); getline d;print "\nYour name is",d,"\b!\n"}'
閫氳繃getline鍛戒護(hù)浜や簰杈撳叆name錛屽茍鏄劇ず鍑烘潵銆?
awk 'BEGIN {FS=":"; while(getline< "/etc/passwd" >0) { if($1~"050[0-9]_") print $1}}'
鎵撳嵃/etc/passwd鏂囦歡涓敤鎴峰悕鍖呭惈050x_鐨勭敤鎴峰悕銆?
18銆乤wk '{ i=1;while(i<NF) {print NF,$i;i++}}' file 閫氳繃while璇彞瀹炵幇寰幆銆?
awk '{ for(i=1;i<NF;i++) {print NF,$i}}' file 閫氳繃for璇彞瀹炵幇寰幆銆?
type file|awk -F "/" '
{ for(i=1;i<NF;i++)
{ if(i==NF-1) { printf "%s",$i }
else { printf "%s/",$i } }}' 鏄劇ず涓涓枃浠剁殑鍏ㄨ礬寰勩?
鐢╢or鍜宨f鏄劇ず鏃ユ湡
awk 'BEGIN {
for(j=1;j<=12;j++)
{ flag=0;
printf "\n%d鏈堜喚\n",j;
for(i=1;i<=31;i++)
{
if (j==2&&i>28) flag=1;
if ((j==4||j==6||j==9||j==11)&&i>30) flag=1;
if (flag==0) {printf "%02d%02d ",j,i}
}
}
}'
19銆佸湪awk涓皟鐢ㄧ郴緇熷彉閲忓繀欏葷敤鍗曞紩鍙鳳紝濡傛灉鏄弻寮曞彿錛屽垯琛ㄧず瀛楃涓?
Flag=abcd
awk '{print '$Flag'}' 緇撴灉涓篴bcd
awk '{print "$Flag"}' 緇撴灉涓?Flag 杞嚜錛?br>http://blog.chinaunix.net/u/28584/showart.php?id=1712347

chatler 2009-11-23 21:20 鍙戣〃璇勮
]]>
find鍛戒護(hù)璇﹁В<杞?gt;http://www.shnenglu.com/beautykingdom/archive/2009/11/10/100665.htmlchatlerchatlerTue, 10 Nov 2009 14:32:00 GMThttp://www.shnenglu.com/beautykingdom/archive/2009/11/10/100665.htmlhttp://www.shnenglu.com/beautykingdom/comments/100665.htmlhttp://www.shnenglu.com/beautykingdom/archive/2009/11/10/100665.html#Feedback0http://www.shnenglu.com/beautykingdom/comments/commentRss/100665.htmlhttp://www.shnenglu.com/beautykingdom/services/trackbacks/100665.html
鏌ユ壘/etc/rc.d鐩綍涓嬮潰鎵鏈変互crond緇撴潫鐨勬枃浠訛紝騫朵嬌鐢╢ile鎸囦護(hù)鏌ョ湅鍏跺睘鎬э紝娉ㄦ剰錛歟xec鍜宖ile闂存槸涓涓┖鏍鹼紝file鍜寋}闂存槸涓涓┖鏍鹼紝file鍜孿;涔嬮棿鏄竴涓┖鏍鹼紝\;鏄竴涓暣浣撱?br>
瑕佸湪/usr/linux涓煡鎵炬墍鏈夌殑*.h錛屽茍鍦ㄨ繖浜涙枃浠朵腑鏌ユ壘“SYSCALL_VECTOR"錛屾渶鍚庢墦鍗板嚭鎵鏈夊寘鍚?SYSCALL_VECTOR"鐨勬枃浠跺悕錛屾湁浠ヤ笅鍑犵鏂規(guī)硶瀹炵幇
find /usr/linux -name "*.h" | xargs -n50 grep SYSCALL_VECTOR
grep SYSCALL_VECTOR /usr/linux/*.h | cut -d':' -f1 | uniq > filename
find /usr/linux -name "*.h" -exec grep "SYSCALL_VECTOR" {} \; -print

銆銆鎴戠敤find / -name filename| rm -rf錛屼笉鎴愬姛錛岃闂負(fù)浠涔堜笉鎴愬姛錛?br>find / -name filename -exec rm -rf {} \;
find . -name filename |rm -rf璇曚竴涓媨} 琛ㄧず浣犳壘鍑烘潵鐨勭粨鏋溿?br>\; 鍒欑浉褰撲簬“瀹硶”錛屾病浠涔堣澶達(dá)紝灝辨槸榪欎箞瑙勫畾鐨勶紝鍦?-exec 鍚庨潰闇瑕佷竴涓〃紺鴻鍛戒護(hù)緇堢粨鐨勭殑絎﹀彿銆傚彲浠ュ湪 man find 涓壘鍒?**銆?br>瑕佽rm璇嗗埆find鐨勭粨鏋滐紝濡備笅錛?br>find / -name filename |xargs rm -rf
涔嬫墍浠ind . -name filename |rm -rf涓嶉氳繃錛屾槸鍥犱負(fù)rm鍛戒護(hù)涓嶆帴鍙椾粠鏍囧噯杈撳叆浼犺繃鏉ョ殑鎸囦護(hù)
銆銆鏌ユ壘鍚壒瀹氬瓧絎︿覆鐨勬枃浠?br>渚嬪鏌ユ壘褰撳墠鐩綍涓嬪惈鏈?the string you want find..."瀛楃涓茬殑鏂囦歡錛?br>$find . -type f -exec grep “the string you want find...” {} ; -print

銆銆浠庢牴鐩綍寮濮嬫煡tmpfile錛屼竴鏃︽煡鍒伴┈涓婂垹闄?br>find / -name "tmpfile" -exec rm {} \;

銆銆find 鐨刾erm闂
璇烽棶涓涓嬩互涓嬪懡浠や粈涔堟剰鎬濓紵鍏抽敭鏄偅涓暟瀛楀墠鐨?錛屽叾浠栭兘榪樼煡閬?br>find -name ".*" -perm -007
鎴戠煡閬?br>find -name ".*" -perm 755
榪欎釜鏄敤鏉ユ煡鎵炬潈闄愪綅涓?55鐨勯殣钘忔枃浠?br>鍣紝瀵逛簡榪樻湁錛屾垜涓婅竟鐨勫懡浠ら兘鐪佺暐浜唂ind鐨刾athname鍙傛暟 find榛樿鏄煡鎵懼綋鍓嶅伐浣滅洰褰曠殑鍚楋紵
濡傛灉鎴戠敤 -ok 鏇夸唬 -exec, 閭d箞榪橀渶瑕佸姞涓?{} \; 鍚楋紵
榪欎釜宸茬粡娓呮錛屼粛鐒墮渶瑕侊紝鍥犱負(fù) -ok 鍙槸 -exec 鐨勬彁紺烘ā寮忥紝瀹冨彧鏄浜嗕竴涓‘璁ゆ搷浣滅殑姝ラ,鍒氭墠娌℃湁璇繪噦閭e嚑鍙鏂囩殑鎰忔?鍛靛懙 涓嶅ソ鎰忔?br>-007鏄寚鏌ユ壘鎵鏈夌敤鎴烽兘鍙銆佸啓銆佹墽琛岀殑鏂囦歡錛岃灝忓績鍛~~~
瑙i噴瑙i噴錛?br>find -name ".*" -perm -007 鍜?find -name ".*" -perm 777 鏈夊尯鍒悧錛?br>-007鏄庝箞鏉ュ緱鍛紵
涓嶈繃鏈変竴涓棶棰?br>鎴戠敤 find . -perm -100 浼?xì)鍒楀嚭褰撳墠鐩?. , 榪欐槸涓轟粈涔堝憿錛?br>
涓嬮潰寮曠敤鐢眅xplover鍦?2002/10/01 06:15am 鍙戣〃鐨勫唴瀹癸細(xì)
-007鏄寚鏌ユ壘鎵鏈夌敤鎴烽兘鍙銆佸啓銆佹墽琛岀殑鏂囦歡錛岃灝忓績鍛~~~
-007鏄煡鎵懼惈鍏跺畠鐢ㄦ埛(涓嶅悓緇?闈炲睘涓?鍙,鍐?鎵ц鐨勬枃浠?騫朵笉涓瀹氳鍚岀粍鍙鍐?-鏄寚鏈灝戞潈闄愪負(fù)007.
涓嬮潰寮曠敤鐢變竴棰楀皬鐧借彍鍦?2002/10/01 10:16am 鍙戣〃鐨勫唴瀹癸細(xì)
OK浜嗭紝 鍛靛懙
涓嶈繃鏈変竴涓棶棰?br>鎴戠敤 find . -perm -100 浼?xì)鍒楀嚭褰撳墠鐩?. , 榪欐槸涓轟粈涔堝憿錛?br>榪欑鏂規(guī)硶涓嶄細(xì)鍑嗙‘鐨勬壘鍑虹洰褰曠殑. -100鏄寚鏉冮檺鑷沖皯鏄睘涓誨彲榪愯.
鍦╱nix緋葷粺涓?浣犲彲浠ユ嫢鏈夊鐩綍鏂囦歡鐨勬墽琛屾潈浣犳墠鍙互榪涘叆涓涓洰褰?榪欎究鏄洰褰曟枃浠惰鍒楀嚭鐨勫師鍥?
find . -perm -001 -print鎵懼埌寰寰鏄洰褰曟枃浠?
鎴戠殑鎰忔濆綋鐒朵笉鏄嬌鐢ㄨ繖縐嶆柟娉曟潵鎵劇洰褰曪紝鍙笉榪囦笉鏄庣櫧鍏朵腑鐨?-100 鎰忎箟浜?br>閭d互姝ょ被鎺紝鏄笉鏄?-010鏄寚鏉冮檺鑷沖皯鏄痮wner鍚岀粍鍙墽琛岀殑鍚楋紵涔熷氨鏄鍏跺疄榪欓噷鐨?10鍜?鏄垎寮鐨勶紝-琛ㄧず涓涓嚦灝戠殑鎰忔濓紝鑰屼笖010鎵嶆槸鐪熸鐢ㄦ潵鎻忚堪鏉冮檺浣嶇殑錛?br>榪欐牱瀛愬氨鏄庣櫧浜?璋㈣阿浣犲櫌

銆銆灝唂ind鍑烘潵鐨勪笢瑗挎嫹鍒板彟涓涓湴鏂?
find *.c -exec cp '{}' /tmp ';'
濡傛灉鏈夌壒孌婃枃浠訛紝鍙互鐢╟pio錛屼篃鍙互鐢ㄨ繖鏍風(fēng)殑璇硶錛?br>find dir -name filename -print | cpio -pdv newdir

銆銆鎵懼嚭紓佺洏涓煇涓ぇ灝忚寖鍥村唴鐨勬枃浠?br>姣斿瑕佹煡鎵劇鐩樹腑澶т簬3M鐨勬枃浠訛細(xì)
find . -size +3000k -exec ls -ld {} ;

銆銆濡備綍鐢╢ind鏌ユ壘鏌愪竴澶╂洿鏀圭殑鏂囦歡錛?br>鍙互浣跨敤榪欎竴琛屽懡浠ゆ潵瀹炵幇錛?br>A=`find ~ -print` | ls -l --full-time $A 2>/dev/null | grep "Jun 27" | grep 1998

銆銆浣跨敤find 鍛戒護(hù)鏌ユ壘鏌愪釜鏃墮棿孌電殑shell鎬庝箞鍐欍傛瘮濡?1鐐瑰埌12鐐圭殑銆倀hanks
鍒涘緩涓涓剼鏈琷udgetime錛屽唴瀹瑰涓嬶細(xì)
ls -l $*|awk '{split($8,hour,":");if((hour[1]>23 || hour[1] < 1)&&hour[1]<24)print}'
鍒拌鏌ユ壘鐨勭洰褰曚笅錛岃繍琛?br>find ./ -name "*" -exec judgetime {} \;
娉ㄦ剰鏃墮棿鏍煎紡涓猴紥錛斿皬鏃跺埗銆?br>thank you 錛屽鏋滄垜瑕佺簿紜埌鍒嗛挓鍛?br>touch -t 04241112 starttemp #綺劇‘鍒?2鍒嗛挓
touch -t 04241220 endtemp #鎴鍒?2鐐?0
find [dir] -newer starttemp -a ! -newer endtemp -exec ls -l {} \;
锝庯絽锝楋絽锝掞紵
閭f槰澶╋紤錛掞細(xì)錛戯紣鏂囦歡濡備綍鍛紵
姣忓ぉ鎵ц鐨勬椂鍊欙紝鐢ㄥ綋澶╃殑鏃ユ湡鍜屾椂闂存埑鏇挎崲涓涓嬩笉灝辮浜嗗悧錛?br>鎴戜笉鐭ラ亾浠栨槸涓嶆槸鎶婃墍鏈夌殑11錛?0~12錛?0鐨勯兘鎵懼嚭鏉ワ紝鏄笉鏄彧鎵ц涓嬈¤繕鏄瘡澶╅兘鎵ц錛?br>榪欑鎯呭喌淇虹寽鎯蟲槸鑷繁鐨勪笢瑗挎斁鍦ㄥ摢蹇樹簡錛屽彧璁板緱褰撴椂鏄繁澶滀簡銆?br>鏈夐亾鐞嗭紒
涓嶆劎鏄枒绔癸紒
涓嶅厜鐭ラ亾鎬庝箞瑙e喅闂錛岃繕鐭ラ亾鍦ㄤ粈涔堟儏鍐典笅鍑虹幇榪欑被闂錛屼僵鏈嶄僵鏈嶏紒
闂鍙堝嚭鐜頒簡銆傚垱寤鴻繖涓枃浠剁殑鏃跺欍傛湰鏉ュ簲璇ユ槸鏃墮棿鐨勪竴鏍忕幇鍦ㄥ啓涓婁簡2002錛岃屼笉鏄?2錛?0.
絳夊埌12錛?0榪囦簡鍚э紒

銆銆鍒犻櫎鎸囧畾鏃ユ湡鐨勬枃浠?br>find ./ -name 鏂囦歡鍚?-exec rm -f {} \;
渚嬶細(xì)鍒犻櫎褰撳墠30澶╁唴娌$敤榪囩殑鏂囦歡,鐢ㄥ涓嬪懡浠わ細(xì)
find / -atime +30 -exec rm -f {} \;
鎴戣嚜宸辮瘯鐫鍐欎簡涓灝忔SHELL,涔熺敤ll ,grep, rm 鍑犱釜鍛戒護(hù)錛岀敤璧鋒潵榪樺樊寮轟漢鎰忋?br>瀵硅繃婊ゅ嚭鏉ョ殑鏂囦歡鍚嶅垪琛ㄤ腑鐢ㄤ簡涓涓狥OR璇彞錛屽啀鎵цrm 銆傜幇鍦ㄦ垜鎯蟲妸榪欐SHELL 鎵╁睍涓涓嬭瀹冩瘡澶╁畾鏃惰繍琛屽皢 n 澶╁墠鐨勬枃浠跺垹鎺夛紝鏈夋病鏈変漢鑳界粰鎴戜竴浜涙彁紺猴紝璋㈣阿錛?br>榪樻湁涓棶棰橈紝瀵逛簬鍓嶉潰閭d綅鏈嬪弸鎻愬埌鐨?find / -atime +30 -exec rm -f {} \;
"鏂規(guī)硶錛屾垜寰堟棭灝辮瘯榪囧嚑嬈★紝涓嶈繃濂藉儚閮戒笉澶錛屽弬鏁?-atime n 鏄煡鎵緉澶╁墠琚闂繃鐨勬枃浠訛紝鎴戜笉鏄庣櫧鐨勬槸榪欓噷鐨勬椂闂村弬鐓х偣鏄粈涔堬紝浠ュ強(qiáng)榪欎釜n澶╂槸鎬庝箞璁$畻鐨勩?br>闂浜屻佸浜?ll |cut -f 1" 榪欎釜鍛戒護(hù)鎴戞槸涓嶆槸鐢ㄩ敊浜嗭紝鎴戝彧鎯沖彇鍑?ll 涓垪鍑虹殑鏂囦歡鍚嶏紝浣嗙敤cut -f 鍛戒護(hù)鍋氫笉鍒?錛屾垜鍙ソ鎹㈢敤 ll |cut -c 59- 榪欑鏂瑰紡寰楀埌鎴戣鐨勬枃浠跺悕錛宐ut it's a pool idear 錛佹垜涔熻瘯榪囩敤awk 錛屽ソ鍍忎篃涓嶅錛岀湅鐪嬪ぇ瀹跺彲涓嶅彲浠ョ粰鎴戜竴浜涘皬灝忕殑鎻愰啋錛孴KS SO MUCH
闂涓夈佸浣曟敼鍙?I緇撶偣 鐨勬棩鏈熸牸寮?鎴戠幇鍦ㄧ殑緋葷粺鏄劇ず鐨勬牸寮忔槸錛?br>-rw-r----- 1 msahz01 users 2253 2002騫?鏈?2鏃?poheader.i
鎴戞兂鎶婅繖鎹㈡垚
-rw-rw-rw- 1 house users 2193 Apr 19 2001 hkdisp.p
濡備綍鎵嶈兘鍋氬埌榪欑偣錛?br>awk 搴旇鍙互
ll | awk '{print $9}'
銆銆鍒犻櫎澶氬皯澶╀箣鍓嶇殑鏂囦歡
find /yourpath -mtime +31 -exec rm {} \;
find /yourpath -mtime +366 -exec rm {} \;

find涓? -ctime, -mtime鍙?qiáng)鍏?atime鏈変綍鍖哄埆

璇烽棶 -ctime 鍜?-mtime 鏈変粈涔堝叧緋??
濡傛灉鐖剁洰褰曠殑 ctime 鏀瑰彉, 閭e畠涓嬮潰鐨勬枃浠剁殑 ctime 灝變細(xì)鑷姩閮芥敼浜嗗悧 ?
-ctime 鍜?-mtime ,-atime 榪欎簺淇℃伅鏄瓨鍦ㄥ摢鍎垮憿 ?

鎴戠敤 -mtime -1 鎵懼埌浜嗘柊寤烘垨鏀圭殑鏂囦歡.
浣嗘庢牱鎵嶈兘鎵懼埌涓澶╁唴 mv 鏉ョ殑鏂囦歡鍛? 瀹冧滑鐨勬椂闂存槸鍘熸湁鐨勬椂闂?鏃╀簬涓澶?) ?

鐢?newer閫夐」鍟娿?br>浣犲彲浠ュ厛touch涓涓綘鎯寵鐨勬椂闂寸殑鏂囦歡濡備笅錛?br>$ touch -t 08190800 test
$ ls -l test
-rw-r--r-- 1 dba other 0 Aug 19 08:00 test
鐒跺悗
$ find . -newer test -print
.
./.sh_history
$ ls -l .sh_history
-rw------- 1 dba other 154 Aug 20 17:39 .sh_history

鐢╰ouch鍙互鍐欏嚭浣犳兂瑕佺殑浠諱綍鏃墮棿鐨勬枃浠訛紝鐒跺悗鐢?newer ,! -newer閫夐」鍗沖彲鎴愬姛銆?br>
1.ctime鍚玦node淇℃伅淇敼鐨勬椂闂?mtime鍙寚鏂囦歡鍐呭寤虹珛鎴栦慨鏀圭殑鏃墮棿.
2 涓嶄細(xì).
3.榪欎簺淇℃伅搴旇鏄瓨鍦ㄦ枃浠剁郴緇熺殑瓚呯駭鍧楅噷.

鎴戞煡浜嗕功 -ctime 鏄寚 inode 鐨勬敼鍙?鎴栫О鏂囦歡鐨勭姸鎬佹敼鍙?.
璇烽棶 inode 瀛樹簡鍝簺淇℃伅 ?
鍋氫簡浜涘皬嫻嬭瘯,-mtime 鏀? -ctime 涓瀹氫篃鏀?
鏀規(guī)枃浠跺悕, -ctime 涔熶細(xì)鏀?
璋佽兘鍥炵瓟 i-node 瀛樹簡鍝簺涓滆タ ?

vi /usr/include/sys/inode.h

鐝富,鎴戜笉鑳?access /usr/include/sys/inode.h .
鎽樹功濡備笅:
Directories contain directory entries. Each entry contains a file or subdirectory name and an index node reference number (i-node number). To increase speed and enhance use of disk space, the data in a file is stored at various locations in the computer's memory. The i-node contains the addresses used to locate all the scattered blocks of data associated with a file. The i-node also records other information about the file including time of modification and access, access modes, number of links, file owner, and file type.
鍙垜鍙戠幇 -atime 鏀逛簡, -ctime 榪樻病鏀? why ?
( 鎴戝厛 cat 涓涓?ASCII 鏂囦歡,鍐嶇敤 -atime -1 鏈夊畠鐢?-ctime -1 灞呯劧娌℃湁瀹?)
鐫宀備笉璺?inode 淇℃伅鏀瑰彉, ctime 灝辨敼鐭涚浘鍚?

鎴戜笉鍚屾剰浣犺創(chuàng)鍑烘潵鐨勯偅孌墊枃绔?姝e鎴戞彁鍒扮殑閭f牱,atime,ctime,mtime鏄斁鍒拌秴綰у潡閲?鍦╯co unix涓嬫槸涓縐嶅彨stat鐨勭粨鏋?(stat_32),涓嶅悓鐨勭郴緇熸枃浠剁郴緇熷彲鑳戒笉鍚?
sco 涓媔node鐨勭粨鏋勫涓?

typedef struct inode
{
struct inode *i_forw; /* inode hash chain */
struct inode *i_back; /* '' */
struct inode *av_forw; /* freelist chain */
struct inode *av_back; /* '' */
int *i_fsptr; /* "typeless" pointer to fs dependent */
ino32_t i_number; /* i number, 1-to-1 with dev address */
ushort i_ftype; /* file type = IFDIR, IFREG, etc. */
short i_fstyp; /* File system type */
off_t i_size; /* size of file */
ushort i_uid; /* owner */
ushort i_gid; /* group of owner */
ushort i_flag;
ushort i_want; /* i_flag extension to avoid MP races */
ushort i_count; /* reference count */
short i_nlink; /* directory entries */
dev_t i_rdev; /* Raw device number */
#define i_namtype i_rdev /* i_ftype==IFNAM subtype */
dev_t i_dev; /* device where inode resides */
struct mount *i_mton;/* ptr to mount table entry that */
/* this directory is mounted on */
struct region *i_rp; /* ptr to shared region if any */
struct stdata *i_sp; /* ptr to associated stream */
struct iisem *isem; /* ptr to XENIX semaphores */
struct iisd *isd; /* ptr to XENIX shared data */
} i_un;
#define i_mnton i_un.i_mton /* i_ftype==IFDIR IMOUNT */
#define i_rptr i_un.i_rp /* i_ftype==IFREG || i_ftype==IFBLK */
#define i_sptr i_un.i_sp /* i_ftype==IFCHR || i_ftype==IFIFO */
#define i_sem i_un.isem /* i_ftype==IFNAM && i_namtype==IFSEM */
#define i_sd i_un.isd /* i_ftype==IFNAM && i_namtype==IFSHD */

struct fstypsw *i_fstypp; /* ptr to file system switch FSPTR */
long *i_filocks; /* pointer to filock (structure) list */
unsigned long i_mappages; /* number of pages currently cached */
unsigned long i_vcode; /* read-ahead block save (NFS) */
short i_wcnt; /* write open count or ITEXT count */
struct lockb i_cilock; /* tas to synchronize i_flag changes */
ushort i_rdlocks; /* count of non-exclusive lockers */
} inode_t;


鎵浠?璁塊棶涓涓枃浠朵笉鑳芥敼鍙榠node淇℃伅.
浣跨敤chown, chgrp, chmod鍛戒護(hù)鍙互寰堝ソ鐨勬瘮杈僲time鍜宑time
chown鏀瑰彉涓涓枃浠剁殑灞炰富,鐢╟time鍙互鎵懼埌,鐢╩time渚挎壘涓嶅埌.
璇曡瘯鐪?

澶氳阿鏂戠! 鎴戞槸鍦?Solaris 涓婇潰璇曠殑.鎴戞槸瀵?-ctime 涓嶆槑鐧?
璇曠殑緇撴灉濡備笅:
淇敼鏂囦歡,-mtime 鏀逛簡, -ctime 涔熶細(xì)鏀?
璁塊棶鏂囦歡,-atime 鏀逛簡, -ctime 娌″彉.
chown, chgrp, chmod,mv, 閮戒細(xì)浣?-ctime 鏀瑰彉,浣嗕笉褰卞搷 -atime 鍜?-mtime.
touch 鍙互鏀?-mtime and/or -atime,浣?touch -a 鍙敼璁塊棶鏃墮棿鏃?-ctime涔熸敼浜?
touch -m 鏀逛慨鏀規(guī)椂闂存椂,-ctime褰撶劧涔熸敼浜?
濂借薄榪樻湁鍒殑寰堝涓滆タ鍙互浠?-ctime 鏀瑰彉, 鎼炰笉娓呮.
鏈変粈涔堟柟娉曞彲浠ユ樉紺?-mtime,atime,ctime 鍚?
鍙互鐢?-ctime 鏉ュ疄鐜板鐩綍鐨勫閲忔枃浠惰繘琛屽浠芥垨 transfer 鍚??
澶氳阿!

娌℃湁浠涔堝伐鍏鋒樉紺?(鍙兘鏄亢涓嶇煡閬?
鎶婁笅闈㈢▼搴忛噷鐨剆t_mtime鎹㈡垚st_ctime,鎴杝t_atime渚垮彲浠ュ緱鍒頒綘瑕佺殑浜?
錛僫 nclude
int
main (int argc, char **argv)
{
struct stat buf;
char date[80];
char fname[80];
printf("Enter filename (with full path) to check mtime : ");
scanf("%s",fname);
stat(fname, &buf);
printf ("mtime (in sec) of %s = %ld\n", fname, buf.st_mtime);
strcpy(date, ctime((time_t *)&(buf.st_mtime)));
printf ("mtime (in date) of %s = %s\n", fname, date);
}

鑷充簬鏂囦歡澶囦喚,鏈変粈涔堜笉鍙互鐨勪箞?

mtime ls -l 鏈榪戜慨鏀規(guī)枃浠跺唴瀹圭殑鏃墮棿
atime ls -lu 鏈榪戣闂枃浠剁殑鏃墮棿
ctime ls -li 鏈榪戞枃浠舵湁鎵鏀瑰彉鐨勭姸鎬?,濡傛枃浠朵慨鏀?灞炴灞炰富 鏀瑰彉 ,鑺傜偣 ,閾炬帴鍙樺寲絳?,搴旇鏄笉鎷樻償鍙槸鏃墮棿鍓嶅悗鐨勬敼鍙?br>
淇虹湅浜唋s鐨勫府鍔?浠ヤ負(fù)鍙槸鎸塩time鎴朼time鎺掑簭,鏄劇ず鐨勬椂闂磋繕鏄痬time.

浠旂粏姣旇緝浜嗕竴涓?ayhan璇寸殑鏄鐨?璋㈣阿ayhan.

澶氳阿 ahyan 鎻愮ず ! 鎴戝湪 Solaris 涓婅瘯榪囧涓?
mtime 鐢?ls -l 鐪嬪埌
atime 鐢?ls -lu 鐪嬪埌
ctime 鐢?ls -lc 鐪嬪埌. (ls -li 鍙湁 inode number)
鎽樹功濡備笅:
-c Uses time of last modification of the i-node (file
created, mode changed, and so forth) for sorting (-t)
or printing (-l or -n).
-u Uses time of last access instead of last modification
for sorting (with the -t option) or printing (with the
-l option).
-i For each file, prints the i-node number in the first
column of the report.

鎴戝湪sco unix5.0.5涓瘯浜嗕竴涓嬶紝濂藉儚涓嶅錛歝hmod,chgrp絳変笉浼?xì)鏀瑰彉ls -il鏄劇ず鐨勬椂闂達(dá)紱vi,touch鍊掓槸鏈夊獎(jiǎng)鍝嶃?br>姣忎竴縐嶆搷浣滅郴緇熼兘鏄敱鎴愬崈涓婁竾涓笉鍚岀綾葷殑鏂囦歡鎵緇勬垚鐨勩傚叾涓湁緋葷粺鏈韓鑷甫鐨勬枃浠訛紝鐢ㄦ埛鑷繁鐨勬枃浠訛紝榪樻湁鍏變韓鏂囦歡絳夌瓑銆傛垜浠湁鏃跺欑粡甯稿繕璁版煇浠芥枃浠舵斁鍦ㄧ‖鐩樹腑鐨勫摢涓湴鏂廣傚湪寰蔣鐨刉INDOWS鎿嶄綔緋葷粺涓鏌ユ壘涓浠芥枃浠舵槸鐩稿綋綆鍗曠殑浜嬫儏錛?鍙鍦ㄦ闈笂鐐瑰嚮“寮濮?#8221;錛?#8220;鎼滅儲(chǔ)”涓氨鑳芥寜鐓у悇縐嶆柟寮忓湪鏈湴紜洏涓婏紝灞鍩熺綉緇滐紝鐢氳嚦鍦↖NTERNET涓婃煡鎵懼悇縐嶆枃浠訛紝鏂囨。銆?br>銆銆鍙槸浣跨敤linux鐨勭敤鎴峰氨娌℃湁閭d箞騫歌繍浜嗭紝鍦↙inux涓婃煡鎵炬煇涓枃浠剁‘瀹炴槸涓浠舵瘮杈冮夯鐑?chǔ)鐨勪簨鎯呫傛瘯绔熷湪linux涓渶瑕佹垜浠嬌鐢ㄤ笓鐢ㄧ殑“鏌ユ壘”鍛戒護(hù)鏉ュ鎵懼湪紜洏涓婄殑鏂囦歡銆侺inux 涓嬬殑鏂囦歡琛ㄨ揪鏍煎紡闈炲父澶嶆潅錛屼笉璞INDOWS,DOS涓嬮兘鏄粺涓鐨凙AAAAAA.BBB鏍煎紡閭d箞鏂逛究鏌ユ壘錛屽湪WINDOWS涓紝鍙鐭ラ亾瑕佹煡鎵劇殑鏂囦歡鐨勬枃浠跺悕鎴栬呭悗緙灝遍潪甯稿鏄撴煡鎵懼埌銆俵inux涓煡鎵炬枃浠剁殑鍛戒護(hù)閫氬父涓?#8220;find”鍛戒護(hù)錛?#8220;find”鍛戒護(hù)鑳藉府鍔╂垜浠湪浣跨敤,綆$悊linux鐨勬棩甯鎬簨鍔′腑鏂逛究鐨勬煡鎵懼嚭鎴戜滑闇瑕佺殑鏂囦歡銆傚浜巐inux鏂版墜鏉ヨ錛?#8220;find”鍛戒護(hù)涔熸槸浜嗚В鍜屽涔?fàn)Linux 鏂囦歡鐗圭偣鐨勬柟娉曘傚洜涓簂inux鍙戣鐗堟湰綣佸錛岀増鏈崌綰у緢蹇紝鍦↙inux涔︾睄涓婂線寰鍐欐槑鏌愪釜閰嶇疆鏂囦歡鐨勬墍鍦ㄤ綅緗紝寰寰linux鏂版墜鎸夊浘绱㈤榪樻槸涓嶈兘鎵懼埌銆傛瘮濡傝REDHAT Linux 7.O 鍜孯EDHAT linux 7.1涓湁浜涢噸瑕佺殑閰嶇疆鏂囦歡鎵鍦ㄧ殑紜洏浣嶇疆鍜屾枃浠剁洰褰曞氨鏈変簡寰堝ぇ鐨勬敼鍙橈紝濡傛灉涓嶅浼?xì)鋴社?#8220;find”鍛戒護(hù)錛岄偅涔堝湪鎴愬崈涓婁竾鐨刲inux鏂囦歡涓鎵懼埌鍏朵腑鐨勪竴涓厤緗枃浠舵槸鐩稿綋鍥伴毦鐨勶紝絎旇呭湪娌℃湁綺鵑?#8220;find”鍛戒護(hù)涔嬪墠灝卞悆榪囪繖鏍風(fēng)殑鑻﹀ご銆傚ソ錛屼笅闈㈠氨璇︾粏涓哄ぇ瀹朵粙緇嶅己澶х殑“find”鍛戒護(hù)鐨勫叏閮ㄤ嬌鐢ㄦ柟娉曞拰鐢ㄩ斻?br>
閫氳繃鏂囦歡鍚嶆煡鎵炬硶錛?br>銆銆榪欎釜鏂規(guī)硶璇磋搗鏉ュ氨鍜屽湪WINDOWS涓嬫煡鎵炬枃浠朵竴鏍峰鏄撶悊瑙d簡銆?濡傛灉浣犳妸榪欎釜鏂囦歡鏀懼湪鍗曚釜鐨勬枃浠跺す閲岄潰錛屽彧瑕佷嬌鐢ㄥ父瑙佺殑“ls"鍛戒護(hù)灝辮兘鏂逛究鐨勬煡鎵懼嚭鏉ワ紝閭d箞浣跨敤“find”鍛戒護(hù)鏉ユ煡鎵懼畠?yōu)兏嶈兘缁欎綘鐣欎笅娣卞埲潥勫嵃璞″Q屾瘯绔?#8220;find”鍛戒護(hù)鐨勫己澶у姛鑳戒笉姝㈣繖涓傚鏋滅煡閬撲簡鏌愪釜鏂囦歡鐨勬枃浠跺悕錛岃屼笉鐭ラ亾榪欎釜鏂囦歡鏀懼埌鍝釜鏂囦歡澶癸紝鐢氳嚦鏄眰灞傚宓岀殑鏂囦歡澶歸噷銆備婦渚嬭鏄庯紝鍋囪浣犲繕璁頒簡httpd.conf榪欎釜鏂囦歡鍦ㄧ郴緇熺殑鍝釜鐩綍涓嬶紝鐢氳嚦鍦ㄧ郴緇熺殑鏌愪釜鍦版柟涔熶笉鐭ラ亾錛屽垯榪欐槸鍙互浣跨敤濡備笅鍛戒護(hù)錛?br>銆銆find / -name httpd.conf
銆銆榪欎釜鍛戒護(hù)璇硶鐪嬭搗鏉ュ緢瀹規(guī)槗灝辨槑鐧戒簡錛屽氨鏄洿鎺ュ湪find鍚庨潰鍐欎笂 -name錛岃〃鏄庤姹傜郴緇熸寜鐓ф枃浠跺悕鏌ユ壘錛屾渶鍚庡啓涓奾ttpd.conf榪欎釜鐩爣鏂囦歡鍚嶅嵆鍙傜◢絳変竴浼?xì)绯痪l熶細(xì)鍦ㄨ綆楁満灞忓箷涓婃樉紺哄嚭鏌ユ壘緇撴灉鍒楄〃錛?br>銆銆etc/httpd/conf/httpd.conf
銆銆榪欏氨鏄痟ttpd.conf榪欎釜鏂囦歡鍦╨inux緋葷粺涓殑瀹屾暣璺緞銆傛煡鎵炬垚鍔熴?br>銆銆濡傛灉杈撳叆浠ヤ笂鏌ユ壘鍛戒護(hù)鍚庣郴緇熷茍娌℃湁鏄劇ず鍑虹粨鏋滐紝閭d箞涓嶈浠ヤ負(fù)緋葷粺娌℃湁鎵ц find/ -name httpd.conf鍛戒護(hù)錛岃屽彲鑳芥槸浣犵殑緋葷粺涓病鏈夊畨瑁匒pache鏈嶅姟鍣紝榪欐椂鍙浣犲畨瑁呬簡Apache Web鏈嶅姟鍣紝鐒跺悗鍐嶄嬌鐢╢ind / -name httpd.conf灝辮兘鎵懼埌榪欎釜閰嶇疆鏂囦歡浜嗐?br>
鏃犻敊璇煡鎵炬妧宸э細(xì)
銆銆鍦╨inux緋葷粺涓?#8220;find”鍛戒護(hù)鏄ぇ澶氭暟緋葷粺鐢ㄦ埛閮藉彲浠ヤ嬌鐢ㄧ殑鍛戒護(hù)錛?騫朵笉鏄疪OOT緋葷粺綆$悊鍛樼殑涓撳埄銆備絾鏄櫘閫氱敤鎴蜂嬌鐢?#8220;find”鍛戒護(hù)鏃朵篃鏈夊彲鑳介亣鍒拌繖鏍風(fēng)殑闂錛岄偅灝辨槸L inux緋葷粺涓郴緇熺鐞嗗憳ROOT鍙互鎶婃煇浜涙枃浠剁洰褰曡緗垚紱佹璁塊棶妯″紡銆傝繖鏍鋒櫘閫氱敤鎴峰氨娌℃湁鏉冮檺鐢?#8220;find”鍛戒護(hù)鏉ユ煡璇㈣繖浜涚洰褰曟垨鑰呮枃浠躲傚綋鏅氱敤鎴蜂嬌鐢?#8220;find”鍛戒護(hù)鏉ユ煡璇㈣繖浜涙枃浠剁洰褰曟槸錛屽線寰浼?xì)鍑虹?Permissiondenied."錛堢姝㈣闂級(jí)瀛楁牱銆?緋葷粺灝嗘棤娉曟煡璇㈠埌浣犳兂瑕佺殑鏂囦歡銆備負(fù)浜嗛伩鍏嶈繖鏍風(fēng)殑閿欒錛屾垜浠彲鏄嬌鐢ㄨ漿縐婚敊璇彁紺虹殑鏂規(guī)硶灝濊瘯鐫鏌ユ壘鏂囦歡錛岃緭鍏?br>銆銆find / -name access_log 2>/dev/null
銆銆榪欎釜鏂規(guī)硶鏄妸鏌ユ壘閿欒鎻愮ず杞Щ鍒扮壒瀹氱殑鐩綍涓幓銆傜郴緇熸墽琛岃繖涓懡浠ゅ悗錛岄亣鍒伴敊璇殑淇℃伅灝辯洿鎺ヨ緭閫佸埌stderrstream 2 涓紝access_log 2 灝辨槸琛ㄦ槑緋葷粺灝嗘妸閿欒淇℃伅杈撻佸埌stderrstream 2涓紝/dev/null鏄竴涓壒孌婄殑鏂囦歡錛岃〃鏄庣┖鐨勬垨鑰呴敊璇殑淇℃伅錛岃繖鏍鋒煡璇㈠埌鐨勯敊璇俊鎭皢琚漿縐諱簡錛屼笉浼?xì)鍐嶆槃·轰簡銆?br>
銆銆鍦╨inux緋葷粺鏌ユ壘鏂囦歡涔熶細(xì)閬囧埌榪欐牱涓涓疄闄呴棶棰樸傚鏋滄垜浠湪鏁翠釜紜洏錛?榪欎釜緋葷粺涓煡鎵炬煇涓枃浠跺氨瑕佽姳璐圭浉褰撻暱鐨勪竴孌墊椂闂達(dá)紝鐗瑰埆鏄ぇ鍨媗inux緋葷粺鍜屽閲忚緝澶х殑紜洏錛屾枃浠舵斁鍦ㄥ宓屽緢娣辯殑鐩綍涓殑鏃跺欍傚鏋滄垜浠煡閬撲簡榪欎釜鏂囦歡瀛樻斁鍦ㄦ煇涓ぇ鐨勭洰褰曚腑錛岄偅涔堝彧瑕佸湪榪欎釜鐩綍涓線涓嬫壘灝辮兘鑺傜渷寰堝鏃墮棿浜嗐備嬌鐢╢ind /etc -name httpd.conf 灝卞彲浠ヨВ鍐寵繖涓棶棰樸備笂闈㈢殑鍛戒護(hù)灝辨槸琛ㄧず鍦╡tc鐩綍涓煡璇ttpd.conf榪欎釜鏂囦歡銆?榪欓噷鍐嶈鏄庝竴涓?#8220;/ ”榪欎釜鍑芥暟絎﹀彿鐨勫惈涔夛紝濡傛灉杈撳叆 “find/ ”灝辨槸琛ㄧず瑕佹眰linux緋葷粺鍦ㄦ暣涓?ROOT鐩綍涓嬫煡鎵炬枃浠訛紝涔熷氨鏄湪鏁翠釜紜洏涓婃煡鎵炬枃浠訛紝鑰?#8220;find/etc”灝辨槸鍙湪 etc鐩綍涓嬫煡鎵炬枃浠躲傚洜涓?#8220;find/etc”琛ㄧず鍙湪etc鐩綍涓嬫煡鎵炬枃浠訛紝 鎵浠ユ煡鎵劇殑閫熷害灝辯浉搴旇蹇緢澶氫簡銆?br>
鏍規(guī)嵁閮ㄥ垎鏂囦歡鍚嶆煡鎵炬柟娉曪細(xì)
銆銆榪欎釜鏂規(guī)硶鍜屽湪WINDOWS涓煡鎵懼凡鐭ョ殑鏂囦歡鍚嶆柟娉曟槸涓鏍風(fēng)殑銆備笉榪囧湪linux涓牴鎹儴鍒嗘枃浠跺悕鏌ユ壘鏂囦歡鐨勬柟娉曡姣斿湪WINDOWS涓殑鍚岀被鏌ユ壘鏂規(guī)硶瑕佸己澶у緱澶氥?渚嬪鎴戜滑鐭ラ亾鏌愪釜鏂囦歡鍖呭惈鏈塻rm榪?涓瓧姣嶏紝閭d箞瑕佹壘鍒扮郴緇熶腑鎵鏈夊寘鍚湁榪?涓瓧姣嶇殑鏂囦歡鏄彲浠ュ疄鐜扮殑錛岃緭鍏ワ細(xì)
銆銆find /etc -name '*srm*'
銆銆榪欎釜鍛戒護(hù)琛ㄦ槑浜唋inux緋葷粺灝嗗湪/etc 鏁翠釜鐩綍涓煡鎵炬墍鏈夌殑鍖呭惈鏈塻rm榪?涓瓧姣嶇殑鏂囦歡錛屾瘮濡?absrmyz錛宼ibc.srm絳夌瓑絎﹀悎鏉′歡鐨勬枃浠墮兘鑳芥樉紺哄嚭鏉ャ傚鏋滀綘榪樼煡閬撹繖涓枃浠舵槸鐢?srm 榪?涓瓧姣嶆墦澶寸殑錛岄偅涔堟垜浠繕鍙互鐪佺暐鏈鍓嶉潰鐨勬槦鍙鳳紝鍛戒護(hù)濡備笅錛?br>銆銆find/etc -name 'srm*'
銆銆榪欐槸鍙湁鍍弒rmyz 榪欐牱鐨勬枃浠舵墠琚煡鎵懼嚭鏉ワ紝璞bsrmyz鎴栬卆bsrm榪欐牱鐨勬枃浠墮兘涓嶇鍚堣姹傦紝涓嶈鏄劇ず錛岃繖鏍鋒煡鎵炬枃浠剁殑鏁堢巼鍜屽彲闈犳у氨澶уぇ澧炲己浜嗐?br>
鏍規(guī)嵁鏂囦歡鐨勭壒寰佹煡璇㈡柟娉曪細(xì)
銆銆濡傛灉鍙煡閬撴煇涓枃浠剁殑澶у皬錛屼慨鏀規(guī)棩鏈熺瓑鐗瑰緛涔熷彲浠ヤ嬌鐢?find"鍛戒護(hù)鏌ユ壘鍑烘潵錛岃繖鍜?WINDOWS緋葷粺涓殑"鎼滅儲(chǔ)"鍔熻兘鏄熀鏈浉鍚岀殑銆傚湪寰蔣鐨?鎼滅儲(chǔ)"涓璚INDOWS涓殑"鎼滅儲(chǔ)鍔╃悊"浣垮緱鎼滅儲(chǔ)鏂囦歡鍜屾枃浠跺す銆佹墦鍗版満銆佺敤鎴蜂互鍙?qiáng)缃懢l滀腑鐨勫叾浠栬綆楁満鏇村姞瀹規(guī)槗銆傚畠鐢氳嚦浣垮湪 Internet 涓婃悳绱㈡洿鍔犲鏄撱?鎼滅儲(chǔ)鍔╃悊"榪樺寘鎷竴涓儲(chǔ)寮曟湇鍔★紝 璇ユ湇鍔$淮鎶や簡璁$畻鏈轟腑鎵鏈夋枃浠剁殑绱㈠紩錛屼嬌寰楁悳绱㈤熷害鏇村揩銆備嬌鐢?鎼滅儲(chǔ)鍔╃悊"鏃訛紝鐢ㄦ埛鍙互鎸囧畾澶氫釜鎼滅儲(chǔ)鏍囧噯銆備緥濡傦紝鐢ㄦ埛鍙互鎸夊悕縐般佺被鍨嬪強(qiáng)澶у皬鎼滅儲(chǔ)鏂囦歡鍜屾枃浠跺す銆傜敤鎴風(fēng)敋鑷沖彲浠ユ悳绱㈠寘鍚壒瀹氭枃鏈殑鏂囦歡銆傚鏋滅敤鎴鋒浣跨敤 Active Directory錛岃繖鏃惰繕鍙互鎼滅儲(chǔ)甯︽湁鐗瑰畾鍚嶇О鎴栦綅緗殑鎵撳嵃鏈恒?br>銆銆渚嬪鎴戜滑鐭ラ亾涓涓猯inux鏂囦歡澶у皬涓?,500 bytes錛岄偅涔堟垜浠彲鏄嬌鐢ㄥ涓嬪懡浠ゆ潵鏌ヨ find / -size 1500c錛屽瓧絎?c 琛ㄦ槑榪欎釜瑕佹煡鎵劇殑鏂囦歡鐨勫ぇ灝忔槸浠ytes涓哄崟浣嶃傚鏋滄垜浠繛榪欎釜鏂囦歡鐨勫叿浣撳ぇ灝忛兘涓嶇煡閬擄紝閭d箞鍦╨inux涓繕鍙互榪涜妯$硦鏌ユ壘鏂瑰紡鏉ヨВ鍐熾?渚嬪鎴戜滑杈撳叆find/ -size +10000000c 榪欎釜鍛戒護(hù)錛?鍒欐爣鏄庢垜浠寚瀹氱郴緇熷湪鏍圭洰褰曚腑鏌ユ壘鍑哄ぇ浜?0000000瀛楄妭鐨勬枃浠跺茍鏄劇ず鍑烘潵銆傚懡浠や腑鐨?#8220;錛?#8221;鏄〃紺鴻姹傜郴緇熷彧鍒楀嚭澶т簬鎸囧畾澶у皬鐨勬枃浠訛紝鑰屼嬌鐢?#8220;-”鍒欒〃紺鴻姹傜郴緇熷垪鍑哄皬浜庢寚瀹氬ぇ灝忕殑鏂囦歡銆備笅闈㈢殑鍒楄〃灝辨槸鍦╨inux浣跨敤涓嶅悓"find"鍛戒護(hù)鍚庣郴緇熸墍瑕佷綔鍑虹殑鏌ユ壘鍔ㄤ綔錛?浠庝腑鎴戜滑寰堝鏄撶湅鍑哄湪linux涓嬌鐢?find" 鍛戒護(hù)鐨勬柟寮忔槸寰堝鐨勶紝"find"鍛戒護(hù)鏌ユ壘鏂囦歡鍙鐏墊椿搴旂敤錛?涓濇涓嶅繀鍦╓INDOWS涓煡鎵捐兘鍔涘樊銆?br>銆銆find / -amin -10 # 鏌ユ壘鍦ㄧ郴緇熶腑鏈鍚?0鍒嗛挓璁塊棶鐨勬枃浠?br>銆銆find / -atime -2 # 鏌ユ壘鍦ㄧ郴緇熶腑鏈鍚?8灝忔椂璁塊棶鐨勬枃浠?br>銆銆find / -empty # 鏌ユ壘鍦ㄧ郴緇熶腑涓虹┖鐨勬枃浠舵垨鑰呮枃浠跺す
銆銆find / -group cat # 鏌ユ壘鍦ㄧ郴緇熶腑灞炰簬 groupcat鐨勬枃浠?br>銆銆find / -mmin -5 # 鏌ユ壘鍦ㄧ郴緇熶腑鏈鍚?鍒嗛挓閲屼慨鏀硅繃鐨勬枃浠?br>銆銆find / -mtime -1 #鏌ユ壘鍦ㄧ郴緇熶腑鏈鍚?4灝忔椂閲屼慨鏀硅繃鐨勬枃浠?br>銆銆find / -nouser #鏌ユ壘鍦ㄧ郴緇熶腑灞炰簬浣滃簾鐢ㄦ埛鐨勬枃浠?br>銆銆find / -user fred #鏌ユ壘鍦ㄧ郴緇熶腑灞炰簬FRED榪欎釜鐢ㄦ埛鐨勬枃浠?br>銆銆涓嬮潰鐨勫垪琛ㄥ氨鏄find鍛戒護(hù)鎵鍙互鎸囧畾鏂囦歡鐨勭壒寰佽繘琛屾煡鎵劇殑閮ㄥ垎鏉′歡銆傚湪榪欓噷騫舵病鏈夊垪涓炬墍鏈夌殑鏌ユ壘鏉′歡錛屽弬鑰冩湁鍏砽inux鏈夊叧涔︾睄鍙互鐭ラ亾鎵鏈塮ind鍛戒護(hù)鐨勬煡鎵懼嚱鏁般?br>-amin n
鏌ユ壘緋葷粺涓渶鍚嶯鍒嗛挓璁塊棶鐨勬枃浠?br>-atime n
鏌ユ壘緋葷粺涓渶鍚巒*24灝忔椂璁塊棶鐨勬枃浠?br>-cmin n
鏌ユ壘緋葷粺涓渶鍚嶯鍒嗛挓琚敼鍙樼姸鎬佺殑鏂囦歡
-ctime n
鏌ユ壘緋葷粺涓渶鍚巒*24灝忔椂琚敼鍙樼姸鎬佺殑鏂囦歡
-empty
鏌ユ壘緋葷粺涓┖鐧界殑鏂囦歡錛屾垨絀虹櫧鐨勬枃浠剁洰褰曪紝鎴栫洰褰曚腑娌℃湁瀛愮洰褰曠殑鏂囦歡澶?br>-false
鏌ユ壘緋葷粺涓繪槸閿欒鐨勬枃浠?br>-fstype type
鏌ユ壘緋葷粺涓瓨鍦ㄤ簬鎸囧畾鏂囦歡緋葷粺鐨勬枃浠訛紝渚嬪錛歟xt2
-gid n
鏌ユ壘緋葷粺涓枃浠舵暟瀛楃粍 ID 涓?n鐨勬枃浠?br>-group gname
鏌ユ壘緋葷粺涓枃浠跺睘浜巊nam鏂囦歡緇勶紝騫朵笖鎸囧畾緇勫拰ID鐨勬枃浠?br>

Find鍛戒護(hù)鐨勬帶鍒墮夐」璇存槑錛?br>Find鍛戒護(hù)涔熸彁渚涚粰鐢ㄦ埛涓浜涚壒鏈夌殑閫夐」鏉ユ帶鍒舵煡鎵炬搷浣溿備笅琛ㄥ氨鏄垜浠葷粨鍑虹殑鏈鍩烘湰錛屾渶甯哥敤鐨刦ind鍛戒護(hù)鐨勬帶鍒墮夐」鍙?qiáng)鍏剁敤娉曘?br>閫夐」
鐢ㄩ旀弿榪?br>-daystart
.嫻嬭瘯緋葷粺浠庝粖澶╁紑濮?4灝忔椂浠ュ唴鐨勬枃浠訛紝鐢ㄦ硶綾諱技-amin
-depth
浣跨敤娣卞害綰у埆鐨勬煡鎵捐繃紼嬫柟寮?鍦ㄦ煇灞傛寚瀹氱洰褰曚腑浼樺厛鏌ユ壘鏂囦歡鍐呭
-follow
閬靛驚閫氶厤絎﹂摼鎺ユ柟寮忔煡鎵? 鍙﹀錛屼篃鍙拷鐣ラ氶厤絎﹂摼鎺ユ柟寮忔煡璇?br>-help
鏄劇ず鍛戒護(hù)鎽樿
-maxdepth levels
鍦ㄦ煇涓眰嬈$殑鐩綍涓寜鐓ч掑噺鏂規(guī)硶鏌ユ壘
-mount
涓嶅湪鏂囦歡緋葷粺鐩綍涓煡鎵撅紝 鐢ㄦ硶綾諱技 -xdev.
-noleaf
紱佹鍦ㄩ潪UNUX鏂囦歡緋葷粺錛孧S-DOS緋葷粺錛孋D-ROM鏂囦歡緋葷粺涓繘琛屾渶浼樺寲鏌ユ壘
-version
鎵撳嵃鐗堟湰鏁板瓧

浣跨敤-follow閫夐」鍚庯紝find鍛戒護(hù)鍒欓伒寰氶厤絎﹂摼鎺ユ柟寮忚繘琛屾煡鎵撅紝闄ら潪浣犳寚瀹氳繖涓夐」錛屽惁鍒欎竴鑸儏鍐典笅find鍛戒護(hù)灝嗗拷鐣ラ氶厤絎﹂摼鎺ユ柟寮忚繘琛屾枃浠舵煡鎵俱?br>
-maxdepth閫夐」鐨勪綔鐢ㄥ氨鏄檺鍒秄ind鍛戒護(hù)鍦ㄧ洰褰曚腑鎸夌収閫掑噺鏂瑰紡鏌ユ壘鏂囦歡鐨勬椂鍊欐悳绱㈡枃浠惰秴榪囨煇涓駭鍒垨鑰呮悳绱㈣繃澶氱殑鐩綍錛岃繖鏍峰鑷存煡鎵鵑熷害鍙樻參錛屾煡鎵捐姳璐圭殑鏃墮棿榪囧銆備緥濡傦紝鎴戜滑瑕佸湪褰撳墠(.)鐩綍鎶宸у瓙鐩綍涓煡鎵句竴涓悕鍙玣red鐨勬枃浠訛紝鎴戜滑鍙互浣跨敤濡備笅鍛戒護(hù)
find . -maxdepth 2 -name fred

鍋囧榪欎釜fred鏂囦歡鍦?/sub1/fred鐩綍涓紝閭d箞榪欎釜鍛戒護(hù)灝變細(xì)鐩存帴瀹氫綅榪欎釜鏂囦歡錛屾煡鎵懼緢瀹規(guī)槗鎴愬姛銆傚亣濡傦紝榪欎釜鏂囦歡鍦? /sub1/sub2/fred鐩綍涓紝閭d箞榪欎釜鍛戒護(hù)灝辨棤娉曟煡鎵懼埌銆傚洜涓哄墠闈㈠凡緇忕粰find鍛戒護(hù)鍦ㄧ洰褰曚腑鏈澶х殑鏌ヨ鐩綍綰у埆涓?錛屽彧鑳芥煡鎵?灞傜洰褰曚笅鐨勬枃浠躲傝繖鏍峰仛鐨勭洰鐨勫氨鏄負(fù)浜嗚find鍛戒護(hù)鏇村姞綺劇‘鐨勫畾浣嶆枃浠訛紝濡傛灉浣犲凡緇忕煡閬撲簡鏌愪釜鏂囦歡澶ф鎵鍦ㄧ殑鏂囦歡鐩綍綰ф暟錛岄偅涔堝姞鍏?maxdepth n 灝卞緢蹇殑鑳藉湪鎸囧畾鐩綍涓煡鎵炬垚鍔熴?br>
浣跨敤娣峰悎鏌ユ壘鏂瑰紡鏌ユ壘鏂囦歡
find鍛戒護(hù)鍙互浣跨敤娣峰悎鏌ユ壘鐨勬柟娉曪紝渚嬪鎴戜滑鎯沖湪/tmp鐩綍涓煡鎵懼ぇ浜?00000000瀛楄妭騫朵笖鍦?8灝忔椂鍐呬慨鏀圭殑鏌愪釜鏂囦歡錛屾垜浠彲浠ヤ嬌鐢?and 鏉ユ妸涓や釜鏌ユ壘閫夐」閾炬帴璧鋒潵緇勫悎鎴愪竴涓販鍚堢殑鏌ユ壘鏂瑰紡銆?br>find /tmp -size +10000000c -and -mtime +2

瀛︿範(fàn)榪囪綆楁満璇█鐨勬湅鍙嬮兘鐭ラ亾錛屽湪璁$畻鏈鴻璦閲岋紝浣跨敤and ,or 鍒嗗埆琛ㄧず“涓?#8221;鍜?#8220;鎴?#8221;鐨勫叧緋匯傚湪linux緋葷粺鐨勬煡鎵懼懡浠や腑涓鏍烽氱敤銆?br>榪樻湁榪欐牱鐨勪緥瀛愶紝
find / -user fred -or -user george

鎴戜滑鍙互瑙i噴涓哄湪/tmp鐩綍涓煡鎵懼睘浜巉red鎴栬単eorge榪欎袱涓敤鎴風(fēng)殑鏂囦歡銆?br>鍦╢ind鍛戒護(hù)涓繕鍙互浣跨敤“闈?#8221;鐨勫叧緋繪潵鏌ユ壘鏂囦歡錛屽鏋滄垜浠鍦?tmp鐩綍涓煡鎵炬墍鏈変笉灞炰簬panda鐨勬枃浠訛紝浣跨敤涓涓畝鍗曠殑
find /tmp ! -user panda
鍛戒護(hù)灝卞彲浠ヨВ鍐充簡銆傚緢綆鍗曘?br>
鏌ユ壘騫舵樉紺烘枃浠剁殑鏂規(guī)硶
鏌ユ壘鍒版煇涓枃浠舵槸鎴戜滑鐨勭洰鐨勶紝鎴戜滑鏇存兂鐭ラ亾鏌ユ壘鍒扮殑鏂囦歡鐨勮緇嗕俊鎭拰灞炴э紝濡傛灉鎴戜滑閲囧彇鐜版煡鎵炬枃浠訛紝鍦ㄤ嬌鐢↙S鍛戒護(hù)鏉ユ煡鐪嬫枃浠朵俊鎭槸鐩稿綋綣佺悙鐨勶紝鐜板湪鎴戜滑涔熷彲浠ユ妸榪欎袱涓懡浠ょ粨鍚堣搗鏉ヤ嬌鐢ㄣ?br>find / -name "httpd.conf" -ls

緋葷粺鏌ユ壘鍒癶ttpd.conf鏂囦歡鍚庣珛鍗沖湪灞忓箷涓婃樉紺篽ttpd.conf鏂囦歡淇℃伅銆?br>12063 34 -rw-r--r-- 1 root root 33545 Dec 30 15:36 /etc/httpd/conf/httpd.conf

涓嬮潰鐨勮〃鏍煎氨鏄竴浜涘父鐢ㄧ殑鏌ユ壘鏂囦歡騫舵樉紺烘枃浠朵俊鎭殑鍙傛暟鍜屼嬌鐢ㄦ柟娉?br>閫夐」
鐢ㄩ旀弿榪?br>-exec command;
鏌ユ壘騫舵墽琛屽懡浠?br>-fprint file
鎵撳嵃鏂囦歡瀹屾暣鏂囦歡鍚?br>-fprint0 file
鎵撳嵃鏂囦歡瀹屾暣鏂囦歡鍚嶅寘鎷┖鐨勬枃浠?br>-fprintf file format
鎵撳嵃鏂囦歡鏍煎紡
-ok command;
緇欑敤鎴峰懡浠ゆ墽琛屾搷浣滐紝鏍規(guī)嵁鐢ㄦ埛鐨刌 紜杈撳叆鎵ц
-printf format
鎵撳嵃鏂囦歡鏍煎紡
-ls
鎵撳嵃鍚岀鏂囦歡鏍煎紡鐨勬枃浠?br>
鎬葷粨錛氬埌榪欓噷涓烘鎴戜滑宸茬粡瀛︿範(fàn)浜嗚繖鍚嶅鍏充簬find鍛戒護(hù)鐨勪嬌鐢ㄦ柟娉曪紝涔熷垪鍑轟簡寰堝甯哥敤鐨刦ind鍛戒護(hù)鐨勯夐」錛屽鏋滄垜浠兘鐔熺粌鎺屾彙鍦╨inux涓璮ind鍛戒護(hù)鐨勪嬌鐢ㄦ柟娉曪紝閭d箞鍦↙inux涓煡鎵炬枃浠朵篃涓嶆槸涓浠跺洶闅劇殑浜嬫儏銆?br>
杞嚜錛?br>http://www.lupaworld.com/94908/viewspace-109380.html

chatler 2009-11-10 22:32 鍙戣〃璇勮
]]>
linux shell 灝忕墖孌?/title><link>http://www.shnenglu.com/beautykingdom/archive/2009/11/08/100395.html</link><dc:creator>chatler</dc:creator><author>chatler</author><pubDate>Sun, 08 Nov 2009 03:19:00 GMT</pubDate><guid>http://www.shnenglu.com/beautykingdom/archive/2009/11/08/100395.html</guid><wfw:comment>http://www.shnenglu.com/beautykingdom/comments/100395.html</wfw:comment><comments>http://www.shnenglu.com/beautykingdom/archive/2009/11/08/100395.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/beautykingdom/comments/commentRss/100395.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/beautykingdom/services/trackbacks/100395.html</trackback:ping><description><![CDATA[1.<span style="color: #000000; font-size: 16px;">鍏充簬鏂囦歡瀵規(guī)瘮鐨凷cripts<br>diff -b -r $Dir1 $Dir2 | grep -v "Common subdirectories" | grep -e "^diff" -e "^Binary files" -e "^Only"<br>diff:<br> -b  --ignore-space-change <br>              Ignore changes in the amount of white space.<br> -r  --recursive<br>              Recursively compare any subdirectories found.<br>grep:<br> -v, --invert-match<br>              Invert the sense of matching, to select non-matching lines.<br> -e PATTERN, --regexp=PATTERN<br>              Use PATTERN as the pattern; useful to protect patterns beginning with -.<br><br>2. grep鐨勬鍒欒〃杈懼紡錛?br>姣斿,瑕佸尮閰嶄袱涓崟瑭?  word  exec<br>grep -E "word|execl"  鏄彲浠ュ緱鍒版紜粨鏋滅殑<br>AND:<br>grep -E "word&execl"  鍜岄鏈熺殑涓嶄竴鏍?br>grep -E 'excel.*word|work.*excel'鏄彲浠ョ殑銆?br>娉細(xì)姝e垯琛ㄨ揪寮忚窡閫昏緫鎿嶄綔絎︽槸淇╂蹇?錛?鍙湁awk鏀寔||錛?amp;&榪欐牱鐨勬搷浣滐紝 <br>鐢╣rep鐨勮瘽錛?涔熷彧鏀寔|鑰屼笉鏀寔&銆?br>姝e垯鍩虹錛?<br>$cat rfile<br>abcd<br>abc<br>ab<br><a href="mailto:beauty@linux-gznp:~/code/shell/test">$</a>grep -E 'abc.*' rfile<br>abcd<br>abc<br><a href="mailto:beauty@linux-gznp:~/code/shell/test">$</a>grep -E 'abc*' rfile<br>abcd<br>abc<br>ab<br><br>3. <span style="color: #000000; font-size: 16px;">濡備綍鑾峰緱涓涓枃浠剁殑鍓峃鍒楁垨鏄叾涓殑鍑犲垪錛?/span><br>cut -f-2 -d ' ' filename<br>-f field   -d dilimeter<br><br>4.鍒犻櫎鏌愪釜鐩綍涓嬩笉鏄互.sh .h .c緇撳熬鐨勬枃浠?br></span>find . -type f | awk '!/\.sh$/ && !/\.[c|h]$/{print $1}' | xargs rm <br><span style="color: #000000; font-size: 16px;"><br>5.鍘熸潵鐢ㄥ啋鍙峰垎闅旂殑錛岄夊嚭鍑犲垪鏉ワ紝鏀規(guī)垚鐢ㄧ珫鏉犲垎闅旂殑<br>cat /etc/passwd | awk -F: '{print $1"|"$2"|"$3"|"$4}'<br><br>6.鍘繪帀鏂囦歡涓殑瀛楃錛屾瘮濡傚幓鎺変粠win涓婁紶鍒癓inux涓婄殑鏂囦歡鏃朵細(xì)鏈変釜^M,鑻ュ幓鎺変粬鍙互鐢細(xì)<br></span>tr -d '\015'  < filename<br><span style="color: #000000; font-size: 16px;"><br>7.鐩綍鏍?wèi)鏄?br>A/B/C/<br>A/B/C/ccc/...<br>A/B/C/bbb/...<br>A/B/C/D/aaa/...<br>鎴戠幇鍦ㄥ湪A涓嬶紝鎴戣鏌ユ壘html鍚庣紑鏂囦歡錛?浣嗘槸涓嶆兂瀹冨湪鍖呭惈aaa||bbb||ccc鐨勭洰褰曚笅鏌ユ壘.<br>find . \( -name Input -o -name Output -o -name Current \) -type d -prune -o -name "*.htm" -print<br>榪欎釜鍛戒護(hù)涓殑鐩綍鎺掗櫎娌℃湁璧蜂綔鐢紝涓轟粈涔堝棷錛熷緢鍥版儜銆?br>find . -wholename './A/B' -prune -o -print<br>榪欎釜鍛戒護(hù)涔熶笉璧蜂綔鐢紝鏇村洶鎯戜簡錛屼笉璁holename<br><br></span>8. 寰幆璇繪枃浠剁殑鍛戒護(hù) <br>for x in `seq 1 12`; do cat $x|awk '{print $9}' && sleep 3;done <br> <div>seq 鏄疞inux 涓竴鍊嬮爯璦殑澶栭儴鍛戒護(hù),涓鑸敤浣滀竴鍫嗘暩瀛楃殑綈″寲瀵硶錛屽<br>seq 1 10<br>渚挎渻鍑虹従 <br>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10 <br>瀹冮倓鏈変笁鍊嬮伕闋?br>  -f, --format=FORMAT      use printf style floating-point FORMAT (default: %g)<br>  -s, --separator=STRING   use STRING to separate numbers (default: \n)<br>  -w, --equal-width        equalize width by padding with leading zeroes</div> <div>-f 鏈甯哥敤 , 渚嬪涓嬈″埗鍋?10 鍊嬪悕 dir001 , dir002 .. dir010 鐨勭洰閷勶紝瀹冧究寰堟湁鐢ㄩ?鎴戝戝彲浠ラ欐ǎ</div> <div>涓嬩竴鍊嬪懡浠や究鍙簡<br>seq -f 'dir%03g' 1 10 | xargs mkdir<br>鎴?br>mkdir $(seq -f 'dir%03g' 1 10)<br>瀹冪敤鐨勬槸 printf 鐨勬牸寮?, %03g' 浠h〃浠ヤ笁浣嶆誕榛炴暩,浠ユ鏂規(guī)硶錛?/div> <div>濡傜敤bash3 鐨?printf涔熷彲浣滅偤絳夊児鍛戒護(hù)<br>printf 'dir%03d\n' {1..10} | xargs mkdir  鎴?mkdir `printf 'dir%03d ' {1..10}`</div> <div>awk 鐣剁劧涔熷彲浠?br>awk 'BEGIN { while (num < 10 ) printf "dir%03d\n", ++num ; exit}' | xargs mkdir</div> <div>閫欐ǎ鏈冩瘮瀵竴鍊嬭叧鏈揩, 涓嶅繀瀵垚<br>for dir in 001 002 003 004 005 006 007 008 009 010<br>do<br>    mkdir dir${dir}<br>done<br><br>9.鎵懼嚭褰撳墠鐩綍涓嬪ぇ浜?00M鐨勭洰褰?br>find . -maxdepth 1 -type d | xargs du -sh | grep -v '\.$'| grep -P '^\S+M\t' | awk -FM '$1>1'<br></div> <br> <img src ="http://www.shnenglu.com/beautykingdom/aggbug/100395.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/beautykingdom/" target="_blank">chatler</a> 2009-11-08 11:19 <a href="http://www.shnenglu.com/beautykingdom/archive/2009/11/08/100395.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>linux 涓?scp 鐨勭敤娉?lt;杞?gt;http://www.shnenglu.com/beautykingdom/archive/2009/11/02/99965.htmlchatlerchatlerMon, 02 Nov 2009 02:25:00 GMThttp://www.shnenglu.com/beautykingdom/archive/2009/11/02/99965.htmlhttp://www.shnenglu.com/beautykingdom/comments/99965.htmlhttp://www.shnenglu.com/beautykingdom/archive/2009/11/02/99965.html#Feedback0http://www.shnenglu.com/beautykingdom/comments/commentRss/99965.htmlhttp://www.shnenglu.com/beautykingdom/services/trackbacks/99965.html

chatler 2009-11-02 10:25 鍙戣〃璇勮
]]>
BASH 涓殑瀛楃涓插鐞?/title><link>http://www.shnenglu.com/beautykingdom/archive/2009/10/05/97893.html</link><dc:creator>chatler</dc:creator><author>chatler</author><pubDate>Mon, 05 Oct 2009 10:07:00 GMT</pubDate><guid>http://www.shnenglu.com/beautykingdom/archive/2009/10/05/97893.html</guid><wfw:comment>http://www.shnenglu.com/beautykingdom/comments/97893.html</wfw:comment><comments>http://www.shnenglu.com/beautykingdom/archive/2009/10/05/97893.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/beautykingdom/comments/commentRss/97893.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/beautykingdom/services/trackbacks/97893.html</trackback:ping><description><![CDATA[寰楀埌闀垮害<br><br> <div id="hvzpftn" class=msgbody> <div id="hvzpftn" class=msgheader> <div id="hvzpftn" class=right><a class=smalltxt onclick="copycode($('code0'));" ><u><font color=#0000ff>[Copy to clipboard]</font></u></a> <a class=smalltxt onclick="toggle_collapse('code0');" ><u><font color=#0000ff>[ <span id=code0_symbol>-</span> ]</font></u></a></div> CODE:</div> <div class="hvzpftn" id=code0 class=msgborder   style="font-family:Fixdays">%x="abcd"<br>#鏂規(guī)硶涓<br>%expr length $x<br>4<br># 鏂規(guī)硶浜?br>%echo ${#x}<br>4<br># 鏂規(guī)硶涓?br>%expr "$x" : ".*"<br>4<br># expr 鐨勫府鍔?br># STRING : REGEXP   anchored pattern match of REGEXP in STRING</div> </div> <br>鏌ユ壘瀛愪覆<br><br> <div id="hvzpftn" class=msgbody> <div id="hvzpftn" class=msgheader> <div id="hvzpftn" class=right><a class=smalltxt onclick="copycode($('code1'));" ><u><font color=#0000ff>[Copy to clipboard]</font></u></a> <a class=smalltxt onclick="toggle_collapse('code1');" ><u><font color=#0000ff>[ <span id=code1_symbol>-</span> ]</font></u></a></div> CODE:</div> <div class="hvzpftn" id=code1 class=msgborder   style="font-family:Fixdays">%expr index  $x "b"<br>2<br>%expr index  $x "a"<br>1<br>%expr index  $x "b"<br>2<br>%expr index  $x "c"<br>3<br>%expr index  $x "d"<br>4</div> </div> <br>寰楀埌瀛愬瓧絎︿覆<br><br> <div id="hvzpftn" class=msgbody> <div id="hvzpftn" class=msgheader> <div id="hvzpftn" class=right><a class=smalltxt onclick="copycode($('code2'));" ><u><font color=#0000ff>[Copy to clipboard]</font></u></a> <a class=smalltxt onclick="toggle_collapse('code2');" ><u><font color=#0000ff>[ <span id=code2_symbol>-</span> ]</font></u></a></div> CODE:</div> <div class="hvzpftn" id=code2 class=msgborder   style="font-family:Fixdays"># 鏂規(guī)硶涓<br># expr <string> startpos length<br>%expr substr "$x" 1 3<br>abc<br>%expr substr "$x" 1 5<br>abcd<br>%expr substr "$x" 2 5<br>bcd<br># 鏂規(guī)硶浜?br># ${x:pos:lenght}<br>%echo ${x:1}<br>bcd<br>%echo ${x:2}<br>cd<br>%echo ${x:0}<br>abcd<br>%echo ${x:0:2}<br>ab<br>%pos=1<br>%len=2<br>%echo ${x:$pos:$len}<br>bc</div> </div> <br>鍖歸厤姝e垯琛ㄨ揪寮?br><br> <div id="hvzpftn" class=msgbody> <div id="hvzpftn" class=msgheader> <div id="hvzpftn" class=right><a class=smalltxt onclick="copycode($('code3'));" ><u><font color=#0000ff>[Copy to clipboard]</font></u></a> <a class=smalltxt onclick="toggle_collapse('code3');" ><u><font color=#0000ff>[ <span id=code3_symbol>-</span> ]</font></u></a></div> CODE:</div> <div class="hvzpftn" id=code3 class=msgborder   style="font-family:Fixdays"># 鎵撳嵃鍖歸厤闀垮害<br>%expr match $x "."<br>1<br>%expr match $x "abc"<br>3<br>%expr match $x "bc"<br>0</div> </div> <br>瀛楃涓茬殑鎺愬ご鍘誨熬<br><br> <div id="hvzpftn" class=msgbody> <div id="hvzpftn" class=msgheader> <div id="hvzpftn" class=right><a class=smalltxt onclick="copycode($('code4'));" ><u><font color=#0000ff>[Copy to clipboard]</font></u></a> <a class=smalltxt onclick="toggle_collapse('code4');" ><u><font color=#0000ff>[ <span id=code4_symbol>-</span> ]</font></u></a></div> CODE:</div> <div class="hvzpftn" id=code4 class=msgborder   style="font-family:Fixdays">%x=aabbaarealwwvvww<br>%echo "${x%w*w}"<br>aabbaarealwwvv<br>%echo "${x%%w*w}"<br>aabbaareal<br>%echo "${x##a*a}"<br>lwwvvww<br>%echo "${x#a*a}"<br>bbaarealwwvvww</div> </div> <br>鍏朵腑 , # 琛ㄧず鎺愬ご錛?鍥犱負(fù)閿洏涓?# 鍦?$ 鐨勫乏闈€?br>鍏朵腑 , % 琛ㄧず%錛?nbsp; 鍥犱負(fù)閿洏涓?% 鍦?$ 鐨勫彸闈€?br>鍗曚釜鐨勮〃紺烘渶灝忓尮閰嶏紝鍙屼釜琛ㄧず鏈澶у尮閰嶃?br>涔熷氨鏄錛屽綋鍖歸厤鐨勬湁澶氱鏂規(guī)鐨勬椂鍊欙紝閫夋嫨鍖歸厤鐨勬渶澶ч暱搴﹁繕鏄渶灝忛暱搴︺?br><br>瀛楃涓茬殑鏇挎崲<br><br> <div id="hvzpftn" class=msgbody> <div id="hvzpftn" class=msgheader> <div id="hvzpftn" class=right><a class=smalltxt onclick="copycode($('code5'));" ><u><font color=#0000ff>[Copy to clipboard]</font></u></a> <a class=smalltxt onclick="toggle_collapse('code5');" ><u><font color=#0000ff>[ <span id=code5_symbol>-</span> ]</font></u></a></div> CODE:</div> <div class="hvzpftn" id=code5 class=msgborder   style="font-family:Fixdays">%x=abcdabcd<br>%echo ${x/a/b} # 鍙浛鎹竴涓?br>bbcdabcd<br>%echo ${x//a/b} # 鏇挎崲鎵鏈?br>bbcdbbcd</div> </div> <br>涓嶅彲浠ヤ嬌鐢?regexp 錛?鍙兘鐢?* ? 鐨勬枃浠舵墿灞曟柟寮忋?br><br>杞嚜錛?br><a >http://bbs.chinaunix.net/viewthread.php?tid=201843</a><br> <img src ="http://www.shnenglu.com/beautykingdom/aggbug/97893.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/beautykingdom/" target="_blank">chatler</a> 2009-10-05 18:07 <a href="http://www.shnenglu.com/beautykingdom/archive/2009/10/05/97893.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>shell瑙i噴鍣ㄩ棶棰?-鍛戒護(hù)涓嶅惉璇?http://www.shnenglu.com/beautykingdom/archive/2009/10/05/97877.htmlchatlerchatlerMon, 05 Oct 2009 03:05:00 GMThttp://www.shnenglu.com/beautykingdom/archive/2009/10/05/97877.htmlhttp://www.shnenglu.com/beautykingdom/comments/97877.htmlhttp://www.shnenglu.com/beautykingdom/archive/2009/10/05/97877.html#Feedback0http://www.shnenglu.com/beautykingdom/comments/commentRss/97877.htmlhttp://www.shnenglu.com/beautykingdom/services/trackbacks/97877.html  find /usr -type f -name string*
  浣犳湰鎰忎綘鎯蟲壘string.c .h闃?浠涔堜箣綾葷殑.灝辨槸*鏄綋閫氶厤絎︿簡.鍙槸濡傛灉浣犵殑褰撳墠璺緞鏈変釜string.c鏂囦歡鐨勮瘽,浣犲氨鐭ラ亾闂浜嗐?br>
[root@mip-123456 string]# ls
[root@mip-123456 string]# find /usr/src/linux-2.6.18/arch/ -type f -name string*
/usr/src/linux-2.6.18/arch/ppc/lib/string.S
/usr/src/linux-2.6.18/arch/ppc/boot/common/string.S
/usr/src/linux-2.6.18/arch/m68k/lib/string.c
/usr/src/linux-2.6.18/arch/cris/arch-v10/lib/string.c
/usr/src/linux-2.6.18/arch/cris/arch-v32/lib/string.c
/usr/src/linux-2.6.18/arch/s390/lib/string.c
/usr/src/linux-2.6.18/arch/powerpc/lib/string.S
/usr/src/linux-2.6.18/arch/powerpc/boot/string.h
/usr/src/linux-2.6.18/arch/powerpc/boot/string.S
[root@mip-123456 string]# touch string.h
[root@mip-123456 string]# find /usr/src/linux-2.6.18/arch/ -type f -name string*
/usr/src/linux-2.6.18/arch/powerpc/boot/string.h
[root@mip-123456 string]# find /usr/src/linux-2.6.18/arch/ -type f -name "string*"
/usr/src/linux-2.6.18/arch/ppc/lib/string.S
/usr/src/linux-2.6.18/arch/ppc/boot/common/string.S
/usr/src/linux-2.6.18/arch/m68k/lib/string.c
/usr/src/linux-2.6.18/arch/cris/arch-v10/lib/string.c
/usr/src/linux-2.6.18/arch/cris/arch-v32/lib/string.c
/usr/src/linux-2.6.18/arch/s390/lib/string.c
/usr/src/linux-2.6.18/arch/powerpc/lib/string.S
/usr/src/linux-2.6.18/arch/powerpc/boot/string.h
/usr/src/linux-2.6.18/arch/powerpc/boot/string.S
鑱槑鐨勪綘宸茬粡鐪嬪嚭闂浜嗐?br>
鐢變簬[0-9]榪欑鍖歸厤妯″紡鏄嚭鐜板湪鍛戒護(hù)鐨?argument浣嶇疆涓?鎵浠ョ敱shell璐熻矗瑙i噴(鎵浠ヤ弗鏍艱岃█, [0-9]鏄氶厤絎?鑰屼笉鏄鍒欒〃杈懼紡)銆傚shell鑰岃█,緇熼厤絎﹀彧瀵規(guī)枃浠跺悕鏈夋晥,涔熷氨鏄,褰搒hell閬囧埌鍑虹幇鍦ㄦ煇涓懡浠よ鐨刟rgument浣嶇疆涓婄殑閫氶厤絎︽椂,瀹冨厛瑕佸幓鍙傛暟鎵鎸囧畾鐨勭洰褰曚笅鎼滅儲(chǔ)鎵鏈夊凡緇忓瓨鍦ㄧ殑鏂囦歡,鎵鏈夋枃浠跺悕瀛椾笌涔嬪尮閰嶇殑閮借鏇挎崲鍒癮rgument浣嶇疆涓?榪欎笌寰堝鏍囧噯鐨勫懡浠ゆ敮鎸佸涓枃浠跺悕鍙傛暟鏄竴鑷寸殑),鐒跺悗璋冪敤璇ュ懡浠ゆ墽琛?
 
    瀵逛簬mkdir ./dir[0-9]鑰岃█,shell鏃犳硶鍦ㄥ綋鍓嶇洰褰曚笅鎵懼埌涓庝箣鍖歸厤鐨勬枃浠跺悕,鎵浠ュ氨涓嶆浛鎹?dir[0-9]鎸夌収鍘熸牱浼犵粰mkdir紼嬪簭,鎵浠kdir灝卞緩绔嬩簡涓涓悕瀛椾負(fù)dir[0-9]鐨勭洰褰?
 
    鎬諱箣涓鍙ヨ瘽,閫氶厤絎?鍑虹幇鍦╝rgument浣嶇疆)鐢眘hell璐熻矗瑙i噴(涓庣幇鏈夌殑鏂囦歡鍚嶅尮閰?,涓庡叿浣撶殑鍛戒護(hù)(ls,rm,mkdir)鏃犲叧.姝e垯琛ㄨ揪寮?鍑虹幇鍦╫ption浣嶇疆涓?鐢卞叿浣撶殑搴旂敤紼嬪簭瑙i噴(grep,sed,awk),涓巗hell鏃犲叧銆?/div>
 
涓涓瘯楠岀殑渚嬪瓙鏄?
    濡傛灉褰撳墠鐩綍涓嬪凡緇忔湁涓涓悕涓篸ir5鐨勭洰褰?鎵ц mkdir ./dir[0-9]鍚?鍑虹幇閿欒鎻愮ず:mkdir: cannot create directory `./dir5': File exists 榪欏氨璇佹槑浜?鍥犱負(fù)瀛樺湪dir5,鎵浠hell鍖歸厤鍒頒簡dir5,鎵浠ョ湡姝f墽琛岀殑鏄痬kdir ./dir5

seq -f 'dir%01g' 0 9 | xargs mkdir 
[victor@localhost tmp]$ ls
[victor@localhost tmp]$ seq -f 'dir%01g' 0 9 | xargs mkdir
[victor@localhost tmp]$ ls
dir0  dir1  dir2  dir3  dir4  dir5  dir6  dir7  dir8  dir9
 
seq 鏄疞inux 涓竴鍊嬮爯璦殑澶栭儴鍛戒護(hù),涓鑸敤浣滀竴鍫嗘暩瀛楃殑綈″寲瀵硶錛屽
seq 1 10
渚挎渻鍑虹従
1
2
3
4
5
6
7
8
9
10
瀹冮倓鏈変笁鍊嬮伕闋?br>  -f, --format=FORMAT      use printf style floating-point FORMAT (default: %g)
  -s, --separator=STRING   use STRING to separate numbers (default: \n)
  -w, --equal-width        equalize width by padding with leading zeroes
-f 鏈甯哥敤 , 渚嬪涓嬈″埗鍋?10 鍊嬪悕 dir001 , dir002 .. dir010 鐨勭洰閷勶紝瀹冧究寰堟湁鐢ㄩ?鎴戝戝彲浠ラ欐ǎ
涓嬩竴鍊嬪懡浠や究鍙簡
seq -f 'dir%03g' 1 10 | xargs mkdir
鎴?br>mkdir $(seq -f 'dir%03g' 1 10)
瀹冪敤鐨勬槸 printf 鐨勬牸寮?, %03g' 浠h〃浠ヤ笁浣嶆誕榛炴暩,浠ユ鏂規(guī)硶錛?/div>
濡傜敤bash3 鐨?printf涔熷彲浣滅偤絳夊児鍛戒護(hù)
printf 'dir%03d\n' {1..10} | xargs mkdir  鎴?mkdir `printf 'dir%03d ' {1..10}`
awk 鐣剁劧涔熷彲浠?br>awk 'BEGIN { while (num < 10 ) printf "dir%03d\n", ++num ; exit}' | xargs mkdir
閫欐ǎ鏈冩瘮瀵竴鍊嬭叧鏈揩, 涓嶅繀瀵垚
for dir in 001 002 003 004 005 006 007 008 009 010
do
    mkdir dir${dir}
done
杞嚜錛?br>http://blog.chinaunix.net/u2/76292/showart_1931660.html




chatler 2009-10-05 11:05 鍙戣〃璇勮
]]>date鍛戒護(hù)浣跨敤http://www.shnenglu.com/beautykingdom/archive/2009/06/19/88132.htmlchatlerchatlerFri, 19 Jun 2009 15:17:00 GMThttp://www.shnenglu.com/beautykingdom/archive/2009/06/19/88132.htmlhttp://www.shnenglu.com/beautykingdom/comments/88132.htmlhttp://www.shnenglu.com/beautykingdom/archive/2009/06/19/88132.html#Feedback0http://www.shnenglu.com/beautykingdom/comments/commentRss/88132.htmlhttp://www.shnenglu.com/beautykingdom/services/trackbacks/88132.html   (1)鍙互鐢╠ate 061923122009錛屽嵆鏈堟棩鏃跺垎騫?br>   (2)瑕佹槸鎯充嬌鐢ㄦ洿璇︾粏鐨勮緗紝鍙互鐢╠ate -s '2009-06-19 23:09:00',榪欐牱鍙互璁劇疆鍒扮銆?

chatler 2009-06-19 23:17 鍙戣〃璇勮
]]>
shell鍗佷笁闂?lt;杞?gt;http://www.shnenglu.com/beautykingdom/archive/2009/06/02/86507.htmlchatlerchatlerTue, 02 Jun 2009 01:03:00 GMThttp://www.shnenglu.com/beautykingdom/archive/2009/06/02/86507.htmlhttp://www.shnenglu.com/beautykingdom/comments/86507.htmlhttp://www.shnenglu.com/beautykingdom/archive/2009/06/02/86507.html#Feedback0http://www.shnenglu.com/beautykingdom/comments/commentRss/86507.htmlhttp://www.shnenglu.com/beautykingdom/services/trackbacks/86507.html闃呰鍏ㄦ枃

chatler 2009-06-02 09:03 鍙戣〃璇勮
]]>
Linux Shell Learning Notes ---- Stringhttp://www.shnenglu.com/beautykingdom/archive/2009/06/01/86393.htmlchatlerchatlerMon, 01 Jun 2009 06:08:00 GMThttp://www.shnenglu.com/beautykingdom/archive/2009/06/01/86393.htmlhttp://www.shnenglu.com/beautykingdom/comments/86393.htmlhttp://www.shnenglu.com/beautykingdom/archive/2009/06/01/86393.html#Feedback0http://www.shnenglu.com/beautykingdom/comments/commentRss/86393.htmlhttp://www.shnenglu.com/beautykingdom/services/trackbacks/86393.htmlhttp://hi.baidu.com/wangyuquansky/blog/item/46863716e253e756f2de322a.html

1.瀛楃涓茬殑鎿嶄綔錛?br>   1.1 瀛楃涓茬殑綾誨瀷
 / 鏁板瓧鎴栬呮暟瀛楃粍鍚堬紙鑳藉榪斿洖緇撴灉錛屽嵆紼嬪簭閫鍑虹姸鎬佹槸0錛岃鏄庡睘浜庤繖縐嶇被鍨嬶紝鍙嶄箣涓嶇劧錛?br>$ i=5;j=9423483247234;
$ echo $i | grep [0-9]*
5
$ echo $j | grep [0-9]*
9423483247234
$ echo $j | grep [0-9]* >/dev/null
$ echo $?
0
// 瀛楃緇勫悎錛堝皬鍐欏瓧姣嶃佸ぇ鍐欏瓧姣嶃佷袱鑰呯殑緇勫悎錛?br>$ c="A"; d="fwefewjuew"; e="fewfEFWefwefe"
$ echo $c | grep [A-Z]
A
$ echo $d | grep "[a-z]*"
fwefewjuew
$ echo $e | grep "[a-zA-Z]*"
fewfEFWefwefe
// 瀛楁瘝鍜屾暟瀛楃殑緇勫悎
$ ic="432fwfwefeFWEwefwef"
$ echo $ic | grep "[0-9a-zA-Z]*"
432fwfwefeFWEwefwef
// 絀烘牸鎴栬匱ab閿瓑
$ echo " " | grep " "

$ echo -e "\t" | grep "[[:space:]]" #[[:space:]]浼?xì)鍚屾椂鍖归厤绌烘牸鍜孴AB閿?br>
$ echo -e " \t" | grep "[[:space:]]"

$ echo -e "\t" | grep "<tab>" #<tab>涓哄湪閿洏涓婃寜涓婽AB閿紝鑰屼笉鏄瓧絎?lt;tab>
// 鍖歸厤閭歡鍦板潃
$ echo "test2007@lzu.cn" | grep "[0-9a-zA-Z\.]*@[0-9a-zA-Z\.]"
test2007@lzu.cn
// 鍖歸厤URL鍦板潃(浠ttp閾炬帴涓轟緥錛?br>$ echo "http://news.lzu.edu.cn/article.jsp?newsid=10135" | grep "http://[0-9a-zA-Z\./=?]*"
http://news.lzu.edu.cn/article.jsp?newsid=10135

璇存槑錛?br>[1] /dev/null鍜?dev/zero鏄潪甯告湁瓚g殑涓や釜璁懼錛屽畠浠兘鐘瑰涓涓粦媧烇紝浠涔堜笢瑗挎帀榪涘幓閮戒細(xì)娑堝け孌嗗敖錛涘悗鑰呭垯鏄竴涓兘婧愮錛屼綘鎬昏兘浠庨偅閲屽彇鍒?錛岀洿鍒頒綘閫鍑恒備袱鑰呯殑閮ㄥ垎鐢ㄦ硶瑙侊細(xì)鍏充簬zero鍙?qiáng)NULL璁懼鐨勪竴浜涢棶棰?/u>
[2] [[:space:]]鏄痝rep鐢ㄤ簬鍖歸厤絀烘牸鎴栬匱AB閿被鍨嬪瓧絎︿覆鐨勪竴縐嶆爣璁幫紝鍏朵粬綾諱技鐨勬爣璁拌鏌ョ湅grep鐨勫府鍔?man grep銆?br>[3] 涓婇潰閮芥槸鐢╣rep鏉ヨ繘琛屾ā寮忓尮閰嶏紝瀹為檯涓妔ed, awk閮藉彲浠ョ敤鏉ュ仛妯″紡鍖歸厤錛屽叧浜庡尮閰嶄腑鐢ㄥ埌鐨勬鍒欏尮閰嶆ā寮忕煡璇嗭紝澶у鍙互鍙傝?a target=_blank>姝e垯鍖歸厤妯″紡錛屾洿澶氱浉鍏寵祫鏂欒鐪嬪弬鑰冭祫鏂欍?br>[4] 濡傛灉浠呬粎鎯沖垽鏂瓧絎︿覆鏄惁涓虹┖錛屽嵆鍒ゆ柇瀛楃涓茬殑闀垮害鏄惁涓洪浂錛岄偅涔堝彲浠ョ畝鍗曠殑閫氳繃test鍛戒護(hù)鐨?z閫夐」鏉ュ垽鏂紝鍏蜂綋鐢ㄦ硶瑙乼est鍛戒護(hù)錛宮an test.

姒傝紺轟緥: 鍒ゆ柇瀛楃鏄惁鍙墦鍗幫紵濡備綍鎺у埗瀛楃鍦ㄧ粓绔殑鏄劇ず銆?br>

// 鐢╣rep鍒ゆ柇鏌愪釜瀛楃鏄惁涓哄彲鎵撳嵃瀛楃
$ echo "\t\n" | grep "[[:print:]]"
\t\n
$ echo $?
0
$ echo -e "\t\n" | grep "[[:print:]]"
$ echo $?
1
// 鐢╡cho鐨?e閫夐」鍦ㄥ睆騫曟帶鍒跺瓧絎︽樉紺轟綅緗侀鑹層佽儗鏅瓑
$ echo -e "\33[31;40m" #璁劇疆鍓嶆櫙鑹蹭負(fù)榛戣壊錛岃儗鏅壊涓虹孩鑹?br>$ echo -e "\33[11;29H Hello, World\!" #鍦ㄥ睆騫曠殑絎?1琛岋紝29鍒楀紑濮嬫墦鍗板瓧絎︿覆Hello,World!
// 鍦ㄥ睆騫曠殑鏌愪釜浣嶇疆鍔ㄦ佹樉紺哄綋鍓嶇郴緇熸椂闂?br>$ while :; do echo -e "\33[11;29H "$(date "+%Y-%m-%d %H:%M:%S"); done
// 鐢╟ol鍛戒護(hù)榪囨護(hù)鎺夋煇浜涙帶鍒跺瓧絎︼紝鍦ㄥ鐞嗚濡俿cript,screen絳夋埅灞忓懡浠ょ殑杈撳嚭緇撴灉鏃訛紝寰堟湁鐢?br>$ screen -L
$ cat /bin/cat
$ exit
$ cat screenlog.0 | col -b   # 鎶婁竴浜涙帶鍒跺瓧絎﹁繃婊ゅ悗錛屽氨鍙互淇濈暀鍙鐨勬搷浣滄棩蹇?/p>



鏇村鍏充簬瀛楃鍦ㄧ粓绔殑鏄劇ず鎺у埗鏂規(guī)硶錛岃鍙傝冭祫鏂橻20]鍜屽瓧絎︽樉紺哄疄渚媅21]錛氱敤shell瀹炵幇鐨勪竴涓姩鎬佹椂閽熴?br>
1.2  瀛楃涓茬殑闀垮害

姒傝紺轟緥: 闄や簡緇勬垚瀛楃涓茬殑瀛楃綾誨瀷澶栵紝瀛楃涓茶繕鏈夊摢浜涘睘鎬у憿錛熺粍鎴愬瓧絎︿覆鐨勫瓧絎︿釜鏁般備笅闈㈡垜浠潵璁$畻瀛楃涓茬殑闀垮害錛屽嵆鎵鏈夊瓧絎︾殑涓暟錛屽茍綆鍗曚粙緇嶅嚑縐嶆眰瀛楃涓蹭腑鎸囧畾瀛楃涓暟鐨勬柟娉曘?br>

// 璁$畻鏌愪釜瀛楃涓茬殑闀垮害錛屽嵆鎵鏈夊瓧絎︾殑涓暟[榪欒綆楁柟娉曟槸浜旇姳鍏棬錛屾嫨鍏朵紭鐫鑰岀敤涔媇
$ var="get the length of me"
$ echo ${var}     # 榪欓噷絳夊悓浜?var
get the length of me
$ echo ${#var}
20
$ expr length "$var"
20
$ echo $var | awk '{printf("%d\n", length($0));}'
20
$ echo -n $var | wc -c
20
// 璁$畻鏌愪簺鎸囧畾涓涓瓧絎︽垨鑰呭涓瓧絎︾殑涓暟
$ echo $var | tr -cd g | wc -c
2
$ echo -n $var | sed -e 's/[^g]//g' | wc -c
2
$ echo -n $var | sed -e 's/[^gt]//g' | wc -c
5
// 濡傛灉瑕佺粺璁″崟璇嶄釜鏁幫紝鏇村鐩稿叧淇℃伅瑙併妔hell緙栫▼涔嬫暟鍊艱綆椼嬩箣 _鍗曡瘝緇熻_ 瀹炰緥銆?br>$ echo $var | wc -w
5
$ echo "$var" | tr " " "\n" | grep get | uniq -c
1
$ echo "$var" | tr " " "\n" | grep get | wc -l
1



璇存槑錛?br>${}鎿嶄綔絎﹀湪Bash閲屽ご涓涓?#8220;澶х墰”錛岃兘鑳滀換鐩稿綋澶氱殑宸ヤ綔錛屽叿浣撳氨鐪嬬湅緗戜腑浜虹殑銆妔hell鍗佷笁闂嬩箣銆奡hell鍗佷笁闂嬩箣"$(( )) 鑸?$( ) 閭勬湁${ } 宸湪鍝紵" 鍚с?br>
1.3 瀛楃涓茬殑瀛樺偍

鍦ㄦ垜浠湅鏉ワ紝瀛楃涓叉槸涓榪炰覆鐨勫瓧絎﹁屽凡錛屼絾鏄負(fù)浜嗘搷浣滄柟渚匡紝鎴戜滑寰寰鍙互璁╁瓧絎︿覆鍛堢幇鍑轟竴瀹氱殑緇撴瀯銆傚湪榪欓噷錛屾垜浠笉鍏沖績瀛楃涓插湪鍐呭瓨涓殑瀹為檯瀛樺偍緇撴瀯錛屼粎浠呭叧緋誨畠鍛堢幇鍑烘潵鐨勯昏緫緇撴瀯銆傛瘮濡傦紝榪欐牱涓涓瓧絎︿覆錛?get the length of me"錛屾垜浠彲浠ヤ粠涓嶅悓鐨勬柟闈㈡潵鍛堢幇瀹冦?br>
1.3.1 閫氳繃瀛楃鍦ㄤ覆涓殑浣嶇疆鏉ュ憟鐜板畠

榪欐牱鎴戜滑灝卞彲浠ラ氳繃鎸囧畾浣嶇疆鏉ユ壘鍒版煇涓瓙涓層傝繖鍦╟璇█閲屽ご閫氬父鍙互鍒╃敤鎸囬拡鏉ュ仛銆傝屽湪shell緙栫▼涓紝鏈夊緢澶氬彲鐢ㄧ殑宸ュ叿錛岃濡俥xpr錛宎wk閮芥彁渚涗簡綾諱技鐨勬柟娉曟潵瀹炵幇瀛愪覆鐨勬煡璇㈠姩浣溿備袱鑰呴兘鍑犱箮鏀寔妯″紡鍖歸厤(match)鍜屽畬鍏ㄥ尮閰?index)銆傝繖鍦ㄥ悗闈㈢殑瀛楃涓叉搷浣滀腑灝嗚緇嗕粙緇嶃?br>
1.3.2 鏍規(guī)嵁鏌愪釜鍒嗗壊絎︽潵鍙栧緱瀛楃涓茬殑鍚勪釜閮ㄥ垎

榪欓噷鏈甯歌鐨勫氨鏄鍒嗗壊絎︺佺┖鏍兼垨鑰匱AB鍒嗗壊絎︿簡錛屽墠鑰呯敤鏉ュ綋琛屽彿錛屾垜浠技涔庡凡緇忓徃絀鴻鎯簡錛屽洜涓烘垜浠殑緙栬緫鍣ㄥ氨榪欐牱“鑾悕”鍦板鐞嗙潃琛屽垎鍓茬錛堝湪 unix涓嬩負(fù)\n錛屽湪鍏朵粬緋葷粺涓嬫湁涓浜涗笉鍚岋紝姣斿windows涓嬩負(fù)\r\n)銆傝岀┖鏍兼垨鑰匱AB閿粡甯哥敤鏉ュ垎鍓叉暟鎹簱鐨勫悇涓瓧孌碉紝榪欎技涔庝篃鏄徃絀鴻鎯殑浜嬫儏銆?br>
姝f槸鍥犱負(fù)榪欐牱錛屾墍浠ヤ駭鐢熶簡澶ч噺浼樼鐨勮緙栬緫宸ュ叿錛岃濡俫rep,awk,sed絳夈傚湪“琛屽唴”錛堝涓旇繖涔堣鍚э紝灝辨槸澶勭悊鍗曡錛屽嵆瀛楃涓查噷澶翠笉鍐嶅寘鍚鍒嗗壊絎︼級(jí)鐨勫瓧絎︿覆鍒嗗壊鏂歸潰錛宑ut鍜宎wk鎻愪緵浜嗛潪甯鎬紭瓚婄殑“琛屽唴”錛堝鐞嗗崟琛岋級(jí)澶勭悊鑳藉姏銆?br>
1.3.3 鏇存柟渚垮湴澶勭悊鐢ㄥ垎鍓茬鍒嗗壊濂界殑鍚勪釜閮ㄥ垎

鍚屾牱鏄敤鍒板垎鍓茬錛屼絾涓轟簡鏇存柟渚跨殑鎿嶄綔鍒嗗壊浠ュ悗鐨勫瓧絎︿覆鐨勫悇涓儴鍒嗭紝鎴戜滑鎶借薄浜?#8220;鏁扮粍”榪欎箞涓涓暟鎹粨鏋勶紝浠庤岃鎴戜滑鏇村姞鏂逛究鍦伴氳繃涓嬫爣鏉ヨ幏鍙栨煇涓寚瀹氱殑閮ㄥ垎銆俠ash鎻愪緵浜嗚繖涔堜竴縐嶆暟鎹粨鏋勶紝鑰屼紭縐鐨刟wk涔熷悓鏍鋒彁渚涗簡瀹冿紝鎴戜滑榪欓噷灝嗙畝鍗曚粙緇嶅畠浠殑鐢ㄦ硶銆?br>
姒傝紺轟緥錛氬埄鐢ㄦ暟緇勫瓨鏀?get the length of me"鐨勭敤絀烘牸鍒嗗紑鐨勫悇涓儴鍒嗐?br>

//1. bash鎻愪緵鐨勬暟緇勬暟鎹粨鏋勶紝瀹冩槸浠ユ暟瀛椾負(fù)涓嬫爣鐨勶紝鍜孋璇█浠?寮濮嬬殑涓嬫爣涓鏍?br>$ var="get the length of me"
$ var_arr=($var)   #榪欓噷鎶婂瓧絎︿覆var瀛樻斁鍒板瓧絎︿覆鏁扮粍var_arr涓簡錛岄粯璁や互絀烘牸浣滀負(fù)鍒嗗壊絎?br>$ echo ${var_arr[0]} ${var_arr[1]} ${var_arr[2]} ${var_arr[3]} ${var_arr[4]}
get the length of me
$ echo ${var_arr[@]}   #榪欎釜灝辨槸鏁翠釜瀛楃涓叉墍鏈夐儴鍒嗗暒錛岃繖閲屽彲浠ョ敤*浠f浛@錛屼笅鍚?br>get the length of me
$ echo ${#var_arr[@]}   #璁板緱涓婇潰姹傛煇涓瓧絎︿覆鐨勯暱搴︿箞錛?鎿嶄綔絎︼紝濡傛灉鎯蟲眰鏌愪釜鏁扮粍鍏冪礌鐨勫瓧絎︿覆闀垮害錛岄偅涔堝氨鎶夽鎹㈡垚涓嬫爣鍚?br>5
// 浣犱篃鍙互鐩存帴緇欐煇涓暟緇勫厓绱犺祴鍊?br>$ var_arr[5]="new_element"
$ echo ${var_arr[5]}
6
$ echo ${var_arr[5]}
new_element
// bash閲屽ご瀹為檯涓婅繕鎻愪緵浜嗕竴縐嶇被浼間簬“鏁扮粍”鐨勫姛鑳斤紝鍗?for i in 鐢ㄦ寚瀹氬垎鍓茬鍒嗗紑鐨勫瓧絎︿覆" 鐨勭敤娉?br>// 鍗籌紝浣犲彲浠ュ緢鏂逛究鐨勮幏鍙栨煇涓瓧絎︿覆鐨勬煇涓儴鍒?br>$ for i in $var; do echo -n $i" "; done;
get the length of me

//2. awk閲屽ご鐨勬暟緇勶紝娉ㄦ剰姣旇緝瀹冨拰bash鎻愪緵鐨勬暟緇勭殑寮傚悓
// split鎶婁竴琛屾寜鐓х┖鏍煎垎鍓詫紝瀛樻斁鍒版暟緇剉ar_arr涓紝騫惰繑鍥炴暟緇勭殑闀垮害銆傛敞鎰忥細(xì)榪欓噷鐨勭涓涓厓绱犱笅鏍囦笉鏄?錛岃屾槸1
$ echo $var | awk '{printf("%d %s\n", split($0, var_arr, " "), var_arr[1]);}'
5 get
// 瀹為檯涓婏紝涓婇潰鐨勬搷浣滃緢綾諱技awk鑷韓鐨勮澶勭悊鍔熻兘錛歛wk榛樿鎶婁竴琛屾寜鐓х┖鏍煎垎鍓蹭負(fù)澶氫釜鍩燂紝騫跺彲浠ラ氳繃$1,$2,$3...鏉ヨ幏鍙?$0琛ㄧず鏁磋
// 榪欓噷鐨凬F鏄琛岀殑鍩熺殑鎬繪暟錛岀被浼間簬涓婇潰鏁扮粍鐨勯暱搴︼紝瀹冨悓鏍鋒彁渚涗簡涓縐嶉氳繃“涓嬫爣”璁塊棶鏌愪釜瀛楃涓茬殑鍔熻兘
$ echo $var | awk '{printf("%d | %s %s %s %s %s | %s\n", NF, $1, $2, $3, $4, $5, $0);}'
5 | get the length of me | get the length of me
// awk鐨?#8220;鏁扮粍”鍔熻兘浣曟浜庢鍛紝鐪嬬湅瀹冪殑for寮曠敤鍚э紝娉ㄦ剰錛岃繖涓拰bash閲屽ご鐨刦or涓嶅お涓鏍鳳紝i涓嶆槸鍏冪礌鏈韓錛岃屾槸涓嬫爣
$ echo $var | awk '{split($0, var_arr, " "); for(i in var_arr) printf("%s ",var_arr);}'
get the length of me
$ echo $var | awk '{split($0, var_arr, " "); for(i in var_arr) printf("%s ",i);}'
1 2 3 4 5
// awk榪樻湁鏇?#8220;鍘夊”鐨勫鐞嗚兘鍔涳紝瀹冪殑涓嬫爣鍙互涓嶆槸鏁板瓧錛岃屽彲浠ユ槸瀛楃涓詫紝浠庤屽彉鎴愪簡“鍏寵仈”鏁扮粍錛岃繖縐?#8220;鍏寵仈”鐨勪綔鐢ㄥ湪鏌愪簺鏂逛究灝嗚鎴戜滑闈炲父鏂逛究
// 姣斿錛屾垜浠繖閲屽氨瀹炵幇涓涓潪鍑$殑搴旂敤錛屾妸鏌愪釜鏂囦歡涓殑鏌愪釜緋葷粺璋冪敤鍚嶆浛鎹㈡垚鍦板潃錛屽鏋滀綘鐪熸鐢ㄨ搗瀹冿紝浣犱細(xì)鎰熸叏瀹冪殑“楝兼枾紲炲伐”鐨勩?br>// 榪欏氨鏄垜鍦ㄤ竴涓満鍚堟渶濂芥墠鍙戠幇鐨勯殢濂界殑瀹炵幇鏂規(guī)錛氭湁鍏磋叮鐪嬬湅awk鎵嬪唽甯栧瓙涓垜鍦?妤煎洖澶嶇殑瀹炰緥鍚с?br>$ cat symbol
sys_exit
sys_read
sys_close
$ ls /boot/System.map*
$ awk '{if(FILENAME ~ "System.map") map[$3]=$1; else {printf("%s\n", map[$1])}}' /boot/System.map-2.6.20-16-generic symbol
c0129a80
c0177310
c0175d80
// 鍙﹀錛宎wk榪樻敮鎸佸垹闄ゆ煇涓暟緇勫厓绱狅紝濡傛灉浣犱笉鐢ㄤ簡灝卞彲浠ョ敤delete鍑芥暟緇欏垹闄ゆ帀銆傚鏋滄煇浜涘満鍚堟湁闇瑕佺殑璇濓紝鍒繕浜哸wk榪樻敮鎸佷簩緇存暟緇勩?br>



okay錛屽氨浠嬬粛鍒拌繖閲屽暒銆備負(fù)浠涔堣浠嬬粛榪欎簺鍐呭錛熷啀鎺ョ潃鐪嬩笅闈㈢殑鍐呭錛屼綘灝變細(xì)鍙戠幇錛岄偅浜涙湁浜涚殑宸ュ叿鏄庝箞浜х敓鍜屽彂灞曡搗鏉ョ殑浜嗭紝濡傛灉绱簡錛岀湅鐪嬫渶鍚庝竴綃囧弬鑰冭祫鏂欏惂錛屽畠浠嬬粛浜嗕竴浜沴inux鍛戒護(hù)鍚嶅瓧鐨勭敱鏉ワ紝璇翠笉瀹氬彲浠ュ府鍔╀綘鐞嗚В鏈妭涓嬮潰鐨勯儴鍒嗗憿銆?br>
2. 瀛楃涓插父瑙勬搷浣?br>
瀛楃涓叉搷浣滃寘鎷彇瀛愪覆銆佹煡璇㈠瓙涓層佹彃鍏ュ瓙涓層佸垹闄ゅ瓙涓層佸瓙涓叉浛鎹€佸瓙涓叉瘮杈冦佸瓙涓叉帓搴忋佸瓙涓茶繘鍒惰漿鎹€佸瓙涓茬紪鐮佽漿鎹㈢瓑銆?br>
2.1 鍙栧瓙涓?/font>

姒傝紺轟緥錛氬彇瀛愪覆鐨勬柟娉曚富瑕佹湁錛氱洿鎺ュ埌鎸囧畾浣嶇疆姹傚瓙涓詫紝瀛楃鍖歸厤姹傚瓙涓層?br>

// 鎸夌収浣嶇疆鍙栧瓙涓詫紝姣斿浠庝粈涔堜綅緗紑濮嬶紝鍙栧灝戜釜瀛楃
$ var="get the length of me"
$ echo ${var:0:3}
get
$ echo ${var:(-2)}   # 鏂瑰悜鐩稿弽鍛?br>me
$ echo `expr substr "$var" 5 3` #璁板緱鎶?var寮曡搗鏉ワ紝鍚﹀垯expr浼?xì)鍥犱负绌烘犉D岃В鏋愰敊璇?br>the
$ echo $var | awk '{printf("%s\n", substr($0, 9, 6))}'
length

// 鍖歸厤瀛楃姹傚瓙涓?br>$ echo ${var%% *} #浠庡彸杈瑰紑濮嬭綆楋紝鍒犻櫎鏈宸﹁竟鐨勭┖鏍煎彸杈圭殑鎵鏈夊瓧絎?br>get
$ echo ${var% *} #浠庡彸杈瑰紑濮嬭綆楋紝鍒犻櫎絎竴涓┖鏍煎彸杈圭殑鎵鏈夊瓧絎?br>get the length of
$ echo ${var##* } #浠庡乏杈瑰紑濮嬭綆楋紝鍒犻櫎鏈鍙寵竟鐨勭┖鏍煎乏杈圭殑鎵鏈夊瓧絎?br>me
$ echo ${var#* } #浠庡乏杈瑰紑濮嬭綆楋紝鍒犻櫎絎竴涓┖鏍煎乏杈圭殑鎵鏈夊瓧絎?br>the length of me

$ echo $var | awk '{printf("%s\n", $1);}' # awk鎶?var鎸夌収絀烘牸鍒嗗紑涓哄涓彉閲忥紝渚濇涓?1,$2,$3,$4,$5
get
$ echo $var | awk '{printf("%s\n", $5);}'
me

$ echo $var | cut -d" " -f 5 #宸偣鎶奵ut榪欎釜灝忎笢瑗垮繕璁板暒錛岀敤璧鋒潵鍜宎wk綾諱技, -d鎸囧畾鍒嗗壊絎︼紝濡傚悓awk鐢?F鎸囧畾鍒嗗壊絎︿竴鏍鳳紝-f鎸囧畾“鍩?#8221;錛屽鍚宎wk鐨?鏁板瓧銆?br>
$ echo $var | sed 's/ [a-z]*//g' #鍒犻櫎鎵鏈?絀烘牸錛嬪瓧姣嶄覆 鐨勫瓧絎︿覆錛屾墍浠et鍚庨潰鐨勫叏閮ㄨ鍒犻櫎浜?br>get
$ echo $var | sed 's/[a-z]* //g'
me

$ echo $var | tr " " "\n" | sed -n 1p #sed鏈夋寜鍦板潃錛堣錛夋墦鍗?p)鐨勫姛鑳斤紝璁板緱鍏堢敤tr鎶婄┖鏍兼崲鎴愯鍙?br>get
$ echo $var | tr " " "\n" | sed -n 5p
me

// tr涔熷彲浠ョ敤鏉ュ彇瀛愪覆鍝︼紝瀹冧篃鍙互綾諱技#鍜?鏉?#8220;鎷挎帀”涓浜涘瓧絎︿覆鏉ュ疄鐜板彇瀛愪覆
$ echo $var | tr -d " "
getthelengthofme
$ echo $var | tr -cd "[a-z]" #鎶婃墍鏈夌殑絀烘牸閮芥嬁鎺変簡錛屼粎浠呬繚鐣欏瓧姣嶅瓧絎︿覆錛屾敞鎰?c鍜?d鐨勭敤娉?br>getthelengthofme



璇存槑錛?br>[1] %鍜?鐨勫尯鍒槸錛屽垹闄ゅ瓧絎︾殑鏂瑰悜涓嶄竴鏍?鍓嶈呭湪鍙籌紝鍚庤呭湪宸︼紝%%鍜?,##鍜?鐨勬柟鍚戞槸鍓嶈呮槸鏈澶у尮閰嶏紝鍚庤呮槸鏈灝忓尮閰嶃?濂界殑璁板繂鏂規(guī)硶瑙佺綉涓漢鐨勯敭鐩樿蹇嗘硶:#$%鏄敭鐩樹緷嬈′粠宸﹀埌鍙崇殑涓変釜閿?
[2] tr鐨?c閫夐」鏄痗omplement鐨勭緝鍐欙紝鍗砳nvert錛岃?d閫夐」鏄垹闄ょ殑鎰忔濓紝tr -cd "[a-z]"榪欐牱涓鏉ュ氨鍙樻垚淇濈暀鎵鏈夌殑瀛楁瘝鍟︺?br>
瀵逛簬瀛楃涓茬殑鎴彇錛屽疄闄呬笂榪樻湁涓浜涘懡浠わ紝濡傛灉head,tail絳夊彲浠ュ疄鐜版湁鎰忔濈殑鍔熻兘錛屽彲浠ユ埅鍙栨煇涓瓧絎︿覆鐨勫墠闈€佸悗闈㈡寚瀹氱殑琛屾暟鎴栬呭瓧鑺傛暟銆備緥濡傦細(xì)

$ echo "abcdefghijk" | head -c 4
abcd
$ echo -n "abcdefghijk" | tail -c 4
hijk



2.2. 鏌ヨ瀛愪覆

姒傝紺轟緥錛氬瓙涓叉煡璇㈠寘鎷細(xì)榪斿洖絎﹀悎鏌愪釜妯″紡鐨勫瓙涓叉湰韜拰榪斿洖瀛愪覆鍦ㄧ洰鏍囦覆涓殑浣嶇疆銆?br>
鍑嗗錛氬湪榪涜涓嬮潰鐨勬搷浣滀箣鍓嶏紝璇鋒妸http://oss.lzu.edu.cn/blog/blog.php?do_showone/tid_1385.html閾炬帴涓殑鍐呭澶嶅埗鍒頒竴涓枃鏈瑃ext閲屽ご錛岀敤浜庝笅闈㈢殑鎿嶄綔銆?br>

// 鏌ヨ瀛愪覆鍦ㄧ洰鏍囦覆涓殑浣嶇疆
$ var="get the length of me"
$ expr index "$var" t       #璨屼技浠呬粎鍙互榪斿洖鏌愪釜瀛楃鎴栬呭涓瓧絎︿腑絎竴涓瓧絎﹀嚭鐜扮殑浣嶇疆
3
$ echo $var | awk '{printf("%d\n", match($0,"the"));}'   #awk鍗磋兘鎵懼嚭瀛椾覆,match榪樺彲浠ュ尮閰嶆鍒欒〃杈懼紡
5

// 鏌ヨ瀛愪覆錛岃繑鍥炲寘鍚瓙涓茬殑琛?awk,sed閮藉彲浠ュ疄鐜拌繖浜涘姛鑳?浣嗘槸grep鏈鎿呴暱錛?br>$ grep "consists of" text   # 鏌ヨtext鏂囦歡鍖呭惈consists of鐨勮錛屽茍鎵撳嵃榪欎簺琛?br>$ grep "consists[[:space:]]of" -n -H text # 鎵撳嵃鏂囦歡鍚嶏紝瀛愪覆鎵鍦ㄨ鐨勮鍙峰拰璇ヨ鐨勫唴瀹?br>$ grep "consists[[:space:]]of" -n -o text # 浠呬粎鎵撳嵃琛屽彿鍜屽尮閰嶅埌鐨勫瓙涓叉湰韜殑鍐呭
$ awk '/consists of/{ printf("%s:%d:%s\n",FILENAME, FNR, $0)}' text #鐪嬪埌娌★紵鍜実rep鐨勭粨鏋滀竴鏍?br>$ sed -n -e '/consists of/=;/consists of/p' text #鍚屾牱鍙互鎵撳嵃琛屽彿



璇存槑錛?br>[1] awk,grep,sed閮借兘閫氳繃妯″紡鍖歸厤鏌ユ壘鎸囧畾鐨勫瓧絎︿覆錛屼絾鏄畠浠悇鏈夋搮闀跨殑棰嗗煙錛屾垜浠皢鍦ㄥ悗緇殑绔犺妭涓戶緇嬌鐢ㄥ拰姣旇緝瀹冧滑錛屼粠鑰屽彂鐜板悇鑷殑浼樼偣銆?br>[2] 鍦ㄨ繖閲屾垜浠涓旀妸鏂囦歡鍐呭褰撴垚浜嗕竴涓ぇ鐨勫瓧絎︿覆錛屽湪鍚庨潰鐨勭珷鑺備腑鎴戜滑灝嗕笓闂ㄤ粙緇嶆枃浠剁殑鎿嶄綔錛屾墍浠ュ鏂囦歡鍐呭涓瓨鏀懼瓧絎︿覆鐨勬搷浣滃皢浼?xì)鏈夋洿娣卞叆鐨勫垎鏋愬拰浠嬀l嶃?br>
2.3. 瀛愪覆鏇挎崲

瀛愪覆鏇挎崲灝辨槸鎶婃煇涓寚瀹氱殑瀛愪覆鏇挎崲鎴愬叾浠栫殑瀛楃涓詫紝瀹為檯涓婅繖閲屽氨钑村惈浜?#8220;鎻掑叆瀛愪覆”鍜?#8220;鍒犻櫎瀛愪覆”鐨勬搷浣溿備緥濡傦紝浣犳兂鎻掑叆鏌愪釜瀛楃涓插埌鏌愪釜瀛愪覆涔嬪墠錛屽氨鍙互鎶婂師鏉ョ殑瀛愪覆鏇挎崲鎴?#8221;瀛愪覆+鏂扮殑瀛楃涓?#8220;錛屽鏋滄兂鍒犻櫎鏌愪釜瀛愪覆錛屽氨鎶婂瓙涓叉浛鎹㈡垚絀轟覆銆備笉榪囨湁浜涘伐鍏鋒彁渚涗簡涓浜涗笓闂ㄧ殑鐢ㄦ硶鏉ュ仛鎻掑叆瀛愪覆鍜屽垹闄ゅ瓙涓茬殑鎿嶄綔錛屾墍浠ュ憜浼欒繕鏄細(xì)涓撻棬浠嬬粛鐨勩傚彟澶栵紝瑕佹兂鏇挎崲鎺夋煇涓瓙涓詫紝涓鑸兘鏄厛鎵懼埌瀛愪覆錛堟煡璇㈠瓙涓詫級(jí)錛岀劧鍚庡啀鎶婂畠鏇挎崲鎺夌殑錛屽疄璐ㄤ笂寰堝宸ュ叿鍦ㄤ嬌鐢ㄥ拰璁捐涓婇兘浣撶幇浜嗚繖涔堜竴鐐廣?br>
姒傝紺轟緥錛氫笅闈㈡垜浠妸鍙橀噺var涓殑絀烘牸鏇挎崲鎴愪笅鍒掔嚎鐪嬬湅銆?br>

// 鐢▄}榪愮畻絎︼紝榪樿寰椾箞錛熺綉涓漢鐨勬暀紼嬨?br>$ var="get the length of me"
$ echo ${var/ /_}       #鎶婄涓涓┖鏍兼浛鎹㈡垚涓嬪垝綰?br>get_the length of me
$ echo ${var// /_}       #鎶婃墍鏈夌┖鏍奸兘鏇挎崲鎴愪簡涓嬪垝綰夸簡
get_the_length_of_me

// 鐢╝wk錛宎wk鎻愪緵浜嗚漿鎹㈢殑鏈灝忔浛鎹㈠嚱鏁皊ub鍜屽叏灞鏇挎崲鍑芥暟gsub錛岀被浼?鍜?/
$ echo $var | awk '{sub(" ", "_", $0); printf("%s\n", $0);}'
get_the length of me
$ echo $var | awk '{gsub(" ", "_", $0); printf("%s\n", $0);}'
get_the_length_of_me

// 鐢╯ed浜嗭紝瀛愪覆鏇挎崲鍙槸sed鐨勭壒闀?br>$ echo $var | sed -e 's/ /_/'   #s <= substitude
get_the length of me
$ echo $var | sed -e 's/ /_/g'   #鐪嬪埌娌℃湁錛岀畝鐭袱涓懡浠ゅ氨瀹炵幇浜嗘渶灝忓尮閰嶅拰鏈澶у尮閰峠 <= global
get_the_length_of_me

// 鏈夊繕璁皌r鍛戒護(hù)涔堬紵鍙互鐢ㄦ浛鎹㈠崟涓瓧絎︾殑
$ echo $var | tr " " "_"
get_the_length_of_me
$ echo $var | tr '[a-z]' '[A-Z]'   #榪欎釜鍙湁鎰忔濅簡錛屾妸鎵鏈夊皬鍐欏瓧姣嶉兘鏇挎崲涓哄ぇ鍐欏瓧姣?br>GET THE LENGTH OF ME



璇存槑錛歴ed榪樻湁寰堟湁瓚g殑鏍囩鐢ㄦ硶鍛紝涓嬮潰鍐嶄粙緇嶅惂銆?br>
鏈変竴縐嶆瘮杈冩湁鎰忔濈殑瀛楃涓叉浛鎹㈡槸錛屾暣涓枃浠惰鐨勫掔疆錛岃繖涓彲浠ラ氳繃tac鍛戒護(hù)瀹炵幇錛屽畠浼?xì)鎶婃枃錃g涓墍鏈夌殑琛屽叏閮ㄥ掕漿榪囨潵銆傚湪涓瀹氭剰涔変笂鏉ヨ錛屾帓搴忓疄闄呬笂涔熸槸涓涓瓧絎︿覆鏇挎崲銆?br>
2.4. 鎻掑叆瀛愪覆

鎻掑叆瀛愪覆錛氬氨鏄湪鎸囧畾鐨勪綅緗彃鍏ュ瓙涓詫紝榪欎釜浣嶇疆鍙兘鏄煇涓瓙涓茬殑浣嶇疆錛屼篃鍙兘鏄粠鏌愪釜鏂囦歡寮澶寸畻璧風(fēng)殑鏌愪釜闀垮害銆傞氳繃涓婇潰鐨勭粌涔?fàn)锛屾垜浠彂鐜皹q欎袱鑰呬箣闂村疄闄呬笂鏄被浼肩殑銆?br>
鍏紡錛氭彃鍏ュ瓙涓?鎶?old瀛愪覆"鏇挎崲鎴?old瀛愪覆+new瀛愪覆"鎴栬?new瀛愪覆+old瀛愪覆"

姒傝紺轟緥錛氾細(xì)涓嬮潰鍦╲ar瀛楃涓茬殑絀烘牸涔嬪墠鎴栦箣鍚庢彃鍏ヤ竴涓笅鍒掔嚎

// 鐢▄}
$ var="get the length of me"
$ echo ${var/ /_ }       #鍦ㄦ寚瀹氬瓧絎︿覆涔嬪墠鎻掑叆涓涓瓧絎︿覆
get_ the length of me
$ echo ${var// /_ }
get_ the_ length_ of_ me
$ echo ${var/ / _}       #鍦ㄦ寚瀹氬瓧絎︿覆涔嬪悗鎻掑叆涓涓瓧絎︿覆
get _the length of me
$ echo ${var// / _}
get _the _length _of _me

// 鍏朵粬鐨勮繕鐢ㄦ紨紺轟箞錛熻繖閲屼富瑕佷粙緇峴ed鎬庝箞鐢ㄦ潵鎻掑叆瀛楃鍚э紝鍥犱負(fù)瀹冪殑鏍囩鍔熻兘寰堟湁瓚?br>$ echo $var | sed -e 's/\( \)/_\1/' #\(鍜孿)灝嗕笉鍖歸厤鍒扮殑瀛楃涓插瓨鏀句負(fù)涓涓爣絳撅紝鎸夊尮閰嶉『搴忎負(fù)\1,\2...
get_ the length of me
$ echo $var | sed -e 's/\( \)/_\1/g'
get_ the_ length_ of_ me
$ echo $var | sed -e 's/\( \)/\1_/'
get _the length of me
$ echo $var | sed -e 's/\( \)/\1_/g'
get _the _length _of _me

// 鐪嬬湅sed鐨勬爣絳劇殑欏哄簭鏄笉鏄痋1,\2....錛岀湅鍒版病錛焅2鍜孿1鎺夋崲浣嶇疆鍚庯紝the鍜実et鐨勪綅緗帀鎹簡
$ echo $var | sed -e 's/\([a-z]*\) \([a-z]*\) /\2 \1 /g'
the get of length me
// sed榪樻湁涓撻棬鐨勬彃鍏ユ寚浠わ紝a鍜宨,鍒嗗埆琛ㄧず鍦ㄥ尮閰嶇殑琛屽悗鍜岃鍓嶆彃鍏ユ寚瀹氬瓧絎?br>$ echo $var | sed '/get/a test'
get the length of me
test
$ echo $var | sed '/get/i test'
test
get the length of me


2.5. 鍒犻櫎瀛愪覆鍒犻櫎瀛愪覆錛氬簲璇ュ緢綆鍗曚簡鍚э紝鎶婂瓙涓叉浛鎹㈡垚“絀?#8221;錛堜粈涔堥兘娌℃湁錛変笉灝卞彉鎴愪簡鍒犻櫎涔堛傝繕鏄潵綆鍗曞涔?fàn)涓涓嬫浛鎹㈠惂銆傛瑕佺ず渚嬶細(xì)錛氭妸var瀛楃涓蹭腑鎵鏈夌殑絀烘牸緇欏垹闄ゆ帀銆傞紦鍔憋細(xì)榪欐牱涓鏇挎崲涓嶇煡閬撳彉鎴愪粈涔堝崟璇嶅暒錛岃皝璁ゅ緱鍛紵浣嗘槸涓枃鍗存槸榪炲湪涓璧風(fēng)殑錛屾墍浠ヤ腑鏂囨湁澶氶毦錛屼綘鎯沖埌浜嗕箞錛熷師鏉ヤ綘涔熸槸涓璦澶╂墠錛岃岃嫳璇茍涓嶅彲鎬曪紝浣犳湁瀛︿細(xì)瀹冪殑澶╄祴錛屽彧瑕佷綘鏈夎繖涓墦綆椼傚鏋滆鍒犻櫎鎺夌涓涓┖鏍煎悗闈㈡墍鏈夌殑瀛楃涓茶鎬庝箞鍔炲憿錛熻繕璁板緱{}鐨?鍜?鐢ㄦ硶涔堬紵濡傛灉涓嶈寰楋紝鍥炲埌榪欎竴鑺傜殑榪樺ご寮濮嬪涔?fàn)鍚с傦紙瀹為檯涓婂垹闄ゅ瓙涓插拰鍙栧瓙涓叉湭灝濅笉鏄袱縐嶄簰琛ョ殑榪愮畻鍛紝鍒犻櫎鎺夋煇浜涗笉鎯寵鐨勫瓙涓詫紝涔熷氨鍚屾椂鍙栧緱鍙﹀閭d簺鎯寵鐨勫瓙涓測斺旇繖涓笘鐣屽氨鏄竴涓?#8220;浜屽厓”鐨勪笘鐣岋紝闈炲父鏈夎叮錛夎繖涓緢綆鍗曪細(xì)榪樿寰梩est鍛戒護(hù)鐨勭敤娉曚箞錛焟an test銆傚畠鍙互鐢ㄦ潵鍒ゆ柇涓や釜瀛楃涓叉槸鍚︾浉絳夌殑銆傚彟澶栵紝浣犲彂鐜頒簡“瀛楃涓叉槸鍚︾浉絳?#8221;鍜?#8220;瀛楃涓茶兘鍚﹁窡鍙﹀涓涓瓧絎︿覆鍖歸厤"涓や釜闂涔嬮棿鐨勫叧緋誨悧錛熷鏋滀袱涓瓧絎︿覆瀹屽叏鍖歸厤錛岄偅涔堣繖涓や釜瀛楃涓插氨鐩哥瓑浜嗐傛墍浠ュ憿錛屼笂闈㈢敤鍒扮殑瀛楃涓插尮閰嶆柟娉曪紝涔熷悓鏍峰彲浠ョ敤鍒拌繖閲屻傚樊鐐瑰繕璁拌繖涓噸瑕佺殑鍐呭浜嗭紝瀛愪覆鎺掑簭鍙槸緇忓父鐢ㄥ埌鐨勶紝甯歌鐨勬湁鎸夊瓧姣嶅簭銆佹暟瀛楀簭絳夋搴忔垨鍙嶅簭鎺掑垪銆俿ort鍛戒護(hù)鍙互鐢ㄦ潵鍋氳繖涓伐浣滐紝瀹冨拰鍏朵粬琛屽鐞嗗懡浠や竴鏍鳳紝鏄寜琛屾搷浣滅殑錛屽彟澶栵紝瀹冪被浼糲ut鍜宎wk錛屽彲浠ユ寚瀹氬垎鍓茬錛屽茍鎸囧畾闇瑕佹帓搴忕殑鍒椼傚鏋滃瓧姣嶅拰鏁板瓧瀛楃鐢ㄦ潵璁℃暟錛岄偅涔堝氨瀛樺湪榪涘埗杞崲鐨勯棶棰樸傚湪鏁板艱綆椾竴鑺傜殑鍥炲璧勬枡閲岋紝鎴戜滑宸茬粡浠嬬粛浜哹c鍛戒護(hù)錛岃繖閲屽啀綆鍗曠殑澶嶄範(fàn)涓涓嬨傝鏄庯細(xì)ibase鎸囧畾杈撳叆榪涘埗錛宱base鎸囧嚭杈撳嚭榪涘埗錛岃繖鏍烽氳繃璋冩暣ibase鍜宱base錛屼綘鎯蟲庝箞杞氨鎬庝箞杞暒錛佷粈涔堟槸瀛楃緙栫爜錛熻繖涓氨涓嶇敤浠嬬粛浜嗗惂錛岀湅榪囬偅浜涗貢涓冨叓緋熸樉紺虹殑緗戦〉涔堬紵澶у鏄洜涓烘祻瑙堝櫒鏄劇ず鏃剁殑”緙栫爜“鍜岀綉欏靛疄闄呴噰鐢ㄧ殑”緙栫爜“涓嶄竴鑷村鑷寸殑銆傚瓧絎︾紪鐮侀氬父鏄寚鎶婁竴搴忓垪”鍙墦鍗?#8220;瀛楃杞崲鎴愪簩榪涘埗琛ㄧず錛岃屽瓧絎﹁В鐮佸憿鍒欐槸鎵ц鐩稿弽鐨勮繃紼嬶紝濡傛灉榪欎袱涓繃紼嬩笉鍖歸厤錛屽垯鍑虹幇浜嗘墍璋撶殑”涔辯爜“銆備負(fù)浜嗚В鍐?#8221;涔辯爜“闂鍛紵灝遍渶瑕佽繘琛岀紪鐮佽漿鎹€傚湪linux涓嬶紝鎴戜滑鍙互浣跨敤iconv榪欎釜宸ュ叿鏉ヨ繘琛岀浉鍏蟲搷浣溿傝繖鏍風(fēng)殑鎯呭喌緇忓父鍦ㄤ笉鍚岀殑鎿嶄綔緋葷粺涔嬮棿縐誨姩鏂囦歡錛屼笉鍚岀殑緙栬緫鍣ㄤ箣闂翠氦鎹㈡枃浠剁殑鏃跺欓亣鍒幫紝鐩墠鍦╳indows涓嬪父鐢ㄧ殑姹夊瓧緙栫爜鏄痝b2312錛岃屽湪linux涓嬪垯澶у閲囩敤utf8銆傝鏄庯細(xì)鎴戠殑緇堢榛樿緙栫爜鏄痷tf8錛屾墍浠ョ粨鏋滃涓娿傚疄闄呬笂錛屽湪鐢˙ash緙栫▼鏃訛紝澶ч儴鍒嗘椂闂撮兘鏄湪澶勭悊瀛楃涓詫紝鍥犳鎶婅繖涓鑺傜啛緇冩帉鎻¢潪甯擱噸瑕併傝寖渚嬫紨紺猴細(xì)澶勭悊URL鍦板潃URL鍦板潃 (URL錛圲niform Resoure Locator錛氱粺涓璧勬簮瀹氫綅鍣級(jí)鏄疻WW欏電殑鍦板潃)鍑犱箮鏄垜浠棩甯哥敓媧葷殑鐜╀即錛屾垜浠凡緇忓埌浜嗘棤娉曠寮瀹冪殑鍦版鍟︼紝瀵瑰畠鐨勬搷浣滃緢澶氾紝鍖呮嫭鍒ゆ柇URL鍦板潃鐨勬湁鏁堟э紝鎴彇鍦板潃鐨勫悇涓儴鍒嗭紙鏈嶅姟鍣ㄧ被鍨嬨佹湇鍔″櫒鍦板潃銆佺鍙c佽礬寰勭瓑錛夊茍瀵瑰悇涓儴鍒嗚繘琛岃繘涓姝ョ殑鎿嶄綔銆備笅闈㈡垜浠潵鍏蜂綋澶勭悊榪欎釜URL鍦板潃錛氭湁浜嗕笂闈㈢殑鐭ヨ瘑錛屾垜浠氨鍙互闈炲父瀹規(guī)槗鍦拌繘琛岃繖浜涘伐浣滃暒錛氫慨鏀規(guī)煇涓枃浠剁殑鏂囦歡鍚嶏紝姣斿璋冩暣瀹冪殑緙栫爜錛屼笅杞芥煇涓綉欏甸噷澶寸殑鎵鏈塸df鏂囨。絳夈傝繖浜涘氨浣滀負(fù)緇冧範(fàn)鑷繁鍋氬惂錛屽鏋滈亣鍒伴棶棰橈紝鍙互鍦ㄥ洖甯栦氦嫻併傜浉搴斿湴鍙互鍙傝冭繖涓緥瀛愶細(xì)[1] 鐢ㄨ剼鏈笅杞芥煇涓綉欏典腑鐨勮嫳鏂囧師钁?pdf鏂囨。錛夊鉤鏃跺仛宸ヤ綔錛屽ぇ澶氭暟鏃跺欏鐞嗙殑閮芥槸涓浜?#8220;鏍煎紡鍖?#8221;鐨勬枃鏈紝姣斿綾諱技/etc/passwd榪欐牱鐨勬湁鍥哄畾琛屽拰鍒楃殑鏂囨湰錛屼篃鏈夌被浼紅ree鍛戒護(hù)杈撳嚭鐨勯偅縐嶅叿鏈夋爲(wèi)褰㈢粨鏋勭殑鏂囨湰錛屽綋鐒惰繕鏈夊叾浠栧叿鏈夌壒瀹氱粨鏋勭殑鏂囨湰銆傚叧浜庢爲(wèi)鐘剁粨鏋勭殑鏂囨湰鐨勫鐞嗭紝鍙互鑰冭檻鐪嬬湅榪欎袱涓緥瀛愶細(xì) [1] 鐢ˋWK杞崲鏍?wèi)迮炴暟鎹垚鍏尘p昏〃[2] 鐢℅raphviz榪涜鍙鍖栨搷浣溾攢鈹緇樺埗鍑芥暟璋冪敤鍏崇郴鍥懼疄闄呬笂錛屽彧瑕佹妸鎻″ソ鐗規(guī)х粨鏋勭殑涓浜涚壒鐐癸紝騫舵牴鎹叿浣撶殑搴旂敤鍦哄悎錛屽鐞嗚搗鏉ュ氨涓嶄細(xì)鍥伴毦銆備笅闈㈡垜浠潵浠嬬粛鍏蜂綋鏈夊浐瀹氳鍜屽垪鐨勬枃鏈殑鎿嶄綔錛屼互/etc/passwd鏂囦歡涓轟緥銆傚叧浜庤繖涓枃浠剁殑甯繖鍜岀敤鎴鳳紝璇烽氳繃man 5 passwd鏌ョ湅銆備笅闈㈡垜浠榪欎釜鏂囦歡浠ュ強(qiáng)鐩稿叧鐨勬枃浠惰繘琛屼竴浜涙湁鎰忎箟鐨勬搷浣溿備笂闈㈡秹鍙?qiáng)鍒颁簡澶勭悊鏌愭牸寮忓寲琛屼腑鐨勬寚瀹氬垪锛屽寘鎷埅鍙栧Q堝SQL鐨剆elect鐢ㄦ硶錛夛紝榪炴帴錛堝SQL鐨刯oin鐢ㄦ硶錛夛紝鎺掑簭錛堝SQL鐨刼rder by鐢ㄦ硶)錛岄兘鍙互閫氳繃鎸囧畾鍒嗗壊絎︽潵鎷嗗垎鏌愪釜鏍煎紡鍖栫殑琛岋紝鍙﹀錛?#8220;鎴彇”鐨勫仛娉曡繕鏈夊緢澶氾紝涓嶅厜鏄痗ut錛宎wk錛岀敋鑷抽氳繃IFS鎸囧畾鍒嗗壊絎︾殑read鍛戒護(hù)涔熷彲浠ュ仛鍒幫紝渚嬪錛氬洜姝わ紝鐔熸?zhèn)墭q欎簺鐢ㄦ硶錛屾垜浠殑宸ヤ綔灝嗗彉寰楅潪甯哥伒媧繪湁瓚c傚埌榪欓噷錛岄渶瑕佸仛涓涓畝鍗曠殑緇冧範(fàn)錛屽浣曟妸鎸夌収鍒楀搴旂殑鐢ㄦ埛鍚嶅拰鐢ㄦ埛ID杞崲鎴愭寜鐓ц瀵瑰簲鐨勶紝鍗蟲妸綾諱技涓嬮潰鐨勬暟鎹細(xì)杞崲鎴愶細(xì)騫惰漿鎹㈠洖鍘伙紝鏈変粈涔堝姙娉曞憿錛熻寰楄濡倀r錛宲aste,split絳夊懡浠ら兘鍙互浣跨敤銆傚弬鑰冩柟娉曪細(xì)錛婃杞崲錛氬厛鎴彇鐢ㄦ埛鍚嶄竴鍒楀瓨鍏ユ枃浠秛ser錛屽啀鎴彇鐢ㄦ埛ID瀛樺叆id錛屽啀鎶婁袱涓枃浠剁敤paste -s鍛戒護(hù)榪炲湪涓璧鳳紝榪欐牱灝卞畬鎴愪簡姝h漿鎹€傦紛閫嗚漿鎹細(xì)鍏堟妸姝h漿鎹㈠緱鍒扮殑緇撴灉鐢╯plit -1鎷嗗垎鎴愪袱涓枃浠訛紝鍐嶆妸涓や釜鎷嗗垎鍚庣殑鏂囦歡鐢╰r鎶婂垎鍓茬"\t"鏇挎崲鎴?\n"錛屽彧鏈夌敤paste鍛戒護(hù)鎶婁袱涓枃浠惰繛鍦ㄤ竴璧鳳紝榪欐牱灝卞畬鎴愪簡閫嗚漿鎹€傛洿澶氭湁瓚g殑渚嬪瓙錛屽彲浠ュ弬鑰冭搴忓垪絎竴閮ㄥ垎鐨勫洖澶嶏紝鍗沖弬鑰冭祫鏂橻16]鐨勫洖澶嶏紝浠ュ強(qiáng)鍏板ぇ寮婧愮ぞ鍖洪暅鍍忕珯鐢ㄧ殑闀滃儚鑴氭湰錛屽嵆鍙傝冭祫鏂橻17]錛屽彟澶栵紝鍙傝冭祫鏂橻18] 鍏充簬鐢⊿hell瀹炵幇涓涓簲絎斿弽鏌ュ皬宸ュ叿涔熷煎緱闃呰鍜屾敼榪涖?br>



chatler 2009-06-01 14:08 鍙戣〃璇勮
]]>
sed浣跨敤蹇冨緱<杞?gt;http://www.shnenglu.com/beautykingdom/archive/2009/04/01/78546.htmlchatlerchatlerWed, 01 Apr 2009 03:53:00 GMThttp://www.shnenglu.com/beautykingdom/archive/2009/04/01/78546.htmlhttp://www.shnenglu.com/beautykingdom/comments/78546.htmlhttp://www.shnenglu.com/beautykingdom/archive/2009/04/01/78546.html#Feedback0http://www.shnenglu.com/beautykingdom/comments/commentRss/78546.htmlhttp://www.shnenglu.com/beautykingdom/services/trackbacks/78546.htmlsed 鏄竴縐峌NIX/LINUX 騫沖彴涓嬬殑杞婚噺綰ф祦緙栬緫鍣紝鏃ュ父涓鑸敤浜庡鐞嗘枃鏈枃浠躲俿ed 鏈夎澶氬緢濂界殑鐗規(guī)с傞鍏堬紝瀹冪浉褰撳皬宸э紱鍏舵錛?sed 鍙互閰嶅悎寮哄ぇ鐨?shell 瀹屾垚璁稿澶嶆潅鐨勫姛鑳姐傚湪鎴戠湅鏉ワ紝sed瀹屽叏鍙互鐪嬫垚涓涓剼鏈В閲婂櫒錛岀敤綾諱技浜庣紪紼嬬殑鎵嬫瀹屾垚璁稿浜嬫儏銆?/font>

sed綆鍗曠ず渚?/strong>

sed鍛戒護(hù)鐨勬牸寮忔槸
sed [-options] [command] [stdin]
姣斿榪欎釜渚嬪瓙
$ sed –e ‘d’ ./Mydir/Myfile
鎵ц璇ュ懡浠わ紝灝嗗緱涓嶅埌浠諱綍杈撳嚭銆傚湪璇ヤ緥涓紝鐢ㄤ竴涓紪杈戝懡浠?'d' 璋冪敤 sed錛泂ed 鎵撳紑 ./Mydir/Myfile 灝嗕竴琛岃鍏ュ叾妯″紡緙撳啿鍖猴紝鎵ц’d’錛?#8220;鍒犻櫎琛?#8221;錛夛紱鐒跺悗鎵撳嵃妯″紡緙撳啿鍖猴紙緙撳啿鍖哄凡涓虹┖錛夛紱瀹冨鍚庨潰鐨勬瘡涓琛岄噸澶嶈繖浜涙楠わ紝榪欎笉浼?xì)漶旂敓杈撳嚭锛?br>瀵硅繖涓懡浠よ璇存槑鐨勫嚑鐐規(guī)槸錛氶鍏堬紝瀹冩牴鏈病鏈変慨鏀?./Mydir/Myfile銆傝繖鏄洜涓?sed 鏄祦澶勭悊鍣紝瀹冨彧璇誨彇鍦ㄥ懡浠よ鎸囧畾鐨勬枃浠訛紝瀹冧笉璇曞浘淇敼璇ユ枃浠躲傚叾嬈★紝 sed 鏄潰鍚戣鐨勶紝'd' 鍛戒護(hù)涓嶆槸綆鍗曞湴鍛婅瘔 sed 涓涓嬪瓙鍒犻櫎鎵鏈夎緭鍏ユ暟鎹紱鐩稿弽錛宻ed 閫愯灝?./Mydir/Myfile 鐨勬瘡涓琛岃鍏ュ叾縐頒負(fù)妯″紡緙撳啿鍖虹殑鍐呴儴緙撳啿鍖猴紝涓鏃﹀皢涓琛岃鍏ユā寮忕紦鍐插尯錛屽畠?yōu)鎵ц?'d' 鍛戒護(hù)錛岀劧鍚庢墦鍗版ā寮忕紦鍐插尯鐨勫唴瀹廣傛渶鍚庤娉ㄦ剰鐨勪簨鏄嫭璧?'d' 鍛戒護(hù)鐨勫崟寮曞彿鐨勭敤娉曪紝榪欐牱鍙互紱佺敤 shell 鎵╁睍銆?/font>

鎸囧畾sed鐨勪綔鐢ㄨ寖鍥?/strong>

鐪嬩笅闈㈢殑涓変釜渚嬪瓙
 $ sed –e ‘1d’ ./Mydir/Myfile
 $ sed –e ‘1,10d’ ./Mydir/Myfile
 $ sed –e ‘/begin/,/end/p’ ./Mydir/Myfile
絎竴涓緥瀛愯鏄庡彧鍒犻櫎./Mydir/Myfile絎竴琛岀殑緙撳啿錛岀浜屼釜渚嬪瓙灝嗗垹闄ょ1~10琛岀殑緙撳啿銆傜涓変釜渚嬪瓙鏈澶嶆潅錛屽畠瀹氫箟浜嗕互瀛楃涓?#8217;begin’寮濮嬪埌’end’緇撴潫鐨勪綔鐢ㄨ寖鍥?/font>

sed涓殑姝e垯琛ㄨ揪寮?/strong>

sed鏀寔姝e垯琛ㄨ揪寮忥紝姣斿
 $ sed –n -e ‘/regexp/p’ ./Mydir/Myfile
姣斿瑕佸垹闄ゆ墍鏈夌殑絀鴻
 $ sed –e ‘/^$/d’ ./Mydir/Myfile
sed涓殑涓浜涚壒孌婂畾涔夋槸
    瑙勫垯 琛ㄨ揪寮?nbsp;   鎻忚堪
    /./       灝嗕笌鍖呭惈鑷沖皯涓涓瓧絎︾殑浠諱綍琛屽尮閰?br>    /../      灝嗕笌鍖呭惈鑷沖皯涓や釜瀛楃鐨勪換浣曡鍖歸厤
    /^#/      灝嗕笌浠?'#' 寮濮嬬殑浠諱綍琛屽尮閰?br>    /^$/      灝嗕笌鎵鏈夌┖琛屽尮閰?br>    /}^/      灝嗕笌浠?'}'錛堟棤絀烘牸錛夌粨鏉熺殑浠諱綍琛屽尮閰?br>    /} *^/    灝嗕笌浠?'}' 鍚庨潰璺熸湁 闆舵垨澶氫釜絀烘牸緇撴潫鐨勪換浣曡鍖歸厤
    /[abc]/   灝嗕笌鍖呭惈灝忓啓 'a'銆?b' 鎴?'c' 鐨勪換浣曡鍖歸厤
    /^[abc]/  灝嗕笌浠?'a'銆?b' 鎴?'c' 寮濮嬬殑浠諱綍琛屽尮閰?/em>
鍐嶆瘮濡備竴涓粡鍏哥殑渚嬪瓙錛屾墦鍗癱婧愪唬鐮佷腑鐨刴ain鍑芥暟鍐呭錛屽叾鍛戒護(hù)鍙互鍐欐垚濡備笅
 $ sed –n –e ‘/main[[:space]]*(/,/^}/p’ ./Mydir/*.c
鍏朵腑[:space]琛ㄧず絀烘牸錛孾[:space]]*琛ㄧず鏈?~澶氫釜絀烘牸錛屾墍浠ain[[:space]]*(鐨勬剰鎬濇槸鍖歸厤“main (”瀛楃涓詫紱“^}”琛ㄧず榪欎竴琛屾湁涓斿彧鏈変竴涓瓧絎銆傚綋鐒?dòng)灱屼笂闈㈢殑鍛戒护涓嶆槸鍗佸垎涓ヨ皑銆?/font>

sed –e ‘s/regexp/repalcement’ file

鏇挎崲鏄痵ed鍛戒護(hù)涓渶甯哥敤鐨勫懡浠わ紝姣斿濡備笅鐨勪緥瀛?br> $ sed –e ‘s/a/b’ ./Mydir/Myfile
 $ sed –e ‘s/a/b/g’ ./Mydir/Myfile
絎竴涓懡浠ゅ皢./Mydir/Myfile涓瘡涓琛岀涓嬈″嚭鐜扮殑瀛楃a鏇挎崲鎴愬瓧絎錛涚浜屼釜鍛戒護(hù)鐢變簬鍔犲叆浜?#8217;/g’錛岃〃紺烘槸鍏ㄥ眬錛堝叏閮級(jí)鏇挎崲瀛楃a鎴愬瓧絎銆?/font>

緇忓父榪樺彲浠ョ湅瑙佸涓嬩袱縐嶅艦寮忕殑sed
 $ sed –e ‘1,10s/a/b’ ./Mydir/Myfile
 $ sed –e ‘/^$/,/^END/s/a/b/g’ ./Mydir/Myfile
絎竴涓懡浠ゆ槸鎸囨浛鎹?~10琛岋紱絎簩涓懡浠ゆ槸鎸囧叏灞鏇挎崲浠庣┖琛屽紑濮嬪埌浠ND寮濮嬬殑琛屼腑鐨勫唴瀹廣?/font>

鏇挎崲鍛戒護(hù)涓嶄竴瀹氶潪瑕佷互/鍒嗛殧錛屾瘮濡?br> $ sed –e ‘s:usr/local:/usr:g’ ./Mydir/Myfile
灝辨槸灝?/Mydir/Myfile涓殑usr/local鍏ㄩ儴鏇挎崲鎴?usr

瑕佺敤濂芥浛鎹㈠懡浠わ紝褰撶劧瑕佷嬌鐢ㄦ鍒欒〃杈懼紡錛岄櫎浜嗕笂闈㈡墍璇寸殑琛ㄨ揪寮忕殑渚嬪瓙錛岃繕鏈変竴浜涙槸闈炲父鏈夌敤鐨?br>    瀛楃綾?nbsp;  鎻忚堪
    [:alnum:]  瀛楁瘝鏁板瓧 [a-z A-Z 0-9]
    [:alpha:]  瀛楁瘝 [a-z A-Z]
    [:blank:]  絀烘牸鎴栧埗琛ㄩ敭
    [:cntrl:]  浠諱綍鎺у埗瀛楃
    [:digit:]  鏁板瓧 [0-9]
    [:graph:]  浠諱綍鍙瀛楃錛堟棤絀烘牸錛?br>    [:lower:]  灝忓啓 [a-z]
    [:print:]  闈炴帶鍒跺瓧絎?br>    [:punct:]  鏍囩偣瀛楃
    [:space:]  絀烘牸
    [:upper:]  澶у啓 [A-Z]
    [:xdigit:]  鍗佸叚榪涘埗鏁板瓧 [0-9 a-f A-F]

姣斿涓嬮潰榪欎釜渚嬪瓙
 $ sed –e ‘s/<[^>]*>//g’ ./Mydir/Myfile
< [^>]*>鍖歸厤<…>榪欐牱鐨勫瓧絎︿覆錛?#8230;涓笉鍚?gt;錛夈傝繍琛岃繖涓懡浠わ紝鑳藉灝?“<b>This</b> is what <b>I</b> meant.”榪欐牱鐨勫瓧絎︿覆鏇挎崲鎴?#8220;This is what I meant.”

鑰冨療濡備笅鐨勫懡浠?br> $ sed -e 's/.*/# &/' ./Mydir/Myfile
榪欎釜鍛戒護(hù)灝嗘墍鏈夌殑闈炵┖琛屼互“#”娉ㄩ噴鎺夆斺?amp;鍛婅瘔sed鍦ㄨ棣栨彃鍏ュ瓧絎︺?/font>

‘s///’鍏佽鎴戜滑鍦ㄨ鍒欒〃杈懼紡涓畾涔夊尯鍩燂紝鐒跺悗鍙互鍦ㄦ浛鎹㈠瓧絎︿覆涓紩鐢ㄨ繖浜涚壒瀹氬尯鍩熴傝繖浜涘尯鍩熸槸浠(鍜孿)闅斿紑鐨勩?br>姣斿瀹氫箟涓変釜鍖歸厤闈炵┖瀛楃鐨勫尯鍩?\(.*\) \(.*\) \(.*\)'錛岀幇鍦ㄥ彲浠ュ畾涔夎繖涓変釜鍖哄煙鐨勫姩浣滐紝姣斿
 $ sed -e 's/\(.*\) \(.*\) \(.*\)/PreFix \1-\2 Fix \3/' ./Mydir/Myfile
鍋囧鎶婁笁涓尯鍩熷垎鍒懡鍚嶄負(fù)a銆乥銆乧錛屽垯鏈鍚庣粨鏋滄槸 PreFix a-b Fix c

sed涓粍鍚堝懡浠?/strong>

sed涓殑鍛戒護(hù)鍙互緇勫悎錛屼互錛涘彿闅斿紑錛屾瘮濡?br> $ sed –n –e ‘=;p’ ./Mydir/Myfile
=琛ㄧず鎵撳嵃琛屽彿錛宲琛ㄧず鎵撳嵃銆傚浜庢洿澶嶆潅鐨勬寚浠わ紝鍒欏彲浠ュ啓鎴愬懡浠よ剼鏈紝鐒跺悗鐢?f閫夐」瀵煎叆錛屾瘮濡?br> $ sed –n –f MyScript.sed ./Mydir/Myfile
瀵逛簬鍚屼竴涓湴鍧涓婄殑鎿嶄綔錛屽垯鍙互鐢▄}緇勫悎錛屾瘮濡?br> $ sed –n ‘1,20{ s/samba/Samba/g  s/posix/POSIX/g }’ ./Mydir/Myfile

sed涓殑琛岄檮鍔犲懡浠?/strong>

鍦ㄥ綋鍓嶈涔嬪墠鎻掑叆琛?#8220;i\”錛屽鏋滆鎻掑叆澶氳錛屽垯灝嗗琛岀敤\鍒嗛殧
鍦ㄥ綋鍓嶈涔嬪悗鎻掑叆琛?#8220;a\”錛岀敤娉曞拰涓婇潰鐩鎬技
鏇存敼褰撳墠琛?#8220;c\”



chatler 2009-04-01 11:53 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              国产区精品在线观看| 欧美电影在线观看完整版| 国产精品福利在线观看网址| 亚洲视频一二区| 中文一区在线| 韩国久久久久| 亚洲国产精品小视频| 欧美另类在线播放| 欧美一级欧美一级在线播放| 性欧美大战久久久久久久久| 影音先锋另类| 亚洲免费播放| 国语自产偷拍精品视频偷| 欧美成人dvd在线视频| 欧美日韩一区二区精品| 久久精品国产999大香线蕉| 久久久亚洲精品一区二区三区| 亚洲日本成人女熟在线观看| 一区二区国产精品| 在线成人免费视频| 在线亚洲欧美专区二区| 伊人成年综合电影网| 日韩一二三在线视频播| 国产一区二区三区高清播放| 亚洲欧洲在线播放| 国产亚洲一区精品| 日韩视频免费观看高清完整版| 国产亚洲一区二区精品| 亚洲精品乱码| 在线电影一区| 亚洲一区二区在线| 日韩亚洲欧美综合| 久热综合在线亚洲精品| 欧美亚洲视频| 欧美日韩午夜视频在线观看| 免费成人性网站| 国产精品入口日韩视频大尺度| 亚洲第一视频网站| 黑人一区二区三区四区五区| 一本色道88久久加勒比精品 | av成人毛片| 亚洲成人在线观看视频| 久久久久国产免费免费| 中文日韩在线| 免费日韩成人| 久久久久久91香蕉国产| 国产精品久久久久一区二区三区共| 欧美成人视屏| 在线精品视频在线观看高清| 欧美一区二区私人影院日本| 亚洲欧美视频一区| 欧美性感一类影片在线播放| 亚洲人成绝费网站色www| 亚洲国产精品久久久久秋霞蜜臀 | 国产欧美日韩免费| 一区二区三区 在线观看视频| 91久久精品国产91久久| 久久一区精品| 久久野战av| 尤物在线精品| 久久综合电影| 欧美激情视频一区二区三区免费| 在线不卡中文字幕播放| 久久精品国产清自在天天线| 久久伊伊香蕉| 在线看片欧美| 欧美大片免费| 中文在线一区| 久久福利毛片| 一区二区三区在线视频观看| 久久中文欧美| 91久久精品美女高潮| 一区二区三区国产盗摄| 国产精品爱久久久久久久| 亚洲一区二区三区中文字幕| 欧美在线播放视频| 在线看片成人| 欧美日韩福利| 午夜精品一区二区三区在线| 久久久欧美精品sm网站| 亚洲国产精品久久久久婷婷884| 欧美va亚洲va香蕉在线| 99re热这里只有精品免费视频| 亚洲一区二区在| 国内精品久久久久久影视8| 久久一区免费| 亚洲视频一区| 女同性一区二区三区人了人一 | 国产欧美亚洲视频| 久久久99久久精品女同性| 亚洲激情自拍| 久久精品国产免费看久久精品| 极品av少妇一区二区| 欧美日本在线视频| 亚洲一区二区少妇| 欧美激情亚洲精品| 欧美一区二区精品| 亚洲激情视频在线| 国产精品视频内| 农夫在线精品视频免费观看| 亚洲一级二级| 欧美激情第10页| 欧美一区二区三区视频| 亚洲精品久久久久久久久久久久久 | 精久久久久久| 久热精品在线视频| 亚洲午夜性刺激影院| 欧美成人精品在线| 欧美在线一二三区| 夜夜嗨av一区二区三区网页| 韩国av一区二区三区在线观看| 欧美日韩p片| 久久中文欧美| 欧美在线免费观看| 亚洲私人影院| 日韩视频在线观看| 亚洲国产91色在线| 免费欧美电影| 久久久精品动漫| 午夜视频精品| 亚洲天堂av在线免费| 日韩视频不卡中文| 亚洲高清视频一区二区| 国内成+人亚洲| 国产欧美一区二区三区视频| 欧美日韩久久| 欧美精品一区二区三区很污很色的 | 美女视频网站黄色亚洲| 久久成人国产| 性色av一区二区三区红粉影视| 中日韩美女免费视频网站在线观看| 欧美波霸影院| 欧美成人国产va精品日本一级| 久久精品国产免费观看| 欧美在线免费观看视频| 亚洲欧美国产精品va在线观看 | 国产欧美日韩亚洲精品| 欧美午夜三级| 国产精品久久国产精麻豆99网站| 欧美日韩黄视频| 欧美揉bbbbb揉bbbbb| 欧美精品成人91久久久久久久| 欧美jizz19性欧美| 欧美激情一区二区三区四区 | 亚洲欧美激情在线视频| 亚洲欧美日韩综合国产aⅴ| 午夜亚洲性色视频| 久久国产精品久久国产精品| 久久人91精品久久久久久不卡| 久久在线视频在线| 欧美暴力喷水在线| 欧美日韩中文字幕综合视频| 欧美日韩在线精品| 国产精品稀缺呦系列在线| 国产欧美日韩精品丝袜高跟鞋 | 欧美激情一区二区久久久| 欧美视频一区在线观看| 国产精品你懂的在线欣赏| 国产欧美综合在线| 亚洲成人资源网| 日韩一级视频免费观看在线| 亚洲一区国产| 久久夜色精品国产欧美乱| 欧美国产日韩在线| 99re在线精品| 久久精品免费看| 欧美日韩国产色视频| 国产欧美亚洲视频| 亚洲高清不卡一区| 亚洲欧美视频在线| 欧美成人亚洲成人| 亚洲一区国产精品| 你懂的成人av| 国产欧美日韩在线播放| 亚洲欧洲久久| 国产精品亚洲成人| 亚洲日本理论电影| 午夜精品国产精品大乳美女| 久久夜色精品一区| 日韩小视频在线观看| 久久成人免费视频| 欧美视频在线观看免费| 在线观看日产精品| 性欧美暴力猛交69hd| 亚洲国产欧美久久| 久久精品国产99国产精品| 欧美日韩免费一区| 亚洲激情在线激情| 欧美自拍偷拍| 在线视频日韩| 欧美劲爆第一页| 亚洲高清av| 久久久噜噜噜久久人人看| 夜夜狂射影院欧美极品| 美日韩免费视频| 好吊成人免视频| 欧美一区中文字幕| 亚洲午夜电影| 国产精品久久久久久久7电影 | 欧美精品尤物在线|