重定向和管道

本章节内容:

三种I/O设备

把I/O频道重定向入

使用管道链接命令

一、标准输入和输出:

程序:指令+数据

读入数据:Input;输出数据:Output

打开的文件都有一个fd:file descriptor (文件描述符)

Linux给程序提供三种I/O设备:

标准输入(STDIN)-0默认接受来自键盘的输入

标准输出(STDOUT)-1默认输出到终端窗口

标准错误(STDERR)-2默认输出到终端窗口

I/O重定向:改变默认位置

不是所有的标准输入都有标准输出;标准输出是默认的当前终端窗口。

三种合并正常输出流和错误输出流的方法:

二、将输出和错误输出重新定向到文件:

标准输出和错误输出可以被重定向到文件:

命令操作符号文件名

支持的操作符号包括:

标准输出和错误输出可以各自定向至不同位置;

了解重定向的使用:

1、> 把标准输出重定向到文件(文件内容会被覆盖);>> 原有内容基础上,追加内容;

2、2>把错误输出重定向到文件;2>>: 追加重定向错误输出数据流;

3、&>把合并所有输出重定向到文件;&>>:追加重定向

COMMAND > /path/to/file.out2> &1 (顺序很重要)

COMMAND >> /path/to/file.out2>> &1

新的写法(&>),入下图:

以前旧的写法(2>&1),入下图:

禁止覆盖:(针对当前终端有效)

# set -C: 禁止将内容覆盖已有文件,但可追加(>>)

强制覆盖:>|

# set +C: 允许覆盖

4、合并多个程序执行的结果重定向,命令格式为:(COMMAND;COMMAND) > /path/filename

5、使用字符给系统用户写邮件,格式:# mail –s 标题用户名

回车后,等待内容的输入,结束以“.”,切记.的前面不能够空格。

用户chesfer查看来自root用户发给其的邮件,如下图:

6、多行输入重定向的开始/结束符:<<EOF /  >EOF

三、认识和使用tr命令:

tr–转换和删除字符

使用格式: tr[OPTION]...SET1 [SET2]

使用选项:-c或——complerment:取字符集的补集

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

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

-t或--truncate-set1:将第一个字符集对应字符转化为第二字符集对应的字符

tr –c使用:如下图,将不是a和b的字母全部给转换成n

四、管道:只能接收标准输出,而不能接收错误输出。

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

命令1 | 命令2 | 命令3 | …   :将命令1的STDOUT发送给命令2的STDIN,命令2的STDOUT发送到命令3的STDIN;

STDERR默认不能通过管道转发,可利用2>&1 | 或|& 实现(无法判断前面的COMMAND是否成功);

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

1、组合多种工具的功能使用,如下:

eg: ls /etc/ | tr 'a-z' 'A-Z'

2、# who | tee | tr 'a-z' 'A-Z'

3、# ls-l/etc|less一页一页地查看输入:

练习与作业:

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

tr [[:lower:]] [[:upper:]] < /etc/issue >//tmp/issue.out

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

# w | tr [[:lower:]] [[:upper:]] > /tmp/who.out

3、一个linux用户给root发邮件,要求邮件标题为”help”,邮件正文如下:Hello,I am 用户名,the system version is here,pleasehelp me to check it ,thanks!

操作系统版本信息

mail help root <<EOF

<Hello, I am chesfer(`id -un`),the system version is here,pleasehelpme to check it ,thanks!

<`cat /etc/centos-release`

<EOF

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

# ls/root/ | tr ‘\n’ ‘ ’

作业:

5、file1文件的内容为:”1 2 34 5 6 7 8 9 10” 计算出所有数字的总和

# cat file1 |tr  " " "+ " | bc

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

#cat-A f11.ext

#dos2unix f11.txt

7、处理字符串“xt.,l 1jr#!$mn2 c*/fe3 uz4”,只保留其中的数字和空格

# catfiles | tr -d [[:alpha:]][[:punct:]]

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

#echo $PATH | tr ":" "\n"

9、删除指定文件的空行

# #cat fs | tr -s [[:space:]]

10、将文件中每个单词(字母)显示在独立的一行,并无空行

#cat fs | tr [[:space:]] '\n' | tr -s [[:space:]]

11、软、硬链接区别

软链接:两个文件名拥有两个不同的inode节点号;指向两块不同的数据块;两个文件名是一个“主 从”的关系;其中任何一个删除,对另外的文件名没有任何的影响;每增加一个文件名,inode节点号上的链接数增加一个,反之,删除一个文件名,链接数减一,直至为零,inode节点号和数据块才会被回收;链接的文件名数据块上只是存放源文件名的访问路径;可以对目录进行软链接;可以跨分区创建链接;可以对不存在的文件名创建链接;链接方式上为ln -s 源文件 链接名

硬链接:两个/多个文件名只能拥有同一个inode节点号;指向同一块的数据块;两个或多个文件名是一个“平等”的关系;其中任何的一个删除掉,另外的一个虽然存在,但其指向的链接是一个无效的链接;不能够对目录进行链接;不能跨分区创建链接;不能够对不存在的文件名创建链接;链接方式上为ln 源文件 链接名

转载于:https://blog.51cto.com/11888240/1832263

Linux重定向和管道的基础学习相关推荐

  1. Linux重定向与管道

    重定向 所用命令指令 echo: echo会将输入的字符串送往标准输出.输出的字符串间以空白字符隔开, 并在最后加上换行号. cat:查看目标文件的内容 -b 对非空输出行编号 -n 对输出的所有行编 ...

  2. Linux重定向和管道

    文章目录 一.重定向 1.1 输出重定向 1.1.2 重定向 1.1.2 追加重定向 1.2 输入重定向 二.管道 一.重定向 linux启动后,会默认打开3个文件描述符,分别是: 标准输入:stan ...

  3. Linux 鸟叔的私房菜 基础学习篇(第四版) 课后习题答案

    答案仅供参考,来源于本人和网上,并非绝对正确,请酌情参考! 文章目录 第零章 计算机概论 第一章 Linux是什么与如何学习 第二章 主机划分与磁盘分区 第三章 安装CentOs 7.x 第四章 首次 ...

  4. Linux 重定向与管道

    https://blog.csdn.net/qq_38364548/article/details/118575079?utm_medium=distribute.pc_feed_v2.none-ta ...

  5. Linux系统学习: 进程、重定向和管道指令:xargs 指令的作用是

    进程 为了弄清楚这节课程的内容,也就是管道,我们先来讨论一下进程. 我们知道,应用的可执行文件是放在文件系统里,把可执行文件启动,就会在操作系统里(具体来说是内存中)形成一个应用的副本,这个副本就是进 ...

  6. Linux基础学习笔记(十二)——管道命令

    文章目录 前言 管道命令 cut命令 sort,wc,uniq命令 sort命令 uniq命令 wc命令 双向重定向--tee命令 字符替换命令 tr命令 col命令 join命令 paste命令 e ...

  7. Linux命令行学习之路(六)——重定向和管道

    今天我们来总结一下个人认为linux下最为实用和厉害的重定向和管道 在说今天的重点之前,必须要先学一点其他的新知识:标准输入(stdin).标准输出(stdout).标准错误输出(stderr) 标准 ...

  8. linux shell 变量 管道,linux下shell,变量,管道,重定向等基础知识及技巧

    知识点如下: 1,关于shell编程中的变量,shell编程中的变量分为4种 本地变量:只对本系统本用户自己的shell有用 环境变量:对本系统的所有shell都有用  用export来声明变量  例 ...

  9. Linux shell脚本基础学习

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

  10. Linux shell脚本基础学习详细介绍(完整版)一

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

最新文章

  1. 关键词热度分析工具_亚马逊卖家: 产品关键词挖掘分析必备工具!
  2. 我觉得要技术者上升到整体去考虑会好点
  3. java中,如何实现输入一个正整数,并将这个数字反转输出,比如输入123,输出321
  4. 获取 当前日期、当前时间、前一天日期
  5. c语言设计第4章答案,《C语言程序设计》第4章习题答案.doc
  6. msdn服务器系统,操作系统
  7. javaJavaScript DOM
  8. Java-集合第三篇List集合
  9. 计算机组成原理 唐朔飞 知识点,计算机组成原理知识点总结(唐朔飞版)
  10. 按照 ASCII 码从小到大进行排序
  11. WPS导入SQLSERVER的数据
  12. pandas合并多个数据表
  13. Java实现语音阅读功能开发(输入文字,转语音播放)
  14. 微信公众平台修改服务器,微信公众平台开发配置及自定义分享
  15. e1000网卡驱动第二天_3
  16. 【第134期】 游戏策划:我录用了一位待业半年的往届生
  17. 微信小程序反编译及源码抓取(2021最新)
  18. 如何解决未能初始化战场服务器,初始化失败,教您如何解决cf初始化失败
  19. PentesterLab靶场sql注入流程
  20. Lottie——强大的动画渲染框架

热门文章

  1. 凸优化第八章几何问题 8.4极值体积椭圆
  2. xshell与虚拟机VMware中centos6.7系统突然连不上
  3. 相似矩阵对角化 | 找到一个可逆矩阵 P 使得 P^(-1)AP 成为一个对角矩阵
  4. Raki的PRML阅读笔记 第1章:Introduction
  5. html中父子元素的解释,CSS 子绝父相 理解
  6. php缓存memclear,PHP内存缓存加速功能memcached安装与用法
  7. js刷新当前页面的几种方式
  8. 第 7 章 Neutron - 079 - 在 ML2 中 enable local network
  9. 重学前端学习笔记(四十一)--CSS的颜色
  10. iOS开发-多台机器共用证书问题