-- 鎴戜滑鐨勬妧鏈槸浣犵殑錛?a target="_blank">www.icwin.net
1. Linux 鑴氭湰緙栧啓鍩虹 1.1 璇硶鍩烘湰浠嬬粛 1.1.1 寮澶?br />紼嬪簭蹇呴』浠ヤ笅闈㈢殑琛屽紑濮嬶紙蹇呴』鏂瑰湪鏂囦歡鐨勭涓琛岋級錛? #!/bin/sh 銆銆絎﹀彿#!鐢ㄦ潵鍛婅瘔緋葷粺瀹冨悗闈㈢殑鍙傛暟鏄敤鏉ユ墽琛岃鏂囦歡鐨勭▼搴忋傚湪榪欎釜渚嬪瓙涓垜浠嬌鐢?bin/sh鏉ユ墽琛岀▼搴忋? 銆銆褰撶紪杈戝ソ鑴氭湰鏃訛紝濡傛灉瑕佹墽琛岃鑴氭湰錛岃繕蹇呴』浣垮叾鍙墽琛屻? 銆銆瑕佷嬌鑴氭湰鍙墽琛岋細 緙栬瘧 chmod +x filename 榪欐牱鎵嶈兘鐢?/filename 鏉ヨ繍琛?br /> 1.1.2 娉ㄩ噴 銆銆鍦ㄨ繘琛宻hell緙栫▼鏃訛紝浠?寮澶寸殑鍙ュ瓙琛ㄧず娉ㄩ噴錛岀洿鍒拌繖涓琛岀殑緇撴潫銆傛垜浠湡璇氬湴寤鴻鎮ㄥ湪紼嬪簭涓嬌鐢ㄦ敞閲娿?br />濡傛灉鎮ㄤ嬌鐢ㄤ簡娉ㄩ噴錛岄偅涔堝嵆浣跨浉褰撻暱鐨勬椂闂村唴娌℃湁浣跨敤璇ヨ剼鏈紝鎮ㄤ篃鑳藉湪寰堢煭鐨勬椂闂村唴鏄庣櫧璇ヨ剼鏈殑浣滅敤 鍙婂伐浣滃師鐞嗐?br /> -- 鎴戜滑鐨勬妧鏈槸浣犵殑錛?a target="_blank">www.icwin.net
1.1.3 鍙橀噺 銆銆鍦ㄥ叾浠栫紪紼嬭璦涓偍蹇呴』浣跨敤鍙橀噺銆傚湪shell緙栫▼涓紝鎵鏈夌殑鍙橀噺閮界敱瀛楃涓茬粍鎴愶紝騫朵笖鎮ㄤ笉闇瑕佸鍙橀噺 榪涜澹版槑銆傝璧嬪肩粰涓涓彉閲忥紝鎮ㄥ彲浠ヨ繖鏍峰啓錛? #!/bin/sh #瀵瑰彉閲忚祴鍊鹼細 a="hello world" # 鐜板湪鎵撳嵃鍙橀噺a鐨勫唴瀹癸細 echo "A is:" echo $a 鏈夋椂鍊欏彉閲忓悕寰堝鏄撲笌鍏朵粬鏂囧瓧娣鋒穯錛屾瘮濡傦細 num=2 echo "this is the $numnd" 榪欏茍涓嶄細鎵撳嵃鍑?this is the 2nd"錛岃屼粎浠呮墦鍗?this is the "錛屽洜涓簊hell浼氬幓鎼滅儲鍙橀噺numnd鐨勫鹼紝 浣嗘槸榪欎釜鍙橀噺鏃舵病鏈夊肩殑銆傚彲浠ヤ嬌鐢ㄨ姳鎷彿鏉ュ憡璇塻hell鎴戜滑瑕佹墦鍗扮殑鏄痭um鍙橀噺錛? num=2 echo "this is the ${num}nd" 銆銆榪欏皢鎵撳嵃錛?this is the 2nd
1.1.4 鐜鍙橀噺 鐢眅xport鍏抽敭瀛楀鐞嗚繃鐨勫彉閲忓彨鍋氱幆澧冨彉閲忋傛垜浠笉瀵圭幆澧冨彉閲忚繘琛岃璁猴紝鍥犱負閫氬父鎯呭喌涓嬩粎浠呭湪鐧誨綍 鑴氭湰涓嬌鐢ㄧ幆澧冨彉閲忋?
1.1.5 Shell鍛戒護鍜屾祦紼嬫帶鍒?br />鍦╯hell鑴氭湰涓彲浠ヤ嬌鐢ㄤ笁綾誨懡浠わ細 1)Unix 鍛戒護: 銆銆铏界劧鍦╯hell鑴氭湰涓彲浠ヤ嬌鐢ㄤ換鎰忕殑unix鍛戒護錛屼絾鏄繕鏄敱涓浜涚浉瀵規洿甯哥敤鐨勫懡浠ゃ傝繖浜涘懡浠ら氬父鏄敤鏉?br />榪涜鏂囦歡鍜屾枃瀛楁搷浣滅殑銆? 甯哥敤鍛戒護璇硶鍙婂姛鑳? 銆銆echo "some text": 灝嗘枃瀛楀唴瀹規墦鍗板湪灞忓箷涓? 銆銆ls: 鏂囦歡鍒楄〃 銆銆wc 鈥搇 filewc -w filewc -c file: 璁$畻鏂囦歡琛屾暟璁$畻鏂囦歡涓殑鍗曡瘝鏁拌綆楁枃浠朵腑鐨勫瓧絎︽暟 銆銆cp sourcefile destfile: 鏂囦歡鎷瘋礉 銆銆mv oldname newname : 閲嶅懡鍚嶆枃浠舵垨縐誨姩鏂囦歡 銆銆rm file: 鍒犻櫎鏂囦歡 銆銆grep 'pattern' file: 鍦ㄦ枃浠跺唴鎼滅儲瀛楃涓叉瘮濡傦細grep 'searchstring' file.txt 銆銆cut -b colnum file: 鎸囧畾嬈叉樉紺虹殑鏂囦歡鍐呭鑼冨洿錛屽茍灝嗗畠浠緭鍑哄埌鏍囧噯杈撳嚭璁懼姣斿錛氳緭鍑?br />姣忚絎?涓埌絎?涓瓧絎ut -b5-9 file.txt鍗冧竾涓嶈鍜宑at鍛戒護娣鋒穯錛?br />榪欐槸涓や釜瀹屽叏涓嶅悓鐨勫懡浠? 銆銆cat file.txt: 杈撳嚭鏂囦歡鍐呭鍒版爣鍑嗚緭鍑鴻澶囷紙灞忓箷錛変笂 銆銆file somefile: 寰楀埌鏂囦歡綾誨瀷 銆銆read var: 鎻愮ず鐢ㄦ埛杈撳叆錛屽茍灝嗚緭鍏ヨ祴鍊肩粰鍙橀噺 銆銆sort file.txt: 瀵筬ile.txt鏂囦歡涓殑琛岃繘琛屾帓搴? 銆銆uniq: 鍒犻櫎鏂囨湰鏂囦歡涓嚭鐜扮殑琛屽垪姣斿錛?sort file.txt | uniq 銆銆expr: 榪涜鏁板榪愮畻Example: add 2 and 3expr 2 "+" 3 銆銆find: 鎼滅儲鏂囦歡姣斿錛氭牴鎹枃浠跺悕鎼滅儲find . -name filename -print 銆銆tee: 灝嗘暟鎹緭鍑哄埌鏍囧噯杈撳嚭璁懼(灞忓箷) 鍜屾枃浠舵瘮濡傦細somecommand | tee outfile 銆銆basename file: 榪斿洖涓嶅寘鍚礬寰勭殑鏂囦歡鍚嶆瘮濡傦細 basename /bin/tux灝嗚繑鍥?tux 銆銆dirname file: 榪斿洖鏂囦歡鎵鍦ㄨ礬寰勬瘮濡傦細dirname /bin/tux灝嗚繑鍥?/bin 銆銆head file: 鎵撳嵃鏂囨湰鏂囦歡寮澶村嚑琛? 銆銆tail file : 鎵撳嵃鏂囨湰鏂囦歡鏈熬鍑犺 銆銆sed: Sed鏄竴涓熀鏈殑鏌ユ壘鏇挎崲紼嬪簭銆傚彲浠ヤ粠鏍囧噯杈撳叆錛堟瘮濡傚懡浠ょ閬擄級璇誨叆鏂囨湰錛屽茍灝?br />緇撴灉杈撳嚭鍒版爣鍑嗚緭鍑猴紙灞忓箷錛夈傝鍛戒護閲囩敤姝e垯琛ㄨ揪寮忥紙瑙佸弬鑰冿級榪涜鎼滅儲銆? 涓嶈鍜宻hell涓殑閫氶厤絎︾浉娣鋒穯銆傛瘮濡傦細灝唋inuxfocus 鏇挎崲涓? LinuxFocus 錛歝at text.file | sed 's/linuxfocus/LinuxFocus/' > newtext.file 銆銆awk: awk 鐢ㄦ潵浠庢枃鏈枃浠朵腑鎻愬彇瀛楁銆傜己鐪佸湴錛屽瓧孌靛垎鍓茬鏄┖鏍鹼紝鍙互浣跨敤-F鎸囧畾鍏朵粬鍒嗗壊絎︺?br />cat file.txt | awk -F, '{print $1 "," $3 }'榪欓噷鎴戜滑浣跨敤錛屼綔涓哄瓧孌靛垎鍓茬錛屽悓鏃舵墦鍗?br />絎竴涓拰絎笁涓瓧孌點傚鏋滆鏂囦歡鍐呭濡備笅錛?Adam Bor, 34, IndiaKerry Miller, 22, USA 鍛戒護杈撳嚭緇撴灉涓猴細Adam Bor, IndiaKerry Miller, USA 2) 姒傚康: 綆¢亾, 閲嶅畾鍚戝拰 backtick 銆銆榪欎簺涓嶆槸緋葷粺鍛戒護錛屼絾鏄粬浠湡鐨勫緢閲嶈銆?br /> 銆銆綆¢亾 (|) 灝嗕竴涓懡浠ょ殑杈撳嚭浣滀負鍙﹀涓涓懡浠ょ殑杈撳叆銆? grep "hello" file.txt | wc -l 銆銆鍦╢ile.txt涓悳绱㈠寘鍚湁鈥漢ello鈥濈殑琛屽茍璁$畻鍏惰鏁般? 銆銆鍦ㄨ繖閲実rep鍛戒護鐨勮緭鍑轟綔涓簑c鍛戒護鐨勮緭鍏ャ傚綋鐒舵偍鍙互浣跨敤澶氫釜鍛戒護銆? 銆銆閲嶅畾鍚戯細灝嗗懡浠ょ殑緇撴灉杈撳嚭鍒版枃浠訛紝鑰屼笉鏄爣鍑嗚緭鍑猴紙灞忓箷錛夈?br /> 銆銆> 鍐欏叆鏂囦歡騫惰鐩栨棫鏂囦歡 銆銆>> 鍔犲埌鏂囦歡鐨勫熬閮紝淇濈暀鏃ф枃浠跺唴瀹廣?
鍙嶇煭鏂滅嚎 銆 浣跨敤鍙嶇煭鏂滅嚎鍙互灝嗕竴涓懡浠ょ殑杈撳嚭浣滀負鍙﹀涓涓懡浠ょ殑涓涓懡浠よ鍙傛暟銆?br />鍛戒護錛? find . -mtime -1 -type f -print 銆銆鐢ㄦ潵鏌ユ壘榪囧幓24灝忔椂錛?mtime 鈥?鍒欒〃紺鴻繃鍘?8灝忔椂錛夊唴淇敼榪囩殑鏂囦歡銆傚鏋滄偍 鎯沖皢鎵鏈夋煡鎵懼埌鐨勬枃浠舵墦涓涓寘錛屽垯鍙互浣跨敤浠ヤ笅鑴氭湰錛? #!/bin/sh # The ticks are backticks (`) not normal quotes ('): tar -zcvf lastmod.tar.gz `find . -mtime -1 -type f -print` 3) 嫻佺▼鎺у埗 1.if 銆銆"if" 琛ㄨ揪寮?濡傛灉鏉′歡涓虹湡鍒欐墽琛宼hen鍚庨潰鐨勯儴鍒嗭細 if ....; then 銆 .... elif ....; then 銆 .... else 銆 .... fi 澶у鏁版儏鍐典笅錛屽彲浠ヤ嬌鐢ㄦ祴璇曞懡浠ゆ潵瀵規潯浠惰繘琛屾祴璇曘傛瘮濡傚彲浠ユ瘮杈冨瓧絎︿覆銆佸垽鏂枃浠?br />鏄惁瀛樺湪鍙婃槸鍚﹀彲璇葷瓑絳夆? 銆銆閫氬父鐢? [ ] "鏉ヨ〃紺烘潯浠舵祴璇曘傛敞鎰忚繖閲岀殑絀烘牸寰堥噸瑕併傝紜繚鏂規嫭鍙風殑絀烘牸銆? [ -f "somefile" ] 錛氬垽鏂槸鍚︽槸涓涓枃浠? [ -x "/bin/ls" ] 錛氬垽鏂?bin/ls鏄惁瀛樺湪騫舵湁鍙墽琛屾潈闄? [ -n "$var" ] 錛氬垽鏂?var鍙橀噺鏄惁鏈夊? [ "$a" = "$b" ] 錛氬垽鏂?a鍜?b鏄惁鐩哥瓑 銆銆鎵цman test鍙互鏌ョ湅鎵鏈夋祴璇曡〃杈懼紡鍙互姣旇緝鍜屽垽鏂殑綾誨瀷銆? 銆銆鐩存帴鎵ц浠ヤ笅鑴氭湰錛? #!/bin/sh if [ "$SHELL" = "/bin/bash" ]; then 銆echo "your login shell is the bash (bourne again shell)" else 銆echo "your login shell is not bash but $SHELL" fi 銆銆鍙橀噺$SHELL鍖呭惈浜嗙櫥褰晄hell鐨勫悕縐幫紝鎴戜滑鍜?bin/bash榪涜浜嗘瘮杈冦? 蹇嵎鎿嶄綔絎? 鐔熸倝C璇█鐨勬湅鍙嬪彲鑳戒細寰堝枩嬈笅闈㈢殑琛ㄨ揪寮忥細 [ -f "/etc/shadow" ] && echo "This computer uses shadow passwors" 銆銆榪欓噷 && 灝辨槸涓涓揩鎹鋒搷浣滅錛屽鏋滃乏杈圭殑琛ㄨ揪寮忎負鐪熷垯鎵ц鍙寵竟鐨勮鍙ャ?br />鎮ㄤ篃鍙互璁や負鏄昏緫榪愮畻涓殑涓庢搷浣溿備笂渚嬩腑琛ㄧず濡傛灉/etc/shadow鏂囦歡瀛樺湪 鍒欐墦鍗扳?This computer uses shadow passwors鈥濄傚悓鏍鋒垨鎿嶄綔(||)鍦╯hell緙栫▼涓篃鏄?br />鍙敤鐨勩傝繖閲屾湁涓緥瀛愶細 #!/bin/sh mailfolder=/var/spool/mail/james [ -r "$mailfolder" ]' '{ echo "Can not read $mailfolder" ; exit 1; } echo "$mailfolder has mail from:" grep "^From " $mailfolder
璇ヨ剼鏈鍏堝垽鏂璵ailfolder鏄惁鍙銆傚鏋滃彲璇誨垯鎵撳嵃璇ユ枃浠朵腑鐨?From" 涓琛屻傚鏋滀笉鍙 鍒欐垨鎿嶄綔鐢熸晥錛屾墦鍗伴敊璇俊鎭悗鑴氭湰閫鍑恒傝繖閲屾湁涓棶棰橈紝閭e氨鏄垜浠繀欏繪湁涓や釜鍛戒護錛? 銆銆-鎵撳嵃閿欒淇℃伅 銆銆-閫鍑虹▼搴? 銆銆鎴戜滑浣跨敤鑺辨嫭鍙蜂互鍖垮悕鍑芥暟鐨勫艦寮忓皢涓や釜鍛戒護鏀懼埌涓璧蜂綔涓轟竴涓懡浠や嬌鐢ㄣ備竴鑸嚱鏁板皢鍦ㄤ笅鏂囨彁鍙娿? 銆銆涓嶇敤涓庡拰鎴栨搷浣滅錛屾垜浠篃鍙互鐢╥f琛ㄨ揪寮忎綔浠諱綍浜嬫儏錛屼絾鏄嬌鐢ㄤ笌鎴栨搷浣滅浼氭洿渚垮埄寰堝銆?br /> 2.case
case :琛ㄨ揪寮忓彲浠ョ敤鏉ュ尮閰嶄竴涓粰瀹氱殑瀛楃涓詫紝鑰屼笉鏄暟瀛椼? case ... in ...) do something here ;; esac 銆銆璁╂垜浠湅涓涓緥瀛愩?file鍛戒護鍙互杈ㄥ埆鍑轟竴涓粰瀹氭枃浠剁殑鏂囦歡綾誨瀷錛屾瘮濡傦細 file lf.gz 銆銆榪欏皢榪斿洖錛? lf.gz: gzip compressed data, deflated, original filename, last modified: Mon Aug 27 23:09:18 2001, os: Unix 銆鎴戜滑鍒╃敤榪欎竴鐐瑰啓浜嗕竴涓彨鍋歴martzip鐨勮剼鏈紝璇ヨ剼鏈彲浠ヨ嚜鍔ㄨВ鍘媌zip2, gzip 鍜寊ip 綾誨瀷鐨勫帇緙╂枃浠訛細 #!/bin/sh ftype=`file "$1"` case "$ftype" in "$1: Zip archive"*) 銆銆unzip "$1" ;; "$1: gzip compressed"*) 銆銆gunzip "$1" ;; "$1: bzip2 compressed"*) 銆銆bunzip2 "$1" ;; *) echo "File $1 can not be uncompressed with smartzip";; esac 銆銆鎮ㄥ彲鑳芥敞鎰忓埌鎴戜滑鍦ㄨ繖閲屼嬌鐢ㄤ簡涓涓壒孌婄殑鍙橀噺$1銆傝鍙橀噺鍖呭惈浜嗕紶閫掔粰璇ョ▼搴忕殑絎竴涓弬鏁板箋?br />涔熷氨鏄錛屽綋鎴戜滑榪愯錛? smartzip articles.zip $1 灝辨槸瀛楃涓?articles.zip
3. selsect select 琛ㄨ揪寮忔槸涓縐峛ash鐨勬墿灞曞簲鐢紝灝ゅ叾鎿呴暱浜庝氦浜掑紡浣跨敤銆傜敤鎴峰彲浠ヤ粠涓緇勪笉鍚岀殑鍊間腑榪涜閫夋嫨銆? select var in ... ; do 銆break done .... now $var can be used .... 涓嬮潰鏄竴涓緥瀛愶細 #!/bin/sh echo "What is your favourite OS?" select var in "Linux" "Gnu Hurd" "Free BSD" "Other"; do 銆銆銆銆break done echo "You have selected $var" 銆銆涓嬮潰鏄鑴氭湰榪愯鐨勭粨鏋滐細 What is your favourite OS? 1) Linux 2) Gnu Hurd 3) Free BSD 4) Other #? 1 You have selected Linux
4.loop
loop琛ㄨ揪寮忥細 while ...; do .... done 銆銆while-loop 灝嗚繍琛岀洿鍒拌〃杈懼紡嫻嬭瘯涓虹湡銆倃ill run while the expression that we test for is true. 鍏抽敭瀛?break" 鐢ㄦ潵璺沖嚭寰幆銆傝屽叧閿瓧鈥漜ontinue鈥濈敤鏉ヤ笉鎵ц浣欎笅鐨勯儴鍒嗚岀洿鎺ヨ煩鍒頒笅涓涓驚鐜? 銆銆 for-loop琛ㄨ揪寮忔煡鐪嬩竴涓瓧絎︿覆鍒楄〃 (瀛楃涓茬敤絀烘牸鍒嗛殧) 鐒跺悗灝嗗叾璧嬬粰涓涓彉閲忥細 for var in ....; do 銆 .... done 鍦ㄤ笅闈㈢殑渚嬪瓙涓紝灝嗗垎鍒墦鍗癆BC鍒板睆騫曚笂錛? #!/bin/sh for var in A B C ; do 銆 echo "var is $var" done 涓嬮潰鏄竴涓洿涓烘湁鐢ㄧ殑鑴氭湰showrpm錛屽叾鍔熻兘鏄墦鍗頒竴浜汻PM鍖呯殑緇熻淇℃伅錛? #!/bin/sh # list a content summary of a number of RPM packages # USAGE: showrpm rpmfile1 rpmfile2 ... # EXAMPLE: showrpm /cdrom/RedHat/RPMS/*.rpm for rpmpackage in $*; do 銆if [ -r "$rpmpackage" ];then 銆銆echo "=============== $rpmpackage ==============" 銆銆rpm -qi -p $rpmpackage 銆else 銆銆echo "ERROR: cannot read file $rpmpackage" 銆fi done 銆銆榪欓噷鍑虹幇浜嗙浜屼釜鐗規畩鐨勫彉閲?*錛岃鍙橀噺鍖呭惈浜嗘墍鏈夎緭鍏ョ殑鍛戒護琛屽弬鏁板箋?br />濡傛灉鎮ㄨ繍琛宻howrpm openssh.rpm w3m.rpm webgrep.rpm 姝ゆ椂 $* 鍖呭惈浜?3 涓瓧絎︿覆錛屽嵆openssh.rpm, w3m.rpm and webgrep.rpm.
5. 寮曞彿 鍦ㄥ悜紼嬪簭浼犻掍換浣曞弬鏁頒箣鍓嶏紝紼嬪簭浼氭墿灞曢氶厤絎﹀拰鍙橀噺銆傝繖閲屾墍璋撴墿灞曠殑鎰忔濇槸紼嬪簭浼氭妸閫氶厤絎?br />錛堟瘮濡?錛夋浛鎹㈡垚鍚堥傜殑鏂囦歡鍚嶏紝瀹冨彉閲忔浛鎹㈡垚鍙橀噺鍊箋備負浜嗛槻 姝㈢▼搴忎綔榪欑鏇挎崲錛屾偍鍙互浣跨敤 寮曞彿錛氳鎴戜滑鏉ョ湅涓涓緥瀛愶紝鍋囪鍦ㄥ綋鍓嶇洰褰曚笅鏈変竴浜涙枃浠訛紝涓や釜jpg鏂囦歡錛?mail.jpg 鍜宼ux.jpg銆? 1.2 緙栬瘧SHELL鑴氭湰 #ch#!/bin/sh mod +x filename 銆顡玞ho *.jpg 鈭紦铻咁儫顚庢ⅱ閰澝堿惓娣欒?./filename 鏉ユ墽琛屾偍鐨勮剼鏈? 銆銆榪欏皢鎵撳嵃鍑?mail.jpg tux.jpg"鐨勭粨鏋溿? 銆 銆銆寮曞彿 (鍗曞紩鍙峰拰鍙屽紩鍙? 灝嗛槻姝㈣繖縐嶉氶厤絎︽墿灞曪細 #!/bin/sh echo "*.jpg" echo '*.jpg' 銆銆榪欏皢鎵撳嵃"*.jpg" 涓ゆ銆? 銆銆鍗曞紩鍙鋒洿涓ユ牸涓浜涖傚畠鍙互闃叉浠諱綍鍙橀噺鎵╁睍銆傚弻寮曞彿鍙互闃叉閫氶厤絎︽墿灞曚絾鍏佽鍙橀噺鎵╁睍銆? #!/bin/sh echo $SHELL echo "$SHELL" echo '$SHELL' 銆銆榪愯緇撴灉涓猴細 /bin/bash /bin/bash $SHELL 銆銆鏈鍚庯紝榪樻湁涓縐嶉槻姝㈣繖縐嶆墿灞曠殑鏂規硶錛岄偅灝辨槸浣跨敤杞箟瀛楃鈥斺斿弽鏂滄潌錛? echo *.jpg echo $SHELL 銆銆榪欏皢杈撳嚭錛? *.jpg $SHELL
6. Here documents -- 鎴戜滑鐨勬妧鏈槸浣犵殑錛?a target="_blank">www.icwin.net
褰撹灝嗗嚑琛屾枃瀛椾紶閫掔粰涓涓懡浠ゆ椂錛宧ere documents錛堣瘧鑰呮敞錛氱洰鍓嶈繕娌℃湁瑙佸埌榪囧璇ヨ瘝閫傚悎鐨勭炕璇戯級 涓縐嶄笉閿欑殑鏂規硶銆傚姣忎釜鑴氭湰鍐欎竴孌靛府鍔╂х殑鏂囧瓧鏄緢鏈夌敤鐨勶紝姝ゆ椂濡傛灉鎴戜滑鍥涙湁閭d釜 here documents 灝變笉蹇呯敤echo鍑芥暟涓琛岃杈撳嚭銆?涓涓?"Here document" 浠?<< 寮澶達紝鍚庨潰鎺ヤ笂涓涓瓧絎︿覆錛岃繖涓瓧絎︿覆 榪樺繀欏誨嚭鐜板湪here document鐨勬湯灝俱備笅闈㈡槸涓涓緥瀛愶紝鍦ㄨ渚嬪瓙涓紝鎴戜滑瀵瑰涓枃浠惰繘琛岄噸鍛藉悕錛屽茍涓?br />浣跨敤here documents鎵撳嵃甯姪錛? #!/bin/sh # we have less than 3 arguments. Print the help text: if [ $# -lt 3 ] ; then cat < ren -- renames a number of files using sed regular expressions USAGE: ren 'regexp' 'replacement' files... EXAMPLE: rename all *.HTM files in *.html: 銆ren 'HTM$' 'html' *.HTM HELP 銆exit 0 fi OLD="$1" NEW="$2" # The shift command removes one argument from the list of # command line arguments. shift shift # $* contains now all the files: for file in $*; do 銆銆if [ -f "$file" ] ; then 銆銆銆newfile=`echo "$file" | sed "s/${OLD}/${NEW}/g"` 銆銆銆if [ -f "$newfile" ]; then 銆銆銆銆echo "ERROR: $newfile exists already" 銆銆銆else 銆銆銆銆echo "renaming $file to $newfile ..." 銆銆銆銆mv "$file" "$newfile" 銆銆銆fi 銆銆fi done 銆榪欐槸涓涓鏉備竴浜涚殑渚嬪瓙銆傝鎴戜滑璇︾粏璁ㄨ涓涓嬨傜涓涓猧f琛ㄨ揪寮忓垽鏂緭鍏ュ懡浠よ鍙傛暟鏄?br />鍚﹀皬浜?涓?(鐗規畩鍙橀噺$# 琛ㄧず鍖呭惈鍙傛暟鐨勪釜鏁? 銆傚鏋滆緭鍏ュ弬鏁板皬浜?涓紝鍒欏皢甯姪鏂囧瓧浼犻?br />緇檆at鍛戒護錛岀劧鍚庣敱cat鍛戒護灝嗗叾鎵撳嵃鍦ㄥ睆騫曚笂銆傛墦鍗板府鍔╂枃瀛楀悗紼嬪簭閫鍑恒?濡傛灉杈撳叆鍙傛暟絳?br />浜庢垨澶т簬3涓紝鎴戜滑灝卞皢絎竴涓弬鏁拌祴鍊肩粰鍙橀噺OLD錛岀浜屼釜鍙傛暟璧嬪肩粰鍙橀噺NEW銆備笅涓姝ワ紝鎴?br />浠嬌鐢╯hift鍛戒護灝嗙涓涓拰絎簩涓弬鏁頒粠 鍙傛暟鍒楄〃涓垹闄わ紝榪欐牱鍘熸潵鐨勭涓変釜鍙傛暟灝辨垚涓哄弬 鏁板垪琛?*鐨勭涓涓弬鏁般傜劧鍚庢垜浠紑濮嬪驚鐜紝鍛戒護琛屽弬鏁板垪琛ㄨ涓涓帴涓涓湴琚祴鍊肩粰鍙橀噺$file銆?br />鎺ョ潃鎴?浠垽鏂鏂囦歡鏄惁瀛樺湪錛屽鏋滃瓨鍦ㄥ垯閫氳繃sed鍛戒護鎼滅儲鍜屾浛鎹㈡潵浜х敓鏂扮殑鏂囦歡鍚嶃傜劧鍚?br />灝嗗弽鐭枩綰垮唴鍛戒護緇撴灉璧嬪肩粰newfile銆傝繖鏍鋒垜浠氨杈懼埌浜嗘垜浠殑鐩?鐨勶細寰楀埌浜嗘棫鏂囦歡鍚嶅拰鏂?br />鏂囦歡鍚嶃傜劧鍚庝嬌鐢╩v鍛戒護榪涜閲嶅懡鍚嶃? 4)鍑芥暟 濡傛灉鎮ㄥ啓浜嗕竴浜涚◢寰鏉備竴浜涚殑紼嬪簭錛屾偍灝變細鍙戠幇鍦ㄧ▼搴忎腑鍙兘鍦ㄥ嚑涓湴鏂逛嬌鐢ㄤ簡鐩稿悓鐨勪唬鐮侊紝 騫朵笖鎮ㄤ篃浼氬彂鐜幫紝濡傛灉鎴戜滑浣跨敤浜嗗嚱鏁幫紝浼氭柟渚垮緢澶氥備竴涓嚱鏁版槸榪欎釜鏍峰瓙鐨勶細 functionname() { # inside the body $1 is the first argument given to the function # $2 the second ... body } 鎮ㄩ渶瑕佸湪姣忎釜紼嬪簭鐨勫紑濮嬪鍑芥暟榪涜澹版槑銆?
銆銆涓嬮潰鏄竴涓彨鍋歺titlebar鐨勮剼鏈紝浣跨敤榪欎釜鑴氭湰鎮ㄥ彲浠ユ敼鍙樼粓绔獥鍙g殑鍚嶇О銆?br />榪欓噷浣跨敤浜嗕竴涓彨鍋歨elp鐨勫嚱鏁般傛濡傛偍鍙互鐪嬪埌鐨勯偅鏍鳳紝榪欎釜瀹氫箟鐨勫嚱鏁拌浣跨敤浜嗕袱嬈°? #!/bin/sh # vim: set sw=4 ts=4 et: help() { 銆銆cat < xtitlebar -- change the name of an xterm, gnome-terminal or kde konsole USAGE: xtitlebar [-h] "string_for_titelbar" OPTIONS: -h help text EXAMPLE: xtitlebar "cvs" HELP 銆銆exit 0 } # in case of error or if -h is given we call the function help: [ -z "$1" ] && help [ "$1" = "-h" ] && help # send the escape sequence to change the xterm titelbar: echo -e "33]0;$107" #
鍦ㄨ剼鏈腑鎻愪緵甯姪鏄竴縐嶅緢濂界殑緙栫▼涔犳儻錛岃繖鏍鋒柟渚垮叾浠栫敤鎴鳳紙鍜屾偍錛変嬌鐢ㄥ拰鐞嗚В鑴氭湰銆? 鍛戒護琛屽弬鏁? 銆銆鎴戜滑宸茬粡瑙佽繃$* 鍜?$1, $2 ... $9 絳夌壒孌婂彉閲忥紝榪欎簺鐗規畩鍙橀噺鍖呭惈浜嗙敤鎴蜂粠鍛戒護 琛岃緭鍏ョ殑鍙傛暟銆傝縿浠婁負姝紝鎴戜滑浠呬粎浜嗚В浜嗕竴浜涚畝鍗曠殑鍛戒護琛岃娉曪紙姣斿涓浜涘己鍒舵х殑 鍙傛暟鍜屾煡鐪嬪府鍔╃殑-h閫夐」錛夈?浣嗘槸鍦ㄧ紪鍐欐洿澶嶆潅鐨勭▼搴忔椂錛屾偍鍙兘浼氬彂鐜版偍闇瑕佹洿澶氱殑 鑷畾涔夌殑閫夐」銆傞氬父鐨勬儻渚嬫槸鍦ㄦ墍鏈夊彲閫夌殑鍙傛暟涔嬪墠鍔犱竴涓噺鍙鳳紝鍚庨潰鍐嶅姞涓婂弬鏁板?( 姣斿鏂囦歡鍚?銆? 鏈夊ソ澶氭柟娉曞彲浠ュ疄鐜板杈撳叆鍙傛暟鐨勫垎鏋愶紝浣嗘槸涓嬮潰鐨勪嬌鐢╟ase琛ㄨ揪寮忕殑渚嬪瓙鏃犻仐鏄竴涓笉閿欑殑鏂規硶銆? #!/bin/sh help() { 銆cat < This is a generic command line parser demo. USAGE EXAMPLE: cmdparser -l hello -f -- -somefile1 somefile2 HELP 銆exit 0 } while [ -n "$1" ]; do case $1 in 銆銆-h) help;shift 1;; # function help is called 銆銆-f) opt_f=1;shift 1;; # variable opt_f is set 銆銆-l) opt_l=$2;shift 2;; # -l takes an argument -> shift by 2 銆銆--) shift;break;; # end of options 銆銆-*) echo "error: no such option $1. -h for help";exit 1;; 銆銆*) break;; esac done
echo "opt_f is $opt_f" echo "opt_l is $opt_l" echo "first arg is $1" echo "2nd arg is $2" 銆銆鎮ㄥ彲浠ヨ繖鏍瘋繍琛岃鑴氭湰錛? cmdparser -l hello -f -- -somefile1 somefile2 銆銆榪斿洖鐨勭粨鏋滄槸錛? opt_f is 1 opt_l is hello first arg is -somefile1 2nd arg is somefile2 銆銆榪欎釜鑴氭湰鏄浣曞伐浣滅殑鍛紵鑴氭湰棣栧厛鍦ㄦ墍鏈夎緭鍏ュ懡浠よ鍙傛暟涓繘琛屽驚鐜紝灝嗚緭鍏ュ弬鏁?br />涓巆ase琛ㄨ揪寮忚繘琛屾瘮杈冿紝濡傛灉鍖歸厤鍒欒緗竴涓彉閲忓茍涓旂Щ闄よ鍙傛暟銆傛牴鎹畊nix緋葷粺鐨勬儻渚嬶紝 棣栧厛杈撳叆鐨勫簲璇ユ槸鍖呭惈鍑忓彿鐨勫弬鏁? 絎?閮ㄥ垎 瀹炰緥 鐜板湪鎴戜滑鏉ヨ璁虹紪鍐欎竴涓剼鏈殑涓鑸楠ゃ備換浣曚紭縐鐨勮剼鏈兘搴旇鍏鋒湁甯姪鍜岃緭鍏ュ弬鏁般傚茍涓斿啓涓涓吉鑴氭湰錛坒ramework.sh錛夛紝璇ヨ剼鏈寘鍚簡澶у鏁拌剼鏈兘闇瑕佺殑妗嗘灦緇撴瀯錛屾槸涓涓潪甯鎬笉閿欑殑涓繪剰銆傝繖鏃跺欙紝鍦ㄥ啓涓涓柊鐨勮剼鏈椂鎴戜滑鍙渶瑕佹墽琛屼竴涓媍opy鍛戒護錛? cp framework.sh myscript 銆鐒跺悗鍐嶆彃鍏ヨ嚜宸辯殑鍑芥暟銆? 銆銆璁╂垜浠啀鐪嬩袱涓緥瀛愶細 銆銆浜岃繘鍒跺埌鍗佽繘鍒剁殑杞崲 銆銆鑴氭湰 b2d 灝嗕簩榪涘埗鏁?(姣斿 1101) 杞崲涓虹浉搴旂殑鍗佽繘鍒舵暟銆傝繖涔熸槸涓涓敤expr鍛戒護榪涜鏁板榪愮畻鐨勪緥瀛愶細 #!/bin/sh # vim: set sw=4 ts=4 et: help() { 銆cat < b2h -- convert binary to decimal USAGE: b2h [-h] binarynum OPTIONS: -h help text EXAMPLE: b2h 111010 will return 58 HELP 銆exit 0 } error() { 銆銆# print an error and exit 銆銆echo "$1" 銆銆exit 1 } lastchar() { 銆銆# return the last character of a string in $rval 銆銆if [ -z "$1" ]; then 銆銆銆銆# empty string 銆銆銆銆rval="" 銆銆銆銆return 銆銆fi 銆銆# wc puts some space behind the output this is why we need sed: 銆銆numofchar=`echo -n "$1" | wc -c | sed 's/ //g' ` 銆銆# now cut out the last char 銆銆rval=`echo -n "$1" | cut -b $numofchar` }
chop() { 銆銆# remove the last character in string and return it in $rval 銆銆if [ -z "$1" ]; then 銆銆銆銆# empty string 銆銆銆銆rval="" 銆銆銆銆return 銆銆fi 銆銆# wc puts some space behind the output this is why we need sed: 銆銆numofchar=`echo -n "$1" | wc -c | sed 's/ //g' ` 銆銆if [ "$numofchar" = "1" ]; then 銆銆銆銆# only one char in string 銆銆銆銆rval="" 銆銆銆銆return 銆銆fi 銆銆numofcharminus1=`expr $numofchar "-" 1` 銆銆# now cut all but the last char: 銆銆rval=`echo -n "$1" | cut -b 0-${numofcharminus1}` } while [ -n "$1" ]; do case $1 in 銆銆-h) help;shift 1;; # function help is called 銆銆--) shift;break;; # end of options 銆銆-*) error "error: no such option $1. -h for help";; 銆銆*) break;; esac done # The main program sum=0 weight=1 # one arg must be given: [ -z "$1" ] && help binnum="$1" binnumorig="$1"
while [ -n "$binnum" ]; do 銆銆lastchar "$binnum" 銆銆if [ "$rval" = "1" ]; then 銆銆銆銆sum=`expr "$weight" "+" "$sum"` 銆銆fi 銆銆# remove the last position in $binnum 銆銆chop "$binnum" 銆銆binnum="$rval" 銆銆weight=`expr "$weight" "*" 2` done echo "binary $binnumorig is decimal $sum" 銆璇ヨ剼鏈嬌鐢ㄧ殑綆楁硶鏄埄鐢ㄥ崄榪涘埗鍜屼簩榪涘埗鏁版潈鍊?(1,2,4,8,16,..)錛屾瘮濡備簩榪涘埗"10"鍙?br />浠ヨ繖鏍瘋漿鎹㈡垚鍗佽繘鍒訛細 0 * 1 + 1 * 2 = 2 銆銆涓轟簡寰楀埌鍗曚釜鐨勪簩榪涘埗鏁版垜浠槸鐢ㄤ簡lastchar 鍑芥暟銆傝鍑芥暟浣跨敤wc 鈥揷璁$畻瀛楃涓暟錛?br />鐒跺悗浣跨敤cut鍛戒護鍙栧嚭鏈熬涓涓瓧絎︺侰hop鍑芥暟鐨勫姛鑳藉垯鏄Щ闄ゆ渶鍚庝竴涓瓧絎︺?
鏂囦歡寰幆紼嬪簭 銆銆鎴栬鎮ㄦ槸鎯沖皢鎵鏈夊彂鍑虹殑閭歡淇濆瓨鍒頒竴涓枃浠朵腑鐨勪漢浠腑鐨勪竴鍛橈紝浣嗘槸鍦ㄨ繃浜嗗嚑涓湀 浠ュ悗錛岃繖涓枃浠跺彲鑳戒細鍙樺緱寰堝ぇ浠ヨ嚦浜庝嬌瀵硅鏂囦歡鐨勮闂熷害鍙樻參銆備笅闈㈢殑 鑴氭湰rotatefile 鍙互瑙e喅榪欎釜闂銆傝繖涓剼鏈彲浠ラ噸鍛藉悕閭歡淇濆瓨鏂囦歡錛堝亣璁句負outmail錛変負outmail.1錛?br />鑰屽浜巓utmail.1灝卞彉鎴愪簡outmail.2 絳夌瓑絳夌瓑... #!/bin/sh # vim: set sw=4 ts=4 et: ver="0.1" help() { 銆銆cat < rotatefile -- rotate the file name
USAGE: rotatefile [-h] filename
OPTIONS: -h help text EXAMPLE: rotatefile out This will e.g rename out.2 to out.3, out.1 to out.2, out to out.1 and create an empty out-file The max number is 10 version $ver HELP 銆銆exit 0 }
error() { 銆銆echo "$1" 銆銆exit 1 } while [ -n "$1" ]; do case $1 in 銆銆-h) help;shift 1;; 銆銆--) break;; 銆銆-*) echo "error: no such option $1. -h for help";exit 1;; 銆銆*) break;; esac done # input check: if [ -z "$1" ] ; then error "ERROR: you must specify a file, use -h for help" fi filen="$1" # rename any .1 , .2 etc file: for n in 9 8 7 6 5 4 3 2 1; do 銆銆if [ -f "$filen.$n" ]; then 銆銆銆銆p=`expr $n + 1` 銆銆銆銆echo "mv $filen.$n $filen.$p" 銆銆銆銆mv $filen.$n $filen.$p 銆銆fi done # rename the original file: if [ -f "$filen" ]; then 銆銆echo "mv $filen $filen.1" 銆銆mv $filen $filen.1 fi echo touch $filen touch $filen 銆銆榪欎釜鑴氭湰鏄浣曞伐浣滅殑鍛紵鍦ㄦ嫻嬬敤鎴鋒彁渚涗簡涓涓枃浠跺悕浠ュ悗錛屾垜浠繘琛屼竴涓?鍒?鐨勫驚鐜傛枃浠?琚懡鍚嶄負10錛屾枃浠?閲嶅懡鍚嶄負9絳夌瓑銆傚驚鐜畬鎴愪箣鍚庯紝鎴戜滑灝嗗師濮嬫枃浠跺懡鍚嶄負鏂囦歡1鍚屾椂寤虹珛涓涓笌鍘熷鏂囦歡鍚屽悕鐨勭┖鏂囦歡銆? 璋冭瘯 //---------------------------------------銆銆 //-- www.icwin.net //--------------------------------------- 銆銆鏈綆鍗曠殑璋冭瘯鍛戒護褰撶劧鏄嬌鐢╡cho鍛戒護銆傛偍鍙互浣跨敤echo鍦ㄤ換浣曟鐤戝嚭閿欑殑鍦版柟鎵撳嵃浠諱綍鍙橀噺鍊箋傝繖涔熸槸緇濆ぇ澶氭暟鐨剆hell紼嬪簭鍛樿鑺辮垂80%鐨勬椂闂存潵璋冭瘯紼嬪簭鐨勫師鍥犮係hell紼嬪簭鐨勫ソ澶勫湪浜庝笉闇瑕侀噸鏂扮紪璇戯紝鎻掑叆涓涓猠cho鍛戒護涔熶笉闇瑕佸灝戞椂闂淬? 銆銆shell涔熸湁涓涓湡瀹炵殑璋冭瘯妯″紡銆傚鏋滃湪鑴氭湰"strangescript" 涓湁閿欒錛屾偍鍙互榪欐牱鏉ヨ繘琛岃皟璇曪細 sh -x strangescript 銆銆榪欏皢鎵ц璇ヨ剼鏈茍鏄劇ず鎵鏈夊彉閲忕殑鍊箋? 銆銆shell榪樻湁涓涓笉闇瑕佹墽琛岃剼鏈彧鏄鏌ヨ娉曠殑妯″紡銆傚彲浠ヨ繖鏍蜂嬌鐢細 sh -n your_script 銆銆榪欏皢榪斿洖鎵鏈夎娉曢敊璇?-- 鎴戜滑鐨勬妧鏈槸浣犵殑錛?a target="_blank">www.icwin.net
|