1. 程式人生 > 其它 >shell程式設計1

shell程式設計1

一、shell指令碼

echo 用來輸出內容,加-e可識別轉義字元

第一個shell指令碼

#!/bin/bash
#The first program
echo -e "Mr.han is shuaige" #輸出引號內的內容

指令碼的執行

#賦予執行許可權,直接執行
chmod 755 hello.sh
./hello.sh
#通過Bash呼叫執行指令碼
bash hello.sh

二、歷史命令和命令補全

history [選項] [歷史命令儲存檔案]

選項:-c :清空歷史命令

-w :把快取中的歷史命令寫入歷史命令儲存檔案

~/.bash_history

按Tab鍵補全命令

三、命令別名與常用快捷鍵

alias 別名=‘原命令’
alias vi="vim"

命令的執行順序:

1、第一順位執行用絕對路徑或相對路徑執行的命令;

2、第二順位執行別名;

3、第三順位執行Bash的內部命令;

4、第四順位執行按照$PASH環境變數定義的目錄查詢順序找到的第一個命令。

別名永久生效的辦法:

vi /root/.bashrc : 在檔案裡修改

刪除別名:

unalias 別名 :刪除別名

四、輸出重定向

標準輸出重定向:

命令 > 檔案:

ls > test : 以覆蓋的方式,將ls的結果輸入到test檔案中

命令 >> 檔案:

ls >>test : 以追加的方式。將裡的結果輸入到test檔案中

標準錯誤輸出重定向:

錯誤命令 2> 檔案:

mmdir test 2> 檔案:以覆蓋的方式,將命令的錯誤資訊輸入到檔案中

錯誤命令 2>> 檔案:

mmdir test 2>> 檔案:以追加的方式,將命令的錯誤資訊輸入到檔案中

正確輸出和錯誤輸出同時儲存:

命令 &>> 檔案 :以追加的方式將命令結果輸入到檔案中,無論命令正確還是錯誤。

命令 >> 檔案1 2>> 檔案2:將正確的輸入到檔案1,錯誤的輸入到檔案2

五、多命令順序執行

命令1;命令2 :多個命令順序執行,命令之間沒有任何邏輯練聯絡

命令1&&命令2

:當”命令1“正確執行,則”命令2“才會執行

命令1||命令2:當“命令1”正確執行,則“命令2”不會執行,反之“命令2”執行

命令1|命令2 :將“命令1”的輸出作為“命令2”的操作物件

六、萬用字元

?:匹配一個任意字元

*:匹配任意字元,包括0個

[]:匹配括號中的任意一個字元

[-]:匹配括號中範圍內的一個字元,例如:[a-z]代表匹配一個小寫字母

[^]:邏輯非,例如[shift+6 0-9]代表匹配一個不是數字的字元

其他特殊符號:

單引號 :單引號裡面的內容都是字元,無特殊含義

雙引號:$ 和 \ 是例外,擁有呼叫變數的值、引用命令和轉義字元的特殊含義

$() :呼叫系統命令

$ : 呼叫變數的值,例如:$name,呼叫name的值

\ :轉移符,跟在\之後的特殊符號將失去特俗含義

七、使用者自定義變數

變數名:字母數字下劃線組成,數字不能開頭

八、環境變數

set :檢視所有變數

export :定義環境變數關鍵字

unset 變數名:刪除變數

env:查詢變數

九、位置引數變數

$n:n為數字,$0代表命令本身,$1-$9代表第一到第九個引數,十以上的引數需要用大括號包含,如${10}

$*:這個變數代表命令列中的所有引數,把所有的引數看成一個整體

$@:這個變數也代表命令列中的所有引數,不過把每個引數區分對待

$#:這個變數代表命令列中的所有引數的個數

十、預定義變數

$?:最後一次執行的命令的返回狀態。如果這個變數的值為0,證明上一個命令執行正確;如果非0,則上一個命令執行不正確

$$:當前程序的程序號(PID)

$!:後臺執行的最後一個程序的程序號(PID)

鍵盤接受據:read【選項】【變數名】

-p"提示資訊":在等待read輸入是,輸出提示資訊

-t 秒數:read命令會一直等待使用者輸入,使用此選項可以指定等待時間

-n 字元數:read命令只接受指定的字元數,就會執行

-s:隱藏輸入的資料,使用於機密資訊的輸入