重定向:將標準的輸出或錯誤輸出的內容 輸出到文件
重定向符號的使用
Linux的輸入輸出設備:
ls -l /dev/std*
/dev/stdin -> /proc/self/fd/0 # 標準輸入設備(鍵盤)0
/dev/stdout -> /proc/self/fd/1 # 標準輸出設備(顯示器)1
/dev/stderr -> /proc/self/fd/2 # 標準錯誤輸出設備(顯示器)2
1. 輸出重定向符號
> >> 用於重定向 標準輸出
echo "hello world" > a.txt # > 覆蓋文件內容
echo "append hello" >> a.txt # >> 追加文件內容
> 和 >> 只能重定向標準輸出,標準錯誤輸出仍然會輸出
> 和 >> 還常用於 在腳本中創建文件並且寫入內容、清空文件內容
2> 2>> 用於重定向 錯誤輸出
echo "error!" 2> err.txt # > 覆蓋文件內容
echo "append error!" 2>> err.txt # >> 追加文件內容
&> 用於同時重定向 標準輸出和錯誤輸出
echo "ifconfig" &> log # > 覆蓋文件內容
如果僅僅是爲了隱藏腳本執行過程中的輸出信息,同時不產生多餘的文件,可以將內容重定向到
/dev/null # Linux爲重定向輸出提供的“垃圾站”
2. 輸入重定向符號
< 用於將標準輸入內容重定向到文件或指令
echo "abc" > 1.txt
mkdir < 1.txt # 創建名爲abc的文件夾
輸出函數
- echo
用於輸出簡短的內容
echo "hello wolrd"
echo 'Good morning'
echo常用的兩個參數:
echo -e "123\n456" # 翻譯字符串內的轉義字符
123
456
echo -n "123456" # 輸出結果不自動換行
123456
- printf
printf "hello world"
效果等同於 echo -en
- cat(HERE DOCUMENT)
用於輸出多行內容,用法如下:
cat << eof
>1. 第一行內容111
>2. 第二行內容222
>3. 第三行內容333
>4. 第四行內容444
>eof
輸出結果如下:
第一行內容111
第二行內容222
第三行內容333
第四行內容444
eof是用戶自定義的標識符,記錄開始和結束的位置,內容不一定爲eof,只要保證結尾和開頭的標識符完全相同即可