亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

范文資料網(wǎng)>人事資料>描述>《文件系統(tǒng)中的文件描述符實例說明

文件系統(tǒng)中的文件描述符實例說明

時間:2022-04-05 14:08:20 描述 我要投稿
  • 相關(guān)推薦

文件系統(tǒng)中的文件描述符實例說明

  每個打開的文件都會被分配一個文件描述符.stdin (鍵盤), stdout (屏幕), 和 stderr (錯誤消息輸出到屏幕上)的文件描述符分別是0, 1, 和 2. 對于正在打開的額外文件, 保留了描述符3到9.

  文件描述符是文件系統(tǒng)為了跟蹤這個打開的文件而分配給它的一個數(shù)字。

  下面以實例說明:

  1、>的用法

  復(fù)制代碼 代碼如下:

  [zhangy@localhost ~]$ echo "11111" > 1.txt

  [zhangy@localhost ~]$ cat 1.txt

  11111

  [zhangy@localhost ~]$ echo "11111" 1> 1.txt //這個用法和上面的用法是一樣

  [zhangy@localhost ~]$ cat 1.txt

  11111

  [zhangy@localhost ~]$ echo "22222" >1.txt

  [zhangy@localhost ~]$ cat 1.txt

  22222

  這種用法我想大家都非常的熟悉,因為這是我經(jīng)常會用到的。echo "11111" > 1.txt 時,>前面是有一個1的,是默認(rèn)的。>重定向到文件時,會將文件清空,在寫入。

  復(fù)制代碼 代碼如下:

  [zhangy@localhost ~]$ > 1.txt

  [zhangy@localhost ~]$ :> 1.txt

  上面的這個例子,可以把1.txt文件中的內(nèi)容清空,其實也很好理解,清空后,不輸入內(nèi)容當(dāng)然為空了。

  2、>>的用法

  復(fù)制代碼 代碼如下:

  [zhangy@localhost ~]$ echo "2222" >> 2.txt

  [zhangy@localhost ~]$ cat 2.txt

  2222

  [zhangy@localhost ~]$ echo "2222" >> 2.txt

  [zhangy@localhost ~]$ cat 2.txt

  2222

  2222

  從上面的這個例子我們可以看出,>>重定向到文件時,會將輸出寫到文件的結(jié)尾。這一點和>完全不同的。

  3、0,1,2 到9,以及&

  復(fù)制代碼 代碼如下:

  [zhangy@localhost ~]$ cat 1.txt

  333

  111

  222

  444

  [zhangy@localhost ~]$ grep "22" 0< 1.txt //把1.txt中的內(nèi)容讀取出來

  222

  [zhangy@localhost ~]$ ls tank 2>> 1.txt //將錯誤信息放到文件的結(jié)尾

  [zhangy@localhost ~]$ cat 1.txt

  333

  111

  222

  444

  ls: tank: 沒有那個文件或目錄 //這個就是 2>> 1.txt產(chǎn)生的內(nèi)容

  [zhangy@localhost ~]$ (ls tank ;pwd) &>1.txt //將錯誤信息,以及輸出內(nèi)容放到1.txt文件中,&(stderr,stdout)

  [zhangy@localhost ~]$ cat 1.txt

  ls: tank: 沒有那個文件或目錄

  /home/zhangy

  i>&j重定向文件描述符i 到 j.指向i文件的所有輸出都發(fā)送到j(luò)中去. i和j呢是0-9這間的數(shù)字

  復(fù)制代碼 代碼如下:

  [zhangy@localhost ~]$ ls tank 2>&1|egrep * 1> 2.txt //在這里我把錯誤信息重定向到了1,在這里1就會輸出錯誤,根賦值差不多

  [zhangy@localhost ~]$ cat 2.txt

  ls: tank: 沒有那個文件或目錄

  4、<>的用法

 。歼@個符號是讀取,>這個符號是輸出,放在一起就打開并且讀取,

  復(fù)制代碼 代碼如下:

  [zhangy@localhost ~]$ echo 123546 > 2.txt

  [zhangy@localhost ~]$ exec 4<> 2.txt //打開2.txt并將內(nèi)容讀取到&4中

  [zhangy@localhost ~]$ read -n 4 <&4 //從&4中讀取4個字符

  [zhangy@localhost ~]$ echo -n . >&4 //在向&4寫入一個點

  [zhangy@localhost ~]$ exec 4>&- //關(guān)閉輸出文件描述符4

  [zhangy@localhost ~]$ cat 2.txt

  1235.6

  能過上面的這個例子,就可以很清楚了解<>他的作用

  5、n<&-關(guān)閉輸入文件描述符n n="">&關(guān)閉輸出文件描述符n

  復(fù)制代碼 代碼如下:

  [zhangy@localhost ~]$ ls tank //會提示錯誤

  ls: tank: 沒有那個文件或目錄

  [zhangy@localhost ~]$ ls tank 2>&- //我把錯誤關(guān)閉后,什么也不輸出了

  6、|管理命令

  這個命令也是我們常用的,是典型的,把一個命令的輸出,當(dāng)作另一個命令的輸入

  復(fù)制代碼 代碼如下:

  [zhangy@localhost ~]$ echo tank | wc -w

  1

  表示tank是一個輸出,但它又是wc的輸入,不然就不會有統(tǒng)計出現(xiàn)了。