当前位置: 首页 > 编程日记 > 正文

15-shell 输入/输出重定向

大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回到您的终端。
一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。
同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端。
重定向命令列表如下:
command > file        将输出重定向到 file。
command < file        将输入重定向到 file。
command >> file    将输出追加的方式重定向到 file。
n > file            将文件描述符为 n 的文件重定向到 file。
n >> file        将文件描述符为 n 的文件以追加的方式重定向到 file。
n >& m            将输出文件 m 和 n 合并。
n <& m            将输入文件 m 和 n 合并。
<< tag            将开始标记 tag 和结束标记 tag 之间的内容作为输入。
需要注意的是文件描述符 0 通常是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。

输出重定向
重定向一般通过在命令间插入特定的符号来实现。特别的,这些符号的语法如下所示:
  command1 > file1
上面这个命令执行command1然后将输出的内容存入file1。
注意任何file1内的已经存在的内容将被新内容替代。如果要将新内容添加在文件末尾,请使用>>操作符。
实例
执行下面的 who 命令,它将命令的完整的输出重定向在用户文件中(users):
  $ who > users
执行后,并没有在终端输出信息,这是因为输出已被从默认的标准输出设备(终端)重定向到指定的文件。
你可以使用 cat 命令查看文件内容:
  $ cat users
  _mbsetupuser console  Oct 31 17:35
  tianqixin    console  Oct 31 17:35
  tianqixin    ttys000  Dec  1 11:33  
输出重定向会覆盖文件内容,请看下面的例子:
  $ echo "菜鸟教程:runoob.com" > users
  $ cat users
  菜鸟教程:runoob.com
  $
如果不希望文件内容被覆盖,可以使用 >> 追加到文件末尾,例如:
  $ echo "菜鸟教程:runoob.com" >> users
  $ cat users
  菜鸟教程:runoob.com
  菜鸟教程:runoob.com
  $

输入重定向
和输出重定向一样,Unix 命令也可以从文件获取输入,语法为:
  command1 < file1
这样,本来需要从键盘获取输入的命令会转移到文件读取内容。
注意:输出重定向是大于号(>),输入重定向是小于号(<)。
实例
接着以上实例,我们需要统计 users 文件的行数,执行以下命令:
  $ wc -l users
         2 users
也可以将输入重定向到 users 文件:
  $  wc -l < users
         2  
注意:上面两个例子的结果不同:第一个例子,会输出文件名;第二个不会,因为它仅仅知道从标准输入读取内容。
  command1 < infile > outfile
同时替换输入和输出,执行command1,从文件infile读取内容,然后将输出写入到outfile中。

重定向深入讲解
一般情况下,每个 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,可以这样写:
  $ command 2 > file

如果希望 stderr 追加到 file 文件末尾,可以这样写:
  $ command 2 >> file
2 表示标准错误文件(stderr)。

如果希望将 stdout 和 stderr 合并后重定向到 file,可以这样写:
  $ command > file 2>&1
  或者
  $ command >> file 2>&1

如果希望对 stdin 和 stdout 都重定向,可以这样写:
    $ command < file1 >file2
command 命令将 stdin 重定向到 file1,将 stdout 重定向到 file2。

Here Document
Here Document 是 Shell 中的一种特殊的重定向方式,用来将输入重定向到一个交互式 Shell 脚本或程序。
它的基本的形式如下:
  command << delimiter
      document
  delimiter
它的作用是将两个 delimiter 之间的内容(document) 作为输入传递给 command。
注意:
  结尾的delimiter 一定要顶格写,前面不能有任何字符,后面也不能有任何字符,包括空格和 tab 缩进。
  开始的delimiter前后的空格会被忽略掉。
实例
在命令行中通过 wc -l 命令计算 Here Document 的行数:
  $ wc -l << EOF
      欢迎来到
      菜鸟教程
      runoob.com
  EOF
  3          # 输出结果为 3 行
  $
我们也可以将 Here Document 用在脚本中,例如:
  #!/bin/bash
  # author:菜鸟教程
  # url:www.runoob.com

  cat << EOF
  欢迎来到
  菜鸟教程
  runoob.com
  EOF
执行以上脚本,输出结果:
  欢迎来到
  菜鸟教程
  runoob.com

/dev/null 文件
如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null:
  $ command > /dev/null
/dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件读取内容,那么什么也读不到。
但是 /dev/null 文件非常有用,将命令的输出重定向到它,会起到"禁止输出"的效果。
如果希望屏蔽 stdout 和 stderr,可以这样写:
  $ command > /dev/null 2>&1
注意:0 是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。
















转载于:https://www.cnblogs.com/WF-chen/p/9343500.html

相关文章:

高性能Mysql主从架构的复制原理及配置详解

1 复制概述Mysql内建的复制功能是构建大型&#xff0c;高性能应用程序的基础。将Mysql的数据分布到多个系统上去&#xff0c;这种分布的机制&#xff0c;是通过将Mysql的某一台主机的数据复制到其它主机&#xff08;slaves&#xff09;上&#xff0c;并重新执行一遍来实现的。复…

gdal 1.9+python 2.7开发环境配置

最近项目使用Cesium平台基于WegGl做web地球&#xff0c;其中关于地形数据有一种支持格式为terrain的地形数据。这种格式可以通过一个python工具切dem来得到。 下面记录下配置gdalpython开发环境&#xff0c;系统是win7 64位&#xff0c;不过gdal和python是32位的&#xff0c;没…

破纪录了!用 Python 实现自动扫雷!

用PythonOpenCV实现了自动扫雷&#xff0c;突破世界记录&#xff0c;我们先来看一下效果吧。中级 - 0.74秒 3BV/S60.81相信许多人很早就知道有扫雷这么一款经典的游&#xff08;显卡测试&#xff09;戏&#xff08;软件&#xff09;&#xff0c;更是有不少人曾听说过中国雷圣&a…

java高并发编程(二)

马士兵java并发编程的代码&#xff0c;照抄过来&#xff0c;做个记录。 一、分析下面面试题 /*** 曾经的面试题&#xff1a;&#xff08;淘宝&#xff1f;&#xff09;* 实现一个容器&#xff0c;提供两个方法&#xff0c;add&#xff0c;size* 写两个线程&#xff0c;线程1添加…

LAMP 关键数据集锦技术选项参考

LAMP 关键数据集锦技术选项参考 源自日积月累自己的其他人的经验总结负载均衡 LVS工作在四层&#xff0c;内核态&#xff0c;性能极高&#xff0c;有VIP功能&#xff0c;配合 keepalived 做有效的 心跳检查和负载均衡安装配置麻烦&#xff0c;HAProxy工作在四层到七层&am…

centos7 设置中文

查看系统版本[rootwebtest76 ~]# cat /etc/redhat-releaseCentOS Linux release 7.0.1406 (Core) [rootlocalhost ~]# cat /etc/locale.conf LANGen_US.UTF-8[rootlocalhost ~]# cp /etc/locale.conf /etc/locale.conf_bak[rootlocalhost ~]# vim /etc/locale.conf # 修改后原英…

Python最常用的函数、基础语句有哪些?

作者 | 朱卫军来源 | Python大数据分析Python有很多好用的函数和模块&#xff0c;这里给大家整理下我常用的一些方法及语句。一、内置函数内置函数是python自带的函数方法&#xff0c;拿来就可以用&#xff0c;比方说zip、filter、isinstance等。下面是Python官档给出的内置函数…

1.5s~0.02s,期间我们可以做些什么?

原文是在我自己博客中&#xff0c;小伙伴也可以点阅读原文进行跳转查看&#xff0c;还有好听的背景音乐噢背景音乐已取消~ 2333333大爷我就算功能重做&#xff0c;模块重构&#xff0c;我也不做优化&#xff01;&#xff01;&#xff01;运行真快&#xff01; 前言 本文主要探讨…

Python 自动化办公之 Excel 拆分并自动发邮件

作者 | 周萝卜来源 | 萝卜大杂烩今天我们来分享一个真实的自动化办公案例&#xff0c;希望各位 Python 爱好者能够从中得到些许启发&#xff0c;在自己的工作生活中更多的应用 Python&#xff0c;使得工作事半功倍&#xff01;需求需要向大约 500 名用户发送带有 Excel 附件的电…

In Gradle projects, always use http://schemas.andr

2019独角兽企业重金招聘Python工程师标准>>> 版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 在做项目自定义时候遇到这个错误 In Gradle projects, always use http://schemas.android.com/apk/res-auto for custom attributes 解决办…

HTTP POST慢速DOS攻击初探

1. 关于HTTP POST慢速DOS攻击 HTTP Post慢速DOS攻击第一次在技术社区被正式披露是今年的OWASP大会上&#xff0c;由Wong Onn Chee 和 Tom Brennan共同演示了使用这一技术攻击的威力。他们的slides在这里&#xff1a; http://www.darkreading.com/galleries/security/applicatio…

Java 学习(20)--异常 /  IO 流

异常&#xff08;Exception&#xff09; (1)程序出现的不正常的情况。 (2)异常的体系 Throwable&#xff08;接口&#xff0c;将异常类对象交给 JVM 来处理&#xff09; |--Error 严重问题&#xff0c;我们不处理。(jvm 错误&#xff0c;程序无法处理) |--Exception 异常 …

runtime自动归档/解档

原文出自&#xff1a;标哥的技术博客 前言 善用runtime&#xff0c;可以解决自动归档解档。想想以前归档是手动写的&#xff0c;确实太麻烦了。现在有了runtime&#xff0c;我们可以做到自动化了。本篇文章旨在学习如何通过runtime实现自动归档和解档&#xff0c;因此不会对所有…

Ivanti 洞察职场新趋势:71% 的员工宁愿放弃升职也要选择随处工作

近日&#xff0c;为从云端到边缘的 IT 资产提供检测、管理、保护和服务的自动化平台供应商 Ivanti 公布了其年度无处不在的办公空间&#xff08; Everywhere Workplace&#xff09; 调查结果。这项调查是Ivanti与全球“未来工作”专家共同完成的&#xff0c;调查范围涵盖 6100 …

Shippable和Packet合作提供原生ARM CI/CD

DevOps自动化平台Shippable和裸金属云服务提供商Packet联合发布了一种新的持续集成和交付&#xff08;CI/CD&#xff09;托管服务&#xff0c;适用于在Armv8-A架构上开发软件应用的开发人员。该解决方案支持开源和商业软件项目&#xff0c;用于在Packet提供的基于ARM的云服务上…

阿里云ECS架设***过程总结

原文地址:最近开发移动项目,数据库服务是架设在电信服务器上,可怜我的联通网络本地调试直接x碎了一地!!度娘相关资料后,最终决定在阿里云ECS上架设作为跳板来访问电信服务器!一.原理1.阿里云ECS上架设.2.本地连接使用拨号到阿里云ECS.3.使用阿里云ECS网络访问电信服务器.使用前…

MYSQL的MERGE存储引擎

MYSQL的引擎不是一般的多&#xff0c;这次说到的是MERGE&#xff0c;这个引擎有很多特殊的地方&#xff1a; MERGE引擎类型允许你把许多结构相同的表合并为一个表。然后&#xff0c;你可以执行查询&#xff0c;从多个表返回的结果就像从一个表返回的结果一样。每一个合并的表必…

Pandas SQL 语法归纳总结,真的太全了

作者 | 俊欣来源 | 关于数据分析与可视化对于数据分析师而言&#xff0c;Pandas与SQL可能是大家用的比较多的两个工具&#xff0c;两者都可以对数据集进行深度的分析&#xff0c;挖掘出有价值的信息&#xff0c;但是二者的语法有着诸多的不同&#xff0c;今天小编就来总结归纳一…

分布式RPC实践--Dubbo基础篇

2019独角兽企业重金招聘Python工程师标准>>> 简介 Dubbo是阿里巴巴开源的一个高性能的分布式RPC框架&#xff0c;整个框架的核心原理来源于生产者与消费者的运作模型&#xff1b;框架的核心分4大部分&#xff1a; 1. 服务注册中心 注册中心主要用于保存生产者消费者…

又居家办公了,要签合同怎么办?

本篇文章暨 CSDN《中国 101 计划》系列数字化转型场景之一。 《中国 101 计划——探索企业数字化发展新生态》为 CSDN 联合《新程序员》、GitCode.net 开源代码仓共同策划推出的系列活动&#xff0c;寻访一百零一个数字化转型场景&#xff0c;聚合呈现并开通评选通道&#xff0…

lombox的用法(省去了set/get/NoArgsConstructor/AllArgsConstructor)

1、环境的搭建&#xff0c;在eclipse下的eclipse.ini中添加以下参数&#xff0c;-Xbootclasspath/a:C:\repository\org\projectlombok\lombok\1.16.6\lombok-1.16.6.jar-javaagent:C:\repository\org\projectlombok\lombok\1.16.6\lombok-1.16.6.jar重启你的eclipse.2、将lombo…

mysql 压力测试脚本

#创建表DEPTCREATE TABLE dept( /*部门表*/deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,dname VARCHAR(20) NOT NULL DEFAULT "",loc VARCHAR(13) NOT NULL DEFAULT "") ENGINEMyISAM DEFAULT CHARSETutf8 ;#创建表EMP雇员CREATE TABLE emp(empno…

C++语言学习(十二)——C++语言常见函数调用约定

C语言学习&#xff08;十二&#xff09;——C语言常见函数调用约定 一、C语言函数调用约定简介 C /C开发中&#xff0c;程序编译没有问题&#xff0c;但链接的时候报告函数不存在&#xff0c;或程序编译和链接都没有错误&#xff0c;但只要调用库中的函数就会出现堆栈异常等现象…

PHP代码保护——Zend Guard

Zend Guard的作用&#xff0c;就是用编译处理的方式来保护PHP源代码免于被反编译查看、未经授权的定制修改、未经许可的使用和重新发布等。而且&#xff0c;它是PHP的东家Zend公司开发的&#xff0c;是完全为PHP量身定做的保护神。 下面&#xff0c;请大家就和我一起来学习使用…

Python 2.4 递归函数

递归函数在函数内部&#xff0c;可以调用其他函数。如果一个函数在内部调用本身&#xff0c;这个函数就是递归函数。举个例子&#xff1a;计算阶乘n!1*2*3*4*5*...*n&#xff0c;用函数fact(n)表示&#xff0c;可以看出fact(n)n!f(n-1)*n所以&#xff0c;fact(n)可以表示为n*fa…

生于俄罗斯的 Web 服务器王者 Nginx,现宣布俄罗斯禁止贡献!

作者 | 苏宓出品 | CSDN不久之前&#xff0c;一些底层工具、软件、开源项目相继宣布在俄罗斯停服&#xff0c;彼时也有不少开发者呼吁 Nginx 是时候进行反限制了。万万没想到&#xff0c;就在国际局势发生改变的一个月后&#xff0c;Nginx 动了手&#xff0c;但是有些「意料之外…

OCP换考题了,052新考题及答案整理-第17题

17、Which two statements are true about tablespaces? A) A database can contain multiple undo tablespaces. B) A database can contain only a single temporary tablespace. C) A database instance stores undo data In the SYSTEM tablespace If no undo tablespace …

linux的mount(挂载)命令详解

linux下挂载&#xff08;mount&#xff09;光盘镜像文件、移动硬盘、U盘、Windows和NFS网络共享 linux是一个优秀的开放源码的操作系统&#xff0c;可以运行在大到巨型小到掌上型各类计算机系统上&#xff0c;随着 linux系统的日渐成熟和稳定以及它开放源代码特有的优越性&…

GPT-3 再更新,新增编辑和插入文本功能,简直不要太好用!

编译 | 禾木木出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;GPT-3 是 OpenAL 提出的基于上下文的超大规模自然处理深度学习模型。这意味着如果你给 GPT-3 某些上下文内容时&#xff0c;它会试图去填充其余内容。例如给出句子的前部分&#xff0c;它会推测出下半部分…

scala akka 修炼之路5(scala特质应用场景分析)

scala中特质定义&#xff1a;包括一些字段&#xff0c;行为(方法/函数/动作)和一些未实现的功能接口的集合&#xff0c;能够方便的实现扩展或混入到已有类或抽象类中。 scala中特质(trait)是一个非常实用的特性&#xff0c;在程序设计中能够 更好的抽象现实。使程序更关注各自功…