亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

深入理解 bash redirection 重定向

2024-06-28 13:21:27
字體:
來源:轉載
供稿:網友
深入理解 bash redirection 重定向stdout redirection
?  ganiks@bash-redirection  cat 123 111111112222222233333333?  ganiks@bash-redirection  cat 123 >> abc ?  ganiks@bash-redirection  echo "one line" >> abc#當cat不帶參數的時候,表示使用標準輸入作為輸入,這允許在標準輸入中鍵入相關的內容?  ganiks@bash-redirection  cat >> abc444444445555555566666666^C    # ctrl+C?  ganiks@bash-redirection  cat abc 111111112222222233333333one line444444445555555566666666

參考文檔

stderr to stdout
?  ganiks@bash-redirection  cat > find.sh                                find . -name "*" -PRint -exec grep "555" {} /;^C?  ganiks@bash-redirection  sudo chmod +x find.sh?  ganiks@bash-redirection  ./find.sh .grep: .: 是一個目錄./abc55555555./nginx-V./find.shfind . -name "*" -print -exec grep "555" {} /;./123#第一種情況?  ganiks@bash-redirection  ./find.sh 2>&1 > find1.loggrep: .: 是一個目錄grep: 輸入文件 ‘./find1.log’ 同時也作輸出#第一種情況?  ganiks@bash-redirection  ./find.sh > find2.log 2>&1#結果1?  ganiks@bash-redirection  cat find1.log ../abc55555555./nginx-V./find.shfind . -name "*" -print -exec grep "555" {} /;./123./find1.log#結果2  ?  ganiks@bash-redirection  cat find2.log .grep: .: 是一個目錄./abc55555555./nginx-V./find.shfind . -name "*" -print -exec grep "555" {} /;./123./find1.log55555555find . -name "*" -print -exec grep "555" {} /;./find2.loggrep: 輸入文件 ‘./find2.log’ 同時也作輸出

0 是 stdin1 是 stdout2 是 stderr

? ./find.sh 2>&1 > find1.log? ./find.sh > find2.log 2>&1

這里分析的關鍵是:一步一步分析,分析一步,輸出一步

  • 第一種情況:

    • 2>&1: 將stderr定向到stdout, 原本stdout就是要到屏幕的,所以stderr會輸出到屏幕
    • >find1.log: 將stdout 再重定向到文件
  • 第二種情況:

    • >find2.log: 將stdout重定向到文件
    • 2>&1: 將stderr重定向到stdout, 此時stdout已經到文件了,自然stderr也要到文件

重定向的過程其實很簡單,但由于和直觀感受不一致,往往導致初學者在這里犯很多錯誤。 參考文檔

基本的IO重定向

基本IO重定向操作

  • > file: 將stdout重定向到file
  • < file: 將file作為stdin
  • cmd1 | cmd2 : pipe,將cmd1 的標準輸出作為cmd2 的標準輸入
  • >>file:將標準輸出重定向到file,如果file存在,append到文件中,即附加到文件的后面,而不是覆蓋文件
  • cat >> file: 當cat不帶參數的時候,表示使用標準輸入作為輸入,這允許在標準輸入中鍵入相關的內容
  • > | file: 強制將標準輸出重定向到file,即使noclobber設置。當設置環境變量set –o noclobber,將禁止重定向到一個已經存在的文件中,避免文件被覆蓋。
  • n >|file: 強制將文件描述符n重定向到file,即使noclobber打開
  • <>file: 將file作為標準輸入和標準輸出。通常用于設備文件(/dev下面的文件),底層系統程序員可用之測試設備驅動,其他的很少用
  • n <>file: 將file作為文件描述符n的輸入和輸出
  • << label: Here-document; : 將shell的標準輸入作為命令的輸入,直到行中之包含label。這中間的輸入成為here-document。
?  ganiks@bash-redirection  cat >> msgfile <<.heredoc> this is the text ofheredoc> our messageheredoc> end with .heredoc> .   #這里<<.表明以.為結束。因此無需使用^D,而改用. ?  ganiks@bash-redirection  cat msgfile this is the text ofour messageend with .
  • n>file :將文件描述符n重定向到file
  • n :將file作為文件描述符的輸入
  • n>>file :將文件描述符n的輸出重定向到file,如果file存在,將輸出append到文件后面
  • n>& :將標準輸出復制到文件描述符n(Duplicate standard output to file descriptor n)
  • n<& :從文件描述符n復制標準輸入(Duplicate standard input from file descriptor n)
  • n>&m :文件描述字n將一個copy至文件描述字m(File descriptor n is made to be a copy of the output file descriptor)
  • n<&m :文件描述字n作為文件描述字m中的一個拷貝(File descriptor n is made to be a copy of the input file descriptor)
  • &>file : 將標準輸出和標準錯誤輸出定向至文件file
  • <&- : 關閉標準輸入
  • >&- : 關閉標準輸出
  • n>&- : 關閉文件描述字作為輸出(Close the output from file descriptor n)
  • n<&- :關閉文件描述字作輸入(Close the input from file descriptor n)
  • n>&Word: If n is not specified, the standard output (file descriptor 1) is used. If the digits in word do not specify a file descriptor open for output, a redirection error occurs. As a special case, if n is omitted, and word does not expand to one or more digits, the standard output and standard error are redirected as described previously.
  • n<&word : If word expands to one or more digits, the file descriptor denoted by n is made to be a copy of that file descriptor. If the digits in word do not specify a file descriptor open for input, a redirection error occurs. If word evaluates to -, file descriptor n is closed. If n is not specified, the standard input (file descriptor 0) is used.
  • n>&digit- : Moves the file descriptor digit to file descriptor n, or the standard output (file descriptor 1) if n is not specified.
  • n<&digit- : Moves the file descriptor digit to file descriptor n, or the standard input (file descriptor 0) if n is not specified. digit is closed after being duplicated to n.
文件描述符

文件描述符在bash中比較少用,從0開始用戶表示進行的數據流,0表示標準輸入,1表示標準輸出,2表示標注錯誤輸出,其他從3開始。最為常用的場景是將錯誤消息輸出到某個文件,可以加上2>file 到我們的命令中?! ∥覀儊砜聪旅嬉粋€腳本的例子:

command > logfile 2>&1 &
  • >logfile 表示command的標準輸出重定向至文件logfile中
  • 2>&1,匹配n>&m,表示文件描述字2(command的標準錯誤輸出)將copy一份采用文件描述字1(即標準輸出),由于標準輸出已經重定向logfile,這份copy也見將重定向至文件lofgile。我們可以用“abcd > logfile 2>&1 &”來驗證這個效果。

下面可達到類似的效果:

command 2>&1 | tee logfile &

錯誤輸出同樣適用標準輸出,通過pipe方式,見他們作為輸入執行tee logfile。tee命令將它的標準輸入copy至他的標準標準輸出以及參數所帶的文件中。和上面的命令不一眼這里即會在stdout 和logfile中同時輸出。

其他文件描述字的重定向,例如<&n,通常用于從多個文件中讀入或者寫出。

  • <&- ,表示強制關閉標準輸入
  • >&- ,表示強制關閉標準輸出
  • 1> ,等同于>
  • 0< ,等同于<

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久久久久久久不卡| 国产精品wwww| 国产精品啪视频| 欧美丰满老妇厨房牲生活| 欧美日韩免费在线观看| 久久国产精品视频| 精品久久久久久久久久| 久久精视频免费在线久久完整在线看| 久久久久亚洲精品| 国产精品高清网站| 亚洲跨种族黑人xxx| 中文字幕精品国产| 精品国产老师黑色丝袜高跟鞋| 日韩国产欧美精品一区二区三区| 日韩在线视频中文字幕| 黑人巨大精品欧美一区二区一视频| 欧美综合一区第一页| 伊人伊成久久人综合网站| 久久久爽爽爽美女图片| 欧美精品情趣视频| 亚洲欧美日韩国产成人| 久久久伊人欧美| 中文字幕国产亚洲2019| 久久影院模特热| 国产成人鲁鲁免费视频a| 久久久这里只有精品视频| 午夜伦理精品一区| 国产精品日日摸夜夜添夜夜av| 欧美在线激情视频| 亚洲综合中文字幕68页| 国产精品久久久久久久久久久久久久| 欧美日韩亚洲一区二区| 精品无码久久久久久国产| 亚洲视频在线播放| 中文字幕亚洲第一| 色www亚洲国产张柏芝| 亚洲精品成人久久久| 欧美在线视频导航| 日韩精品免费视频| 亚洲高清久久久久久| 日本免费一区二区三区视频观看| 久久成人一区二区| 欧美老女人性视频| 视频直播国产精品| 国产精品亚洲视频在线观看| 国产综合视频在线观看| 欧美日韩亚洲激情| 国产99视频精品免视看7| 97在线免费视频| 国产经典一区二区| 日韩电影中文字幕在线观看| 91在线直播亚洲| 亚洲成人亚洲激情| 97视频免费在线观看| 欧美亚洲另类在线| 日韩在线国产精品| 亚洲人成欧美中文字幕| 中文字幕国产亚洲2019| 国产精品久久久久国产a级| 亚洲热线99精品视频| 日韩三级成人av网| 亚洲欧洲自拍偷拍| 国产精品久久婷婷六月丁香| yellow中文字幕久久| 欧美另类极品videosbest最新版本| 亚洲性线免费观看视频成熟| 91精品国产99久久久久久| 亚洲影影院av| 日韩精品在线影院| 一区二区三区精品99久久| 91精品久久久久久久| 亚洲国语精品自产拍在线观看| 日本成熟性欧美| 久久在精品线影院精品国产| 伊人久久久久久久久久| 九九久久久久99精品| 亚洲国产精品久久久久秋霞蜜臀| 亚洲国模精品私拍| 欧美黑人xxxx| 国产成人在线一区二区| 欧美激情网友自拍| 国产欧美日韩中文字幕| 日韩视频永久免费观看| 亚洲综合中文字幕在线观看| 国产亚洲精品久久久久久牛牛| 精品日本高清在线播放| 亚洲一区精品电影| 亚洲第一区第一页| 91精品国产777在线观看| 色樱桃影院亚洲精品影院| 岛国av午夜精品| 精品中文字幕在线| 91亚洲国产成人精品性色| 欧美精品激情blacked18| 欧美成人免费一级人片100| 欧美国产日产韩国视频| 精品国产电影一区| 色婷婷久久av| www.亚洲男人天堂| 欧日韩不卡在线视频| 欧美激情视频免费观看| 欧美成人自拍视频| 欧美日韩综合视频| 亚洲欧美日韩国产中文| 国产a级全部精品| www高清在线视频日韩欧美| 91免费电影网站| 日韩国产高清污视频在线观看| 91美女福利视频高清| www.欧美精品一二三区| 国产精品一区二区久久久| 久久久久成人精品| 国产主播喷水一区二区| 精品激情国产视频| 国产成人aa精品一区在线播放| 欧美高清视频一区二区| 在线成人激情视频| 国产91精品久久久| 精品久久久久久久久久ntr影视| 精品久久久久久久久久久| 国产日本欧美一区二区三区在线| 亚洲香蕉成人av网站在线观看| 国产免费久久av| www.国产精品一二区| 久久这里只有精品视频首页| 久久福利网址导航| 亚洲第一男人天堂| 国产精品久久久久9999| 久久久之久亚州精品露出| 欧美壮男野外gaytube| 九九热这里只有在线精品视| 韩国国内大量揄拍精品视频| 97av在线视频| 91九色蝌蚪国产| 亚洲视频第一页| 日韩欧美一区视频| 国产欧美在线视频| 亚洲视频欧洲视频| 中文亚洲视频在线| 91情侣偷在线精品国产| 欧美日韩国产一中文字不卡| 亚洲国产精久久久久久久| 69影院欧美专区视频| 亚洲欧美另类国产| 国产精品美女主播在线观看纯欲| 国产精品一区二区三区免费视频| 福利视频第一区| 日本欧美爱爱爱| 性色av一区二区咪爱| 欧美午夜女人视频在线| 北条麻妃在线一区二区| 91日本在线观看| 欧美二区在线播放| 91免费精品视频| 日韩色av导航| 欧美韩国理论所午夜片917电影| 亚洲视频电影图片偷拍一区| 国产精品成av人在线视午夜片| 欧洲永久精品大片ww免费漫画| 欧美综合一区第一页| 欧美激情18p| 亚洲成年网站在线观看| 久久人91精品久久久久久不卡| 久久国产精品电影|