tlcl-redirection(重定向)

重定向(redirection)

所谓的重定向可以简单的理解为重新指定输入输出的方向,既然是重新制定输入输出的方向,那么原来的输入输出方向是如何的呢?

计算机的I/O有标准输入、标准输出、输出错误,默认的标准输入是与键盘相连接的,标准输出是与屏幕相连接的,至于输出错误也是默认连接到屏幕。

而I/O重定向可以允许我们更改这些默认连接,从文件中读取内容,将输出写入到文件等等,都是重定向。

1.重定向标准输入

ls命令默认将输出连接到屏幕,我们可以通过>重定向操作符改变输出

ls  > ls-output.txt

这样ls将要输出的内容就输出到了ls-output.txt文件中

不过下次再向这个文件中重定向时文件内容就会被重写覆盖,当然,我们可以通过使用>>重定向运算符解决这一问题

ls  >> ls-out.txt

ls输出的内容就会在原文件末尾添加

注意:重定向的内容自动换行

2.重定向标准输入

在介绍标准输入重定向之前,先来复习复习cat这个命令

之前,一直只是知道cat用来显示较短的文件的内容,却没有发现它的一个很有用的地方,cat可以用来打开多个文件显示,我们有时候会下载一个文件包,然而里面的文本会被分成好多部分,text1,text2…,这时候一个一个查看是很费劲的,我们会想有没有一个东西将这些文本连接起来组成一个文件呢?告诉你,cat就可以做到

cat text1 text2…

这时候cat连接文件还是默认输出到屏幕,怎么将输出重定向到一个文件呢,当然需要用到>运算符

cat text1 text2… > text

这样所有的内容就都在text文件中了。

我们想一想,如果cat不带参数会怎么样?

cat

这时候cat会等待标准输入,默认的标准输入是键盘,敲击几个字符,然后按下Ctrl-D(end of file),屏幕上会输出你敲击的字符。

这是很容易明白的,标准输入连接键盘,标准输出连接屏幕。

那么怎么改变标准输入的连接呢?这时候就需要<运算符了

cat  < filename

这样cat就不会等待键盘的标准输入了,因为cat已经从filename中读取到内容了,当然因为标准输出没有发生变化,filename的内容是会被显示到屏幕中的

cat <filename >filename1

这样filename的内容就会被写入到filename1中了,好像并没有什么意义呢。

发现了没有,我们是不是可以将cat filename理解成省略了<呢?

3.重定向输出错误

既然有<运算符,也有>运算符,难道重定向输出错误用的是<>

当然不是

其实在程序向文件流中写入文件时,对“前三条流做”编号,叫做文件描述符(file descriptor),0、1、2分别表示标准输入、标准输出、输出错误,这样在使用>运算符是我们可以显式的“指定输出的流了”。

lss  2> error-output.txt

这时就会把命令错误信息写入到error-output.txt文件中,(lss命令找不到啊),千万别指望lss 1>l-output.txt文件中,因为1指定的是“标准输出流”。

如果既把标准输出又把输出错误写入到文件该怎么办呢?

ls  >ls-output.txt  2>&1

注意不要这样

ls  2>&1  >ls-output.txt

因为先把“2流”输出重定向到“1流”,“1流”默认的标准输出连接为屏幕啊,这是如果发生错误,标准错误是会被显示在屏幕上的。

其实有一种更简单的方式:

ls  &>  ls-output.txt

这样就方便了许多。

4.介绍几个简单的命令和操作符

管道操作符|

|可以将一个命令的标准输出作为另一个命令的标准输入

ls | less

将ls的标准输出通过管道作为less的标准输入

过滤器

sort对输出内容的行进行排序

cat test | sort

wc 打印行,字和字节数

wc filename

grep打印匹配行

grep从文本中搜索匹配行,并打印出来

grep hello test

从test文件中搜索含有hello的行,并将其打印出来

-i选项,忽略搜索的大小写

-v选项,输出不行匹配项的行

tee

接受标准输入,同时输出到标准输出和文件

who |tee who-output.txt

将who的内容显示在屏幕上(标准输出),并输出到who-output.txt文件中

时间: 2024-10-23 15:22:15

tlcl-redirection(重定向)的相关文章

Linux学习笔记 -- stdin/stdout 重定向

输入/输出重定向 Linux系统通常从一个叫标准输入的地方读取输入并且将一个命令的结果以写入到标准输出反馈给我们:默认情况下,这也是我们使用的终端(命令行).如果我们想改变输入和输出的方式,就需要使用重定向.通常重定向命令有如下几种方式: 命令 说明 command > file 将输出重定向到 file. command < file 将输入重定向到 file. command >> file 将输出以追加的方式重定向到 file. n > file 将文件描述符为 n 的

HTTP 协议

1. 网络基础 TCP/IP 通常使用的网络是在TCP/IP协议簇基础上运作的. HTTP属于它内部的一个子集. TCP/IP分为4个层次, 应用层, 传输层, 网络层, 链路层. (Application layer, Transport layer, Internet layer, Link layer) 按层次分, IP位于网络层. IP协议的作用是包各种数据包传送给对方, 要正确传送数据包, 需要满足 2个重要的条件: IP地址和MAC地址. ARP协议可以把IP地址解析成MAC地址.

【转】编程词汇

很实用的编程英语词库,共收录一千五百余条词汇. 第一部分: application 应用程式 应用.应用程序 application framework 应用程式框架.应用框架 应用程序框架 architecture 架构.系统架构 体系结构 argument 引数(传给函式的值).叁见 parameter 叁数.实质叁数.实叁.自变量 array 阵列 数组 arrow operator arrow(箭头)运算子 箭头操作符 assembly 装配件 assembly language 组合语

TCP/IP协议族(一) HTTP简介、请求方法与响应状态码

接下来想系统的回顾一下TCP/IP协议族的相关东西,当然这些东西大部分是在大学的时候学过的,但是那句话,基础的东西还是要不时的回顾回顾的.接下来的几篇博客都是关于TCP/IP协议族的,本篇博客就先简单的聊一下TCP/IP协议族,然后聊一下HTTP协议,然后再聊一下SSL上的HTTP(也就是HTTPS)了.当然TCP/IP协议族是个老生常谈的话题,网络上关于该内容的文章一抓一大把呢,但是鉴于其重要性,还是有必要系统的总结一下的. 一.TCP/IP协议组简述 在聊HTTP与HTTPS之前呢,我们先简

前端学HTTP之报文系列第一篇——起始行

前面的话 如果说HTTP是因特网的信使,那么HTTP报文就是它用来搬东西的包裹了.HTTP报文是在HTTP应用程序之间发送的简单的格式化数据块,每条报文都包含一条来自客户端的请求,或者一条来自服务器的响应.它们由三个部分组成:由起始行.首部和实体的主体部分.本文是HTTP报文系列第一篇——起始行 报文语法 所有的HTTP报文都可以分为两类:请求报文(request message)和响应报文(response message).请求报文会向Web服务器请求一个动作,响应报文会将请求的结果返回给客

angularJs模块ui-router之路由控制

原文地址:http://bubkoo.com/2014/01/02/angular/ui-router/guide/url-routing/ 在你的应用中大多数状态都有与其相关联的 url,路由控制不是设计完成 state 之后的事后想法,而是开始开发时就应该考虑的问题. 这里是如何设置一个基本url. $stateProvider .state('contacts', { url: "/contacts", templateUrl: 'contacts.html' }) 当我们访问i

ui router 介绍

1. 路由规则 rap框架页面路由基于ui-router实现 1.1 ui-router 一个基本的路由状态如下所示: 路由配置: $stateProvider .state('po',{ url:'/po', abstract:false, templateUrl:'./pages/master.html', resolve:{ deps:"i am a test" }, controller:'po_controller' }) 前台界面: <div ui-view>&

英语单词--程序员专属

named parameter 命名参数 named pipe 命名管道 namespace 名字空间.命名空间 native 原生的.本地的 native code 本地码.本机码 Native ImageGenerator (NGEN)本地映像生成器 nested class 嵌套类 nested query 嵌套查询(for database) nested table 嵌套表(for database) network 网络 network card 网卡 nondependent na

【转】Java 专业词汇

原址:http://blog.csdn.net/xiaojunjuns1/article/details/52729861 abstract (关键字)             抽象 ['.bstr.kt] access                            vt.访问,存取 ['.kses]'(n.入口,使用权) algorithm                     n.算法 ['.lg.riem] annotation                     [Java

ios开发常用英文单词总结

1. A2A integration [,inti'ɡrei??n]         A2A整合               abstract ['æbstrækt, æb'strækt]  抽象的 abstract base [beis] class (ABC)抽象基类                   abstract class 抽象类 abstraction [æb'stræk??n] 抽象.抽象物.抽象性          access ['ækses, 'æks?s, æk'ses