shell臨時筆記

來源:互聯網
上載者:User

標籤:shell隨記

-eq 等於

-ne 不等於

-gt 大於

-ge 大於等於

-lt 小於

-le 小於等於

 

seq 1 30  從1到30的數字

touch -mt201003030303.03 $Dir    修改目錄的時間格式

stat /tmp/1.dir                   查看修改時間


LINES=`grep ‘^#‘ $file |wc -l`

echo "$file:$LINES"           //可以用多個變數   取結果要用``賦值給變數



cat file.txt |tr -s ‘\n‘    將多個連續的字元壓縮成單個字元


cat -n 顯示行號


cat file.txt |xargs -n 3    每行最大值為3個

line  line  line

line   line  line

line  line



tr 可以進行替換,刪除,壓縮

tr ‘1‘ ‘2‘ 第一部分的被第二部分替換

echo "Hello who Is This" |tr ‘A-M,n-z‘ ‘a-m,N-Z‘ 大寫A-M n-z 替換成a-m,N-Z


tr -d           刪除字元

echo "hello 0980world" |tr -d ‘0-9‘

hello world


tr -c [set1][set2] 字元的補集   取反

echo -e "hello 0980 world" |tr -d -c ‘0-9\n‘

0980


tr -s    壓縮字元  (將連續多個字元壓縮成單個字元)


備份檔案

cp file.txt /tmp/filebak.txt;rm -rf file.txt


###########mysql################

select concat(uid,‘@‘,cname) as email,nickname,mobile,createdate,passwd from mop2oxdatabases

意思就是把mop2oxdatabases庫裡面的uid欄位,cname欄位整合成email欄位,提取每個欄位時,中間用逗號隔開


mysql -uroot -p -h 10.101.120.38 -P 3308 mop -e " " 命令列上的操作



dd命令

dd if=/dev/zero of=anbaoyu.data bs=1M count=1

/dev/zero 是泡泡機(吐資料的)


修改檔案的三個時間

touch -a     更改訪問時間 

touch -mt    變更檔修改時間

touch -d     時間戳記



while 迴圈語句


1 while read line

do

    echo $line

done<A.txt                 A只能為檔案,讀取檔案的行


<A.txt寫在最後相當於給 整個while do語句加了一個約束條件,讀取A裡每行至檔案尾結束


2 while read line <A

do

    echo $line

done

<A寫在前邊,整個while do語句就沒有了約束條件,因為read line<A,這個始終為真(顯示第一行,死迴圈),表示不停的讀取第一行,賦值給line,然後列印參數



3 awk 列印多行資料

ls -l |awk ‘{print $1 ":" $7}‘       $1  $7之間用:隔開


awk ‘NR==m,NR==n‘ filename      列印從第m行到n行的範圍


4 要列印處於 ‘/start_pattern/,/end_pattern/‘ filename

例如:

$ cat section.txt

line with pattern1

line with pattern2

line with pattern3

line end with pattern4

line with pattern5


$ awk ‘/pa.*3/,/end/‘section.txt

line with pattern3

line end with pattern4


替換變數內容中的部分文本

$ var="this is a line of test"

$ echo ${var/line/REPLACED}

"this is a REPLACED of test"


查看網路上機器的狀態


#!/bin/bash

network="192.168.1"

for sitenu in $(seq 1 100)

do

    (ping -c 1 -w 1 ${network}.${sitenu} &>/dev/null && echo ${network}.${sitenu} up || echo ${network}.${sitenu} down)&

done


&&前邊執行成功的話,繼續執行次操作

||前邊執行失敗的話,繼續執行次操作

可以翻譯成,如果1 ,那麼2,否則3


原理()& 將任務放入後台操作;每次ping都非常慢,-w 延遲1秒

wait 放在指令碼最後,它就會一直等到所有的子進程全部結束


netstat -tnp |grep 服務進程             列出開放連接埠與服務


統計硬碟使用方式

df -h      disk  free   磁碟使用方式

du -sh     usage       檔案和目錄大小

du -a dir  遞迴顯示所有檔案的磁碟使用方式


尋找大檔案

find . -type f -exec du -k {}\;|sort -nrk 1 |head

.目前的目錄

sort -nrk     -n 依照數值大小排序

              -r 相反的順序排序

              -k   選那塊地區進行排序

              -t   指定分隔字元

              -f  忽略大小寫

              -b  忽略每行前面開始出的空白字元


指令碼中使用密碼問題:

使用前expect前,需要安裝兩個rpm包,下載http://download.csdn.net/detail/wang7dao/4416172

# rpm -ihv expect-5.43.0-8.el5.i386.rpm

# rpm -ihv expect-devel-5.43.0-8.el5.i386.rpm


#!/usr/bin/expect -f

set password 123456

#download

spawn scp [email protected]:/root/a.wmv   /home/yangyz/

set timeout 300

expect "[email protected]‘s password:"

set timeout 300

send "$password\r"

set timeout 300

send "exit\r"

expect eof


#upload

spawn scp /home/yangyz/abc.sql [email protected]:/root/test.sql 

set timeout 300 

expect "[email protected]‘s password:"

set timeout 300 

send "$password\r"

set timeout 300 

send "exit\r"

expect eof


#:expect a.sh



http://down.51cto.com/data/1866892



常用shell符號:



我們先寫一個簡單的指令碼,執行以後再解釋各個變數的意義

 

# touch variable

# vi variable

 

指令碼內容如下:

 

#!/bin/sh

echo "number:$#"

echo "scname:$0"

echo "first :$1"

echo "second:$2"

echo "argume:[email protected]"

echo "show parm list:$*"

echo "show process id:$$"

echo "show precomm stat: $?"

儲存退出

 

賦予指令碼執行許可權

 

# chmod +x variable

 

執行指令碼

 

# ./variable aa bb

number:2

scname:./variable

first:aa

second:bb

argume:aa bb

show parm list:aa bb

show process id:24544

show precomm stat:0

 

通過顯示結果可以看到:

 

$# 是傳給指令碼的參數個數

$0 是指令碼本身的名字

$1 是傳遞給該shell指令碼的第一個參數

$2 是傳遞給該shell指令碼的第二個參數

[email protected] 是傳給指令碼的所有參數的列表

$* 是以一個單字串顯示所有向指令碼傳遞的參數,與位置變數不同,參數可超過9個

$$ 是指令碼啟動並執行當前進程ID號

$? 是顯示最後命令的退出狀態,0表示沒有錯誤,其他表示有錯誤



shell 中調用另一個指令碼的三種方法:


1 fork /directory/script.sh  如果shell中包含執行命令,那麼子命令並不影響父級的命令,在子命令執行完後再執行父命令

(子命令環境變數不會影響到父級)

  啟動並執行時候會開一個sub-shell的呼叫指令碼



2 exec /directory/script.sh  執行子命令的命令後,不再執行父級的命令 



3 source /directory/script.sh  執行子級命令後繼續執行父級命令,同時子級設定環境變數會影響到父級環境變數


 (調用的指令碼中聲明的變數和環境變數,都可以在主指令碼中使用)


  


隨記:

1 ^#   以#開頭

  ^$   表示空格

  [[:space:]]   精確表示空格


2 set -x 跟蹤執行     看到shell執行的過程


3 cp $file /tmp/$file-`date +%F`  複製檔案並以目前時間改名


4 顯示使用者名稱,ID,shell時候

echo "user:$username   ID:$Uid   shell:$shell"

然後再分別給予變數賦值


過濾的時候

        a:可以用grep   關鍵字

        b:head -6 file |tail -1     第幾行



cut -d : -f 3  

id -gn tom     顯示tom使用者的組名




8  @@@@重要


   列表的產生方式


a 逐個給出   /etc/fstab   /etc/inittab 

b 使用萬用字元   for  File  in  /var/*

c 使用命令產生列表   (一般為相對路徑)

  #!/bin/bash

   for File in  `ls /var` ;do

      file /var/$File

   done

d 產生數字序列

{}:{起始數字..結束數字} 例如{1..100}表示從1到100之間的所有正整數

   `seq[起始數字][步長][結束數字]`

例:seq 1 2 100 表示從1到100之間以2個單位輸出



8 for 迴圈是一個一個讀取    迴圈次數是按照變數的個數迴圈的



9算術運算的實現方式:expression:運算方式

      $[expression]    例:echo $[$a+$b]  --------常用

      $((expression))   例:$(($a+$b))    

      let expression    例:letE=$a+$b  echo $E

      expr expression   例:F=`expr $a+$b`   


10  Count=0 


    Count=$[$Count+1]  


    echo "total file:$Count"          //檔案的總和



11 `seq 1  2  100`      列表以奇數

    

    `seq 2  2  100`      列表以偶數


12  IDsum=0           id的總和

     

    Evensum=0          奇數的總和                     //變數的前提



    IDsum=$[$IDsum+$i]       $i是一個變數數字        //變數主體部分

                  

                   +1      就是遞增的變化


    echo "$IDsum"       顯示變數的總和                //變數的結果




shell臨時筆記

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.