您好、欢迎来到现金彩票网!
当前位置:彩之网 > 转义序列 >

Linux基础命令(三):重定向、展开与引用——cat、sort、uniq、

发布时间:2019-07-25 09:19 来源:未知 编辑:admin

  通过这个工具,可以重定向命令的输入输出,命令的输入来自文件,而输出也存到文件。 也可以把多个命令连接起来组成一个强大的命令管道。

  “everything is a file”,程序实际是把运行的结果输送到一个叫做标准输出的特殊文件(通常用stdout表示),把状态信息输送到叫做标准错误的文件(stderr)。默认情况下,标准输出和标准错误都连接到屏幕,而不是保存到磁盘。另一方面,很多程序从叫做标准输入的文件中(stdin)得到输入,标准输入默认连接到键盘。I/O重定向允许我们更改输入来源和输出地点。

  可以使用 “” 重定向符号接文件名将标准输出输送到屏幕以外的其他文件。注意:使用 “” 重定向操作符来重定向输出结果时,目标文件总是从开头被重写。所以每次使用重定向操作,目标文件原本的内容会被清空。

  事实上,我们也可以使用重定向符号清空一个文件的内容(或者创建一个新的空文件):

  我们还可以使用 “” 重定向操作符把重定向内容追加到文件原来的内容后面(也可以用作创建新文件),而不是重写文件:

  标准错误重定向没有专用的操作符,为了重定向标准错误,我们必须结合其文件描述符。一个程序可以在任一个经过编号的文件流上产生输出。我们将前三个编号的文件流称作标准输入、输出和错误,shell分别将其称为文件描述符0、1和2。即文件描述符2等同于标准错误,我们可以将文件描述符 “2” 与重定位符连在一起来重定向标准错误:

  首先重定向标准输出到文件a.txt,然后 重定向文件描述符2(标准错误)到文件描述符1(标准输出)使用表示法2&1。注意重定向的顺序,标准错误的重定向必须总是出现在标准输出 重定向之后,要不然它不起作用。

  我们使用一个&符号跟重定向操作符连接起来 “&” 来重定向标准输出和错误到文件 a.txt。

  有时候我们不想要一个命令的输出结果,例如错误和状态信息。系统中有一个叫做 “/dev/null” 的特殊文件,它是一个系统设备,叫做位存储桶,它可以接受输入但并不对输入做任何处理。我们可以将标准错误重定向到该文件中。

  先介绍一个能够用到标准输入的命令cat,cat命令读取一个或多个文件,然后复制它们的内容到标准输出。可以使用cat不分页的显示文件内容。

  cat 经常被用来显示简短的文本文件。因为 cat 可以 接受不只一个文件作为参数,所以它也可以用来把文件连接在一起。比方说我们下载了一个 大型文件,这个文件被分离成多个部分(USENET 中的多媒体文件经常以这种方式分离), 我们想把它们连起来。如果文件命名为:

  目前为止,和标准输入还没什么关系。但是,如果我们不给cat输入参数直接运行,它就会从标准输入读入数据,而标准输入默认连接到键盘,所以当我们运行了不带参的cat命令的时候,它就会等待我们输入数据而不会显示任何内容。

  当我们从键盘输入内容并按下enter键的时候,就可以看到屏幕上的文本行重复出现。

  我们可以不断的输入内容,直到按下Ctrl+d告诉cat已经到达了文件末尾(EOF)。

  注意结束输入的时候需要enter换行然后按下Ctrl+d,或者不换行连续使用两次Ctrl+d。

  命令从标准输入读取数据并输送到标准输出的能力被一个称为管道线的 shell 特性所利用。 使用管道操作符 ””(竖杠),一个命令的标准输出可以通过管道送至另一个命令的标准输入(也属于I/O重定向):

  为了说明这个操作符,这里介绍一下less命令的另一个功能,除了浏览文件内容,它还可以接收标准输入并把其输送到标准输出并一页一页地显示。

  利用这个功能,我们可以非常方便的查看会产生标准输出的任一命令的运行结果。

  管道线经常用来对数据完成复杂的操作。有可能会把几个命令放在一起组成一个管道线。 通常,以这种方式使用的命令被称为过滤器。

  比如,把目录 /bin 和 /usr/bin 中的可执行程序放在一起并进行排序然后输出

  因为我们指定了两个目录(/bin 和 /usr/bin),ls 命令的输出结果由两个有序列表组成, 各自针对一个目录。通过在管道线中包含sort,我们改变输出数据,从而产生一个有序列表。

  uniq 命令经常和 sort 命令结合在一起使用。uniq 从标准输入或单个文件名参数接受数据有序 列表,默认情况下,从数据列表中删除重复行。(/bin 和 /usr/bin中有重名的程序 )

  wc命令是用来显示文件所包含的行数、字数(一个字被定义为由空格或换行字符分隔的字符串)和字节数。

  当 grep 遇到一个文件中的匹配”模式”(正则表达式),它会打印出包含这个类型的行。比如在程序列表中,找到文件名中包含单词”zip”的所有程序:

  grep 有一些方便的选项:”-i”使得 grep 在执行搜索时忽略大小写(通常,搜索是大小写 敏感的),”-v”选项会告诉 grep 只打印不匹配的行。

  head 命令打印文件的前十行,而 tail 命令打印文件的后十行。默认情况下,两个命令都打印十行文本,但是可以通过”-n”选项来调整命令打印的行数。

  tail 有一个选项 “-f” 允许你实时地浏览文件。当观察日志文件的进展时很有用,因为它们同时在被写入。

  使用”-f”选项,tail 命令持续监测这个文件,当新的内容添加到文件后,会立即出现在屏幕上。直到你输入 Ctrl+c。

  从标准输入读取数据,并且同时输出到标准输出(允许数据继续随着管道线流动)和一个或多个文件。主要用于在某个中间处理 阶段来捕捉管道线的内容。

  再介绍一个新命令echo,显示参数文本。(自动将参数排列成一行,超过一行的文本显示为单段落)

  echo .* 可以显示隐藏文件,但是结果中也会包括 .(当前目录) 和 ..(父目录) 这两个名字。(注意:多个圆点开头的文件名也属于隐藏文件。)

  波浪线字符(“~”)用在 一个单词的开头时,它会展开成指定用户的家目录名,如果没有指定用户名,则展开成当前用户的家目录:

  shell 会在展开过程中执行算术表达式。所以我们可以把 shell 提示当作计算器来使用:

  花括号展开模式可能包含一个开头部分叫做报头(如上例的Front-),一个结尾部分叫做附言(如上例的-Back)。花括号表达式本身可能包含一个由逗号分开的字符串列表,或者一个整数区间,或者单个的字符的区间。这种模式不能嵌入空白字符。

  这个特性在 shell 脚本中比直接在命令行中更有用。 它的许多功能和系统存储小块数据(变量),并给每块数据命名的能力有关系。简言之,就是变量值展开。格式为美元符号加变量名($variable)。

  如果是对未定义的变量进行参数展开会将其替换为一个空字符串。eg:数字1是没有定义的变量

  在其它展开类型中,如果你误输入一个模式,展开就不会发生。但在参数展开中,如果你拼写错了一个变量名, 展开仍然会进行,只是展开的结果是一个空字符串。

  这里我们把 which cp 的执行结果作为一个参数传递给 ls 命令,因此可以在不知道 cp 命令 完整路径名的情况下得到它的文件属性列表。

  不只限制于简单命令,也可以使用整个管道线的输出作为展开模式。使管道线的输出结果成为 file 命令的参数列表。

  bash中还支持旧版shell中的另一种语法,使用倒引号来替代美元符号和括号。

  放在双引号中的文本都被当作普通字符来看待。但有几个例外:$、\ 和 ` `(倒引号)。也就是说,单词分割、路径名展开、 波浪线展开和花括号展开都将失效,但参数展开、算术展开和命令替换仍然执行。

  所谓单词分割:Linux的单词分割机制先查找是否存在空格、制表符以及换行符,然后将它们作为单词间的界定符号,并全部替换成为单个空格。也就是说空格、制表符以及换行符都不会作为文本的一部分,而是作为分隔符使用,直接替换为单个空格(删除多余的空格)。Linux通过识别这些来将单词分割为不同的参数。eg:

  如果我们想要阻止单词分割,比如我们的文件名包含一个空格(即空格作为名称文本一部分),可以使用双引号来保留空格文本:

  如果不使用双引号,系统会将文件名识别为两个参数:two 和 words.txt 。

  在第一个实例中,没有引用的命令替换由于单词分割的原因导致命令行包含38个参数。在第二个例子中, 命令行只有一个参数,参数中包括嵌入的空格和换行符。

  转义字符(即反斜杠 “\”)用来引用单个字符。通常在双引号中使用转义字符,来有选择地阻止展开。eg:

  也常常使用转义字符来消除文件名中一个字符的特殊含义,如“$”, “!”, “&”, “ “(空格) 等字符。eg:创建一个名为a a.txt的文件

  反斜杠除了作为转义字符外,也可以构成一种表示法,来代表某种特殊字符,这些特殊字符叫做控制码。ASCII 编码表中前32个字符被用来把命令转输到电报机之类的设备。如制表符、退格符、换行符、回车符等,还有大家不太熟悉的如空值、传输结束码、和确认。

  echo 命令带上 ‘-e’ 选项,能够解释转义序列。可以把转义序列放在 $ (美元符号加单引号) 里面或者 (双引号)里面。eg:

  shell重定向介绍无论是用什麽语言开发的程序,都会处理外部的输入,然后将运算结果输出到指定的位置。在交互式的程序中,输入来自用户的键盘和鼠标,结果输出到用户的屏幕,甚至到其他播放设备中。而对于某些后...博文来自:yuki5233的博客

  重定向“gt;”:输出重定向的一个文件,覆盖原来的文件“gt;gt;”:输出重定向到一个文件,追加到原来的文件输入重定向:lt;(不常用)将a.txt的内容当做...博文来自:张不帅

  grepgrep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是GlobalRegularExpressionPrint,表示全局正则表达式版本,它的使用...博文来自:女王の专属领地

  如题,将某命令的输出结果赋值给一个变量a如果使用echo$a输出变量,则变量中的换行都会被忽略掉,所有内容输出到一行而使用echo$a 可正常输出变量中的换行当我们要将命令的输出保存到一个变量,再...博文来自:stormbjm的专栏

  cat-连接文件  cat命令读取一个或多个文件,然后复制它们到标准输出。你可以使用cat来显示文件而没有分页  cat经常被用来显示简短的文本文件。案例意义cat ls-output.txt读取文件...博文来自:学习,你不是一个人在战斗

  重定向符号输出重定向到一个文件或设备覆盖原来的文件!输出重定向到一个文件或设备强制覆盖原来的文件输出重定向到一个文件或设备追加原来的文件\将一个标准错误输出重定向到一个文件或设备覆盖原来的文件...博文来自:toyijiu的专栏

  在下面的命令中tee收到来自stdin的数据,它将收到的数据一份副本写入文件out.txt,同时将另一份副本作为后续命令的stdin,cat-n将从stdin中接收到的每一行数据加上行号并写入stdo...博文来自:滴水成川

  一.sort1.功能及原则sort将文件的每一行为单位,相互比较,从字符串的首字符开始,依次按照ASCII值比较,按照升序输出。2.常见选项选项功能-r将字符串降序排列......博文来自:的博客

  1.Linux命令的基本格式(1)命令提示符登录Linux系统后,我们可以看到如下内容:[~]#这就是Linux系统的命令提示符。其中:[]:这是提示符的分隔符号,没有特殊...博文来自:橘子女侠

  linux中的重定向重定向这个词已经表达的非常准确,所谓重定向就是重新定义输出的方向(目的地)。如,以下2中重定向本质上是一样的。llamp;amp;gt;1.txtll命令本来是输出到/p...博文来自:frcoder的博客

  对于shell的转义的问题,查看了好多文章都是针对于转义本身用法的,却没有说明在命令中的用法问题,实际上我们在使用转义时大多是在grep等各种命令之中,博主特意进行了一些研究实验,针对多层转义的问题得...博文来自:weixin_36732479的博客

  你搞得清楚head-n和tail-n的几种用法的区别吗?博文来自:软件测试技能栈

  1.列出当前系统上所有以及登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。whocut-d-f1uniq2.取出最后登录到当前系统的用户的相关信息。whotail-n1cu...博文来自:targether的博客

  MATLAB编程题题目描述:从一个NxM的矩阵C中找出与1xM的矩阵P欧氏距离最小的某一行row,要求不能用循环!!!输入:矩阵C(NxM)、矩阵P(1xM)输出:row解题思路:程序:functio...博文来自:henryzhihua

  帐号相关流程注册范围企业政府媒体其他组织换句话讲就是不让个人开发者注册。:)填写企业信息不能使用和之前的公众号账户相同的邮箱,也就是说小程序是和微信公众号一个层级的。填写公司机构信息,对公账户信息绑定...博文来自:小雨同学的技术博客

  位置参数和特殊变量有很多特殊变量是被Shell自动赋值的,我们已经遇到了$?和$1。其他常用的位置参数和特殊变量在这里总结一下:$0相当于C语言main函数的argv[0]$1、$2...这些称为位置...博文来自:的博客

  文章目录一、sort排序1、语法2、参数说明3、实例二、uniq去重1、uniq使用2、sort和uniq去重结果对比三、wc统计一、sort排序sort命令用于对文本文件内容,以行为单位来排序。so...博文来自:媛测

  思路:子进程实现ls-l命令将结果返回给父进程,父进程再实现wc-l命令在具体实现之前需要弄清一个dup函数:intdup(intoldfd)作用:文件描述符的复制,可以实现文件共享实现:从小到大找第...博文来自:enjoymyselflzz的博客

  linuxcat命令结合head、tail命令只显示文件的部分内容博文来自:NFR413的博客

  Q1单引号内符号不会被转义在Linux内单引号内是不能引用变量的,使用可以使单引号可以使用引用变量。[]#q1=abc[]#echo$q1abc...博文来自:Be yourself.

  cat-b显示行号,空白行不显示-n显示行号,包括空白行more分页查看文件内容,空格下一页,q退出less同more,上下回翻head查看头部内容,默认前10行-cnK显示前Nkb的内容-n显示文件...博文来自:leonnew的博客

  数据流重定向基础概念:华丽分割stdin(输入)stdout(正确输出)stderr(错误输出)对应数据值012可以将原本打到屏幕上的数据输出到指定的地方,比如可以将根目录下的文件放到当前目录下ll-...博文来自:LovelyCoder

  一:cat主要有三大功能:1.查看整个文件。$catfilename2.从键盘创建一个文件。$catfilename ,注意是追加  只能创建新文件,不能编辑已有文件.3.将几个文件合并为一个文...博文来自:很多时候犯错都是在不知情的情况下发生的

http://alamedapdx.net/zhuanyixulie/252.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有