0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux I/O重定向详解

Linux爱好者 来源:Linux爱好者 2023-05-04 14:34 次阅读

Linux I/O重定向

Linux I/O重定向可以定义为,更改从命令读取输入到命令发送输出的方式。你可以重定向命令的输入和输出。对于重定向符号,可以是<、> 或者 | 。

I/O重定向中的标准流

Bash shell在I/O重定向中有三个标准流:

标准输入(stdin):stdin流编号为stdin(0)。bash shell从stdin获取输入。默认情况下,键盘用作输入。
标准输出(stdout):stdout流编号为stdout(1)。bash shell将输出发送到stdout。输出将显示。
标准错误(stderr):stderr流编号为stderr(2)。bash shell向stderr发送错误消息。显示错误消息。

重定向到文件

每个流都使用重定向命令。单括号'>'或双括号'>>'可用于重定向标准输出。如果目标文件不存在,将创建一个具有相同名称的新文件。

覆盖:带有单括号“>”的命令将覆盖现有的文件内容。

>:标准输出
<:标准输入
2>:标准错误

注意:写“1>”或“>”和“0<”或“<”是一回事。但对于stderr,必须编写“2>”。

用法:
cat > 

追加: 带有双括号“>>”的附加命令不会覆盖现有的文件内容。

>>-标准输出
<<-标准输入
2>>-标准错误
用法:
cat >> 

重定向到程序

重定向到程序管道将流从一个程序重定向到另一个程序。当管道用于将一个程序的标准输出发送到另一个程序时,第一个程序的数据将不会显示在终端上,只显示第二个程序的信息。尽管管道的功能看起来可能与“>”和“>>”相似,但有显著差异。管道将数据从一个程序重定向到另一个程序,而括号仅用于文件的重定向。

用法:
ls *.txt | cat > txtFile

Linux input 重定向

bash shell使用stdin获取输入。在输入重定向中,将文件输入命令,并在“<”符号的帮助下执行此重定向。

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

<<文档

EOF(文件结束)可以键入,也可以通过按(ctrl+d)键调用。任何单词都可以代替“EOF”,就像我们使用的“last”一样。

Syntax:
cat < 

<<字符串

字符串用于将字符串直接传递给命令。

Example:
base64 <<< format.txt

Linux输出重定向

输出重定向用于将一个命令的输出放入文件或另一个命令。

> stdout

stdout使用大于号'>'重定向。当shell遇到'>'号时,它将清除文件:

Example:
echo Hello everyone. > afile.txt

输出文件被擦除

在输出重定向中,在扫描命令行的过程中,shell将遇到“>”符号,并将清除文件。

Example:
zcho Welcome > afile.txt

nolobber

我们可以在nolobber选项的帮助下,在使用'>'符号时防止文件删除。

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

否定noclobber

重写nolobber意味着您可以在使用'>|'符号设置nolobber时覆盖现有文件。

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

>>append

append'>>'不允许覆盖文件内容,因此显示新的和旧的文件内容。

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

Linux错误重定向

2> stderr

命令'2>'重定向输出的错误,它可以通过重定向错误消息来帮助我们减少显示的混乱。

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会重定向到目录列表。这是因为,在将stdout重定向到目录列表之前,stderr已经复制了stdout。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11292

    浏览量

    209323
  • 命令
    +关注

    关注

    5

    文章

    683

    浏览量

    22011
  • Shell
    +关注

    关注

    1

    文章

    365

    浏览量

    23356
  • Bash
    +关注

    关注

    0

    文章

    57

    浏览量

    10179
  • 重定向
    +关注

    关注

    0

    文章

    9

    浏览量

    7376

原文标题:Linux错误重定向

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux后台程序重定向的问题

    目前有一种方法是在程序后台启动的时候,直接重定向到某个shell或telnet。方法如下:如tty命令查看目标shell为 /dev/pts/0./yourapp & > /dev
    发表于 08-22 13:54

    linux shell数据重定向(输入重定向与输出重定向)详细分析

    在了解重定向之前,我们先来看看linux 的文件描述符。linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可
    发表于 03-02 13:59

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

      一、Shell输入输出重定向概述  在了解重定向相关知识之前,我们先来看看Linux的文件描述符。  Linux的文件描述符可以理解为linux
    发表于 09-12 15:53

    如何对Linux Bash输入输出重定向

    Linux - Bash - 输入输出重定向
    发表于 04-27 09:01

    Linux输入与输出的重定向介绍

    Linux输入与输出的重定向
    发表于 06-12 14:54

    实现printf函数的重定向

    目录重定向函数属性设置重定向函数在配置好串口之后需要在相关文件中添加以下函数以实现printf函数的重定向//注意添加头文件#include "stdio.h"#ifdef
    发表于 08-24 07:09

    MDK的重定向与printf的重定向有什么不一样?

    MDK的重定向与printf的重定向有什么不一样?
    发表于 12-01 06:05

    串口重定向是什么意思?

    串口重定向是什么意思?
    发表于 12-08 06:57

    重定向printf() 函数

    ,结果是什么现象都没有。要想使用这个函数,常规方法是重定向 printf() 函数,结合串口来打印到串口助手上位机。这里的重定向就非常复杂了,你需要懂 printf() 函数内部实现机制。。。。。(参...
    发表于 01-11 07:01

    DNS 重定向的缺陷

    DNS 重定向的缺陷 这一种路由解决方案,由于充分利用了现有的网络结构,结构简单,因而被人们认为是一种有效的技术,是现阶段CDN 应用中主
    发表于 03-25 10:25 2279次阅读

    实现重定向printf()和scanf() 函数案例分析

    要想printf()和scanf() 函数工作,我们需要把printf()和scanf() 重新定向到串口中。重定向是指用户可以自己重写C 的库函数,当连接器检查到用户编写了与C 库函数相同
    发表于 06-23 08:26 9196次阅读
    实现<b class='flag-5'>重定向</b>printf()和scanf() 函数案例分析

    如何更改 LinuxI/O 调度器

    LinuxI/O 调度器是一个以块式 I/O 访问存储卷的进程,有时也叫磁盘调度器。Linux
    发表于 05-15 15:54 843次阅读
    如何更改 <b class='flag-5'>Linux</b> 的 <b class='flag-5'>I</b>/<b class='flag-5'>O</b> 调度器

    单片机printf重定向的函数免费下载

    本文档的主要内容详细介绍的是单片机printf重定向的函数免费下载。
    发表于 07-03 17:42 0次下载
    单片机printf<b class='flag-5'>重定向</b>的函数免费下载

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

    Keil下使用STlink重定向printf的配置1. printf 重定向Keil默认下使用Micro LIB库,该库调用 fputs 实现 printf,所以需要重新定义fputs函数,以重定向
    发表于 12-27 18:43 18次下载
    Keil下使用STlink<b class='flag-5'>重定向</b>printf的配置

    Linux I/O 接口的类型及处理流程

    Linux I/O 接口 Linux I/O 接口可以分为以下几种类型: 文件
    的头像 发表于 11-08 16:43 945次阅读
    <b class='flag-5'>Linux</b> <b class='flag-5'>I</b>/<b class='flag-5'>O</b> 接口的类型及处理流程