從鍵盤或檔案中獲取標準輸入 read命令

2021-08-28 09:19:11 字數 2513 閱讀 6963

檔案描述符是和檔案的輸入、輸出相關聯的非負整數,linux核心(kernel)利用檔案描述符(file descriptor)來訪問檔案。開啟現存盤案或新建檔案時,核心會返回乙個檔案描述符。讀寫檔案也需要使用檔案描述符來指定待讀寫的檔案。常見的檔案描述符是stdinstdoutstderr

重定向將輸入文字通過擷取模式儲存到檔案:

echo "this is a text line one" > test.txt

寫入到檔案之前,檔案內容首先會被清空。

重定向將輸入文字通過追加模式儲存到檔案:

echo "this is a text line one" >> test.txt
寫入到檔案之後,會追加到檔案結尾。

標準錯誤輸出:

[root@localhost text]# cat linuxde.net

cat: linuxde.net: no such file or directory

標準錯誤輸出的重定向方法:

方法一:

[root@localhost text]# cat linuxde.net 2> out.txt //沒有任何錯誤提示,正常執行。

方法二:

[root@localhost text]# cat linuxde.net &> out.txt

因為錯誤資訊被儲存到了out.txt檔案中。

[root@localhost text]# cat linuxde.net 2> /dev/null
將錯誤輸出丟棄到/dev/null中,/dev/null是乙個特殊的裝置檔案,這個檔案接受到任何資料都會被丟系,通常被稱為位桶、黑洞。

tee命令可以將資料重定向到檔案,另一方面還可以提供乙份重定向資料的副本作為後續命令的stdin。

在終端列印stdout同時重定向到檔案中:

ls | tee out.txt

1.sh

1.txt

2.txt

eee.tst

eee.tst

oneout.txt

string2

www.pdf

www.pdf

www.pef

[root@localhost text]# ls | tee out.txt | cat -n

1 1.sh

2 1.txt

3 2.txt

4 eee.tst

5 eee.tst

6 one

7 out.txt

8 string2

9 www.pdf

10 www.pdf

11 www.pef

#!/bin/bash

cat

this is a text line1

this is a text line2

this is a text line3

eof

cat 與下乙個eof行之間的所有文字都會當作stdin資料輸入到text.log中。

除了0、1和2分別是stdinstdoutstderr的系統預留描述符,我們還可以使用exec命令建立自定義檔案描述符,檔案的的開啟模式有唯讀模式截斷模式追加模式

< 操作符用於從檔案中讀取至stdin:

echo this is a test line > input.txt

exec 3在命令中使用檔案描述符3:

cat

this is a test line

這裡需要注意只能讀取一次,如果再次使用需要重新建立檔案描述符。

> 操作符用於截斷模式的檔案寫入(資料在檔案內容被截斷之後寫入):

exec 4>output.txt

echo this is a new line >&4

cat output.txt

this is a new line

>> 操作符用於追加模式的檔案寫入(新增資料到檔案中,原有資料不會丟失):exec 5>>output.txt

cat output.txt

this is a new line

從鍵盤獲取輸入的方式

c 本身沒有直接定義輸入或輸出語句,是通過標準庫提供的,包含在中,即c 的輸入輸出功能是通過流物件進行的。cin 丟掉結束符 c 中,cin 表示從鍵盤輸入,需要注意以下問題 1.cin以空格 換行 tab鍵分割,每次僅讀取乙個 2.按下回車後,輸入內容被壓到緩衝區,同時結尾加上 n 的識別符號 3...

從標準輸入行讀取輸入行並在標準輸出中列印這些輸入行

include include include define max cols 20 所處理的最大列號 define max input 1000 每個輸入行的最大長度 int read column numbers int columns,int max void rearrange char o...

009 shell中從標準輸入資訊

主要涉及到的乙個命令是read,使用示範 解釋 第3行的 n 提示輸入資訊輸出後不換行 第4行 讀入的資訊讀入到line 第7行 不同於第3行,這個輸出提示資訊後換行 第8行 讀取三個變數,讀取資訊以空格分開。回車表示輸入。幾個注意點 輸入比變數多的時候,多出來的資訊連同最後乙個賦值給最後乙個量 輸...