Linux 輸入和輸出

                                                                Linuxshell

  必需要知道一個東西:Linux系統將每一個對象看成文件處理,輸入輸出對象也是如此。bash

  Linux 標準文件描述符:this

文件描述符 縮寫 描述
0 STDIN 標準輸入
1 STDOUT 標準輸出
2 STDERR 標準錯誤

解釋,對終端接口,標準輸入是鍵盤。不少bash命令經過STDIN接受輸入,eg,cat命令 cat>testcat 將接受的輸入重定向到testcat文件。對終端接口:標準輸出是終端監視器。,eg ,ls -l > testls 將標準輸出重訂向到testls文件。STDERR,表述shell處理運行錯誤,運行腳本時,對這種錯誤實際上是很關注的,記錄下來頗有用。spa

使用shell 的時候 ">"表示輸出重定向,1>,2>兩種組合,就是對標準輸出,和錯誤輸出兩種的區別。code

[root@iZ28npved5eZ tmp]# ls -l test sad//不區分的時候
ls: cannot access sad: No such file or directory
-rwxr--r-- 1 root root 49 May  3 10:19 test

    對標準輸出進行重定向:對象

ls -l test sad 1>tets
ls: cannot access sad: No such file or directory

    對標準錯誤進行重定向:接口

ls -l test sad 2>tets
-rwxr--r-- 1 root root 49 May  3 10:19 test

    熱身結束了,在腳本中重定向來了。
ip

    臨時重定向:table

[root@iZ28npved5eZ tmp]# cat test
#!/bin/bash
#this is stderr
echo "this is error" >&2 //標記成標準錯誤
echo "this is sucess"

//使用
[root@iZ28npved5eZ tmp]# ./test 2>error
this is sucess
//標準錯誤就被定向到error文件中,之因此稱爲臨時重定向在與 ./test 2>error 能夠任意修改爲 ./test 1>sucess 
這樣又是另一種結果了。

    永久重定向:class

cat test
#!/bin/bash
#this is stderr
exec 1>sucess //將標準輸出重定向到sucess文件
echo "this is error" >&2
echo "this is sucess"

//使用
./test
this is error

    更復雜一點的就是多種重定向在一個腳本中同時存在,就須要,本身注意永久重定向所申明的位置。(也能夠本身定義重定向文件描述符)

    文件重定向輸入(其實和管道用處很類似,將某個文件的內容當標準輸入重定向進來)

cat test
#!/bin/bash
#this is stderr
exec 0<script //將script文件內容當標準輸入重定向進來
while read line
do
echo $line
done

//用法
./test
{
grep -c $1 chen
}

    還有一些比較偏的用法:禁止命令輸入:重定向到 /dev/null 文件就會直接把定向的所有丟棄。

相關文章
相關標籤/搜索