Linux重定向和管道相关知识汇总

导入知识
1.指令:基本的计算机操作。例如:加法,减法等
2.程序:指令的集合,一般有执行属性,看作:菜谱
3.进程:是程序的实例,是程序执行的过程,看作:按照菜谱进行做菜的过程
4.查看进程 使用ps -ef命令
5.Cat的工作原理:接受输入,然后完整输出,输入什么内容,cat就会输出什么内容
重定向
输入输出重定向

标准输入(stdin)和标准输出(stdout)

Linux重定向和管道相关知识汇总
2.交互式硬件设备
标准输入:从该设备接收用户输入的数据
标准输出:通过该设备向用户输出数据
标准错误:通过该设备报告执行出错信息

下列的设备文件,文件描述符和默认设备是相互对应的关系,是不变的
Linux重定向和管道相关知识汇总
注:1). 文件描述符:是一个整数,用来描述一个进程打开文件,每个进程都有每个进程的文件描述符。
2).用ulimit -a查看每个进程最多可以打开多少个文件 看这行:open files (-n) 1024这是默认值,这个值可以修改:修改截图如下
Linux重定向和管道相关知识汇总
3).系统级别,最多可以打开多少文件?
Linux重定向和管道相关知识汇总
这个值可以修改:修改截图如下
Linux重定向和管道相关知识汇总
3.标准输入和输出
改变标准输入、标准输出的方向就是重定向
Linux重定向和管道相关知识汇总
4.标准错误:通过该设备报告执行出错信息
Linux重定向和管道相关知识汇总
重定向标准输出到文件
例如:ls > /tmp/f1 将ls的内容不再屏幕上输出转交到/tnp/f1 下(正确输出)
Linux重定向和管道相关知识汇总
重定向标准输出和标准错误到不同文件
例如:将正确输出输入到f1文件: 错误输出输入到f2文件
Linux重定向和管道相关知识汇总
重定向标准输出和标准错误到同一个文件
例如:将标准输出和标准错误到f1文件(注:没有a2 文件,有a.txt文件)
1.Linux重定向和管道相关知识汇总
2.Linux重定向和管道相关知识汇总
补充:快速清空文件内容 >yang 将yang里面的内容清空

追加内容
两个特殊文件
/dev/null:过滤标准错误信息(黑洞文件)用来屏蔽输出
/dev/zero:用来创建指定长度文,产生0

管道及相关配套命令
1.命令echo
用途:在屏幕上显示一段文字或指定内容。
格式:echo [-n] 字符串 -n没有换行
Linux重定向和管道相关知识汇总
补充:\的作用:
1):命令行的续行
Linux重定向和管道相关知识汇总
2):转义,将特殊符号的特殊功能的去掉,只表示特殊符号本身Linux重定向和管道相关知识汇总
补充:命令echo的其他命令格式详见本人博客Linux中echo命令汇总
2.数据过滤
grep数据提取程序
用途:在文件中查找并显示包含指定字符串的行
格式:grep [选项]… 模式 目标文件
-i:查找时忽略大小写
-v:反转查找,输出与模式不相符的行
-w:按整字查找
-n:显示符合模式要求的行号
-r:递归搜索所有文件Linux重定向和管道相关知识汇总
.* 表示任意数量的任意字符
模式
^….:以什么开头
Linux重定向和管道相关知识汇总
……KaTeX parse error: Expected group after '^' at position 8: :以什么结尾 ^̲:表示空行
Linux重定向和管道相关知识汇总
注:该命令行表示去掉/etc/fstab里以#开头的行和空行以后输出
3.管道 (管道是进程之间进行通信的一种方法)
管道操作符号“|”
连接左右两个命令,将左侧的命令的标准输出,作为右侧命令的标准输入
格式:cmd1 | cmd2 [… | cmdn]
head -5 /etc/passwd | tail -1
查看/etc/passwd的前五行并输出查看倒数第一行
使用管道的前提:
1)左边的命令要有标准输出
2)右边的要支持标准输入

用grep 过滤输出
ls –l /etc | grep pass(grep支持标准输入也支持标准输出)
查看etc并将含有pass的行过滤输出

管道和标准错误
find /etc –name “p*” | grep passwd (把passwd输出)
找etc目录下含有p的行并将含有passwd的行过滤输出
find /etc –name “p*” | grep passwd > /tmp/aa
找etc目录下含有p的行并将含有passwd的行过滤输出并标准输出到/tmp/aa
find /etc –name “p*” | grep passwd 2> /tmp/aa
find /etc –name “p*” | grep passwd &> /tmp/aa
find /etc –name “p*” 2>/dev/null | grep passwd(将错误输出屏蔽,将正确输出过滤给paawd)
4.命令xargs
用途:将参数列表转换小块分段传递给后边命令,将前边的标准输出转换为参数给后面的命令
读入stdin的数据转换为参数添加到命令行中
让一些不支持管道的命令可以使用管道Linux重定向和管道相关知识汇总
5.命令seq
用途:打印出一串有序的数字(默认从一开始)
格式:seq [选项] 数字范围Linux重定向和管道相关知识汇总
中间有步长,当前步长为一,递减的话,步长设置为-1
-s:指定分隔符Linux重定向和管道相关知识汇总
补充:bc命令具有计算功能,可以利用seq和bc进行计算
-w:指定同等宽度
6.命令tr
字符转换工具
不能直接对文件操作

使用tr转换字符
tr SET1 SET2(数量要一致。一一转换)
用SET2中的字符替换掉SET1中同一位置的字符
echo 123456 | tr 345 abc(将3转换a ,4转化为,5为c)
tr 123 abc < aa
tr ‘[a-z]’ ‘[A-Z]’ < /etc/hosts

使用tr删除字符
tr -d SET
删除与SET相同的字符
echo 123456 | tr -d 345 (将3,4,5删除)
tr -d '[0-9]’ < /etc/hosts
将etc/hosts里的0到9的数字删除
echo “Tom, I hear a pig!” | tr -d ‘[a-z]’(删除小写字母)
Linux重定向和管道相关知识汇总使用tr压缩字符,替换字符
tr -s SET
将连续相同的字符压缩成一个字符
echo 112233444555666 | tr -s 345
输出结果为:1122345666
tr -s SET1 SET2
先替换为SET2再压缩
echo 112233444555666 | tr -s 345 abc
echo 112233444555666 | tr 345 abc | tr -s abc
7.命令sort
默认按每行的第一个字符排序Linux重定向和管道相关知识汇总-n:按整数进行排序Linux重定向和管道相关知识汇总-r:递减排序Linux重定向和管道相关知识汇总指定排序键
指定按哪一列数据进行排序
-k:指定哪一列为排序键
Cat tt | sort -n -k4
Linux重定向和管道相关知识汇总指定字段分隔符
-t:指定字段分割符(默认是空格)
例如: sort -k3 -t: -n /etc/passwd(将passwd文件里的第三个字段整数排序以:为分隔符)
8.命令unip
删除经过排序后的数据的重复记录
通常和sort连用
Linux重定向和管道相关知识汇总数据的实例统计
-c:显示文件中每行连续出现的次数
cat tt | uniq -c
-u:只显示不重复的行
cat tt | uniq –u
-d:只显示重复的行
cat tt | uniq -d

数据提取及过滤
1.命令cut
从文本文件或者文本流中提取文本列
cut -选项 提取范围 文本文件

常见选项
-c:从指定提取范围中提取字符
-f:从指定提取范围中提取字段

提取范围
n:第n项
n-:第n项到行尾
-m:行首到第m项
n,m:第n项和第m项
n-m:第n项到第m项
2.命令cut -c
ls -l | cut -c 10(提取每一行的第十个字符)
who | cut -c 20-40
cut -c -10 /etc/passwd(提取每一行的第一个到第十个字符)

3.命令cut -f
-d:指定分隔符默认是Tab
cut -d “:” -f 1,7 /etc/passwd (在这个文件以:为分隔符提取第一个和第七个字段)
who | cut -d ‘ ’ -f1,6
4.命令wc(字数统计)
格式:wc [选项]… 目标文件…
-l:统计行数
-w:统计字数 (前后都是空白的一组字符)
-c:统计字符数(可见和不可见的字符)Linux重定向和管道相关知识汇总文件差异对比

  1. 命令diff
    比较两个文件之间的差异
    输出结果为两个文件的不同之处Linux重定向和管道相关知识汇总
    会将不同之处 列举出来