linux之重定向命令
1、shell重定向概念:shell重定向包含输出重定向和输入重定向
何为输入输出方向?何为标准输入输出方向?
标准输入方向:从键盘读取用户输入的数据,然后再把数据拿到程序(C语言程序、Shell 脚本程序等)中使用;这就是标准的输入方向,也就是从键盘到程序。
标准输出方向:相反,程序运行产生的数据一般都是直接呈现到显示器上,这就是标准的输出方向,也就是从程序到显示器。
其实,输入输出方向就是数据流动的方向,那么
输入重定向就是改变程序数据的来源的
输出重定向就是改变程序输出屏幕到其他地方
2、硬件设备和文件描述符
计算机硬件有很多,常见的输入设备有键盘、鼠标、麦克风、手写板等,输出设备有显示器、投影仪、打印机等。不过,在 Linux 中,标准输入设备指的是键盘,标准输出设备指的是显示器
同时,Linux 中一切皆文件,包括标准输入设备(键盘)和标准输出设备(显示器)在内的所有计算机硬件都是文件,为了表示和区分已经打开的文件,Linux 会给每个文件分配一个 ID,这个 ID 就是一个整数,被称为文件描述符(File Descriptor)。
| 文件描述符 | 文件名 | 类型 | 硬件 |
|---|---|---|---|
| 0 | stdin | 标准输入 | 键盘 |
| 1 | stdout | 标准输出 | 显示器 |
| 2 | stderr | 标准错误输出 | 显示器 |
Linux 程序在执行任何形式的 I/O 操作时,都是在读取或者写入一个文件描述符。一个文件描述符只是一个和打开的文件相关联的整数,它的背后可能是一个硬盘上的普通文件、FIFO、管道、终端、键盘、显示器,甚至是一个网络连接
3、Shell输出重定向
| 类 型 | 符 号 | 作 用 |
|---|---|---|
| 标准输出重定向 | 命令 > 文件 | 以覆盖的方式,把命令的正确输出结果输出到指定的文件或设备中。 |
| 命令 >> 文件 | 以追加的方式,把命令的正确输出结果输出到指定的文件或设备中。 | |
| 标准错误输出重定向 | 命令 2> 文件 | 以覆盖的方式,把命令的错误信息输出到指定的文件或设备中。 |
| 命令 2>> 文件 | 以追加的方式,把命令的错误信息输出到指定的文件或设备中。 | |
| 正确输出和错误信息同时保存 | 命令 > 文件 2> &1 | 以覆盖的方式,把正确输出和错误信息同时保存到同一个文件中。 |
| 命令 >> 文件 2> &1 | 以追加的方式,把正确输出和错误信息同时保存到同一个文件中。 | |
| 命令 &> 文件 | 以覆盖的方式,把正确输出和错误信息同时保存到同一个文件中。 | |
| 命令 &>> 文件 | 以追加的方式,把正确输出和错误信息同时保存到同一个文件中。 | |
| 命令 >> 文件1 2>> 文件2 | 把正确的输出追加到文件1中,把错误信息追加到文件2中。 |
在输出重定向中,>代表的是覆盖,>>代表的是追加。
注意,在类似命令 2> 文件这样的写法中,2是文件描述符,它对应的是 stderr。
对于重定向中的标准输出文件,可以省略文件描述符 1 不写,而标准错误输出文件,必须要写上文件描述如 2。如果你愿意,也可以将命令 > 文件写作命令 1> 文件,但这样做是多此一举。
另外还要注意,2和>之间不能有空格,也就是说,不能将命令 2> 文件写作命令 2 > 文件。
使用案例可查看https://www.cnblogs.com/clarenceyang/p/9837352.html
4、Shell输入重定向
输入重定向就是改变输入的方向,不再使用键盘作为命令输入的来源,而是使用文件作为命令的输入
| 符号 | 说明 |
|---|---|
| 命令 < 文件 | 将指定的文件作为命令的输入。 |
| 命令 << 分界符 | 从标准输入(键盘)中读取数据,直到遇见分界符才停止。 |
| 命令 < 文件1 > 文件2 | 将文件1作为命令的输入,并将命令的处理结果输出到文件2。 |
统计 readme.txt 文件中有多少行文本:
[c.biancheng.net]$ cat readme.txt #预览一下文件内容
C语言中文网
http://c.biancheng.net/
成立7年了
日IP数万
[c.biancheng.net]$ wc -l < readme.txt #输入重定向
实例1
#!/bin/bash while read str; do
echo $str
done < readme.txt
运行结果:
C语言中文网
http://c.biancheng.net/
成立7年了
日IP数万
实例2
我们使用输入重定向符号<<,这个符号的作用是使用特定的分界符作为命令输入的结束标志,而不使用 Ctrl+D 键。
[c.biancheng.net]$ wc -l << END
>
>
> abc
> xyz
> END
4
wc 命令会一直等待用输入,直到遇见分界符 END 才结束读取
linux之重定向命令的更多相关文章
- Linux中重定向命令行
http://www.ahlinux.com/start/base/3170.html
- Linux重定向命令
linux重定向命令应用及语法 [复制链接] 发表于 2008-12-18 18:24 | 来自 51CTO网页 [只看他] 楼主 1. 标准输入的控制语法:命令 文件将命令的执行结果 ...
- Linux输入输出重定向和文件查找值grep命令
Linux输入输出重定向和文件查找值grep命令 一.文件描述符Linux 的shell命令,可以通过文件描述符来引用一些文件,通常使用到的文件描述符为0,1,2.Linux系统实际上有12个文件描述 ...
- Linux 重定向命令有哪些?有什么区别?
1.重定向>Linux 允许将命令执行结果重定向到一个文件,本应显示在终端上的内容保存到指定文件中.如:ls >test.txt ( test.txt 如果不存在,则创建,存在则覆盖其内容 ...
- linux 之管道命令与重定向
一.Linux重定向 重定向能够实现Linux命令的输入输出与文件之间重定向,以及实现将多个命令组合起来实现更加强大的命令.这部分涉及到的比较多的命令主要有: 涉及到的比较多的命令主要有: cat:连 ...
- linux 重定向命令
标准输入,输出和错误 --------------------------------- 文件文件 描写叙述符 ----------------------------- ...
- Linux Shell 重定向与管道【转帖】
by 程默 在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以 ...
- Linux下who命令之C语言实现
Linux下who命令之C语言实现 Step1:前期准备 首先要有一个清楚的认识:linux中一切皆文件 实现who命令,who命令也是Linux中的一个文件,那我们怎么找到它呢?我们可以" ...
- Linux中exec命令相关
Linux中exec命令相关 exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. b ...
随机推荐
- 一 Struts框架(下)
1 struts FORM 标签 与jstl标准标签库类似的,struts有专属标签库 form标签用于提交数据 修改addProduct.jsp <%@ page contentType=&q ...
- Mysql常见的优化策略
数据库设计方面优化 1.数据库设计符合第三范式,为了查询方便可以有一定的数据冗余.2.选择数据类型优先级 int > date,time > enum,char>varchar &g ...
- php正则判断是否同时有数字和字母
1.php正则判断是否同时有数字和字母$subject = 'qq2';var_dump(preg_match('/^(?![0-9]+$)(?![a-zA-Z]+$)/', $subject)); ...
- IIS 负载均衡
在大型Web应用系统中,由于请求的数据量过大以及并发的因素,导致Web系统会出现宕机的现象,解决这一类问题的方法我个人觉得主要在以下几个方面: 1.IIS 负载均衡. 2.数据库 负载均衡. 3.系统 ...
- dubbo 熔断,限流,降级
1 写在前面 1.1 名词解释 consumer表示服务调用方 provider标示服务提供方,dubbo里面一般就这么讲. 下面的A调用B服务,一般是泛指调用B服务里面的一个接口. 1.2 拓扑图 ...
- Java中产生随机数的两个方法
Java中产生随机数的两个方法 一.利用random方法来生成Java随机数. 在Java语言中生成Java随机数相对来说比较简单,因为有一个现成的方法可以使用.在Math类中,Java语言提供了一个 ...
- 论气机之"左升右降"
生命现象源于气机的出入升降运动. “出入废则神机化灭,升降息则气立孤危.故非出入,则无以生长壮老已:非升降,则无以生长化收藏”(<素问·六微旨大论>),升降是气机主要的运动形式之一,是 ...
- java中的静态变量、静态方法与静态代码块详解与初始化顺序
我们知道类的生命周期分为装载.连接.初始化.使用和卸载的五个过程.其中静态代码在类的初始化阶段被初始化. 而非静态代码则在类的使用阶段(也就是实例化一个类的时候)才会被初始化. 静态变量 可以将静 ...
- python3笔记<一>基础语法
随着AI人工智能的兴起,网络安全的普及,不论是网络安全工程师还是AI人工智能工程师,都选择了Python.(所以本菜也来开始上手Python) Python作为当下流行的脚本语言,其能力不言而喻,跨平 ...
- springboot学习目录
1.spring boot 简单示例 一个简单的springboot 例子 https://www.cnblogs.com/shoshana-kong/p/9641696.html 2. sprin ...