重定向和管道 | 学习笔记

简介: 快速学习重定向和管道。

开发者学堂课程【Linux文件管理命令:重定向和管道】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/591/detail/8347


重定向和管道

 

内容介绍

一、课前回顾

二、重定向

三、管道

四、课后练习

 

一、课前回顾

掌握文件的结构,节点编号,节点表等概念

1.文件的各种操作命令

创建的文件管理工具,创建文件,创建空文件 touch

其他常见工具 cp mv rm

2.软连接,硬链接

链接文件的创建,有软链接和硬链接之分,链接与软链接的根本区别在于,硬链接本身是一个文件,因为它的节点标号是相同的,软链接与原始文件不是一个文件,因为它的节点编号不一样,软链接不会增加链接数,软连接支持目录硬链接不支持目录,软链接支持文件夹,硬链接不支持文件夹。

把一个文件从一个目录移动到另一个目录mv/root/f1/data/f2

如果创建硬链接底层 In/root/f1/root/f2, 在不同的分区中,将一个数据迁移到新的分区中,在迁移时,把数据复制过去的前提要在新的分区中分配一个空闲的节点编号,同时,在节点表里增加一条新的记录,这个新的文件属性是什么,例如他的权限,所有者时间等等,称为文件的源数据,节点表增加完之后,给数据找一个空闲的空间块,将数据填入进去。

创建硬链接是在节点表里不会增加新的记录,节点编号是 10000,后面跟文静的其他属性,权限 root,时间 time 等等,指针指向存放路径,除此之外,文件名不放在此处,文件名放在 root 对应的节点表目录中。

 

二、重定向

1.文件的重定向

包括标准输入重定向,标准输出重定向,以及错误的重定向。

用数字0表示输入,1表示输出,2表示错误

一个命令,如果有标准输出,想要标准重定向在一个别的文件中

cmd file

错误信息想要重定向 cmd 2file

输入的重定向 cmdfile

如果想保留原来的旧内容 cmd >>filecmd 2>>file, 此外,还可以把标准输出和错误统一定向到一个文件中 cmd &file 或者 cmd file 2&1

2. tr 命令

tr 转换和删除字符

tr [OPTION] . . . SET1 [SET2]选项:

c-C--complement: 取字符集的补集

d--delete: 删除所有属于第一字符集的字符

s--squeeze-repeats: 把连续重复的字符以单独一个字符表示

t--truncate-set1:将 第一个字符集对应字符转化为第二字符集对应的字符[:alnum:]:字母和数字[:alpha:]:字母[:cntrl:]:控制(非打印)字符[:digit:]: 数字 [:graph:]:图形字符 [:lower:]:小写字母 [:print:]:可打印字符[:punct:]:标点符号 [:space:]:空白字符 [:upper:]:大写字母[:xdigit:]:十六进制字符

3.从文件中导入 STDIN

使用<来重定向标准输入

某些命令能够接受从文件中导入的 STDIN

tr 'a-z' I 'A-Z' </etc/issue

该命令会把 /etc/issue 中的小写字符都转换成写写字符

tr-d abc</etc/fstab 删除fstab文件中的所有 abc 中任意字符

cat> file

mage

wangxiaochun

ctrl+d离开,可以使用文件来代替键盘的输入

Cat> filea <fileb

cat 命令是读取键盘输入的内容,同时并在屏幕上输出出来,既有标准输入,拥有标准输出的命令

root@centos7 data] #cat

aabcef

aabcef

^C

4.单行重定向和多行重定向

输入 [root@centos7 data] #cat> f1 回车后键盘输入内容 aa ,正常要标准输出结果,因为大于号,重定向到 f1 ,回车输入 bb f1 中有内容:

单行重定向一会车就重定向,

一下子写很多行统一重定向多行重定向

root@centos7 data] #cat > f1 <<b

123

abc

xyz

b

> b

aaa

b

root@centos7 data] #cat f1

123

abc

xyz

b

b

aaa

多行重定向比单行重定向效率高,这种写法经常用于创造一些文件用,编写程序,编写脚本,通过程序自动生成一些文件。

用多行重定向通常用约定俗成的符号,EOF 是文件结束的意思

root@centos7 data] #cat> f1 <<EOF

AAA

BBB

f1

XXX

EOF

root@centos7 data] #cat f1

AAA

BBB

f1

XXX

多行重定向还有一个好处,还可以,把以前学的变量放入里面,我的主机名是,主机名可以用一个命令来生成,用户信息用一个变量 user 来实现

root@centos7 data] #cat <f1 <<EOF

My hostname is hostname

My username is $USER

EOF

My hostname is centos7.localdomain

My username is root

root@centos7 data] #cat> f1 <<EOF

My hostname is hostname

My username is $USER

EOF

root@centos7 data] #cat f1

My hostname is centos7.localdomain

My username is root

5.把多行发送给 STDIN

使用“<<终止词”命令从键盘把多行重导向给STDIN

直到 终止词 位置的所有文本都发送给STDIN有时被称为就地文本(heretext)

mail -s "Please Call" admin@magedu.com < <END

Hi Wang,

Please give me a call when you get in. We may need

to do some maintenance on server1.

Details when you're on-siteZhang

END

 

三、管道

1.管道

管道(使用符号“I”表示)用来连接命令

命令1|命令2|命令3|...

将命令1STDOUT 发送给命令2STDIN ,命令2STDOUT 发送到命令3STDIN

STDERR 默认不能通过管道转发,可利用2>&1或|&实现

最后一个命令会在当前 shell 进程的子 shell 进程中执行用来

组合多种工具的功能 Is|tr 'a-z'A-Z'

2.管道中-符号

less:一页一页地查看输入 Is-1/etc|less

mail: 通过电子邮件发送输入

echo "test email"|mail -s "test" user@example.com

lpr: 把输入发送给打印机

echo "test print"|lpr|-Pprinter_name

示例:将/home 里面的文件打包,但打包的数据不是记录到文件,而是传送到stdout,经过管道后,将 tar-cvf-/home 传送给后面的 tar-xvf-, 后面的这个-则是取前一个命令的 stdout, 因此,就不需要使用临时 file

tar-cvfF/home|tar-xvf -

3.重定向到多个目标(tee)

命令 1|tee[-a] 文件名|命令2      把命令1STDOUT 保存在文件中,做为命令2的输入-a 追加

使用:

保存不同阶段的输出

复杂管道的故障排除

同时查看和记录输出

 

四、练习

1、将/etc/issue 文件中的内容转换为大写后保存至/tmp/issue.out 文件中

2、将当前系统登录用户的信息转换为大写后保存至/tmp/who.out 文件中

3、一个linux用户给 root 发邮件,要求邮件标题为“help”,邮件正文如下:Hello,I am 用户名,The system version is here,please help me to check it,thanks! 操作系统版本信息

4、将/root/下文件列表,显示成一行,并文件名之间用空格隔开

5、计算1+2+3+..+99+100的总和

6、删除Windows文本文件中的'^M' 字符

7、处理字符串“xt.,l1jr#!$mn 2 c*/fe 3 uz 4”,只保留其中的数字和空格

8、将 PATH 变量每个目录显示在独立的一行

9、将指定文件中0-9分别替代成 a-j

10、将文件/etc/centos-release 中每个单词(由字母组成)显示在独立一行,并无空行

 

相关文章
|
2天前
|
数据采集 人工智能 安全
|
12天前
|
云安全 监控 安全
|
3天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1023 151
|
3天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1720 9
|
8天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
662 152
|
10天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
626 14
|
5天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
385 4