var=2; var2=2
# var不等於0 and var2大於2 是返回:it is true;否返回:it is false
[$var -ne 0 -a $var2 -gt 2 ]
&&echo
"it is true"
||echo
"it is false"
;## it is false
# var不等於0 或 var2大於2 是返回:it is true;否返回:it is false
[$var -ne 0 -o $var2 -gt 2 ]
&&echo
"it is true"
||echo
"it is false"
;## it is true
str1=''[
[ -z $str1]]
&&echo
'str1 is blank'
||echo
'str1 is not blank';[
[ -n $str1]]
&&echo
'str1 is not blank'
||echo
'str1 is blank'
;
""
"-gt 大於
-lt 小於
-ge 大於或等於
-le 小於或等於
-a 是邏輯與操作符 -o 是邏輯或操作符
[[ -z $str1 ]] # 為空串返回真
[[ -n $str1 ]] # 不是空返回真
"""
fpath=
"./test.sh"
[ -e $fpath]&&
echo file exists ||
echo file not exists;
## 或者
if[ -e $fpath];
then
echo file exists;
else
echo file not exists;
fi
""
"[ -f $file_var ] 包含正常的檔案路徑或檔名,則返回真
[ -x $var ] 包含的檔案可執行,則返回真
[ -d $var ] 包含的檔案時目錄,則返回真
[ -e $var ] 包含的檔案存在,則返回真 *****
[ -c $var ] 包含的檔案是乙個字元裝置檔案的路徑,則返回真
[ -b $var ] 包含的檔案是乙個塊裝置檔案的路徑,則返回真
[ -w $var ] 包含的檔案可寫,則返回真
[ -r $var ] 包含的檔案可讀,則返回真
[ -l $var ] 包含的是乙個符號鏈結,則返回真
"""
find
. -type f -print0 |
xargs -0 ls
## 檢視當前檔案下的所有檔案(包含檔案中的檔案)
# 1 正則
## 檔名中有 out 和 txt 的檔案
find
. \( -name '*txt' -a -name "out*" \) -print
## 忽略大小查詢 .px 結尾的檔案
find
. -iregex '.*\.p.$'
# -iregex 忽略大小寫
## 否定查詢
find
.! -name "*.txt" -print
# 2 目錄深度: 查詢1-2層目錄中全部.sh 檔案
find
. -maxdepth 2 -name "*.sh" -print
### 找出7天內有修改的檔案(當前資料夾)
find
. -maxdepth 1 -type f -mtime -7 -print
基於檔案型別&使用時間
進行搜尋的時候,務必要先限制搜尋檔案的範圍,不然會全部遍歷
其他命令解釋
""
"基於檔案型別的搜尋
find -type f -print
f 普通檔案
l 符號鏈結
d 目錄
c 字元裝置
b 塊裝置
s 套接字
p fifo"""
"""基於時間戳的搜尋
find -type f -atime -7 -print
--- 天
-atime 使用者最近一次訪問檔案的時間
-mtime 檔案內容最後一次被修改的時間
-ctime 檔案元資料最後一次改變的時間
--- 分鐘
find -type f -amin -7 -print
-amin
-mmin
-cmin
-newer
find . -type f -newer file.py -print #比file.py 修改時間更近的所有檔案
"""
# 在s**件裡找到 有 fo 的一行
ls *.sh |
xargs
grep fo
cat example.txt """
11 12 14
1 2 3 4 7"""
# 1、將多行轉換成1行
cat example.txt |
xargs
### >> 11 12 14 1 2 3 4 7
# 2、將一行轉化成3行
cat example.txt |
xargs -n 3"""
11 12 14
1 2 3
4 7"
""# 3、 分割&分行
echo
"fenxgexfenxhang"
|xargs -d x -n 2
### -d 以哪個字元分割 -n 每行包含多少字元"""
fen ge
fen hang
"""
# 將包含換行符或空白符的檔案傳給xargs
## 其中使用grep 找出內容中不含 image的檔案
find
. -maxdepth 1 ! -name "*.docx" -print0 |
xargs -0 grep -l image
## 1、結合find使用xargs批量刪除
find
. -type f -name "*.txt" -print |
xargs
rm -f
### 使用 -print0 將間隔用 \0表示
find
. -type f -name "*.txt" -print0 |
xargs -0 rm -f
## 2、統計源**目錄中所有sh程式檔案的行數
find
. -type f -name "*.sh" -print0 |
xargs -0 wc -l
Shell 測試比較
檔案狀態測試 b filename 當filename 存在並且是塊檔案時返回真 返回0 c filename 當filename 存在並且是字元檔案時返回真 d pathname 當pathname 存在並且是乙個目錄時返回真 e pathname 當由pathname 指定的檔案或目錄存在時返回...
Shell基礎之 變數 比較 測試
一 變數 環境變數 位置變數 預定義變數 1 環境變數 env 檢視環境變數2 位置變數 vi location.sh bin bash sum expr 1 2 echo 1 2 sum location 12 34 則12為第乙個位置變數賦值為 1,32為第二個為 2。location為預定義變...
Shell指令碼的條件測試與比較
shell指令碼的條件測試與比較 一 shell指令碼的條件測試 通常,在bash的各種條件結構和流程控制結構中都要進行各種測試,然後根據測試結構執行不同的操作,有時也會與if等條件語句相結合,來完成測試判斷,以減少程式執行的錯誤。執行條件測試表示式後通常會返回 真 或 假 就行執行命令後返回的值為...