LINUX Shell輸入與輸出

2021-06-24 11:52:31 字數 3115 閱讀 3443

echo

使用echo命令可以顯示文字行或變數,或者把字串輸入到檔案。它的一般形式為:

echo string

echo命令有很多功能,其中最常用的是下面幾個:

\c 不換行。

\f 進紙。

\t 跳格。

\n 換行。

linux中使用轉義符時,需要使用-e引數,否則轉義符不生效

# echo -e 「aaa \n bbb」

aaabbb

# echo 「aaa \n bbb」

aaa \n bbb

可以用echo輸出系統變數,或者系統命令的結果

# echo 「my home is : $home」

my home is : /root

# echo 「the time is : `date`」

the time is : sun jun 13 13:03:47 cst 2010

注意date命令兩邊的符號不是單引號!

引號是乙個特殊字元,所以必須要使用反斜槓\來使shell忽略它的特殊含義

# echo 「\」/dev/rmt0″\」

「/dev/rmt0″

read

使用r e a d語句從鍵盤或檔案的某一行文字中讀入資訊,並將其賦給乙個變數。如果只指定了乙個變數,那麼r e a d

將會把所有的輸入賦給該變數,直至遇到第乙個檔案結束符或回車。

read varible1 varible2 …

例如:# read firstname lastname

arthur mr liu

# echo $firstname

arthur

# echo $lastname

mr liu

cat

cat是乙個簡單而通用的命令,可以用它來顯示檔案內容,建立檔案,還可以用它來顯示控制字元。

cat命令的一般形式為:

cat [options] filename1 … filename2 …

cat命令最有用的選項就是:

-v 顯示控制字元

顯示檔案

$ cat myfile

建立檔案

$ cat > myfile

結束按< c t r l – d >

合併檔案

$ cat myfile1 myfile2 myfile3 > bigfile

管道

可以通過管道把乙個命令的輸出傳遞給另乙個命令作為輸入。管道用豎槓|表示。

命令1 |命令2

其中|是管道符號。

sed、awk和grep都很適合用管道,特別是在簡單的一行命令中。在下面的例子中, who命令的輸出通過管道傳遞給awk命令,以便只顯示使用者名稱和所在的終端。

# who | awk 『』

root    pts/1

標準輸入輸出

輸入檔案—標準輸入0

輸出檔案—標準輸出1

錯誤輸出檔案—標準錯誤2

為什麼會有乙個專門針對錯誤的特殊檔案?這是由於很多人喜歡把錯誤單獨儲存到

乙個檔案中,特別是在處理大的資料檔案時,可能會產生很多錯誤。

command > filename 把把標準輸出重定向到乙個新檔案中

command >> filename 把把標準輸出重定向到乙個檔案中(追加)

command 1 > fielname 把把標準輸出重定向到乙個檔案中

command > filename 2>&1 把把標準輸出和標準錯誤一起重定向到乙個檔案中

command 2 > filename 把把標準錯誤重定向到乙個檔案中

command 2 >> filename 把把標準輸出重定向到乙個檔案中(追加)

command >> filename 2>&1 把把標準輸出和標準錯誤一起重定向到乙個檔案中(追加)

command < filename >filename2 把command命令以f i l e n a m e檔案作為標準輸入,以f i l e n a m e 2檔案為標準輸出

command < filename 把command命令以f i l e n a m e檔案作為標準輸入

command << delimiter 把從標準輸入中讀入,直至遇到d e l i m i t e r分界符

command <&m 把把檔案描述符m作為標準輸入

command >&m 把把標準輸出重定向到檔案描述符m中

command <&- 把關閉標準輸入

cat passwd | awk -f: 『』 | sort >sort.out

root將收到乙個郵件,其中含有檔案contents.txt中的內容:

#mail root < contents.txt

重定向操作符command << delimiter是一種非常有用的命令,通常都被稱為「此處」文擋。

shell將分界符d e l i m i t e r之後直至下乙個同樣的分界符之前的所有內容都作為輸入,遇到下乙個分界符,

shell就知道輸入結束了# cat >> myfile1 << eof

> aaa

> bbb

> ccc

> eof

> eof

# cat myfile1

aaabbb

ccceof

# grep 「standard」 > grep.out 2>&1

在上面的例子中, grep命令的標準輸出和標準錯誤都被重定向到grep.out檔案中

exec

exec命令可以用來替代當前shell

exec命令的乙個常見用法就是在使用者的.profile最後執行時,用它來執行一些用於增強安全性的指令碼。

檔案描述符

可以理解為檔案的代號

# vi readtest

exec 4<&0 0# cat myfile1

aaabbb

ccceof

# chmod 744 readtest

# ./readtest

aaabbb

Linux shell的輸入輸出

echo echo命令可以顯示文字行或變數,或者把字串輸入到檔案 echo option string e 解析轉義字元 例如 echo e nimenhao nasfdsaf 列印發生換行 read語句可以從鍵盤或檔案的某一行文字中讀取資訊,並將其賦值給乙個變數 read var1 var2.若只...

Linux shell 輸入 輸出重定向

在linux shell中,可以通過輸入 輸出重定向的方式將標準輸入stdin 標準輸出stdout 標準錯誤輸出stderr重定向到檔案。下表總結了常用符號 符號釋義 0標準輸入 1標準輸出 2標準錯誤輸出 輸入重定向 輸出重定向 輸入追加重定向 輸出追加重定向 輸入重定向到字串 僅限bash 輸...

Linux shell標準輸入,標準輸出,錯誤輸出

shell中可能經常能看到 1 dev null 2 1 eg sudo kill 9ps elf grep v grep grep 1 awk 1 dev null 2 dev null 命令的結果可以通過 的形式來定義輸出 dev null 代表空裝置檔案 代表重定向到 例如 echo 123 ...