大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回​​到您的终端。一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端。

输出重定向

有两种方式

  • [root@localhost ~]# command1 > file1       会覆盖文件原来内容
  • [root@localhost ~]# command1 >> file2     不会覆盖文件原来内容,追加到文件末尾
[root@localhost ~]# cat /etc/passwd | grep "root" > test.sh
[root@localhost ~]# cat /etc/passwd | grep "root" >> test.sh

输入重定向

和输出重定向一样,Unix 命令也可以从文件获取输入。这样,本来需要从键盘获取输入的命令会转移到文件读取内容。

语法:[root@localhost ~]# command1 < file1

注意:输出重定向是大于号(>),输入重定向是小于号(<)。

[root@localhost ~]# wc -l /etc/passwd
[root@localhost ~]# wc -l < /etc/passwd
[root@localhost ~]# grep "root" < /etc/passwd

注意:上面三个例子的结果不同:第一个例子,会输出文件名;后二个不会,因为它仅仅知道从标准输入读取内容。

同时替换输入和输出

语法:[root@localhost ~]# command1 < infile > outfile

执行command1,从文件infile读取内容,然后将输出写入到outfile中。

[root@localhost ~]# wc -l </etc/passwd >test

重定向深入讲解

一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件:

  • 标准输入文件(stdin): stdin的文件描述符为0,Unix程序默认从stdin读取数据。
  • 标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
  • 标准错误输出文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。

默认情况下,command > file 将 stdout 重定向到 file,command < file 将stdin 重定向到 file。

# 将 stderr 重定向到 file 文件
[root@localhost ~]# command 2 > file # 将 stderr 追加到 file 文件末尾
[root@localhost ~]# command 2 >> file # 将 stdout 和 stderr 合并后重定向到 file 文件
[root@localhost ~]# command > file 2>&1
[root@localhost ~]# command >> file 2>&1 # 将 stdin 和 stdout 都重定向。command 命令将 stdin 重定向到 file1,将 stdout 重定向到 file2。
[root@localhost ~]# command < file1 > file2

/dev/null 文件

/dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件读取内容,那么什么也读不到。但是 /dev/null 文件非常有用,将命令的输出重定向到它,会起到"禁止输出"的效果。

# 如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null:
[root@localhost ~]# command > /dev/null # 如果希望屏蔽 stdout 和 stderr,可以这样写:
[root@localhost ~]# command > /dev/null 2>&1

https://www.runoob.com/linux/linux-shell-io-redirections.html

Shell—输入输出重定向的更多相关文章

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

    本文是Linux Shell系列教程的第(十六)篇,更多Linux Shell教程请看:Linux Shell系列教程 Shell中的输出和输入的重定向是在使用中经常用到的一个功能,非常实用,今天就为 ...

  2. Unix shell输入输出重定向

    敲代码的时候,适当地打印出一些进度或者日志信息经常能帮助我们跟踪程序的执行结果.可是,这些结果或者日志打印信息到屏幕上并不能作为以后检查问题的根据.这就是重定向的作用,敲代码的时候,我们能够方便的将相 ...

  3. 【Shell脚本学习24】Shell输入输出重定向:Shell Here Document,/dev/null文件

    Unix 命令默认从标准输入设备(stdin)获取输入,将结果输出到标准输出设备(stdout)显示.一般情况下,标准输入设备就是键盘,标准输出设备就是终端,即显示器. 输出重定向 命令的输出不仅可以 ...

  4. shell 输入输出重定向

    1. 命令列表: command > file 将输出重定向到file command < file 将输入重定向到file command >> file 将输出以追加的方式 ...

  5. [SHELL]输入输出重定向与管道

    一 . 输出重定向(将命令的输出重定向到文件): ls -al > test 以覆盖的方式写入 ls -al >> test 以追加的方式写入 二 . 输入重定向(将文件的内容重定向 ...

  6. Shell输入输出重定向

    全部可用的重定向命令列表 命令 说明 command > file 将输出重定向到 file. command < file 将输入重定向到 file. command >> ...

  7. shell编程 之 输入输出重定向

    1 输入输出重定向 标准输入:从终端得到命令,对于计算机来说,是从终端获得了命令,执行完了以后,结果和执行状态或者错误提示又会发回终端,这叫标准输出. 输入输出重定向就是从终端以外的别的地方得到输入, ...

  8. Shell 环境中的输入输出重定向

    Linux Shell 环境中的输入输出重定向,用符号<和>来表示.0.1和2分别表示标准输入.标准输出和标准错误. 1.重定向标准输出到文件: cat fo > foo.txt 2 ...

  9. 使用Shell脚本编译运行C++源码 输入输出重定向

    在写C++控制台程序的时,如果使用Xcode或者Visual Studio之类的IDE,需要创建许多工程,会造成很多不便.有时,采用Vim或者Sublime text等编辑器编写简单的控制台程序能节省 ...

随机推荐

  1. java中线程的几种实现方式

    1. 继承Thread类来实现 class MyThread extends Thread{ @Override public void run() { System.out.println(&quo ...

  2. C#中try catch中throw ex和throw方式抛出异常有何不同_异常捕获堆栈丢失问题

    前言,最近遇到一个使用try-catch异常捕获后记录一下日志,然后再抛出该异常后,异常堆栈里无法显示准确的堆栈地址的问题?   其实以前也遇到过类似问题,没有重视,这次好好研究了下,并上度娘上找了找 ...

  3. (转)Python中的常见特殊方法—— repr方法

    原文链接:https://www.cnblogs.com/tizer/p/11178473.html 在Python中有些方法名.属性名的前后都添加了双下划线,这种方法.属性通常都属于Python的特 ...

  4. delphi使用Foxit Quick PDF Library读写pdf文本和图片

    简介: Debenu Quick PDF Library(PDF编程开发工具)提供一套全方位的 PDF API 函数,帮助您快速简便地处理 PDF 文件.从文档属性的基本操作到创建您自己的 PDF 查 ...

  5. 通过传XML格式导入到ORACLE的销售订单

    procedure IMPORT_OM(p_unid varchar2, --流程ID p_CUSTOMER_PO varchar2, --合同编号 p_xmlstr varchar2, --clob ...

  6. 经典案例:如何优化Oracle使用DBlink的SQL语句

    转自 https://blog.csdn.net/Enmotech/article/details/78788083 作者介绍 赵全文 就职于太极计算机股份有限公司,在中央电化教育馆做Oracle D ...

  7. ES6.x

    类 class Animal{ constructor(name){ this.name=name } Spack(){ console.log(name) } } class Dog extends ...

  8. 28.分类算法---KNN

    1.工作原理: 存在一个样本数据集合,也称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类对应的关系.输入没有标签的数据后,将新数据中的每个特征与样本集中数据对应的特 ...

  9. springboot 多环境

    springboot 多环境 --spring.profiles.active=dev 查看 Ioc 容器 PostProcessorRegistrationDelegate

  10. Redux Class(immutable Record)引入的必要性 && Navigation引入方式

    我的意见 和大家讨论一下几个问题 1. 项目里面没有用class规定的请求数据结构,调试数据的时候无法从前端获取请求的数据格式,要看后端接口,增加了调试的难度.我们以前会用immutable Reco ...