萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> 程式語言綜合

Shell 腳本資料讀取與輸出重導向完整指南

資料輸入三大來源

  1. 鍵盤輸入(預設 stdin)
  2. 檔案讀取
  3. 管道傳遞(上一指令 stdout → 下一指令 stdin)

echo 進階用法

選項功能
-e啟用轉義序列解析
\c不換行
\f換頁
\t跳格
\n換行
\\輸出反斜線本身

read 指令 - 互動式讀取

$ read name
hello i am a regular user
$ echo $name
hello i am a regular user

將一行文字讀入變數,支援多變數:read var1 var2 var3 依空白分割。

cat 多重用途

用法指令說明
顯示內容cat filename | more分頁瀏覽
建立檔案cat > filename標準輸入寫入檔案,Ctrl+D 結束
顯示控制字元cat -v filename不可見字元可視化

管道 | - 串聯指令

命令1 | 命令2

實戰管線範例:

# 列出登入用戶,僅顯示帳號與終端機
who | awk '{print $1"\t"$2}'

# 取得掛載點裝置名稱
df -k | awk '{print $1}' | grep -v "Filesystem" | sed 's/\/dev\///g'
# 輸出: root, boot

tee 指令 - 雙向輸出

命令 | tee [-a] filename
  • 標準輸出同時寫入螢幕與檔案
  • -a 追加模式
$ who | tee who.out
# 螢幕顯示 who 結果,同步存入 who.out

檔案重導向完整語法

語法含義
cmd > filestdout 覆寫檔案
cmd >> filestdout 追加檔案
cmd 1> filestdout 覆寫(同 >)
cmd > file 2>&1stdout + stderr 合併覆寫
cmd 2> filestderr 覆寫
cmd 2>> filestderr 追加
cmd >> file 2>&1stdout + stderr 合併追加
cmd < file1 > file2stdin 從 file1,stdout 到 file2
cmd < filestdin 從 file
cmd << delimiterHere Document,讀入直到 delimiter
cmd <&m檔案描述符 m 作為 stdin
cmd >&mstdout 導向檔案描述符 m
cmd <&-關閉 stdin

實務範例:多指令輸出追加同一檔案

ls -l | grep ^d >> files.out
ls account* >> files.out

chmod 常見錯誤

$ chmod u +x null.txt   # 錯誤:u 與 +x 間有空格
$ chmod u+x null.txt    # 正確
copyright © 萬盛學電腦網 all rights reserved