最近在用shell開發一套mysql備份恢複系統,因為之前隻是從書上看過一些linux和shell的部分知識,應用的機會很好,是以邊開發邊重新溫習一下之前的知識。下面是在開發過程中遇到或者使用的一些知識點,記錄下來以便以後再用:
1).swp檔案。這裡它的作用類似于windows下的.bak檔案,是用來做恢複使用的。下面是摘抄的<鳥哥基礎>中的說明:
關于檔案的回複與暫存盤
另外,其實 vi 是具有『可回複』功能的呢!那麼 vi 憑什麼幫我們進行回複的功能呢? 很簡單啊!憑暫存檔啊!舉例來說,當我們編輯一個檔案時,假設名稱為 /tmp/passwd , 那麼在這個 /tmp 底下就會有一個臨時檔案,檔名為『 /tmp/.passwd.swp 』,這是一個隐藏檔, 我們所進行的一些修改都會暫時存在這個檔案當中,萬一在檔案修改過程中, 系統挂了,那麼下次你再重新 vi /tmp/passwd 時,系統就會告訴您,是否需要回複『Recovery』成修改過程中的模樣? 如果您按下 (R) ,嘿嘿!就可以将資料回複到修改過程的樣子,而不是源檔案啰! 這是個很有用的功能喔! ^_^ 這也就是說,如果有一天,您去 /tmp 底下,執行 ls -al 時,發現到底下有兩個檔案, 檔名分别為 passwd 與 .passwd.swp 的話,那麼 (1) 可能有人在編輯這個檔案; (2) 之前您在編輯這個檔案時,因為某些不知名的因素導緻 vi 程式中斷,則該暫存檔就會存在。 如果是狀态 (2) ,則此時您可以将該 .passwd.swp 檔案删除,或者是,直接 vi /tmp/passwd , 在 vi 出現是否回複時,選擇回複,然後儲存更新 /tmp/passwd ,之後再将這個 /tmp/.passwd.swp 檔案删除即可! 如果不删除的話,那麼每次編輯這個檔案,都會告知您該檔案有問題啊!
2)echo –e “output”
echo後面跟着參數-e,然後後面跟輸出内容。-e參數的作用是将output中的特殊字元/當成轉移字元處理,例如:
echo “output\n” ===&gt;輸出内容為:output\n
echo -e “output\n”===&gt;輸出内容為:output ,然後後面帶一換行符進行換行操作。
3)date的格式輸
僅僅輸出年月日:`date +%Y%m%d` 或者加入反斜線進行格式化 `date +%Y/%m/%d`;
僅僅輸出時分秒: `date +%H:%M:%S`
輸出完整的時分秒:`date +’%/Y%m/%d +%H:%M:%S’`
--date參數,例如輸出30天以前的日期:`date --date=’30 days ago’ +%y/%m/%d`;
4) exit xxx:終止程式并回傳給系統的值。(預設情況下傳回0表示腳本執行成功,傳回1表示異常)
系統獲得回傳的值存儲在特殊變量:$?,列印出來可以用echo $?;
附linux中的特殊變量:
5)讓程式暫停休眠n秒後執行
sleep n;----機關為秒
6)清空檔案内容的指令:(1):>filename (2)cat /dev/null > file
7) 讀取檔案的行數
cat filename | wc –l
8) 如何判斷某字元串是否為數字
9)if判斷條件如何取反
eg.
if !([ -e /etc/passwd ]);then
echo "/etc/passwd not exists!";
fi
10)如何獲得執行腳本檔案所在的絕對路徑
relative_path=$(0%/*); ##從最後面的字元開始删除直到第一個/為止,如果删除到最後一個/,則寫為:$(0%%/*);
absolute_path=`cd $relative_path | pwd`
11)如在在腳本執行時,使使用者輸入的密碼不回顯
12)如何一行一行讀取檔案的内容
13)read 讀取内容賦予變量注意點
14) 獲得字元串的長度
(1)len=`expr length $str`
len=`echo $str|awk '{print length($0)}'`
(2)str="hello"
echo ${str} | wc -L
(3)echo ${#s}
15)判斷某個字元出現的次數
chooseDBs=${chooseDB//[^,]}; ##### [^,] 這裡的^是反向選擇的意思,表示沒有逗号的 ,都被空來置換
declare -i v_CountDBs=${#chooseDBs}+1;
16)字元串不等于何數字不等于
17)判斷字元串是否為空
if [ -n "$testStr" ];then
echo "The string $testStr is not null!";
fi;
或者
if ![ -z "$testStr" ];then
本文轉自 yubowei 51CTO部落格,原文連結:http://blog.51cto.com/samyubw/239660