欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

linux輸入輸出重定向使用詳解

 更新時間:2014年01月05日 10:21:48   作者:  
linux中使用重定向符號可以實現(xiàn)輸出輸入重定向,默認(rèn)條件下,標(biāo)準(zhǔn)輸出和錯誤輸出都是終端,用重定向符號可以把標(biāo)準(zhǔn)輸出和錯誤內(nèi)容進(jìn)行重定向,例如把標(biāo)準(zhǔn)輸出重定向到文件,看下面的詳細(xì)解釋

1. 輸出重定向:

默認(rèn)條件下,標(biāo)準(zhǔn)輸出和錯誤輸出都是終端,可以把標(biāo)準(zhǔn)輸出和錯誤內(nèi)容進(jìn)行重定向:

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

[~]# echo "hello\!"
hello\!
[~]# echo "hello!"
-bash: !": event not found "

把標(biāo)準(zhǔn)輸出重定向到文件

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

[~]# echo "hello" > test.sh
[~]# cat test.sh
hello
'>'輸出方式默認(rèn)等價'1>'
[~]#  echo "hello" 1> test.sh
[~]# cat test.sh
hello

但是錯誤內(nèi)容還是會顯示在屏幕上:

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

[~]$cat edit.sql /root/test.sh > temp.sh
cat: /root/test.sh: Permission denied

可以把錯誤內(nèi)容也輸出到文件中(利用文件描述符):

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

[~]$cat edit.sql /root/test.sh 1> temp.sh 2> error.sh
[~]$cat temp.sh
select           dbms_rowid.rowid_object('AAAZdQAAGAAATxjAAk') data_object_id#,
dbms_rowid.rowid_relative_fno('AAAZdQAAGAAATxjAAk') rfile#,
dbms_rowid.rowid_block_number('AAAZdQAAGAAATxjAAk') block#,
dbms_rowid.rowid_row_number('AAAZdQAAGAAATxjAAk') row# from dual
/
[~]$cat error.sh
cat: /root/test.sh: Permission denied

把標(biāo)準(zhǔn)輸出和錯誤信息寫入同一個文件:

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

[~]$cat edit.sql /root/test.sh > temp.sh 2>&1
[~]$cat temp.sh
select           dbms_rowid.rowid_object('AAAZdQAAGAAATxjAAk') data_object_id#,
dbms_rowid.rowid_relative_fno('AAAZdQAAGAAATxjAAk') rfile#,
dbms_rowid.rowid_block_number('AAAZdQAAGAAATxjAAk') block#,
dbms_rowid.rowid_row_number('AAAZdQAAGAAATxjAAk') row# from dual
/
cat: /root/test.sh: Permission denied

這個看起來比較麻煩,實際應(yīng)用中可能用的最多的是:

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

[~]$cat edit.sql /root/test.sh &>temp.sh
[~]$cat temp.sh
select           dbms_rowid.rowid_object('AAAZdQAAGAAATxjAAk') data_object_id#,
dbms_rowid.rowid_relative_fno('AAAZdQAAGAAATxjAAk') rfile#,
dbms_rowid.rowid_block_number('AAAZdQAAGAAATxjAAk') block#,
dbms_rowid.rowid_row_number('AAAZdQAAGAAATxjAAk') row# from dual
/
cat: /root/test.sh: Permission denied
&>把所有輸出都寫入同一個文件

如果不想輸出到文件,也不想在屏幕上顯示,可以利用/dev/null這一特殊設(shè)備文件(bit bucket)
[~]$cat edit.sql /root/test.sh &>/dev/null
如果把標(biāo)準(zhǔn)輸出寫入到文件,就沒法利用管道符號'|'把內(nèi)容傳給接下來的命令,可以利用tee命令解決這個問題:

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

[~]$cat edit.sql /root/test.sh | tee temp.sh | cat -n
cat: /root/test.sh: Permission denied
select           dbms_rowid.rowid_object('AAAZdQAAGAAATxjAAk') data_object_id#,
             dbms_rowid.rowid_relative_fno('AAAZdQAAGAAATxjAAk') rfile#,
             dbms_rowid.rowid_block_number('AAAZdQAAGAAATxjAAk') block#,
               dbms_rowid.rowid_row_number('AAAZdQAAGAAATxjAAk') row# from dual
/


tee命令相當(dāng)于把stdout副本寫入文件,再把stdout傳給下一個命令,但是錯誤內(nèi)容是無法用tee傳遞的,如同使用>>追加內(nèi)容,tee可以使用-a選項追加:

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

[~]$cat edit.sql /root/test.sh | tee -a temp.sh | cat -n
cat: /root/test.sh: Permission denied
select           dbms_rowid.rowid_object('AAAZdQAAGAAATxjAAk') data_object_id#,
             dbms_rowid.rowid_relative_fno('AAAZdQAAGAAATxjAAk') rfile#,
            dbms_rowid.rowid_block_number('AAAZdQAAGAAATxjAAk') block#,
               dbms_rowid.rowid_row_number('AAAZdQAAGAAATxjAAk') row# from dual
/
[~]$cat temp.sh
select           dbms_rowid.rowid_object('AAAZdQAAGAAATxjAAk') data_object_id#,
dbms_rowid.rowid_relative_fno('AAAZdQAAGAAATxjAAk') rfile#,
dbms_rowid.rowid_block_number('AAAZdQAAGAAATxjAAk') block#,
dbms_rowid.rowid_row_number('AAAZdQAAGAAATxjAAk') row# from dual
/
select           dbms_rowid.rowid_object('AAAZdQAAGAAATxjAAk') data_object_id#,
dbms_rowid.rowid_relative_fno('AAAZdQAAGAAATxjAAk') rfile#,
dbms_rowid.rowid_block_number('AAAZdQAAGAAATxjAAk') block#,
dbms_rowid.rowid_row_number('AAAZdQAAGAAATxjAAk') row# from dual
/

2.輸入重定向

輸入重定向,在一些場合,例如數(shù)據(jù)庫監(jiān)控中用的比較多,常見的是使用內(nèi)聯(lián)重定向

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

[~]$cat < edit.sql
select           dbms_rowid.rowid_object('AAAZdQAAGAAATxjAAk') data_object_id#,
dbms_rowid.rowid_relative_fno('AAAZdQAAGAAATxjAAk') rfile#,
dbms_rowid.rowid_block_number('AAAZdQAAGAAATxjAAk') block#,
dbms_rowid.rowid_row_number('AAAZdQAAGAAATxjAAk') row# from dual
/

例如,如下操作,把 <<EOF > temp.sh到最后EOF之間的內(nèi)容當(dāng)作stdin,然后把stdout寫入文件temp.sh

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

[~]$cat <<EOF > temp.s
this is my log
EOF
[~]$cat temp.sh
this is my log

3.自定義文件描述符:

自定義文件描述符的原理是使用基本的三種文件打開模式
只讀(<)
截斷(>)
追加(>>)
創(chuàng)建一個文件描述符3,用于打開文件
[~]# exec 3< test.sh
下面就可以直接使用文件描述符打開文件了,但是只能使用一次:

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

[~]# cat <&3
hello
hello

創(chuàng)建文件描述符4,用于寫入文件(可以復(fù)用):

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

[~]# exec 4>test.sh
[~]# echo okok >&4
[~]# cat test.sh
okok

這個實際類似前面的:

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

[~]$cat edit.sql /root/test.sh > temp.sh 2>&1

創(chuàng)建文件描述符5,用于向文件追加內(nèi)容(也可以復(fù)用,不像輸入文件描述符那樣只能使用1次):

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

[~]# exec 5>>test.sh
[~]# echo okokok >&5
[~]# cat test.sh    
okokok
[~]# echo okokok >&5
[~]# cat test.sh   
okokok
okokok

相關(guān)文章

  • Linux系統(tǒng)下Tomcat使用80端口的方法

    Linux系統(tǒng)下Tomcat使用80端口的方法

    這篇文章主要給大家介紹了關(guān)于Linux系統(tǒng)下Tomcat使用80端口的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Tomcat具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Linux下安裝Python3.6及避坑指南

    Linux下安裝Python3.6及避坑指南

    這篇文章主要介紹了Linux下Python3.6的安裝及避坑指南,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • Linux操作系統(tǒng)安裝圖文配置教程詳細(xì)版

    Linux操作系統(tǒng)安裝圖文配置教程詳細(xì)版

    這篇文章主要為大家詳細(xì)介紹了Linux操作系統(tǒng)安裝圖文配置教程,幫助大家順利的安裝Linux操作系統(tǒng),感興趣的小伙伴們可以參考一下
    2016-09-09
  • Linux學(xué)習(xí)第三篇 Centos7安裝mysql5.7.16數(shù)據(jù)庫

    Linux學(xué)習(xí)第三篇 Centos7安裝mysql5.7.16數(shù)據(jù)庫

    這篇文章主要為大家詳細(xì)介紹了Linux學(xué)習(xí)第三篇,Centos7安裝mysql5.7.16數(shù)據(jù)庫,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Linux之CentOS7下如何配置iptables

    Linux之CentOS7下如何配置iptables

    這篇文章主要介紹了Linux之CentOS7下如何配置iptables問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 在Ubuntu 14 上安裝 Nginx-RTMP 流媒體服務(wù)器的教程

    在Ubuntu 14 上安裝 Nginx-RTMP 流媒體服務(wù)器的教程

    RTMP流媒體協(xié)議是 一套 Adobe 開發(fā)的音頻視頻實時傳輸協(xié)議;nginx-rtmp 是一個基于nginx的 RTMP服務(wù)模塊,開源,免費,接下來通過本文給大家介紹在Ubuntu 14 上安裝 Nginx-RTMP 流媒體服務(wù)器,需要的朋友可以參考下
    2019-11-11
  • 微信小程序 Linux開發(fā)環(huán)境設(shè)置詳解

    微信小程序 Linux開發(fā)環(huán)境設(shè)置詳解

    這篇文章主要介紹了微信小程序 Linux開發(fā)環(huán)境設(shè)置詳解的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • Linux中mv命令的高級用法示例

    Linux中mv命令的高級用法示例

    這篇文章主要給大家介紹了關(guān)于Linux中mv命令的高級用法示例,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Linux具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 修改wamp的apache默認(rèn)端口80為8088以及www目錄

    修改wamp的apache默認(rèn)端口80為8088以及www目錄

    這篇文章主要介紹了修改wamp的apache默認(rèn)端口80為8088以及www目錄為workphp,需要的朋友可以參考下
    2014-03-03
  • centos7安裝nginx的兩種方法介紹

    centos7安裝nginx的兩種方法介紹

    本篇文章主要介紹了centos7安裝nginx的兩種方法介紹,主要是通過兩種方式進(jìn)行安裝,有興趣的可以了解一下。
    2017-03-03

最新評論