shell腳本中if與case使用,查找文件locate與find的使用,壓縮,解壓及歸檔工具

shell腳本中if與case使用

查找文件locate與find的使用

壓縮,解壓及歸檔工具


執行的循序

 順序執行

 選擇執行

 循環執行

條件語句if

if只是一個有含義的詞,不能單獨作為指令使用。

單分支

     if 條件判斷:then

            條件為真的分支代碼

     fi

雙分支 

     if 判斷條件:then

            條件為真的分支代碼

     else

         條件為假的分支代碼

     fi

多分支

      if 判斷條件1,

         if-true

      elif 判斷條件2,then

          if-ture

      elif 判斷條件3,then 

          if-ture

           …

      else 

          all-false

      fi

QQ圖片20160816110625.png

QQ圖片20160816110714.png

case 條件判斷

多用于離散值的判斷

case  

PAT1)

     分支

     ;;

PAT2)

     分支2

     ;;

*)

     默認分支

     ::

esac     

case   *:任意長度任意字符

       ?:任意單個字符

       []:指定范圍內的任意單個字符

       a|b: a or b

例子:

case $number in

1|3|6)

echo good

;;

2|4|7)

echo bad

;;

10|8|66)

echo very good

;;

esac

read -p "please input a number: " number

[ -z "$number" ] && echo "you must input a number " && exit

QQ圖片2016081414244.png

QQ圖片20160816110529.png

判斷輸入的數字是否正整數

read -p "please input a integer" n

! expr "$n" + 0 &> /dev/null  && echo no digit && exit 

[ $n -gt 0 ] && echo integer || echo "passive inte ger or zoro"

文件查找和壓縮文件

文件查找

locate

locate +文件名

默認是全文件系統搜索

基于數據庫搜索 /var/lib/mlocate/mlocate,db

updatedb 更新數據庫指令

-i 執行忽略大小寫

-n 只顯示指定的行數目

locate foo  搜索名稱或路徑帶有foo的文件

QQ圖片20160816111101.png

locate -r '\.sh$' 搜索以.sh結尾的文件

locate 是外部命令

-r, –regexp REGEXP    搜索基本正則表達式 REGEXP 來代替模式

QQ圖片20160816111232.png

find

實時查找工具,通過遍歷指定路徑完成文件查找:

查找速度慢

精確查找

實時查找

可能只搜索用戶具備讀取和執行權限的目錄

find 是外部命令

查找條件:

-name "文件名稱":可以使用 *,?,[],[^]

      find -name "checkint*" 要使用"" ''不然會出現問題

      find -name '[af]*.sh'

-iname:忽略大小寫

-inum n :按inode號碼查找

-samefile name :查找相同inode號碼的文件

-links n:連接數目為n的文件

-regex "PATTERN" :

      find -regex '.*/.sh$'

-p:顯示文件所使用的真實路徑

根據屬主和屬組查找

按照UID,GID搜索

-user name:查找屬主為指定用戶的文件

-group grpname:查找屬組為指定組的文件

-uid userID:查找屬主指定UID的文件

-gid groupID:查找屬組指定GID的文件

-nouser:查找沒有屬主的文件

        find / nouser

-nogroup:查找沒有屬組的文件

        find / -nouser -nogroup

        默認可以多指令使用

QQ圖片20160816111355.png

文件類型

   -type

f: 普通文件

d: 目錄文件

l: 符號鏈接文件

s:套接字文件

b: 塊設備文件

c: 字符設備文件

p: 管道文件

find / -type b  搜索塊設備文件

QQ圖片20160816111646.png

組合條件:

與:-a

或:-o

非:-not, !

find -not -name "*.sh" -not -name "f*"

默認可以多指令使用

QQ圖片20160816111917.png

摩根定律:

非(P 且Q) = (非P) 或(非Q)

非(P 或Q) = (非P) 且(非Q)

!A -a !B = !(A -o B)

!A -o !B = !(A -a B)

不加括號括住所選的條件,最后加的-ls只會顯示最后的條件的值

-a:與的使用時候可以直接在后面 -ls

-o:或的時候使用要用括號括起來

-path 排除

find /root -path/root/bin -a -prune -o -name "*.sh" -print(打印)  排除了/rootbin ,查找.sh結尾 的文件打印

格式:-path 路徑 -a -prune(裁掉)

QQ圖片20160816112300.png

根據文件大小來查找:

-size [+|-]#UNIT

常用單位:k, M, G

find / -size 10K =(9K,10K]

#UNIT: (#-1, #],如:6k

        (5k.6k]  5k到6k之間

-#UNIT:[0,#-1], 如:-6k

        [0,5k]  0k到5k

+#UNIT:(#,∞), 如:+6k

        [6k,+∞] 6k到無窮大

根據時間戳:

     用“天”為單位

     -atime [+|-]#

         #: [#,#+1)

        +#: [#+1,∞]

        -#: [0,#)

        -mtime

        -ctime

   -atime 7 [7,8)

   -atime -7 [0,7]

   -atime +7 [8,+∞)

find /etc/ -mmin -1 一分鐘以內發生變化的文件

以“分鐘”為單位:

-amin

-mmin

-cmin

QQ圖片20160816113013.png

根據權限查找

-perm +數字表示的權限

find /bin/ -perm 4755 -ls 精確查找權限為4755的文件

find -perm /222(+222) 7版本用/222 屬主屬組其他有一個有讀權限就滿足搜索條件  

find -perm -222 屬主屬組其他都要有讀權限才能滿足搜索條件

沒有-,/,+,直接+數字就是精確匹配

QQ圖片20160816113013.png

QQ圖片20160816113347.png

處理動作:

  -print:默認的處理動作,顯示至屏幕;

?-ls:類似于對查找到的文件執行“ls -l”命令

?-delete:刪除查找到的文件;

  -fls file:查找到的所有文件的長格式信息保存至指定文件中

?-ok COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令;

對于每個文件執行命令之前,都會交互式要求用戶確認

find -perm -222 -ok rm {} \:

                  固定語法要帶\:結束

                -ok chmod o-w {} \:

                -exec cp {} {} .bak \:

                {}專門配合find使用,表示搜索出匹配的文件

-exec COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令

?{}: 用于引用查找到的文件名稱自身

?find傳遞查找到的文件至后面指定的命令時,查找到所有符合條件的文件一次性傳遞給后面的命令

?有些命令不能接受過多參數,此時命令執行可能會失敗,下面方式可規避此問題

find | xargsCOMMAND

find -perm /222 |xargs 0(換行)

find -perm /002 type f -delete 刪除權限002的文件

壓縮,解壓及歸檔工具

compress[-dfvcVr] [-b maxbits] [file …]

-d: 解壓縮,相當于

-c: 結果輸出至標準輸出,不刪除原文件

-v: 顯示詳情

?uncompress解壓縮

?zcatfile.Z>file

compress m  壓縮,源文件刪除了

compress -c m > m.Z

compress -c -d m.Z >m 解壓縮,不刪除源文件。

uncompress m.Z 解壓文件

QQ圖片20160816142538.png

zcat m.Z 看壓縮文件內容,不進行文件解壓

zcat m.gz 

gzip 壓縮(較常用

gzip m   壓縮文件,.gz格式

gzip -d m.gz 解壓文件=gunzip

gzip -9 mgz(文件名)壓縮比例(1-9),默認是6

QQ圖片20160816143201.png

bzip2  壓縮效率更高

bzip2 m(文件)

bzip2 -d m 解壓縮文件

bzip2 -k m 壓縮保留源文件

bzip2 -9 m (1-9)壓縮比例,默認是6

bzcat 不顯式解壓縮的前提下查看文本文件內容

xz  壓縮效率最高

xz m(文件)

xz -d m 解壓縮文件

xz -k m 壓縮保留源文件

xz -9 m (1-9)壓縮比例,默認是6

xzcat :不顯示解壓縮的前提下查看文本內容

zip 打包壓縮 (壓縮多個文件)

zip –r sysconfig  sysconfig/

zip m m

unzip m.zip 解壓縮

cat /var/log/messages | zip message –  壓縮文件

unzip -p message >message 會將解壓縮的結果顯示到屏幕上,但不會執行任何的轉換。

查找/var目錄下屬主為root,且屬組為mail的所有文件

QQ圖片20160816143738.png

查找/var目錄下不屬于root、lp、gdm的所有文件

blob.png

查找/var目錄下最近一周內其內容修改過,同時屬主不為root,也不是postfix的文件

shell腳本中if與case使用,查找文件locate與find的使用,壓縮,解壓及歸檔工具QQ圖片20160816144310.png

查找當前系統上沒有屬主或屬組,且最近一個周內曾被訪問過的文件

[root@zczx ~]# find / -nouser -nogroup -atime -7

查找/etc目錄下大于1M且類型為普通文件的所有文件

QQ圖片20160816144749.png

查找/etc目錄下所有用戶都沒有寫權限的文件

QQ圖片20160816145435.png

查找/etc目錄下至少有一類用戶沒有執行權限的文件

[root@zczx ~]# find /etc/ -not -perm /111

查找/etc/init.d目錄下,所有用戶都有執行權限,且其它用戶有寫權限的文件

[root@zczx ~]# find /etc/init.d/ -perm -113

原創文章,作者:swzczx,如若轉載,請注明出處:http://www.www58058.com/36348

(0)
swzczxswzczx
上一篇 2016-08-18
下一篇 2016-08-18

相關推薦

  • 計算機硬件及Linux簡介

    計算機的組成 計算機主要分成五大部分:輸入單元、控制單元、運算單元、存儲器、輸出單元。 其中,中央處理器(CPU)是一個具有特定功能的芯片,含有微指令集。包括控制單元與運算單元。 控制單元對程序進行控制,調度程序、數據、地址。運算單元負責對數據的各種邏輯運算和數字運算。 計算機的功能 包括但不限于 驅動程序:字面意思。 進程管理:計算機內部能夠通過分配資源,…

    Linux干貨 2016-10-30
  • shell入門 (一)

    Shell就是一個命令行解釋器 ,它的作用是解釋執行用戶的命令,用戶輸入一條命令,Shell就解釋執行一條,這種方式稱為交互式(Interactive)。 Shell還有一種執行命令的方式稱為批處理 (Batch),用戶事先寫一 個Shell腳本 (Script),其中有很多條命令,讓Shell一次把這些命令執行完,而不必一條一…

    Linux干貨 2017-08-26
  • 七.Linux博客-2016年8月4日cat、cut、less、head、tail、wc、sort、uniq、grep

    格式說明: 操作 概念 命令 說明及舉例 七.cat、cut、less、head、tail、wc、sort、uniq、grep cat cat -A a.txt 查看隱藏內容 cat -n a.txt 顯示行號 cat -s a.txt 壓縮空行,把多行空行壓縮為一行 …

    Linux干貨 2016-08-24
  • 程序包管理rpm

    Linux程序包管理      API:Application Program Interface      ABI:Application Binary Interface         Unix…

    Linux干貨 2016-08-23
  • Linux基礎知識及常用命令

    pwd:printing working directory -顯示當前工作目錄            [root@edu tmp]# pwd          &nbs…

    Linux干貨 2016-09-15
  • 重啟nginx服務時提示 nginx: [error] invalid PID number “” in “/usr/local/var/run/nginx/nginx.pid”

    解決方法:nginx -c /etc/nginx/nginx.conf       -c后面的路徑為nginx的配置文件

    Linux干貨 2017-03-30

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-19 14:48

    文章寫的很詳細,也很認真,對當天知識的梳理好好進行了梳理,是不是收獲很大呢?繼續保持哦

欧美性久久久久