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 進入編輯,修改為如