文章目录

  • 前言
  • 一、输出重定向
  • 二、输入重定向
  • 三、重定向原理
  • 总结

前言

我们有些时候想要将命令的输出保存起来,而不仅仅是让它输出到显示器上(终端上)。将命令的输出保存再文件中后方便分析输出的内容。重定向也可以是输出也可以是输入。

一、输出重定向

输出重定向:将命令的输出发送的一个文件中,终端输出的内容会被保存到输出文件中

bash shell : >    输出的内容会覆盖已有文件的内容
bash shell : >>   输出的内容追加到已有的文件中


覆盖重定向:

追加重定向:

二、输入重定向

输入重定向:将文件的内容重定向到命令中

bash shell : <    将文件的内容重定向命令中,作为命令的输入
bash shell : <<   输入不需要文件进行重定向,只需要在命令行中指定用于输入重定向的数据即可

输入重定向:
wc命令用来对数据中的文本进行计数,默认情况下:
文本的行数 文本的单词个数 文本的字节数

内联输入重定向:
必须指定一个文本标记来划分输入数据的开始结尾。任何字符串都可以作为文本标记,单开始和结尾的文本标记必须一致
(1)以EOF作为文本标记

(2)以hi作为文本标记

三、重定向原理

来自于我的这篇文章:Linux fork 写时复制

分离fork和exec的做法在构建Linux shell的时候非常有用,这给了shell在fork之后exec之前运行代码的机会,这些代码可以在运行一个全新的程序前改变环境。
shell也是一个用户程序,它会显示一个提示符,等待用户的输入。
当我们向shell输入一个命令(一个可执行的程序)时,shell就在文件系统中找到这个可执行的程序,通过调用fork()创建新进程,并调用exec系列函数来执行这个可执行的程序,调用wait()等待该命令的完成。子进程执行结束后,shell从wait()返回并再次输出提示符,等待用户的下一条命令。

那么现在我们通过一个小例程来体会一下fork + exec组合分离的强大功能:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
#include <fcntl.h>
#include <string.h>int main()
{int ret = fork();if(ret == 0){//fork之后,exec执行之前,来改变一些子进程运行的环境//关闭 STDOUT_FILENO : 标准输出,对应的文件描述符为 1close(STDOUT_FILENO);//打开file.txt文件,这样 wc 的执行结果写入file.txt文件中open("./file.txt", O_CREAT | O_WRONLY | O_TRUNC , S_IRWXU);char *my_args[3];my_args[0] = strdup("wc");my_args[1] = strdup("fork_exec.c");my_args[2] = NULL;//执行exec函数,运行一个新shell程序:wc fork_exec.cexecvp(my_args[0], my_args);}else if(ret > 0){wait(NULL);}else{printf("fork error\n");return -1;}return 0;
}

从结果可以看出两者运行的结构一致:
wc用来统计指定文件的行数、字数,以及字节数。

shell重定向的原理:当shell调用fork完成子进程的创建后,shell在调用exec()之前先关闭了标准输出,
然后打开文件redirect.txt,这样shell命令wc 的输出结果就被发送到文件redirect.txt中,而不是输出给标准输出,打印在屏幕上。

总结

注意,不管是输出重定向还是输入重定向,命令总是在左边。重定向的符号指向数据的流动方向。

Linux shell之重定向相关推荐

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

    转载自: linux shell数据重定向(输入重定向与输出重定向)详细分析 - 程默 - 博客园 http://www.cnblogs.com/chengmo/archive/2010/10/20/ ...

  2. linux脚本重定向到输入,linux shell输入输出重定向

    新建一个文本文件包含所需要的脚本.举例,我会使用pico编辑器写一个脚本用来运行程序tar,带上必要的可选项可以用来解压从因特网下载下来的*.tar的文件(我好像总是记不住tar的所有参赛).我决定把 ...

  3. Linux Shell 文件描述符 及 stdin stdout stderr 重定向

    Abstract: 1) Linux Shell 命令的标准输入.标准输出.标准错误,及其重定位: 2)Linux Shell 操作自定义文件描述符: 文件描述符是与文件相关联的一些整数,他们保持与已 ...

  4. 输出重定向Linux命令,Linux Shell重定向(输入输出重定向)精讲

    Linux Shell 重定向分为两种,一种输入重定向,一种是输出重定向:从字面上理解,输入输出重定向就是「改变输入与输出的方向」的意思. 那么,什么是输入输出方向呢?标准的输入输出方向又是什么呢? ...

  5. Linux Shell重定向Linux管道

    Linux Shell 重定向分为两种,一种输入重定向,一种是输出重定向:从字面上理解,输入输出重定向就是「改变输入与输出的方向」的意思. 标准的输入输出方向 输入方向就是数据从哪里流向程序.数据默认 ...

  6. linux shell重定向(输入输出重定向)讲解

    文章目录 文件描述符 输出重定向 输入重定向 写在后面 linux shell的重定向是个什么东西呢,顾名思义就是重新定位方向,定位什么方向呢,那就是输入和输出的方向,也就是说linux shell的 ...

  7. Linux shell 学习笔记(11)— 理解输入和输出(标准输入、输出、错误以及临时重定向和永久重定向)

    1. 理解输入和输出 1.1 标准文件描述符 Linux 系统将每个对象当作文件处理.这包括输入和输出进程.Linux 用文件描述符(file descriptor)来标识每个文件对象.文件描述符是一 ...

  8. linux shell 脚本实现tcp/upd协议通讯(重定向应用)

    前几天发了重定向以及管道相关使用方法,今天这里发些很有趣的例子.通过重定向实现基于tcp/udp协议的软件通讯. linux 设备里面有个比较特殊的文件: /dev/[tcp|upd]/host/po ...

  9. 如何理解Linux shell中的“2>1”(将文件描述2(标准错误输出)的内容重定向到文件描述符1(标准输出))(尼玛>符号竟然不支持搜索,害我搜搜不到,只能搜)

    文章目录 前言 有何妙用 如何理解 总结 前言 有时候我们常看到类似这样的脚本调用: ./test.sh > log.txt 2>&1 这里的2>&1是什么意思?该如 ...

最新文章

  1. HAOI2011 Problem b
  2. 关于mysql engine(引擎)的疑问
  3. C#利用反射机制,获取实例的属性和属性值
  4. bpmn文件的标签为何都以bpmn2开头_C语言之两种作用域:函数的作用域与文件作用域...
  5. Java启动参数与内存调优一些学习笔记
  6. 最长公共子上升序列(信息学奥赛一本通-T1306)
  7. 【NLP】毕设学习笔记(一):词袋模型、主题模型、词嵌入
  8. The servlet name already exists.解决方法
  9. 麒麟ARM版:不能使用U盘安装,只能使用光盘
  10. 基础学习笔记之opencv(2):haartraining前将统一图片尺寸方法
  11. WPS文字的字数统计在哪?如何查看当前文档有多少个字?
  12. sqlplus 执行脚本经验总结
  13. 多想和你拉手跳恰恰恰
  14. 用cout输出uchar(unsigned char)变量时,没有输出结果怎么办?
  15. 迷你计算机主板,打造最强MINI主机 五款高规ITX主板推荐
  16. 火狐浏览器安装FoxyProxy代理插件
  17. 网络高清车载云台摄像机,白光云台摄像机激光云台摄像机
  18. 实验二 Python流程控制
  19. git解决merge branch
  20. python+django校园大学生兼职系统vue357

热门文章

  1. 大家知道苹果手机打电话时如何录音吗
  2. J-LinuxShell-W3
  3. Sum of Consecutive Prime Numbers
  4. java 物联网 云计算_为什么说不是云计算选择了物联网,而是物联网选择了云计算?...
  5. 年度特辑 | 2017 开源中国新增开源项目排行榜 TOP 100
  6. 逐行和隔行原理 去隔行原理 去隔行芯片
  7. 公众号+视频号+个人号的闭环运营将非常重要
  8. 倍思畅享系列Type-C转USB3.0 RJ45网口HUB转换器 极简设计非凡功能
  9. 什么是“独立站”,怎么建站?有哪些用处?
  10. 元宇宙001 | 情绪无法自控?元宇宙助你一臂之力