我们知道,Linux 中标准的输入设备默认指的是键盘,标准的输出设备默认指的是显示器。而本节所要介绍的输入、输出重定向,完全可以从字面意思去理解,也就是:

输入重定向:指的是重新指定设备来代替键盘作为新的输入设备;

输出重定向:指的是重新指定设备来代替显示器作为新的输出设备。

通常是用文件或命令的执行结果来代替键盘作为新的输入设备,而新的输出设备通常指的就是文件

Linux输入重定向

对于输入重定向来说,其需要用到的符号以及作用如表1 所示。

表 1 输入重定向中用到的符号及作用

命令符号格式作用

命令 < 文件

将指定文件作为命令的输入设备

命令 << 分界符

表示从标准输入设备(键盘)中读入,直到遇到分界符才停止(读入的数据不包括分界符),这里的分界符其实就是自定义的字符串

命令 < 文件 1 > 文件 2

将文件 1 作为命令的输入设备,该命令的执行结果输出到文件 2 中。

【例 1】

默认情况下,cat 命令会接受标准输入设备(键盘)的输入,并显示到控制台,但如果用文件代替键盘作为输入设备,那么该命令会以指定的文件作为输入设备,并将文件中的内容读取并显示到控制台。

以 /etc/passwd 文件(存储了系统中所有用户的基本信息)为例,执行如下命令:

[root@localhost ~]#cat /etc/passwd#这里省略输出信息,读者可自行查看

[root@localhost ~]#cat < /etc/passwd#输出结果同上面命令相同

注意,虽然执行结果相同,但第一行代表是以键盘作为输入设备,而第二行代码是以 /etc/passwd 文件作为输入设备。

【例 2】

[root@localhost ~]#cat << 0

>c.biancheng.net>Linux>0c.biancheng.net

Linux

可以看到,当指定了 0 作为分界符之后,只要不输入 0,就可以一直输入数据。

【例 3】

首先,新建文本文件 a.tx,然后执行如下命令:

[root@localhost ~]#cat a.txt

[root@localhost ~]#cat < /etc/passwd > a.txt

[root@localhost ~]#cat a.txt#输出了和 /etc/passwd 文件内容相同的数据

可以看到,通过重定向 /etc/passwd 作为输入设备,并输出重定向到 a.txt,最终实现了将 /etc/passwd 文件中内容复制到 a.txt 中。

Linux输出重定向

相较于输入重定向,我们使用输出重定向的频率更高。并且,和输入重定向不同的是,输出重定向还可以细分为标准输出重定向和错误输出重定向两种技术。

例如,使用 ls 命令分别查看两个文件的属性信息,但其中一个文件是不存在的,如下所示:

[root@localhost ~]#touch demo1.txt

[root@localhost ~]#ls -l demo1.txt

-rw-rw-r--. 1 root root 0 Oct 12 15:02demo1.txt

[root@localhost ~]#ls -l demo2.txt

ls: cannot access demo2.txt: No such file or directory

上述命令中,demo1.txt 是存在的,因此正确输出了该文件的一些属性信息,这也是该命令执行的标准输出信息;而 demo2.txt 是不存在的,因此执行 ls 命令之后显示的报错信息,是该命令的错误输出信息。

再次强调,要想把原本输出到屏幕上的数据转而写入到文件中,这两种输出信息就要区别对待。

在此基础上,标准输出重定向和错误输出重定向又分别包含清空写入和追加写入两种模式。因此,对于输出重定向来说,其需要用到的符号以及作用如表 2 所示。

表 2 输出重定向用到的符号及作用

命令符号格式作用

命令 > 文件

将命令执行的标准输出结果重定向输出到指定的文件中,如果该文件已包含数据,会清空原有数据,再写入新数据。

命令 2> 文件

将命令执行的错误输出结果重定向到指定的文件中,如果该文件中已包含数据,会清空原有数据,再写入新数据。

命令 >> 文件

将命令执行的标准输出结果重定向输出到指定的文件中,如果该文件已包含数据,新数据将写入到原有内容的后面。

命令 2>> 文件

将命令执行的错误输出结果重定向到指定的文件中,如果该文件中已包含数据,新数据将写入到原有内容的后面。

命令 >> 文件 2>&1

或者

命令 &>> 文件

将标准输出或者错误输出写入到指定文件,如果该文件中已包含数据,新数据将写入到原有内容的后面。注意,第一种格式中,最后的 2>&1 是一体的,可以认为是固定写法。

【例 4】新建一个包含有 "Linux" 字符串的文本文件 Linux.txt,以及空文本文件 demo.txt,然后执行如下命令:

[root@localhost ~]#cat Linux.txt > demo.txt

[root@localhost ~]#cat demo.txt

Linux

[root@localhost ~]#cat Linux.txt > demo.txt

[root@localhost ~]#cat demo.txt

Linux

[root@localhost ~]#cat Linux.txt >> demo.txt

[root@localhost ~]#cat demo.txt

Linux

Linux

[root@localhost ~]#cat b.txt > demo.txt

cat: b.txt: No such file or directory

[root@localhost ~]#cat b.txt 2> demo.txt

[root@localhost ~]#cat demo.txt

cat: b.txt: No such file or directory

[root@localhost ~]#cat b.txt 2>> demo.txt

[root@localhost ~]#cat demo.txt

cat: b.txt: No such file or directory

cat: b.txt: No such file or directory

linux 地址重定向,Linux重定向(输入输出重定向)详解相关推荐

  1. Servlet交互【重定向 与 请求分派】详解

    Servlet交互 在serlvet中,需要调用另外一个资源来对浏览器的请求进行响应,两种方式实现: 调用HttpServletResponse.sendRedirect 方法实现 重定向 调用Req ...

  2. Linux文本处理必杀技之awk应用详解

    AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一.这种编程及数据操作语言(其名称得自于它的创始人阿尔佛雷德·艾侯.彼得·温伯格和布莱恩·柯林汉姓氏的首个字母 ...

  3. 【Linux】定时任务crontab和at命令详解

    [Linux]定时任务crontab和at命令详解 linux 系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的 ...

  4. Linux打包(归档)和压缩详解

    Linux打包(归档)和压缩详解 一.打包(归档)和压缩(包含两者的区别) 二.Linux tar打包命令详解 2.1 tar命令做打包操作 2.2 tar命令做解打包操作 2.3 tar命令做打包压 ...

  5. python3.8.1安装教程-Linux安装Python3.8.1的教程详解

    本例以Linux上安装Pyhton3.8版本为例进行说明 1.依赖包安装 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-dev ...

  6. Linux进程地址空间与进程内存布局详解,内核空间与用户空间

    Linux进程地址空间与进程内存布局详解 程序段(Text):程序代码在内存中的映射,存放函数体的二进制代码. 初始化过的数据(Data):在程序运行初已经对变量进行初始化的数据. 未初始化过的数据( ...

  7. linux ipset 流量,linux中ipset命令的使用方法详解

    linux中ipset命令的使用方法详解 发布时间:2020-10-25 17:07:19 来源:脚本之家 阅读:97 作者:lijiaocn 栏目:服务器 ipset介绍 iptables是在lin ...

  8. Android 驱动(12)---Linux DTS(Device Tree Source)设备树详解

    Linux DTS(Device Tree Source)设备树详解 Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇) Linux DTS(Device Tr ...

  9. 编程实现linux中的who命令功能,Linux who命令简介及使用方法详解

    玩蛇网推荐图文教程:python 列表 本文是关于Linux who命令简介及使用方法详解一文.如果你是一名系统管理员,可能需要需要在一个特定的时间点都有谁活跃在系统上.以便必须严密监视我们的服务器. ...

  10. linux中的文件夹压缩文件,linux将文件拷贝到目录下Linux下文件的压缩与打包详解...

    在Linux中,有很多的压缩命令.利用这些压缩命令,可以方便的从网络上下载大型的文件.同时,我们知道,Linux文件的扩展名是没有特殊意义的,不过,因为Linux下存在着许多压缩命令,所以为了方便记忆 ...

最新文章

  1. Oracle优化器:星型转换
  2. linux下线程错误码表
  3. android网络质量,基于Android的移动通信网络质量信息系统的设计与开发
  4. MFC,QT与WinForm,WPF简介
  5. 去掉input密码框自动补全功能
  6. vue从url中获取token并加入到 请求头里_轻流amp;amp;企业微信——获取打卡数据...
  7. 微软提供Windows USB/DVD Download Tool:刻录WINDOWS安装系统到U盘
  8. 支付宝转账银行卡/隐藏卡号
  9. oracle误删除数据恢复
  10. ubuntu14.04安装LSD_SLAM
  11. Windows 10 正式版原版ISO镜像
  12. python三级菜单
  13. 技术漫谈:哪种操作系统最适合固态硬盘
  14. TCS34725颜色感应识别模块
  15. Apache Zookeeper配置
  16. hdu 4745 区间dp
  17. go语言中赋值出错:no new variables on left side of :=
  18. 如何在原生Android项目里嵌入Cordova
  19. tabbar 页面是什么意思?用什么跳转到tabbar页面
  20. oracle创建校友查询系统,中国同学录(5460)及5460的数据库

热门文章

  1. java利用do-while循环实现猜数字小游戏
  2. 对话胡浩:京东智慧供应链如何支撑高峰618
  3. RPN(区域生成网络)
  4. 实现淘宝和QQ ToolBar透明渐变效果
  5. 桂林人教你用近乎免费的方式玩转桂林
  6. python numpy for循环矩阵乘法
  7. 如何提出高质量的bug
  8. FaaS,未来的后端服务开发之道
  9. TRAI:大力发展印度公共Wi-Fi网络
  10. 案例分析:招商银行是如何搭建项目管理信息化平台的