歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> Linux系統中shell使用知多少

Linux系統中shell使用知多少

日期:2017/3/3 13:02:31   编辑:SHELL編程

1 PATH環境變量

2 重定向的使用

0 標注輸入  默認鍵盤輸入,可以用其他內容來重定向
1 標准輸出  屏幕上的正確輸出
2 錯誤輸出  屏幕上的錯誤輸出
&> 重定向全部輸出

重定向符號有:
> >>  
2>&1 表示將錯誤的輸出重定向為標准輸出

例1
find /etc/ -name "*.conf" >> /tmp/file1 2>&1

例2
使用cat命令來演示重定向功能
cat > /tmp/file.txt << endf
hello world
endf
3 注意腳本中的特殊字符

4 ``與$()執行命令

5 變量調用的標准方式是 ${VARNAME},通常花括號被省略了

6 seq命令生成序列

7 $(())和$[]命令用於計算

8 for循環

for VAR in LIST;do
    COMMOND
done
9 腳本調式使用bash -x選項

10 位置變量

$0 表示腳本名

$# 傳遞的參數個數

$* 全部參數,是一次全取出來

$@ 也表全部參數,但是一個一個的取

11 命令的退出狀態 $? ;0表示正確,非0表示錯誤

exit 數字 可以在腳本中指定退出狀態

12 腳本中的判斷

[ EXPRESSION ]或則test命令 用來做條件判斷

判斷的運算符有很多:

1)整數比較

-eq

-ne

-gt

-ge

-lt

-le

2)字符串比較

== 等

!= 不等

3)字符串求值

-z 字符串為空

-n 字符串不為空

4)文件的比較

-b 塊文件

-c 字符文件

-d 目錄

-e 文件存在

-f 常規文件

-L 符號鏈接文件

-r 有讀權限的文件

-w 有寫權限的文件

-x 有執行權限的文件

-s 文件大小大於零

-ef FILE1與FILE2的設備和索引節點編號相同

-nt FILE1的修改日期比FILE2晚

-ot FILE1的修改日期比FILE2早

5)邏輯運算

&& 與

|| 或

13 條件結構

1)if語句

if CONDITION1;then
    STATeMENT
elif CONDITION2;then
    STATEMENT
else
    STATEMENT
fi
2)case語句

case VALUE in
    PATTERN1)
        STATEMENT
        ...
        STATEMENT
        ;;
    PATTERN2)
        STATEMENT
        ...
        STATEMENT
        ;;
    PATTERN3|PATTERN4)
        STATEMENT
        ...
        STATEMENT
        ;;
    [a-z])
        STATEMENT
        ;;
    [0-9])
        STATEMENT
        ;;
    *)
        STATEMENT
        ;;     
esac
14 while循環語句

while CONDITION
do
    STATEMENT
done
此外,還有個常用的按行讀取的用法:

while read CONDITION
do
    STATEMENT
done < INPUTSTREAM
15 關於環境變量

shell和腳本使用變量存儲數據,某些變量可以與其內容一起傳遞到子進程,這些特殊的變量稱為環境變量。通過export命令將變量標記為環境變量。

環境變量的一個使用場景就是用戶登陸後初始化shell環境。通常執行的shell環境初始化腳本有(執行的順序由上往下):

/etc/profile #系統環境變量

|__ /etc/profile.d

~/.bash_profile #用戶環境變量

|__ ~/.bashrc

|__ /etc/bashrc

登陸腳本一般分兩種類型:配置文件和rc文件。

配置文件用於設置和導出環境變量,以及運行僅應在登陸後運行的命令;

rc文件(如,/etc/bashrc)用於運行命令,設置別名,定義函數以及無法導出到子shell的其他設置。

通常,配置文件僅在登陸shell中執行,而每次創建shell時執行rc文件。

16 別名alias

#生成別名
alias NEWCMD='CMDS'
#取消別名
unalias NEWCMD
17 使用函數

函數是一種隔離代碼段的方法,可以用來重復調用而無需重新編寫同樣功能的代碼

funcname() {
    STATEMENTS
}

Copyright © Linux教程網 All Rights Reserved