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)软链接:若文件用数据块中存放的内容是另一文件的路径名指向,则该文件就是软链接。
软链接的特性:
软链接有着自己的文件属性及权限等;
可对不存在的文件或目录创建软链接;
软链接可交叉文件系统;
软链接可对文件或目录创建;
删除软链接并不影响被指向的文件,但若指向的原文件被删除,则相关软链接被称为死链接。若被指向的路径文件被重新创建,死链接可恢复为正常的软件链接。
(4)如何创建软硬链接
linux可以通过ln命令创建链接文件
ln [参数] [源文件或目录] [目标文件或目录]
1.软连接(符号链接) ln -s source target
2.硬链接(实体链接) ln source target
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现