1. 程式人生 > >【linux】shell指令碼(一)

【linux】shell指令碼(一)

一、shell指令碼的建立和執行

linux操作如下:

   $ touch test.sh //建立.sh檔案

    $ vi test.sh //vi進入.sh檔案

鍵入i進入輸入模式,      //一些vi或vim編輯器的操作在寫指令碼的時候會用到

第一步:插入 #!/bin/bash   //使用指令碼

........                          //指令碼內容

結束時,鍵入esc退出輸入模式,在冒號後輸入wq,w代表寫入檔案,q代表退出vi

    $ chmod +x test.sh    //改變檔案許可權

    $    ./test.sh   //執行.sh指令碼檔案

二、執行shell指令碼的三種方式

    ①輸入定向到shell指令碼

        格式:$ bash < 指令碼名

        程式碼:$ bash < test

    ②以指令碼名作為bash引數

        格式:$ bash  指令碼名  [引數]

        程式碼:$bash test  ~/user

    ③改變許可權為可執行,然後直接執行

        例子上面給了

三、命令歷史

    作用用:便於呼叫、修改和快捷執行命令,把全部或部分先前命令作為新命令,予以快捷執行。

        (1)顯示歷史命令

        ①格式:

語法格式是:$ history  [option] [arg…] 
常用的選項有:
  -a  在歷史檔案中新增“新”歷史命令列。
  -n  從歷史檔案中讀取尚未讀入的歷史命令列,新增到當前歷史清單中。
  -r  讀取歷史檔案的內容,並把它作為當前的歷史命令。
  -w  把當前的歷史寫到歷史檔案中,覆蓋原有內容。

  -c  刪除歷史清單中所有的項。

        (2)執行歷史命令

        ①格式:

格    式 

意    義 

!! 

重複上一條命令,也就是“!-1”

!n 

重新執行第n條歷史命令 

!-n 

重新執行倒數第n條歷史命令。!-1就等於! ! 

!string 

重新執行以字串string開頭的最近的歷史命令列。

!?string? 

重新執行最近的、包含字串string的那條歷史命令 

!# 

到現在為止所輸入的整個命令列 

        (3)用環境變數來配置歷史命令環境

        ①使用者可以通過重新為環境變數賦值,改變存放歷史命令的檔案 

         $ HISTFILE="/home/mengqc/.myhistory"

        ②還可以重新設定能夠保留的命令個數

        $ HISTSIZE=600

四、別名

    作用:可以簡化輸入,方便使用者,減少出錯率

        ①定義別名

格式:alias [name[=value]]

程式碼

        $ alias ll=‘ls -l’
        $ my=/home/mengqc 
        (定義變數並賦值)

        $ ll 

        $my

        ②取消別名

格式:unalias name

       可以一次將所有的別名都從別名表中刪除,使用如下命令:   unalias -a

五、shell特殊字元

        (1)萬用字元

                *(星號),它匹配任意字元的0次或多次出現 

                ?(問號),它匹配任意一個字元

        (2)引號

                ①單引號

                由單引號括起來的字元都作為普通字元出現

                ③雙引號

                由雙引號括起來的字元(除$、倒引號(`)和反斜線(\)外)均作為普通字元對待。

                ④倒引號

六、輸入輸出重定向

            (1)輸入重定向符

                              命令 < 檔名

             (2)輸出重定向符

                              命令 >檔名

              (3)輸入輸出同時使用

                            輸入和輸出重新定向可以連在一起使用。例如:
       $ wc  -l  < infile > outfile
功能是:
  命令wc從檔案infile中輸入資訊,

  按“行”統計後的結果送到另一個檔案outfile中,不在螢幕上顯示。

                (4)輸出附加定向符“>>”
把命令的標準輸出附加到指定檔案的後面,原有內容不變

一般形式是:命令>>檔名 

      其他例子:

$gcc m1.c 2> errfile
功能是:
  對C原始檔m1.c進行編譯,並把編譯過程中產生的錯誤資訊重定向到檔案errfile中,
  其中數字2表示標準錯誤輸出的檔案描述字。