Linux基础----管道、重定向、软链接、硬链接简介

基础概念--管道与输入输出重定向

1、管道

  管道命令符“|'的作用是将前一个命令的标准输出当作后一个命令的标准输入,格式为”命令A|命令B“。体现了Linux的基本思想之一:组合小命令完成完成复杂任务。

在这个示例中,先用cut从/etc/shells 文件提取第三到第四个字符,然后作为cat命令输出。

注意:管道命令符不只可以使用一次,还可以命令1|命令2|命令3。

2、输入输出的重定向

在Linux系统里执行的每一个程序都有输入、输出、和错误报告三个通道。由于对于Linux系统来说,所有的设备都是以文件的形式存在,因此程序执行时所需的三个通道就是三个文件,分别如下:

  (1)文件描述符0代表一个程序的标准输入,默认是键盘,也就是从键盘输入数据。

  (2)文件描述符1代表一个程序的标准输出,默认是终端,也就是屏幕,将程序执行的正确结果会重定向文件或某个设备中。

  (3)文件描述符2代表一个程序的标准错误输出,默认也是终端,也就是屏幕,将程序执行中的出错信息重定向到文件或某个设备中。

常用的重定向控制符号有如下几个:

  (1)<:输入重定向控制符,指令格式为:“<文件”其作用是命令需要的参数直接从文件输入。例如:mail root<message,将message文件的内容通过email传递给root用户。

    关于mail的使用参考以下:https://www.cnblogs.com/jiqianqian/p/7920603.html(乌班图系统中的sendmail安装配置与发送邮件)

  (2)>:输出重定向控制符,指令格式为”>文件",其作用是把命令的结果输出到文件,原文件内容被覆盖。例如:ls > test ,将ls命令的输出结果输出到test文件中,而不是输出到屏幕中。

  (3)>>:输出重定向控制符,指令格式为“>>文件",其作用是把命令的结果输出到文件,原文件内容不覆盖,而是追加。

对于输出重定向符有这些情况:

  命令 > 文件:将标准输出重定向到一个文件(清空原有文件的数据)

  命令 2> 文件:将错误输出重定向到一个文件中(清空原有文件的数据)

  命令 >> 文件:将标准输出重定向到一个文件中(追加到原有文件后面)

  命令 2>> 文件:将错误输出重定向到一个文件中(追加到原有文件后面)

  命令 >> 文件 2> $1:将标准输出与错误输出共同写入到文件中(追加到原有文件后面)

对于输入重定向有这些情况:

  命令 < 文件:将文件作为命令的标准输入

  命令 << 分界符: 从标准输入中读入,直到遇见”分界符“才停止

  命令 < 文件1 > 文件2:将文件1作为命令的标准输入并将标准输出到文件2

3、软链接与硬链接

  (1)基础知识了解:我们知道文件都有文件名与数据,这在linux上被分为两个部分:用户数据(user data)与元数据(metadata)。用户数据,即文件数据块(data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小,创建时间,所有者等信息。在Linux中,元数据中的inode号(inode是文件元数据的一部分但其并不包含文件名,inode号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过inode号来寻找正确的文件数据块。

  (2)硬链接:若一个inode号对应多个文件名,则称这些文件为硬链接。换言之,硬链接就是同一个文件使用多个别名。

硬链接存在以下几点特性:

    文件有相同的inode及data block;

    只能对已存在文件进行创建;

    不能交叉文件系统进行硬链接的创建;

    不能对目录进行创建,只可对文件进行创建;

删除一个硬链接文件并不影响其他有相同inode号的文件

    (3)软链接:若文件用数据块中存放的内容是另一文件的路径名指向,则该文件就是软链接。

软链接的特性:

      软链接有着自己的文件属性及权限等;

      可对不存在的文件或目录创建软链接;

      软链接可交叉文件系统;

      软链接可对文件或目录创建;

      删除软链接并不影响被指向的文件,但若指向的原文件被删除,则相关软链接被称为死链接。若被指向的路径文件被重新创建,死链接可恢复为正常的软件链接。

  

  

猜你喜欢

转载自www.cnblogs.com/RanWhoo/p/9882550.html