重定向和管道 | 学习笔记

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

开发者学堂课程【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 中每个单词(由字母组成)显示在独立一行,并无空行

 

相关文章
|
6月前
|
iOS开发 C++
流是什么?什么叫重定向?
流是什么?什么叫重定向?
|
6月前
|
网络协议 Shell
使用输入输出重定向与管道命令——重定向
使用输入输出重定向与管道命令——重定向。
53 0
|
6月前
|
Linux Shell
使用输入输出重定向与管道命令——管道
使用输入输出重定向与管道命令——管道。
51 0
基本指令(2):通配符,重定向,命令行管道
基本指令(2):通配符,重定向,命令行管道
|
Linux 编译器
疯了!终于有人告诉我什么是重定向 管道命令 环境变量PATH!
FHS本质一套规定Linux目录结构,软件建议安装位置的标准。使用Linux来开发产品或者发布软件的公司、个人太多,如果每家公司或者个人都按照自己的意愿来配置文件或者软件的存放位置,这无疑是一场灾难。
98 0
|
Shell Linux 开发工具
Shell的基本信息、重定向与管道符
Shell的基本信息、重定向与管道符
149 0
Shell的基本信息、重定向与管道符
|
SQL 关系型数据库 MySQL
跟我一起学 Liunx 重定向和管道符
跟我一起学 Liunx 重定向和管道符
130 0