淺析Linux中重定向問(wèn)題
簡(jiǎn)介
在計(jì)算領(lǐng)域,重定向是大多數(shù)命令行解釋器所具有的功能,包括各種可以將標(biāo)準(zhǔn)流重定向用戶規(guī)定地點(diǎn)的Unix shells。類Unix操作系統(tǒng)的程序可以通過(guò)dup2系統(tǒng)調(diào)用完成重定向,或者通過(guò)缺少一些靈活性但是更高一級(jí)層次的freopen(3)和popen來(lái)完成。
1重定向
1.1 重定向符號(hào)
> 輸出重定向到一個(gè)文件或設(shè)備 覆蓋原來(lái)的文件
>! 輸出重定向到一個(gè)文件或設(shè)備 強(qiáng)制覆蓋原來(lái)的文件
>> 輸出重定向到一個(gè)文件或設(shè)備 追加原來(lái)的文件
< 輸入重定向到一個(gè)程序
1.2標(biāo)準(zhǔn)錯(cuò)誤重定向符號(hào)
2> 將一個(gè)標(biāo)準(zhǔn)錯(cuò)誤輸出重定向到一個(gè)文件或設(shè)備 覆蓋原來(lái)的文件 b-shell
2>> 將一個(gè)標(biāo)準(zhǔn)錯(cuò)誤輸出重定向到一個(gè)文件或設(shè)備 追加到原來(lái)的文件
2>&1 將一個(gè)標(biāo)準(zhǔn)錯(cuò)誤輸出重定向到標(biāo)準(zhǔn)輸出 注釋:1 可能就是代表 標(biāo)準(zhǔn)輸出
>& 將一個(gè)標(biāo)準(zhǔn)錯(cuò)誤輸出重定向到一個(gè)文件或設(shè)備 覆蓋原來(lái)的文件 c-shell
|& 將一個(gè)標(biāo)準(zhǔn)錯(cuò)誤 管道 輸送 到另一個(gè)命令作為輸入
1.3命令重導(dǎo)向示例
在 bash 命令執(zhí)行的過(guò)程中,主要有三種輸出入的狀況,分別是:
1. 標(biāo)準(zhǔn)輸入;代碼為 0 ;或稱為 stdin ;使用的方式為 <
2. 標(biāo)準(zhǔn)輸出:代碼為 1 ;或稱為 stdout;使用的方式為 1>
3. 錯(cuò)誤輸出:代碼為 2 ;或稱為 stderr;使用的方式為 2>
[test @test test]# ls -al > list.txt
將顯示的結(jié)果輸出到 list.txt 文件中,若該文件以存在則予以取代!
[test @test test]# ls -al >> list.txt
將顯示的結(jié)果累加到 list.txt 文件中,該文件為累加的,舊數(shù)據(jù)保留!
[test @test test]# ls -al 1> list.txt 2> list.err
將顯示的數(shù)據(jù),正確的輸出到 list.txt 錯(cuò)誤的數(shù)據(jù)輸出到 list.err
[test @test test]# ls -al 1> list.txt 2> &1
將顯示的數(shù)據(jù),不論正確或錯(cuò)誤均輸出到 list.txt 當(dāng)中!錯(cuò)誤與正確文件輸出到同一個(gè)文件中,則必須以上面的方法來(lái)寫!不能寫成其它格式!
[test @test test]# ls -al 1> list.txt 2> /dev/null
將顯示的數(shù)據(jù),正確的輸出到 list.txt 錯(cuò)誤的數(shù)據(jù)則予以丟棄! /dev/null ,可以說(shuō)成是黑洞裝置。為空,即不保存。
1.4為何要使用命令輸出重導(dǎo)向
• 當(dāng)屏幕輸出的信息很重要,而且我們需要將他存下來(lái)的時(shí)候;
• 背景執(zhí)行中的程序,不希望他干擾屏幕正常的輸出結(jié)果時(shí);
• 一些系統(tǒng)的例行命令(例如寫在 /etc/crontab 中的文件)的執(zhí)行結(jié)果,希望他可以存下來(lái)時(shí);
• 一些執(zhí)行命令,我們已經(jīng)知道他可能的錯(cuò)誤訊息,所以想以『 2> /dev/null 』將他丟掉時(shí);
• 錯(cuò)誤訊息與正確訊息需要分別輸出時(shí)。
總結(jié)
以上所述是小編給大家介紹的Linux中重定向問(wèn)題,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
shell腳本按當(dāng)前日期輸出日志的實(shí)現(xiàn)
這篇文章主要介紹了shell腳本按當(dāng)前日期輸出日志的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05一個(gè)監(jiān)控LINUX目錄和文件變化的Shell腳本分享
這篇文章主要介紹了一個(gè)監(jiān)控LINUX目錄和文件變化的Shell腳本分享,對(duì)服務(wù)器經(jīng)常被掛馬的朋友時(shí)分有用,需要的朋友可以參考下2014-09-09Shell腳本實(shí)現(xiàn)memcache緩存命中率監(jiān)控
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)memcache緩存命中率監(jiān)控,這個(gè)腳本比較簡(jiǎn)單,通過(guò)check_tcp腳本獲取memcached的stats信息,然后將該信息格式化成一個(gè)字符串,然后將get_hits比上cmd_gets就能得到緩存命中率,需要的朋友可以參考下2014-12-12實(shí)現(xiàn)shell終端代碼分享(可用戶登錄 實(shí)現(xiàn)系統(tǒng)命令)
實(shí)現(xiàn)shell終端代碼分享,實(shí)現(xiàn)用戶登錄,系統(tǒng)命令使用,大家參考實(shí)現(xiàn)吧2013-12-12shell腳本實(shí)現(xiàn)數(shù)據(jù)庫(kù)表增量同步的流程
這篇文章主要介紹了shell腳本實(shí)現(xiàn)數(shù)據(jù)庫(kù)表增量同步的流程,流程也很簡(jiǎn)單,通過(guò)獲取axt_statistics 庫(kù)的 zxxt_class 表中id字段的最大id值,具體腳本跟隨小編一起看看本文吧2021-10-10