shell指令碼基礎 三

2022-08-23 20:45:09 字數 2306 閱讀 3651

bash指令碼之算術運算

算術運算格式

1.let 將需要運算結果儲存在乙個變數中

name1=10

name2=12

let sum=$name1+$name2

echo $sum

2.$[$name1+$name2]:無需將結果儲存在變數中,直接輸出結果

3.$(($name1+$name2)):無需將結果儲存在變數中,直接輸出結果

4.expr $name1 + $name2:無需將結果儲存在變數中,直接輸出結果

sum=$(expr $name1 + $name2):將運算結果儲存在變數中

注:乘法符號在有些場景中需要使轉義符;

檔案查詢

locate 依賴於系統事先構建好的索引庫,自動實現更新(週期性任務更新),也可手動更新資料庫(updatedb更新時間較長).預設情況下是模糊查詢

locate -b 基於基名查詢

locate -c 統計總共有多少個符號條件的檔案

locate -r 可使用正規表示式進行查詢

find 與locate不同,其為實時查詢,通過指定路徑下的系統層級結構完成檔案查詢

-name 精確匹配檔名

-iname 忽略大小寫精確匹配

-regex 基於正規表示式模式查詢檔案,匹配整條路徑

根據檔案從屬關係查詢

-user 查詢屬主指定使用者的所有檔案

-group查詢屬組指定使用者的所有檔案

-uid查詢屬主指定uid的所有檔案

-gid查詢屬組指定的gid的所有檔案

-nouser/nogroup查詢非屬主或屬組的所有檔案

-type根據檔案型別找查

f普通檔案,d目錄檔案,c字元裝置,l符號鏈結,b塊檔案,p管道檔案,s套接字檔案

組合測試

與:-a  預設工作模式,可以不加,表示兩個兩個條件都成立才可以

或:-o 滿足其中乙個條件即可

非:-not/! 相當於不是的意思

!a -a !b =!(a -o b)

!a-o !b=!(a -a b)

根據檔案大小查詢

-size[+ -] 常用單位k,m,g

#unit(#-1,#)指定單位大小,查詢範圍非#,而是從#-1到最大#之間;

-#unit(0,#-1)小於#,查詢範圍是0到#-1之前

+#unit(#,oo)大於#,查詢範圍是從#到無窮

根據時間戳查詢

1.以「天「」為單位查詢

-atime[+|-]#:#為負數,表示過去的時間

以#=3天為例說明

#[#,#-1]距現在3天,表示為大於72小時,小於96小時的範圍

-#[0,#]距現在小於3天,表示為0-3之間

+#[oo,#-1]距離現在3天以上,表示為-4天到無窮大

-mtime用法同上

-ctime用法同上

2.以「分鐘」為單位

-amin用法同上

-mmin用法同上

-cmin用法同上

例 find -type f -atime 1 -ls

查詢過去24-48小時之間訪問過的檔案

find /etc -atime +7 -ls 

查8天之前的訪問過的檔案

根據許可權位查詢

-perm[/|-]mode

mode精確許可權查詢

例:find ./ -perm 644 查詢許可權為644的所有檔案

/mode查詢任何一類使用者(u,g,o)的許可權中的任何一位(r,w,x)符合其一即可

6=r+w只要r或w其一符合即可

find ./ -perm /222或/111 查詢至少有一類使用者有執行或寫許可權的檔案

-mode 任何一類使用者(u,g,o)的許可權中的每一位(r,w,x)同時符合條件即滿足

處理動作

-print 輸出至標準輸出

-ls 對查詢出的檔案執行ls -l

-delete 刪除

-fls /patch 與ls區別在於,把查詢到的檔案資訊儲存至指定的檔案中

-ok command{}\;對查詢到的每個檔案搪行由command表示的命令

find ./ -nouser -a -nogroup -ok chown root:root {}\;將沒有屬主和屬組的檔案改為root,更改時系統會提示單個檔案確認通知

-exec command {}\;不需要使用者確認,直接修改

find ./ -perm /002 -exec mv {}{}.danger\; 將屬主為其他使用者的檔案加上danger字尾

Shell指令碼(三) Shell指令碼入門

1 指令碼格式 指令碼以 bin bash開頭 指定解析器 2 第乙個shell指令碼 helloworld 1 需求 建立乙個shell指令碼,輸出helloworld 2 案例實操 atguigu hadoop101 datas touch helloworld.sh atguigu hadoo...

shell指令碼基礎

執行shell指令碼有兩種方法 1 作為可執行程式 將上面的 儲存為 test.sh,並 cd 到相應目錄 chmod x test.sh 使指令碼具有執行許可權 test.sh 執行指令碼 注意,一定要寫成 test.sh,而不是 test.sh,執行其它二進位制的程式也一樣,直接寫 test.s...

shell指令碼基礎

shell定義 shell是命令解析器,將使用者的輸入的指令轉化為機器可以執行的程式。和c語言不同,指令碼有自己的語法。比較常用的格式是 bin bash或者 bin sh 如 這是乙個判斷輸入字元型別的程式 bin bash read key case in a z echo upperlette...