亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 1138 | 回復(fù): 0
打印 上一主題 下一主題

SHELL 技巧 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2010-01-28 15:49 |只看該作者 |倒序?yàn)g覽
SHELL
A.字符操作
1. 得到長(zhǎng)度
x="abcd"
方法一:expr length $x  方法二: expr "$x" : ".*"
2. 查找子串的位置
x="abcd"
expr index $x "b"
3. 得到子串
x="abcdefgh"
expr substr "$x" 2 6    結(jié)果是:bcdef
4. 截取
方法一:
echo $a|cut -d',' -f3
cut:對(duì)標(biāo)準(zhǔn)輸入的字符串進(jìn)行處理
cut -bn-m:以byte為單位,從第n個(gè)byte開始,取m個(gè)
cut -bn,m:以byte為單位,截取第n,m個(gè)byte
cut -b-n,m:以byte為單位,截取1-n,和第m個(gè)
-c:以charactor為單位
-d:指定分隔符,默認(rèn)為tab
-s:使標(biāo)準(zhǔn)輸入中沒有delimeter
cut -f1:截取第1個(gè)域
方法二:
expr substr “$a” 1 8    #  截取$a中的1到8個(gè)字符。
方法三:
${varible##*string} 從左向右截取最后一個(gè)string之后的字符串。
${varible%%string*} 從右向左截取最后一個(gè)string之后的字符串。
${varible#*string} 從左向右截取第一個(gè)string之后的字符串
${varible%string*} 從右向左截取第一個(gè)string之后的字符串
5. grep 參數(shù)介紹
grep -c 只輸出匹配的行數(shù)。
grep -i 忽略大小寫
grep -h 查詢多文件時(shí)不顯示文件名。
grep -H 顯示文件名。
grep -l 查詢多文件時(shí)只輸出包含匹配字符的文件名。
grep -n 顯示匹配行及行號(hào)。
grep -s 不顯示不存在或不匹配文本的錯(cuò)誤信息。
grep -v 顯示不包含匹配文本的所有行。
grep -A NUM pattern filename   打印匹配行和之后的NUM行
grep -B NUM pattern filename   打印匹配行和之前的NUM行
grep -A NUM pattern filename   打印匹配行和前后的NUM行
[[:upper:]]    相當(dāng)于[A-Z]
[[:lower:]]    相當(dāng)于[a-z]
[[:alnum:]]    相當(dāng)于[0-9a-zA-Z]
[[:digit:]]    相當(dāng)于[0-9]
[[:alpha:]]    相當(dāng)于[a-zA-Z]
[[:space:]]    相當(dāng)于空格或tab健
5.1 grep實(shí)例
   ps | grep -v grep | grep 'httpd\(.*\)-p 1010'
6. awk和eval組合把一段有規(guī)律的字符串劃分為若干個(gè)變量。
   eval `echo "$FORM_chkbox" | awk -F@ '{printf "y1=%s\ny2=%s\n",$1,$2}'`
   eval `echo "$FORM_chkbox" | awk -F@ '{printf "y1=%s y2=%s\n",$1,$2}'`
   實(shí)例:
   value="Long:/usb1-disk2/SAMBA/"
   eval $(echo $value | awk -F: '{printf "name=%s\npath=%s\n",$1,$2}')
6.1. awk實(shí)例
ifconfig eth0 | awk '$2~/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/'
7. eval 函數(shù)可以把兩字符串重組然后再變成一個(gè)變量。
    a=123
    b=-----------2345
    eval temp=$a$b
    zhong123=adsfjsdgjsdjfgjksldjf
    eval temp1="zhong"$a
    eval temp2="$zhong"$a
    eval temp3="$""zhong"$a
    echo $temp                            //結(jié)果是:123-----------2345
    echo "$temp1"                        //結(jié)果是:zhong123
    echo "$temp2"                        //結(jié)果是:123          因?yàn)?zhong不存在
。所以結(jié)果只有$a的值。
    echo "$temp3"                        //結(jié)果是:adsfjsdgjsdjfgjksldjf            
這正是我想要的結(jié)果。
8.sed技巧
    sed 's@^/lib/ld-linux.so.2@/tools&@g'         ### "@" is a separate symbol.
    sed 's:/usr/local/bin:/bin:' configure.bak > configure    ### ":" is a separate.
    sed -e "$"d            ### remove the last line.
    $ sed -n 's/^test/mytest/p' example-----(-n)選項(xiàng)和p標(biāo)志一起使用表示只打印那些發(fā)生替換的行。也就
是說(shuō),如果某一行開頭的test被替換成mytest,就打印它。
    $ sed 's/^192.168.0.1/&localhost/' example-----&符號(hào)表示替換換字符串中被找到的部份。所有以
192.168.0.1開頭的行都會(huì)被替換成它自已加 localhost,變成192.168.0.1localhost。
9.sed 實(shí)例
9.1. 替換文件中的內(nèi)容。
    path=\/usb1-disk1\/Download\/Bt
    a=$(sed -n "/Btstorepath=/=" usbnas.conf)
    sed -i -e "$a i\Btstorepath=$path" -e "$a"d usbnas.conf
或:
    path=/usb1-disk1/
    sed -i -e "/Btstorepath/i\Btstorepath=$path" -e "/Btstorepath/"d usbnas.conf
9.2. 替換文件中的內(nèi)容。
    sed -i "s/runbtdownload.*/runbtdownload=yes/" usbnas.conf
    sed -i "s|Btstorepath=.*\(.*\)|Btstorepath=\1$path|" usbnas.conf
    sed -i "s|$variable=.*\(.*\)|$variable=\1$value|" usbnas.conf
B.shell 中固定次數(shù)的for循環(huán)。
1. n=10
   for i in `seq $n`
   do
   echo "$i"
   done
2.read和while結(jié)合用法
    #!/bin/sh
    logfile="/sdb/path.list"
    while read t1 t2 t3        ### read one line once, and each line has three elements, so
here use three                     ###variables to contain the three elements.
    do
    echo [$t1] >> /etc/smb.conf
    echo "        comment="$discription"" >>  /etc/smb.conf
    echo "        path = "$t3"        " >>  /etc/smb.conf
    echo "        valid users = "$t2"" >>  /etc/smb.conf
    echo "   
    done  < $logfile        ### use standard input( < ) to input.
C. 創(chuàng)建swap文件
   cd /rdisk0/disk1/usb1-disk1
   dd if=/dev/zero of=./swapfile bs=1M count=64
   mkswap swapfile
   swapon swapfile    #turn on swap
   swapoff swapfile    #turn off swap
D.cp和mv技巧。
    cp configure{,.bak}        ### cp configure configure.bak
    mv configure{,.bak}        ### mv configure configure.bak
E. Shell函數(shù)返回值的方法
1. echo 法
    #!/bin/bash
    #  echo法,返回一個(gè)字符串的長(zhǎng)度
    varCnt()
    {
      var=$1   ret=0
      if [ "$var" != "" ] ; then
        ret=${#var}  
      fi
      echo $ret
    }
    main()
    {
      printf "varCnt's 's return value is %s "  `varCnt ""`
      printf "varCnt's 's return value is %s "  `varCnt "1234"`
    }
   
    main
    exit
2. 全局變量法
聲明一個(gè)全局變量 declare -i g_ret ,在function的返回值存儲(chǔ)在全局變量中。調(diào)用處在函數(shù)執(zhí)行完后,使用就可以
了.
#!/bin/bash
declare -i g_ret=0
varCntGlobeVar()
{
  var=$1   
  if [ "$var" != "" ] ; then
    g_ret=${#var}      #返回一個(gè)字符串的長(zhǎng)度
  fi
}
main()
{
  varCntGlobeVar ""
  printf "varCntGlobeVar's 's return value is %d "  $g_ret
  varCntGlobeVar "1234"
  printf "varCntGlobeVar's 's return value is %d "  $g_ret
}
main
exit
F. case 在shell中的用法
case $str in
   "en")
        /usr/sbin/httpd -p 1010 -h /www
        ;;
   "sp")
        /usr/sbin/httpd -p 1010 -h /sp_www
        ;;
   "cn")
        /usr/sbin/httpd -p 1010 -h /cn_www
        ;;
      *)
        /usr/sbin/httpd -p 1010 -h /www
        ;;
esac
E 在vi中的命令
:set mouse=a 就可以使用鼠標(biāo)了。


本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u2/85714/showart_2163265.html
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP