1. 程式人生 > >linux shell 判斷 檔案整數 存在、大小、空、等

linux shell 判斷 檔案整數 存在、大小、空、等

轉自:http://hi.baidu.com/nbye2000/item/371624271fdc1dd3a417b642

*      檔案測試操作符

    如果下面的條件成立將會返回真.

    -e    檔案存在
    -a    檔案存在,這個選項的效果與-e相同. 但是它已經被"棄用"了, 並且不鼓勵使用.
    -f    表示這個檔案是一個一般檔案(並不是目錄或者裝置檔案)
    -s    檔案大小不為零
    -d    表示這是一個目錄
    -b    表示這是一個塊裝置(軟盤, 光碟機, 等等.)
    -c    表示這是一個字元裝置(鍵盤, modem, 音效卡, 等等.)
    -p    這個檔案是一個管道


    -h    這是一個符號連結
    -L    這是一個符號連結
    -S    表示這是一個socket
    -t    檔案(描述符)被關聯到一個終端裝置上,這個測試選項一般被用來檢測指令碼中的stdin([ -t 0 ]) 或者stdout([ -t 1 ])是否來自於一個終端.
    -r    檔案是否具有可讀許可權(指的是正在執行這個測試命令的使用者是否具有讀許可權)
    -w    檔案是否具有可寫許可權(指的是正在執行這個測試命令的使用者是否具有寫許可權)
    -x    檔案是否具有可執行許可權(指的是正在執行這個測試命令的使用者是否具有可執行許可權)
    -g    set-group-id(sgid)標記被設定到檔案或目錄上,如果目錄具有sgid標記的話, 那麼在這個目錄下所建立的檔案將屬於擁有這個目錄的使用者組, 而不必是建立這個檔案的使用者組. 這個特性對於在一個工作組中共享目錄非常有用.

    -u    set-user-id (suid)標記被設定到檔案上,如果一個root使用者所擁有的二進位制可執行檔案設定了set-user-id標記位的話, 那麼普通使用者也會以root許可權來執行這個檔案. [1] 這對於需要訪問系統硬體的執行程式(比如pppd和cdrecord)非常有用. 如果沒有suid標誌的話, 這些二進位制執行程式是不能夠被非root使用者呼叫的.
    -k    設定貼上位 對於"貼上位"的一般瞭解, save-text-mode標誌是一個檔案許可權的特殊型別. 如果檔案設定了這個標誌, 那麼這個檔案將會被儲存到快取中, 這樣可以提高訪問速度. [2] 貼上位如果設定在目錄中, 那麼它將限制寫許可權. 對於設定了貼上位的檔案或目錄, 在它們的許可權標記列中將會顯示t.

    -O    判斷你是否是檔案的擁有者
    -G    檔案的group-id是否與你的相同
    -N    從檔案上一次被讀取到現在為止, 檔案是否被修改過
    f1 -nt f2    檔案f1比檔案f2新
    f1 -ot f2    檔案f1比檔案f2舊
    f1 -ef f2    檔案f1和檔案f2是相同檔案的硬連結
    !            "非" -- 反轉上邊所有測試的結果(如果沒給出條件, 那麼返回真).

  *      整數比較操作符

    -eq    等於    如:    if [ "$a" -eq "$b" ]
    -ne    不等於    if [ "$a" -ne "$b" ]
    -gt    大於    if [ "$a" -gt "$b" ]
    -ge    大於等於    if [ "$a" -ge "$b" ]
    -lt    小於    if [ "$a" -lt "$b" ]
    -le    小於等於    if [ "$a" -le "$b" ]
    <    小於(在雙括號中使用)    (("$a" < "$b"))
    <=    小於等於(在雙括號中使用)    (("$a" <= "$b"))
    >    大於(在雙括號中使用)    (("$a" > "$b"))
    >=    大於等於(在雙括號中使用)    (("$a" >= "$b"))
    *      字串比較操作符

    =    等於    if [ "$a" = "$b" ]
    ==    等於    if [ "$a" == "$b" ],與=等價.
    !=    不等號    if [ "$a" != "$b" ],這個操作符將在[[ ... ]]結構中使用模式匹配.
    <    小於, 按照ASCII字元進行排序,if [[ "$a" < "$b" ]],if [ "$a" \< "$b" ],注意"<"使用在[ ]結構中的時候需要被轉義.
    >    大於, 按照ASCII字元進行排序    if [[ "$a" > "$b" ]],if [ "$a" \> "$b" ],注意">"使用在[ ]結構中的時候需要被轉義.
    -z    字串為"null", 意思就是字串長度為零
    -n    字串不為"null".

shell 判斷語句 

流程控制 "if" 表示式 如果條件為真則執行then後面的部分: if ....; then 
  .... 
elif ....; then 
  .... 
else 
  .... 
fi 
大多數情況下,可以使用測試命令來對條件進行測試。比如可以比較字串、判斷檔案是否存在及是否可讀等等…   通常用" [ ] "來表示條件測試。注意這裡的空格很重要。要確保方括號的空格。 
[ -f "somefile" ] :判斷是否是一個檔案 
[ -x "/bin/ls" ] :判斷/bin/ls是否存在並有可執行許可權 
[ -n "$var" ] :判斷$var變數是否有值 
[ "$a" = "$b" ] :判斷$a和$b是否相等 -r file     使用者可讀為真 
  -w file     使用者可寫為真 
  -x file     使用者可執行為真 
  -f file     檔案為正規檔案為真 
  -d file     檔案為目錄為真 
  -c file     檔案為字元特殊檔案為真 
  -b file     檔案為塊特殊檔案為真 
  -s file     檔案大小非0時為真 
  -t file     當檔案描述符(預設為1)指定的裝置為終端時為真 
######################################################### 含條件選擇的shell指令碼 
對於不含變數的任務簡單shell指令碼一般能勝任。但在執行一些決策任務時,就需要包含if/then的條件判斷了。shell指令碼程式設計支援此類運算,包括比較運算、判斷檔案是否存在等。基本的if條件命令選項有: -eq —比較兩個引數是否相等(例如,if [ 2 –eq 5 ]) 
-ne —比較兩個引數是否不相等 
-lt —引數1是否小於引數2 
-le —引數1是否小於等於引數2 
-gt —引數1是否大於引數2 
-ge —引數1是否大於等於引數2 
-f — 檢查某檔案是否存在(例如,if [ -f "filename" ]) 
-d — 檢查目錄是否存在 
幾乎所有的判斷都可以用這些比較運算子實現。指令碼中常用-f命令選項在執行某一檔案之前檢查它是否存在。 ################################################################## 判斷檔案是否存在 #!/bin/sh 
today=`date -d yesterday +%y%m%d` 
file="apache_$today.tar.gz" 
cd /home/chenshuo/shell 
if [ -f "$file" ];then 
echo "OK" 
else 
echo "error $file" >error.log 
mail -s "fail backup from test" [email protected] <error.log 
fi

相關推薦

linux shell 判斷 檔案整數 存在大小

轉自:http://hi.baidu.com/nbye2000/item/371624271fdc1dd3a417b642 *      檔案測試操作符    如果下面的條件成立將會返回真.    -e    檔案存在    -a    檔案存在,這個選項的效果與-e相同.

Linux shell判斷檔案或目錄是否存在

#!/bin/sh myPath="/var/log/httpd/" myFile="/var /log/httpd/access.log" #這裡的-x 引數判斷$myPath是否存在並且是否具有可執行許可權 if [ ! -x "$myPath"]; then   mkdi

Linux Shell指令碼檔案判斷中文符號及其字串入參解析

1、shell指令碼中判斷檔案是否存在 if [ -f  "$var" ] then...... 2、shell指令碼中判斷字串為空  if [ -z "$str"] then...... 3、shell指令碼中判斷字串不為空 if[ "$str"] then..... 4、字串入參的注意事項      

linux shell 判斷表示式

文章來源:http://zhidao.baidu.com/question/322131711.html 檔案比較運算子 -e  filename  如果 filename存在,則為真  [ -e /var/log/syslog ] -d 

linux shell檔案操作

查詢字串所在行 : grep -n “待查詢字串” “檔名” 顯示指定行資訊:sed -n '1,5p' “指定檔案”  表示顯示指定檔案第一至五行的資訊 ----------------------------------------------------------

shell 判斷檔案是否存在,沒有則建立

  沒有該檔案則建立,有則 ls -l 輸出檔案資訊。 #!/bin/bash echo "enter the name:" read filename if test -e $filename ; then ls -l $filename else touch $filename fi

Linux Shell 判斷塊裝置節點是否存在

/************************************************************************* * Linux Shell 判斷塊裝置節點是否存在 * 說明: * 能牌問shell指令碼-f不能判

Linux Shell(一):建立指令碼,變數字串陣列輸入輸出

0.建立一個Shell指令碼: vim abc.sh 1.首行宣告所使用的shell: #!/bin/bash #!是一個特殊的識別符號,其後,跟著解釋此指令碼的shell路徑。 bash只是shell的一種,還有很多其它shell,如:sh,csh,ksh,t

Linux下檢視檔案和資料夾大小

zt:http://www.cnblogs.com/benio/archive/2010/10/13/1849946.html 當磁碟大小超過標準時會有報警提示,這時如果掌握df和du命令是非常明智的選擇。     df可以檢視一級資料夾大小、使用比例、檔案系統及其

Linux shell 判斷輸入是否為全數字

在編寫互動式指令碼的時候經常需要檢查輸入,比如檢查輸入是否為整數。 思路一:正則表示式 read -p "Please input an integer: " num [[ "$num" =~ ^[1-9]+$ ]] && echo OK || echo Wrong #注意正

Linux下檢視檔案和資料夾大小(df&du)

df 用法:df [選項]… [檔案]… 顯示每個檔案所在的檔案系統的資訊,預設顯示全部的檔案系統 常用選項 -h, –human-readable 大小顯示為人類易讀形式 (e.g., 1K

Linux下檢視檔案和資料夾大小的df和du命令聯絡與區別

前面經常需要對Host裡的多個VM進行一些操作如take snapshot等,需要檢視容量時經常用到df -h,但是用到du  的比較少,當需要檢視具體的某個資料夾下的各個檔案 的大小時就需要用到du , 看了下面的介紹當使用 du -h --max-depth=1 wor

linux 常用判斷檔案/目錄命令

注: 轉載自 https://www.cnblogs.com/emanlee/p/3583769.html #shell判斷資料夾是否存在 #如果資料夾不存在,建立資料夾 if [ ! -d "/myfolder" ]; then mkdir /myfolder f

Linux下檢視檔案和資料夾大小--df,du

當磁碟大小超過標準時會有報警提示,這時如果掌握df和du命令是非常明智的選擇。    df可以檢視一級資料夾大小、使用比例、檔案系統及其掛入點,但對檔案卻無能為力。    du可以檢視檔案及資料夾的大小。    兩者配合使用,非常有效。比如用df檢視哪個一級目錄過大,然後用d

Linux Shell 文字檔案處理

通過sort/uniq獲取檔案內容的交集、合集和不同之處:假設有a、b兩個文字檔案,檔案本身已經去除了重複內容。下面是效率最高的方法,可以處理任何體積的檔案,甚至幾個G的檔案。(Sort對記憶體沒有要求,但也許你需要用 -T 引數。)可以試著比較一下,你可以看看如果用Ja

linux shell測試檔案狀態

寫指令碼是,有時要判斷字串是否相等,可能還要檢查檔案狀態或是數字測試。 Test命令用於測試字串,檔案狀態和數字。 對檔案、字串和數字使用test命令 對數字和字串使用expr命令  expr命令測試和執行數值輸出。使用最後退出狀態命令$?可測知test和expr,二者均以0表示正確,1表示返回錯誤。

linux C判斷檔案是否存在【轉】

一、access函式 功能描述:  檢查呼叫程序是否可以對指定的檔案執行某種操作。     用法:  #include <unistd.h> #include <fcntl.h> int access(const char *pathname,

Linux shell讀取檔案

在Linux中有很多方法逐行讀取一個檔案的方法,其中最常用的就是下面的腳本里的方法,而且是效率最高,使用最多的方法。為了給大家一個直觀的感受,我們將通過生成一個大的檔案的方式來檢驗各種方法的執行效率。 方法1:while迴圈中執行效率最高,最常用的方法。   funct

Shell 判斷檔案是否存在的方法

方法一: locate_library() { [ ! "$1*" = "`echo $1*`" ]; } 用法: # Look for PAM (done weirdly due to distribution bugs (e.g. Debian)

linux下sudoers檔案損壞,修復辦法(附圖詳細)

前言: 之前不小心[好吧作死]修改了sudoer檔案,未曾想修改失敗導致我不能獲取sudo,su有關這兩個操作許可權都不行了。帶來了很大麻煩,由下記錄下我的糾正過程 命令: cd /etc pkexec visudo 進入編輯,修改為如