激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频

linux bash的重定向

時(shí)間:2024-04-27 00:18:34 Linux認證 我要投稿
  • 相關(guān)推薦

關(guān)于linux bash的重定向

  所謂I/O重定向簡(jiǎn)單來(lái)說(shuō)就是一個(gè)過(guò)程,這個(gè)過(guò)程捕捉一個(gè)文件,或者命令,程序,腳本,甚至腳本中的代碼塊(code block)的輸出,然后把捕捉到的輸出,作為輸入發(fā)送給另外一個(gè)文件,命令,程序,或者腳本。

  如果談到I/O重定向,就涉及到文件標識符(File Descriptor)的概念, 在Linux系統中,系統為每一個(gè)打開(kāi)的文件指定一個(gè)文件標識符以便系統對文件進(jìn)行跟蹤,這里有些和C語(yǔ)言編程里的文件句柄相似,文件標識符是一個(gè)數字,不同數字代表不同的含義,默認情況下,系統占用了3個(gè),分別是0標準輸入(stdin),1標準輸出(stdout), 2標準錯誤(stderr), 另外3-9是保留的標識符,可以把這些標識符指定成標準輸入,輸出或者錯誤作為臨時(shí)連接。通常這樣可以解決很多復雜的重定向請求。

  標準輸入通常指鍵盤(pán)的輸入

  標準輸出通常指顯示器的輸出

  標準錯誤通常也是定向到顯示器

  請看以下例子,來(lái)描述一下他們的關(guān)系

  #ls /dev

  這個(gè)命令列出/dev目錄下的所有文件,在屏幕上輸出結果。

  這里 /dev 就是作為命令ls的標準輸入(從鍵盤(pán)輸入),而打印在屏幕的結果就是標準輸出(/dev目錄中的內容)

  還是回到標題,重定向就是把標準的輸入或者輸出更改成其他的方式,請參看如下例子

  或者等同于

  #ls /dev 1>filename #注意:"1"和">"中間沒(méi)有空格

  以上命令會(huì )把命令的標準輸出重新定向到一個(gè)文件filename,而不是顯示到屏幕上,如果不指明文件標識符,系統默認的就是1, 因此1可以省略

  如果把上面例子重的">"改成">>"則表示把輸出追加到filename文件的末尾,如果文件不存在則創(chuàng )建它。如下

  #ls /dev >>filename

  也可以把標準錯誤重新定向到文件

  #ls -qw /dev 2>filename

  顯然 -qw是一個(gè)錯誤參數,通常會(huì )在顯示器上報告一個(gè)錯誤信息,但由于把2標準錯誤(stderr)重新定向到了文件filename,因此顯示器沒(méi)有錯誤信息,而信息寫(xiě)到了文件里面

  以下命令是把標準輸出和錯誤都定向到文件

  #ls /dev &>filename

  "&"在這里代表標準輸出和標準錯誤,這里無(wú)論是正常輸出還是錯誤信息都寫(xiě)到filename中了。

  重新定義標準輸入,輸出,和錯誤的文件標識符

  重新定義文件標識符可以用i>&j命令,表示把文件標識符i重新定向到j(luò ),你可以把"&"理解為"取地址"

  請看以下例子

  #exec 5>&1

  表示把文件標識符5定向到標準輸出,這個(gè)命令通常用來(lái)臨時(shí)保存標準輸入。

  同樣標準輸入也是可以重新定向的,請參考下面例子

  # grep search-word

  一般來(lái)說(shuō)grep命令在給定文件中搜索字符串,以上命令把文件filename作為grep命令的標準輸入,而不是從鍵盤(pán)輸入。

  前面曾經(jīng)提到,系統為每一個(gè)打開(kāi)的文件指定一個(gè)文件標識符以便系統對文件進(jìn)行跟蹤,那么默認的文件標識符是什么呢?答案是0,也就是標準輸入,或者可以說(shuō)從鍵盤(pán)輸入。當然這個(gè)文件標識符也可以自己指定,請參考下面例子

  #echo 123456789 >filename 把字符串寫(xiě)到文件filename中 #exec 3<>filename 把文件filename打開(kāi),并指定文件標識符為3 #read -n 4 <&3 從文件中讀4個(gè)字符,句柄已經(jīng)指到第四個(gè)字符末尾 #echo -n . >&3 在第5個(gè)字符處寫(xiě)一個(gè)點(diǎn),覆蓋第5個(gè)字符,-n表示不換行 #exec 3>&- 關(guān)閉文件標識符3

  現在cat filename文件的結果就成了1234.6789

  命令j<>filename表示把文件打開(kāi),并指明文件標識符為j

  "&-"表示關(guān)閉文件標識符

  有關(guān)關(guān)閉文件標識符的操作請參考下面

  n<&- 關(guān)閉輸入文件標識符n 0<&-或<&- 關(guān)閉標準輸入stdin n>&- 關(guān)閉輸出文件標識符n 1>&-或>&-關(guān)閉標準輸出stdout

  另外還有一些其他命令,如下參考

  2. :> filename 或者 > filename

  表示把文件filename設置成空,也就是清空文件內容,如果文件不存在,則創(chuàng )建一個(gè)空文件,(等同于touch命令) :表示一個(gè)空輸出,兩個(gè)命令的唯一區別就是>filename不是在所有shell都可以正常工作的。


【linux bash的重定向】相關(guān)文章:

Linux認證系統管理:認識與學(xué)習bash03-18

Linux認證考點(diǎn)03-19

Linux認證的概念03-25

Linux認證概念03-19

Linux認證優(yōu)勢03-19

學(xué)習Linux的忠告03-21

Linux認證系統管理:linux下搭建ftp03-08

Linux認證基本介紹03-12

Linux認證賬戶(hù)映射01-23

激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频