那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

2分鐘搞懂輸出重定向

學(xué)益得智能硬件 ? 來源:學(xué)益得智能硬件 ? 2024-01-15 16:41 ? 次閱讀

接著上節(jié)課的標(biāo)準(zhǔn)輸出講。

視頻最后我們通過重定向把標(biāo)準(zhǔn)輸出寫到了文件中,但是錯誤輸出還是留在了屏幕上。

root@turbo:~# ls
test  test.c
root@turbo:~# 
root@turbo:~# ./test 
xxxxxx 錯誤輸出
------ 標(biāo)準(zhǔn)輸出
root@turbo:~# 
root@turbo:~# ./test > out.log
xxxxxx 錯誤輸出
root@turbo:~# 
root@turbo:~#
有沒有什么方法把錯誤輸出也寫到文件里面?

重定向分為輸入重定向輸出重定向,輸入重定向使用場景比較少,我們主要來講講輸出重定向。

先把程序修改一下,只留下標(biāo)準(zhǔn)輸出。
#include 


int main()
{
    //fprintf(stderr, "xxxxxx 錯誤輸出
");


    fprintf(stdout, "------ 標(biāo)準(zhǔn)輸出
");


    return 0;
}
運行程序的時候會在屏幕上打印字符串,如果希望把這些字符串收集起來,運行的時候加上輸出符號和文件名,字符串就寫到了文件里面。
root@turbo:~# gcc test.c -o test 
root@turbo:~# ./test > out.log
root@turbo:~#
一個符號表示清空文件重新寫入,兩個符號表示往文件的后面追加。

再把程序改回來,這次既有標(biāo)準(zhǔn)輸出,也有錯誤輸出:
#include 


int main()
{
    fprintf(stderr, "xxxxxx 錯誤輸出
");


    fprintf(stdout, "------ 標(biāo)準(zhǔn)輸出
");


    return 0;
}
代碼的運行現(xiàn)象是這樣的:
root@turbo:~# ls
test  test.c
root@turbo:~# ./test 
xxxxxx 錯誤輸出
------ 標(biāo)準(zhǔn)輸出
root@turbo:~#
如果像剛才一樣加上重定向,那只能把標(biāo)準(zhǔn)輸出寫到文件中:
root@turbo:~# ls
test  test.c
root@turbo:~# ./test > out.log
xxxxxx 錯誤輸出
root@turbo:~# 
root@turbo:~#
其實這種寫法也等價于這樣的:
root@turbo:~# ls
test  test.c
root@turbo:~# ./test 1> out.log
xxxxxx 錯誤輸出
root@turbo:~# 
root@turbo:~#
0 1 2在 Linux 中分別表示標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)錯誤處理,大部分時候我們會把1省略掉。

如果想把錯誤信息也收集到文件中,可以這樣寫:
root@turbo:~# ls
out.log  test  test.c
root@turbo:~# ./test 1> out.log 2> error.log
root@turbo:~#
意思也很明確,標(biāo)準(zhǔn)輸出寫到文件out.log中,錯誤輸出寫到文件error.log中。

這就是上節(jié)課說的,stdout和stderr可以把不同級別的信息分開。

如果想把標(biāo)準(zhǔn)輸出和錯誤輸出寫到同一個文件中,可以使用這條命令:
root@turbo:~# ./test > out.log 2>&1
root@turbo:~#
2>&1
這個符號的意思就是把錯誤輸出重定向到標(biāo)準(zhǔn)輸出。

需要注意的是,此處的順序不能修改,否則達不到想要的效果。

有的時候我們不想看到輸出信息,也不想保存輸出信息,可以考慮dev下的null設(shè)備文件,所有寫進去的數(shù)據(jù)都會被丟棄。
root@turbo:~# ./test > /dev/null 2>&1
root@turbo:~#






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11345

    瀏覽量

    210391
  • 字符串
    +關(guān)注

    關(guān)注

    1

    文章

    585

    瀏覽量

    20601

原文標(biāo)題:2分鐘搞懂輸出重定向

文章出處:【微信號:學(xué)益得智能硬件,微信公眾號:學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    linux shell數(shù)據(jù)重定向(輸入重定向輸出重定向)詳細分析

    >> ; /dev/stderr -> /proc/self/fd/2 2代表:/dev/stderr輸出重定向:[cpp] view plain copycommand-line1
    發(fā)表于 03-02 13:59

    Linux Shell系列教程之(十六) Shell輸入輸出重定向

      Command > filename 2>&1把標(biāo)準(zhǔn)輸出和錯誤一起重定向到一個文件中  Command 2 > filename把標(biāo)準(zhǔn)錯誤重定向
    發(fā)表于 09-12 15:53

    如何對Linux Bash輸入輸出重定向

    Linux - Bash - 輸入輸出重定向
    發(fā)表于 04-27 09:01

    Linux輸入與輸出重定向介紹

    Linux輸入與輸出重定向
    發(fā)表于 06-12 14:54

    分鐘搞懂PID控制算法

    【Arduino 101】五分鐘搞懂PID控制算法物料清單尺寸接線文章目錄物料清單尺寸接線物料清單Arduino Uno x 1超聲波模塊(HC-SR04)x 1舵機(Tower Pro
    發(fā)表于 06-28 07:53

    實現(xiàn)printf函數(shù)的重定向

    目錄重定向函數(shù)屬性設(shè)置重定向函數(shù)在配置好串口之后需要在相關(guān)文件中添加以下函數(shù)以實現(xiàn)printf函數(shù)的重定向//注意添加頭文件#include "stdio.h"#ifdef
    發(fā)表于 08-24 07:09

    如何重定向printf輸出到串口輸出

    如何重定向printf輸出到串口輸出呢?有哪幾種方法?
    發(fā)表于 12-02 06:04

    請問一下stm32輸出重定向是怎么定義的

    請問一下stm32輸出重定向是怎么定義的?
    發(fā)表于 12-02 07:05

    重定向printf輸出到串口輸出的方法

    本文詳細的介紹了如何重定向printf輸出到串口輸出的多種方法,包括調(diào)用MDK微庫(MicroLib)的方法,調(diào)用標(biāo)準(zhǔn)庫的方法,以及適用于 `GNUC` 系列編譯器的方法。
    發(fā)表于 02-10 07:16

    DNS 重定向的缺陷

    DNS 重定向的缺陷 這一種路由解決方案,由于充分利用了現(xiàn)有的網(wǎng)絡(luò)結(jié)構(gòu),結(jié)構(gòu)簡單,因而被人們認(rèn)為是一種有效的技術(shù),是現(xiàn)階段CDN 應(yīng)用中主
    發(fā)表于 03-25 10:25 ?2314次閱讀

    管道符、重定向與環(huán)境變量

    1.標(biāo)準(zhǔn)輸入重定向(STDIN,文件描述符為0):默認(rèn)從鍵盤輸入,也可從其他文件或命令中輸入。 3.錯誤輸出重定向(STDERR,文件描述符為2):默認(rèn)
    發(fā)表于 04-29 08:48 ?642次閱讀

    Keil下使用STlink重定向printf的配置

    Keil下使用STlink重定向printf的配置1. printf 重定向Keil默認(rèn)下使用Micro LIB庫,該庫調(diào)用 fputs 實現(xiàn) printf,所以需要重新定義fputs函數(shù),以重定向
    發(fā)表于 12-27 18:43 ?18次下載
    Keil下使用STlink<b class='flag-5'>重定向</b>printf的配置

    Linux I/O重定向詳解

    Linux I/O重定向可以定義為,更改從命令讀取輸入到命令發(fā)送輸出的方式。你可以重定向命令的輸入和輸出。對于重定向符號,可以是 或者
    的頭像 發(fā)表于 05-04 14:34 ?876次閱讀

    printf輸出重定向的方法

    在 PC 上運行 C 語言時,prinf 輸出的內(nèi)容會打印在電腦顯示器上,這是因為 prinf 默認(rèn)的輸出設(shè)備就是顯示器。而當(dāng)我們在單片機上,需要通過 printf 函數(shù)將信息打印到串口,就要對 printf 函數(shù)的輸出進行
    的頭像 發(fā)表于 05-14 16:22 ?5437次閱讀
    printf<b class='flag-5'>輸出</b><b class='flag-5'>重定向</b>的方法

    全面掌握Linux重定向技巧:讓命令行操作效率翻倍的秘密

    #1 linux輸出重定向 $ command > file 2>1 這里的 ,表示重定向的目標(biāo)不是一個 文件 ,而是一個 文件描述符 ,內(nèi)置的文件描述符如下 1 => stdout
    的頭像 發(fā)表于 01-08 10:19 ?211次閱讀
    百家乐技巧和规律| 本溪棋牌娱乐网| 大发888大赢家| 博乐娱乐城| 百家乐官网预约| 乐宝百家乐官网的玩法技巧和规则 | 百家乐官网在发牌技巧| 百家乐官网最安全打法| 大发888游戏平台188| 做生意门面对着什么方向好| 百家乐赌博游戏| 网络棋牌游戏平台| 太阳城百家乐娱乐开户| 大发888娱乐场168| 新2百家乐官网现金网百家乐官网现金网| 乐天堂百家乐娱乐| 亚洲百家乐官网博彩的玩法技巧和规则 | 大发888小陆| 百家乐做庄家必赢诀窍| 雅加达百家乐官网的玩法技巧和规则 | 葡京百家乐的玩法技巧和规则 | 新澳门百家乐的玩法技巧和规则| 百家乐有几种打法| 百家乐官网网络赌城| ea平台| 东营区百家乐艺术团| 百家乐在线怎么玩| 有钱人百家乐官网的玩法技巧和规则 | 真人百家乐新开户送彩金| 庞博百家乐官网的玩法技巧和规则 | 澳门百家乐博牌| 百家乐游戏网址| 做百家乐官网网上投注| 现金棋牌游戏| 东莞百家乐的玩法技巧和规则| 网络百家乐会作假吗| 百家乐破解的办法| 菠菜百家乐娱乐城| 澳门百家乐赢钱窍门| 362百家乐官网的玩法技巧和规则 大集汇百家乐官网的玩法技巧和规则 | 188金宝博开户|