數字和字元:
#! /bin/bash
a=10
b=20
#===============================數字運算==============================
val=$[a + b]
val=$[a - b]
val=$[b / a]
val = $[4*(a+b)]
#===============================數字比較==============================
if [ $a -eq $b ]; then
if [ $a -ne $b ]; then
if [ $a -gt $b ]; then
if [ $a -lt $b ]; then
#===============================數字比較==============================
a="abc"
b="efg"
if [ $a = $b ]; then
if [ $a != $b ]; then
if [ -z $a ]; then
echo "-z $a : 字串長度為 0"
if [ -n "$a" ]; then
echo "-n $a : 字串長度不為 0"
if [ $a ]; then
echo "$a : 字串不為空"
#======字串包含======
# 字串不包含
RESULT=`grep "172.21.101.5" /etc/resolv.conf`
if [ -z "$RESULT" ]; then
sed -i '2i nameserver 172.21.101.5' /etc/resolv.conf
fi
#字串 包含
RESULT=`grep "172.16.0.236" /etc/apt/sources.list`
if [ -n "$RESULT" ]; then
echo -e "\n\033[33m [INFO] ---------------查詢成功--------------- \033[0m\n"
return 1
fi
strA="long string"
strB="string"
result=$(echo $strA | grep "${strB}")
if [ -n "$RESULT" ]; then
echo -e "\n\033[33m [INFO] ---------------查詢成功--------------- \033[0m\n"
return 1
fi
str='this is a tree! and that is a car.'
[[ $str =~ "this" ]] && echo "\$str contains this"
sed 用法:
sed -i "2i\sed add new line ---------" ./03.txt #第二行插入內容
sed -i '$a\server 172.22.15.100 iburst' /etc/ntp.conf #尾行插入內容
sed -i '/the new/d' 1.txt #刪除匹配行,包含the new 字串的行
sed -i '/xml/!d' a.txt #刪除不包含 xml 字元的行
sed -i '$'d aa.txt #刪除末尾行
sed -i '2,$d' file #刪除檔案的第2行到末尾所有行:
sed -i '4,7s/^/#/' a.txt #//註釋檔案4-7行(行前新增:#)
sed -i 's/xml/abc/g' a.txt #將全文所有xml替換為abc
sed -i '/swap/s/^/#/' /etc/fstab # 註釋包含swap的行
sed -n '/swap/p' /etc/fstab
nl testfile | sed -n '5,7p' # 僅列出 testfile 檔案內的第 5-7 行:
nl testfile | sed -n '/oo/p' # 搜尋 testfile 有 oo 關鍵字的行:
sed -n '/test/,/check/p' file #test和check所確定的範圍內的行都被列印:
sed -i '5c\No 2-5 number' file #將第五行修改為:新內容
sed -i '2,5c\No 2-5 number' file #將2-5行修改為:新內容
其它記錄:
ls -l | awk -F " " '{print $3, $9}' # 獲取檔案列表某列資訊
dpkg -l | grep -w git #只顯示包含git單詞的字元-w, --word-regexp
lspci | grep -i ether # -i 忽略大小寫
ps -ef | grep -w agent | grep -v grep # -v 不顯示 grep內容的文字行
grep -rl "" ./* | xargs sed -i 's/root/audadmin/g' #替換檔案內容
sed -i '/iface eth2/,/eth2/ s/eth2/eth3/g' ./interfaces #sed 先搜尋後替換,逗號分割 #替換指定行內容
批次操作:
ls *.tar.gz | xargs -n1 tar xzvf // n1 數字1
for tar in *.tar.gz; do tar xvf $tar; done # 批次解壓檔案
for ((i=5; i<10; i++)) ;do ping 172.20.11.$i -c 3; done
操作檔案
caja ./ 開啟資料夾 ---linx-100系統
刪除多個檔案
rm -rf step.{11..37}
刪除其它檔案:
rm -rf !(step.1)
rm -rf !(step.1 | step.2)
建立多個檔案
touch a{1..5}.txt
批次複製檔案:
find ./ -name "*.pdf" | xargs -i -t cp {} ../lats-doc/
批次修改檔案內容:
grep -rl "" ./* | xargs sed -i 's/root/audadmin/g'