婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 玩轉Linux文件描述符和重定向

玩轉Linux文件描述符和重定向

熱門標簽:地圖標注的牌子 外呼系統怎么弄 磁力導航地圖標注 新科火車站地圖標注點 地址高德地圖標注 制作地圖標注 外呼系統鏈接 商店地圖標注外賣入駐 桂林市ai電銷機器人公司

linux下的文件描述符是與文件輸入、輸出相關聯的整數。它們用來跟蹤已打開的文件。
最常見的文件描述符是stdin、stdout和stderr.我們可以將某個文件描述符的內容重定向到另一個文件描述符中。

下面給出一些對文件描述符進行操作和重定向的例子。

1.5.1 預備知識

我們在編寫腳本時會頻繁使用標準輸入(stdin)、標準輸出(stdout)和標準錯誤(stderr)。

通過內容過濾將輸出重定向到文件是我們從事的基礎任務之一。

當命令輸出文本時,這些輸出文本有可能是錯誤信息,也可能是正常的(非錯誤的)輸出信息。
單靠查看輸出的文本本身,  我們無法區分哪些是正常的輸出文本,哪些是錯誤文本。不過,我們可以通過文件描述符來解決這個問題,將那些與特定描述符關聯的文本提取出來。
文件描述符是與一個打開的文件或數據流相關聯的整數。文件描述符0、1以及2是系統預留的。
0——stdin(標準輸入)
1——stdout(標準輸出)
2——stderr(標準錯誤)

1.5.2  實戰演練

將輸出文本重定向或保存到一個文件中:


復制代碼
代碼如下:

$echo"This is a sample text 1">temp.txt

這種方法通過截取文件的方式,將輸出文本存儲到文件temp.txt中,也就是說在把echo命令的輸出寫入文件之前,temp.txt中的內容首先會被清空。
接下來,再看另一個例子:
 

復制代碼
代碼如下:

$echo "this is sample text 2" >>temp.txt

這種方法會將文本追加到目標文件中。
>和>>并不相同。盡管這兩個操作符都可以將文本重定向到文件,但是前者會先清空文件,再寫入內容;而后者會將內容追加到現有文件的尾部。
可以用下面的方法查看文件內容:


復制代碼
代碼如下:

$cat temp.txt
this is sample text 1
this is sample text 2

在linux操作系統中,當使用重定向操作符時,重定向的內容不會出現在終端,而是直接被導入文件。重定向操作符默認使用標準輸出。如果想使用特定的文件描述符,你必須將描述符置于操作符之前。

>等同于1>;對于>>來說,情況也類似(即>>等同于1>>)。
來看看什么是標準錯誤以及如何對它重定向。當命令輸出錯誤信息時,stderr信息就會被打印出來。考慮下面的例子:
 

復制代碼
代碼如下:

$ Is +
Is:cannot access +:No such file or directory

這里,+是一個非法參數,因些將返回錯誤信息。
[ 成功和不成功的命令
   當一個命令發生錯誤并退回時,它會返回一個非0的退出狀態;而當命令成功完成后,它會返回數字0。退出狀態可以從特殊變量$? 中獲得(在命令執行語句之后立刻運行echo$?,就可以打印出退出狀態)。]

將stderr文本打印到屏幕上,而不是文件中。


復制代碼
代碼如下:

$ Is+>out.txt
Is:cannot access+:No such file or directory

然而在下面的命令中,stdout沒有任何輸出,因為錯誤已經重定向到out.txt中去了。


復制代碼
代碼如下:

$ Is +2> out.txt # 正常運行

你可以將stderr單獨重定向到一個文件,將stdout重定向到另一個文件:


復制代碼
代碼如下:

$ cmd 2>stderr.txt 1>stdout.txt

還可以利用下面的方法將stderr轉換成stdout,使得stderr和stdout都被重定向到同一個文件中:


復制代碼
代碼如下:

$ cmd 2>1 output.txt

或者采用下列方法:


復制代碼
代碼如下:

$ cmd> output.txt

有時候,在輸出中可能包含一些不必要的信息(比如除錯信息)。如果你不想讓終端中充斥著有關stderr的繁枝末節,那么你可以將stderr的輸出重定向到/dev/null, 保證一切都會被清除得干干凈凈。假設我們有三個文件,分別是a1、a2、a3。但是普通用戶對a1沒有“讀一寫一執行”權限。如果你需要打印文件名以a起始的所有文件的內容,你可以使用cat命令。
設置一些測試文件:


復制代碼
代碼如下:

$ echo a1 >a1
$ cp a1 a2;cp a2 a3;
$ chmod 000 a1 #清除所有權限

盡管可以使用通配符(a*)顯示所有的文件內容,但是系統會顯示一個出錯信息,因為對文件a1沒有可讀權限。


復制代碼
代碼如下:

$ cat a*
cat:a1 permission denied
a1
a1

其中,cat:a1:permission denied 屬于stderr。我們可以將stderr信息重定向到一個文件中,而stdout 仍然保持不變。考慮如下代碼:


復制代碼
代碼如下:

$ cat a* 2>err.txt #stderr被重定向到err.txt
a1
a1
$ cat err.txt
cat:a1:permission denied

觀察下面的代碼:


復制代碼
代碼如下:

$ some_command 2>/dev/null

本節是 玩轉Linux文件描述符和重定向 第二頁的內容,歡迎大家繼續閱讀。

在這個示例中,來自stderr的輸出被丟到文件/dev/null中。/dev/null是一個特殊的設備文件,這個文件接收到的任何數據都會被丟棄。

因此,null設備通常也被為位桶(bit bucket)或黑洞。
當對stderr或stdout進行重定向時,重定向的文本將傳入文件。

因為文本已經被重定向到文件中,也就沒剩下什么東西可以通過管道(|)傳給接下來的命令,而這些命令是通過stdin來接收文本的。
但是有一個巧妙的方法可以一方面將數據重定向到文件,另一方面還可以提供一些重定向數據的副本作為后續命令的stdin。

這一切都可以使用tee來實現。

舉個例子:要在終端中打印stdout,同時將它重定向到一個文件中,那么可以這樣使用tee:


復制代碼
代碼如下:

command | tee FILE1 FILE2

在下面的代碼中,tee命令接收到來自stdin的數據。它將stdout的一份副寫入文件out.txt,同時將別一份副本作為后續命令的stdin。命令cat -n將從stdin中接收到的每一行數據前加上行號并寫入stdout:


復制代碼
代碼如下:

$ cat a*| tee out.txt| cat -n
cat: a1: permission denied
1 a1
2 a1

查看out.txt 的內容:


復制代碼
代碼如下:

$ cat out.txt
a1
a1

注意,cat:a1:permission denied并沒有在任何文件內容中出現。這是因為這些信息屬于stderr,而tee只能從stdin中進行讀取。
默認情況下,tee命令會將文件覆蓋,但是提供了一個-a選項,可以用于追加內容。例如:


復制代碼
代碼如下:

$ cat a*| tee -a out.txt| cat -n.

帶有參數的命令可以寫成:command FILE1 FILE2依次類推,或者簡簡單單地用command FILE。
我們可以使用stdin作為命令參數。只需要將-作為命令的文件名參數即可:


復制代碼
代碼如下:

$ cmd1 |cmd2 |cmd -

例如:


復制代碼
代碼如下:

$ echo who is this | tee-
who is this
who is this

或者我們也可以將/dev/stdin作為輸出文件名來使用stdin。
類似的,使用/dev/stderr代表標準錯誤,/dev/stdout代表標準輸出。這些特殊的設備文件分別對應stdin、stderr和stdout。

補充內容:
從stdin讀取輸入的命令能以多種方式接收數據。另外,還可以用cat和管道來制定我們自己的文件描述符,例如:


復制代碼
代碼如下:

$ cat file | cmd
$ cmd1 | cmd2

1.將文件重定向到命令
借助重定向,我們可以像使用stdin那樣從文件中讀取數據:


復制代碼
代碼如下:

$ cmd file

2.重定向腳本內部的文本塊
有時候,需要對文本塊(多行文本)像標準輸入一樣進行重定向。考慮一個特殊情況:源文本就位于shell腳本中。

來看下面這段shell腳本吧,向log文件中寫入頭部數據,可以按照下面的方法完成:


復制代碼
代碼如下:

#!/bin/bash
cat EOF>log.txt
LOG FILE HEADER
This is a test log file
Function:System statistics
EOF

在cat EOF>log.txt與下一個EOF行之間的所有文本行都會被當做stdin數據。log.txt文件的內容打印如下:


復制代碼
代碼如下:

$ cat log.txt
LOG FILE HEADER
This is a test log file
Function:System statistics

標簽:三門峽 茂名 衡陽 慶陽 湘西 仙桃 六盤水 衡陽

巨人網絡通訊聲明:本文標題《玩轉Linux文件描述符和重定向》,本文關鍵詞  玩轉,Linux,文件,描述,符,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《玩轉Linux文件描述符和重定向》相關的同類信息!
  • 本頁收集關于玩轉Linux文件描述符和重定向的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲1区2区3区视频| 丁香啪啪综合成人亚洲小说 | 国产校园另类小说区| 色天天综合色天天久久| www.久久精品| 国产成人av电影在线播放| 韩国v欧美v亚洲v日本v| 人人精品人人爱| 九九热在线视频观看这里只有精品| 成人欧美一区二区三区| 亚洲欧美日韩精品久久久久| 1区2区3区欧美| 午夜伊人狠狠久久| 国产一区二区在线视频| 91在线视频在线| 欧美日免费三级在线| 日韩美女视频在线| 国产欧美一区二区在线| 亚洲在线视频免费观看| 激情另类小说区图片区视频区| 国产高清久久久| 欧美日韩小视频| 国产欧美日韩精品a在线观看| 亚洲人成7777| 国产成人在线观看免费网站| 欧美性大战久久| 亚洲国产精华液网站w | 91福利资源站| ww久久中文字幕| 亚洲蜜桃精久久久久久久| 麻豆成人免费电影| 欧美在线观看一区| 国产午夜精品一区二区三区四区| 午夜国产精品一区| 色综合天天综合在线视频| 日韩欧美在线1卡| 一区二区日韩av| 日本精品一级二级| 亚洲天堂免费在线观看视频| 国产一区二区三区免费看| 91精品婷婷国产综合久久| 一级女性全黄久久生活片免费| 国产经典欧美精品| 精品国产伦理网| 国产精品系列在线观看| 中文幕一区二区三区久久蜜桃| 精品系列免费在线观看| 97久久人人超碰| 99riav一区二区三区| 日本女人一区二区三区| 91网页版在线| 中文字幕日韩一区二区| 国产成人在线色| 久久夜色精品一区| 国产高清亚洲一区| 亚洲国产岛国毛片在线| 成人小视频免费观看| 亚洲乱码中文字幕| 91超碰这里只有精品国产| 日韩成人午夜电影| 国产日韩综合av| 91福利小视频| 欧美性欧美巨大黑白大战| 日韩午夜在线影院| 日韩欧美一级二级三级| 日韩视频在线你懂得| 91美女片黄在线观看91美女| 视频在线观看国产精品| 亚洲国产精品二十页| 久久久精品综合| 日韩一区二区在线观看视频播放| 国产91精品在线观看| 久久精品99久久久| 另类小说一区二区三区| 亚洲成人午夜影院| 亚洲一区二区不卡免费| 亚洲欧洲精品天堂一级| 中文字幕国产精品一区二区| www亚洲一区| 精品精品欲导航| 日韩精品一区二区三区四区| 日韩视频免费观看高清在线视频| 一本久久综合亚洲鲁鲁五月天 | 国产高清精品在线| 中文字幕在线免费不卡| 亚洲欧美日韩中文字幕一区二区三区 | 成人激情免费网站| 福利电影一区二区| 色偷偷久久一区二区三区| 在线亚洲+欧美+日本专区| 欧美日韩精品一区二区三区| 欧美一区二区三区系列电影| www日韩大片| 一区二区不卡在线播放| 青青草国产精品97视觉盛宴| 国产精品一二二区| 91久久久免费一区二区| 在线播放亚洲一区| 经典三级视频一区| 99re视频精品| 国产精品欧美极品| 一区二区三区在线观看欧美| 成人av小说网| 国产成人自拍高清视频在线免费播放| 国产精品自拍毛片| 中文字幕国产一区| 婷婷综合五月天| 色悠久久久久综合欧美99| 欧美一级精品大片| 日韩激情在线观看| 色网站国产精品| 国产精品美女久久久久久久网站| 另类成人小视频在线| 91精品国产免费| 三级在线观看一区二区| 欧美乱熟臀69xxxxxx| 一区二区三区日本| www.日韩av| 国产精品国产三级国产| 国产麻豆精品theporn| 在线播放视频一区| 天天操天天综合网| 欧美一级一区二区| 99国产精品99久久久久久| 亚洲成人av资源| 日韩一级片网址| 久久99日本精品| 久久久久久亚洲综合影院红桃| 免播放器亚洲一区| 欧美zozozo| jiyouzz国产精品久久| 中文字幕巨乱亚洲| 欧美亚洲综合网| 日本视频中文字幕一区二区三区| 欧美亚洲日本一区| 蜜臀av一区二区在线免费观看| 日韩精品一区二区三区视频播放| 国产精品99久久久| 亚洲欧美日韩国产一区二区三区| 91丝袜美腿高跟国产极品老师 | 9色porny自拍视频一区二区| 国产精品免费久久久久| 国产成人av电影在线| 国产精品免费视频网站| 欧美美女网站色| 精东粉嫩av免费一区二区三区| 精品国内二区三区| 白白色 亚洲乱淫| 国产一区二区网址| |精品福利一区二区三区| 欧美性猛交一区二区三区精品| 国产mv日韩mv欧美| 亚洲高清三级视频| 国产精品色呦呦| 日韩一区二区电影| 99久久久无码国产精品| 日韩激情av在线| 国模一区二区三区白浆| 免费一级欧美片在线观看| 中文字幕av在线一区二区三区| 91亚洲永久精品| 99re这里都是精品| 国产做a爰片久久毛片| 五月天亚洲婷婷| 中文字幕一区三区| 亚洲黄色免费网站| 亚洲同性gay激情无套| 久久久久综合网| 精品国产一区二区在线观看| 99精品在线免费| 国产乱人伦偷精品视频不卡| 奇米色777欧美一区二区| 成人国产精品免费网站| 激情综合网激情| 激情欧美一区二区| 欧美精品丝袜久久久中文字幕| 欧美夫妻性生活| 一区二区三区久久| 在线观看视频一区| 天天操天天色综合| 欧美中文字幕亚洲一区二区va在线| 琪琪一区二区三区| 国产福利电影一区二区三区| 99在线精品一区二区三区| 偷拍自拍另类欧美| 欧美图片一区二区三区| 国产成人精品综合在线观看 | 在线不卡欧美精品一区二区三区| 欧洲av在线精品| 不卡影院免费观看| 蜜桃av一区二区| 亚洲大片精品永久免费| 国产精品久久久久久久久免费樱桃| 日韩免费视频一区| 大尺度一区二区| 亚洲高清免费视频| 欧美极品aⅴ影院| 成人免费在线播放视频| 亚洲国产激情av| 欧美国产日韩亚洲一区|