shell指令碼讀取資料有以下幾種方式:
1.鍵盤輸入,預設
2.從檔案中讀取
3.通過管道命令傳遞
echo的功能:
\c :不換行
\f :進紙
\t :跳格
\n :換行
\表示轉義,例如:"\"/dev/rmt0"\"翻譯為,"/dev/rmt0"
read:從鍵盤或檔案的某一行文本中讀取資訊,並將其賦給一個變數。
複製代碼 代碼如下:[jb51]/>read name
hello i am a regular user
[jb51]/>echo $name
hello i am a regular user
[jb51]/>
cat:作用,1.顯示檔案內容,2.建立檔案,3.顯示控制字元。
1.顯示檔案內容
cat filename | more
cat filename | pg
2.建立檔案
cat > filename
3.顯示控制字元
cat -v filename
管道:可以通過管道,將一個命令的輸出傳遞給另一個命令做為輸入。
形式:命令1 | 命令2
例如:
複製代碼 代碼如下:[jb51]/usr/xxxx/ytcclb>who | awk '{print $1"\t"$2}'
xxxx ttyp0
xxxx ttyp1
xxxx ttyp2
...
xxxx ttyp55
[jb51]/usr/xxxx/ytcclb>df -k | awk '{print $1}' | grep -v "Filesystem"
/dev/root
/dev/boot
[jb51]/usr/xxxx/ytcclb>df -k | awk '{print $1}'| grep -v "Filesystem"|sed s'/\/dev\///g'
root
boot
[jb51]/usr/xxxx/ytcclb>
tee命令
作用:把輸出的一個副本輸送到標準輸出,另一個副本拷貝到相應的檔案中。
tee -a file
-a:追加到檔案末尾。
[jb51]/usr/xxxx/ytcclb>who | tee who.out
將who命令尋找到的資料儲存到who.out檔案中。
檔案重新導向:
command > filename 把標準輸出重新導向到一個新檔案中
command >> filename 把標準輸出重新導向到一個檔案中(追加)
command 1 > fielname 把標準輸出重新導向到一個檔案中
command > filename 2>&1 把標準輸出和標準錯誤一起重新導向到一個檔案中
command 2 > filename 把標準錯誤重新導向到一個檔案中
command 2 >> filename 把標準輸出重新導向到一個檔案中(追加)
command >> filename 2>&1 把標準輸出和標準錯誤一起重新導向到一個檔案中(追加)
command < filename >filename2 把command命令以filename檔案作為標準輸入,
以filename2檔案作為標準輸出
command < filename 把command命令以filename檔案作為標準輸入
command << delimiter 把從標準輸入中讀入,直至遇到delimiter分界符
command <&m 把檔案描述符m作為標準輸入
command >&m 把標準輸出重新導向到檔案描述符m中
command <&- 把關閉標準輸入
重新導向標準輸出
1.將很多命令的輸出追加到一個檔案中
複製代碼 代碼如下:ls -l | grep ^d >>files.out
ls account* >> files.out
[jb51]/usr/xxxx/ytcclb>ls -l null.txt
-rw-r--r-- 1 xxxx group 3 Nov 15 16:07 null.txt
[jb51]/usr/xxxx/ytcclb>chmod u +x null.txt
chmod: WARNING: cannot access +x: No such file or directory (error 2)
u與+x之間有空格!
複製代碼 代碼如下:[jb51]/usr/xxxx/ytcclb>chmod u+x null.txt
[jb51]/usr/xxxx/ytcclb>ls -l null.txt
-rwxr--r-- 1 xxxx group 3 Nov 15 16:07 null.txt