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...