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

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

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

Linux I/O重定向詳解

Linux愛好者 ? 來源:Linux愛好者 ? 2023-05-04 14:34 ? 次閱讀

Linux I/O重定向

Linux I/O重定向可以定義為,更改從命令讀取輸入到命令發(fā)送輸出的方式。你可以重定向命令的輸入和輸出。對(duì)于重定向符號(hào),可以是<、> 或者 | 。

I/O重定向中的標(biāo)準(zhǔn)流

Bash shell在I/O重定向中有三個(gè)標(biāo)準(zhǔn)流:

標(biāo)準(zhǔn)輸入(stdin):stdin流編號(hào)為stdin(0)。bash shell從stdin獲取輸入。默認(rèn)情況下,鍵盤用作輸入。
標(biāo)準(zhǔn)輸出(stdout):stdout流編號(hào)為stdout(1)。bash shell將輸出發(fā)送到stdout。輸出將顯示。
標(biāo)準(zhǔn)錯(cuò)誤(stderr):stderr流編號(hào)為stderr(2)。bash shell向stderr發(fā)送錯(cuò)誤消息。顯示錯(cuò)誤消息。

重定向到文件

每個(gè)流都使用重定向命令。單括號(hào)'>'或雙括號(hào)'>>'可用于重定向標(biāo)準(zhǔn)輸出。如果目標(biāo)文件不存在,將創(chuàng)建一個(gè)具有相同名稱的新文件。

覆蓋:帶有單括號(hào)“>”的命令將覆蓋現(xiàn)有的文件內(nèi)容。

>:標(biāo)準(zhǔn)輸出
<:標(biāo)準(zhǔn)輸入
2>:標(biāo)準(zhǔn)錯(cuò)誤

注意:寫“1>”或“>”和“0<”或“<”是一回事。但對(duì)于stderr,必須編寫“2>”。

用法:
cat > 

追加: 帶有雙括號(hào)“>>”的附加命令不會(huì)覆蓋現(xiàn)有的文件內(nèi)容。

>>-標(biāo)準(zhǔn)輸出
<<-標(biāo)準(zhǔn)輸入
2>>-標(biāo)準(zhǔn)錯(cuò)誤
用法:
cat >> 

重定向到程序

重定向到程序管道將流從一個(gè)程序重定向到另一個(gè)程序。當(dāng)管道用于將一個(gè)程序的標(biāo)準(zhǔn)輸出發(fā)送到另一個(gè)程序時(shí),第一個(gè)程序的數(shù)據(jù)將不會(huì)顯示在終端上,只顯示第二個(gè)程序的信息。盡管管道的功能看起來可能與“>”和“>>”相似,但有顯著差異。管道將數(shù)據(jù)從一個(gè)程序重定向到另一個(gè)程序,而括號(hào)僅用于文件的重定向。

用法:
ls *.txt | cat > txtFile

Linux input 重定向

bash shell使用stdin獲取輸入。在輸入重定向中,將文件輸入命令,并在“<”符號(hào)的幫助下執(zhí)行此重定向。

Syntax:
cat < 
[root@localhost ~]# cat   < f.txt 
aa
[root@localhost ~]#

<<文檔

EOF(文件結(jié)束)可以鍵入,也可以通過按(ctrl+d)鍵調(diào)用。任何單詞都可以代替“EOF”,就像我們使用的“l(fā)ast”一樣。

Syntax:
cat < 

<<字符串

字符串用于將字符串直接傳遞給命令。

Example:
base64 <<< format.txt

Linux輸出重定向

輸出重定向用于將一個(gè)命令的輸出放入文件或另一個(gè)命令。

> stdout

stdout使用大于號(hào)'>'重定向。當(dāng)shell遇到'>'號(hào)時(shí),它將清除文件:

Example:
echo Hello everyone. > afile.txt

輸出文件被擦除

在輸出重定向中,在掃描命令行的過程中,shell將遇到“>”符號(hào),并將清除文件。

Example:
zcho Welcome > afile.txt

nolobber

我們可以在nolobber選項(xiàng)的幫助下,在使用'>'符號(hào)時(shí)防止文件刪除。

Syntax:
set -o noclobber    (防止覆蓋)  
set +o noclobber    (覆蓋)
Example:
echo Learn Linux. > newfile.txt

否定noclobber

重寫nolobber意味著您可以在使用'>|'符號(hào)設(shè)置nolobber時(shí)覆蓋現(xiàn)有文件。

Syntax:
command >|   
  
Example:
echo Welcome to JavaTpoint. >| newfile.txt

>>append

append'>>'不允許覆蓋文件內(nèi)容,因此顯示新的和舊的文件內(nèi)容。

Syntax:
command >> 
Example:
echo You all are welcome here. >> newfile.txt

Linux錯(cuò)誤重定向

2> stderr

命令'2>'重定向輸出的錯(cuò)誤,它可以通過重定向錯(cuò)誤消息來幫助我們減少顯示的混亂。

Example:
zcho hyii 2> /dev/null  

2> &1

此命令有助于重定向同一文件中的stdout和stderr。

Example:
newfile.txt > abc.txt and error.txt 2>&1

注意:重定向的順序非常重要:

ls > dirlist 2>&1  

然后,stdout和stderr都將被定向到文件目錄列表:

ls 2>&1 > dirlist

然后,只有stdout會(huì)重定向到目錄列表。這是因?yàn)?,在將stdout重定向到目錄列表之前,stderr已經(jīng)復(fù)制了stdout。

審核編輯:湯梓紅

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

    關(guān)注

    87

    文章

    11161

    瀏覽量

    208468
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    663

    瀏覽量

    21956
  • Shell
    +關(guān)注

    關(guān)注

    1

    文章

    360

    瀏覽量

    23234
  • Bash
    +關(guān)注

    關(guān)注

    0

    文章

    57

    瀏覽量

    10150
  • 重定向
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    7370

原文標(biāo)題:Linux錯(cuò)誤重定向

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux后臺(tái)程序重定向的問題

    目前有一種方法是在程序后臺(tái)啟動(dòng)的時(shí)候,直接重定向到某個(gè)shell或telnet。方法如下:如tty命令查看目標(biāo)shell為 /dev/pts/0./yourapp & > /dev
    發(fā)表于 08-22 13:54

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

    在了解重定向之前,我們先來看看linux 的文件描述符。linux文件描述符:可以理解為linux跟蹤打開文件,而分配的一個(gè)數(shù)字,這個(gè)數(shù)字有點(diǎn)類似c語言操作文件時(shí)候的句柄,通過句柄就可
    發(fā)表于 03-02 13:59

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

      一、Shell輸入輸出重定向概述  在了解重定向相關(guān)知識(shí)之前,我們先來看看Linux的文件描述符?! ?b class='flag-5'>Linux的文件描述符可以理解為linux
    發(fā)表于 09-12 15:53

    如何對(duì)Linux Bash輸入輸出重定向

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

    Linux輸入與輸出的重定向介紹

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

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

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

    MDK的重定向與printf的重定向有什么不一樣?

    MDK的重定向與printf的重定向有什么不一樣?
    發(fā)表于 12-01 06:05

    串口重定向是什么意思?

    串口重定向是什么意思?
    發(fā)表于 12-08 06:57

    DNS 重定向的缺陷

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

    實(shí)現(xiàn)重定向printf()和scanf() 函數(shù)案例分析

    要想printf()和scanf() 函數(shù)工作,我們需要把printf()和scanf() 重新定向到串口中。重定向是指用戶可以自己重寫C 的庫函數(shù),當(dāng)連接器檢查到用戶編寫了與C 庫函數(shù)相同
    發(fā)表于 06-23 08:26 ?9046次閱讀
    實(shí)現(xiàn)<b class='flag-5'>重定向</b>printf()和scanf() 函數(shù)案例分析

    如何更改 LinuxI/O 調(diào)度器

    LinuxI/O 調(diào)度器是一個(gè)以塊式 I/O 訪問存儲(chǔ)卷的進(jìn)程,有時(shí)也叫磁盤調(diào)度器。Linux
    發(fā)表于 05-15 15:54 ?823次閱讀
    如何更改 <b class='flag-5'>Linux</b> 的 <b class='flag-5'>I</b>/<b class='flag-5'>O</b> 調(diào)度器

    單片機(jī)printf重定向的函數(shù)免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是單片機(jī)printf重定向的函數(shù)免費(fèi)下載。
    發(fā)表于 07-03 17:42 ?0次下載
    單片機(jī)printf<b class='flag-5'>重定向</b>的函數(shù)免費(fèi)下載

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

    Keil下使用STlink重定向printf的配置1. printf 重定向Keil默認(rèn)下使用Micro LIB庫,該庫調(diào)用 fputs 實(shí)現(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 接口 Linux I/O 接口可以分為以下幾種類型: 文件
    的頭像 發(fā)表于 11-08 16:43 ?788次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>I</b>/<b class='flag-5'>O</b> 接口的類型及處理流程

    2分鐘搞懂輸出重定向

    視頻最后我們通過重定向把標(biāo)準(zhǔn)輸出寫到了文件中,但是錯(cuò)誤輸出還是留在了屏幕上。
    的頭像 發(fā)表于 01-15 16:41 ?492次閱讀