亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

1. 輸出重定向:

默認(rèn)條件下,標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出都是終端,可以把標(biāo)準(zhǔn)輸出和錯(cuò)誤內(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)等價(jià)'1>'
[~]#  echo "hello" 1> test.sh
[~]# cat test.sh
hello

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

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

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

可以把錯(cuò)誤內(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)輸出和錯(cuò)誤信息寫(xiě)入同一個(gè)文件:

復(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

這個(gè)看起來(lái)比較麻煩,實(shí)際應(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
&>把所有輸出都寫(xiě)入同一個(gè)文件

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

復(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副本寫(xiě)入文件,再把stdout傳給下一個(gè)命令,但是錯(cuò)誤內(nèi)容是無(wú)法用tee傳遞的,如同使用>>追加內(nèi)容,tee可以使用-a選項(xiàng)追加:

復(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.輸入重定向

輸入重定向,在一些場(chǎng)合,例如數(shù)據(jù)庫(kù)監(jiān)控中用的比較多,常見(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寫(xiě)入文件temp.sh

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

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

3.自定義文件描述符:

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

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

[~]# cat <&3
hello
hello

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

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

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

這個(gè)實(shí)際類似前面的:

復(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)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Tomcat具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Linux下安裝Python3.6及避坑指南

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

    這篇文章主要介紹了Linux下Python3.6的安裝及避坑指南,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    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ù)庫(kù)

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

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

    Linux之CentOS7下如何配置iptables

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

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

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

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

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

    Linux中mv命令的高級(jí)用法示例

    這篇文章主要給大家介紹了關(guān)于Linux中mv命令的高級(jí)用法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Linux具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(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的兩種方法介紹,主要是通過(guò)兩種方式進(jìn)行安裝,有興趣的可以了解一下。
    2017-03-03

最新評(píng)論