目录(持续更新)
基础-第0章-安装
基础-第1章-基本操作
基础-第2章-磁盘及文件系统管理
基础-第3章-获得帮助
基础-第4章-用户及权限基础
基础-第5章-网络基本配置
基础-第6章-管道,重定向及文本处理
基础-第7章-系统启动详解
进阶-第1章-日志服务
进阶-第2章-DNS域名服务器
进阶-第3章-FTP文件共享服务
进阶-第4章-NFS文件共享服务
进阶-第5章-SMB文件共享服务
进阶-第6章-WEB服务Apache篇
进阶-第7章-电子邮件服务
进阶-第8章-Linux服务基础及管理
[高级-第1章-LVM逻辑卷]
[高级-第2章-高级权限ACL]
[高级-第3章-RAID提升速度及冗余]
[高级-第4章-高级网络-网卡绑定,子端口]
[高级-第5章-SELinux安全系统基础]
[高级-第6章-IPTable防火墙基础]
[高级-第7章-Linux-自动化部署]
第6章 管道,重定向及文本处理
第一节 linux多命令协作:管道和重定向
-
不要重复发明轮子
开源文化的核心理念之一就是不要重复发明轮子,很多开源软件都是先有软件代码功能的重新组合 就好象通过零件装配机器一样,源代码的开放和共享让这成为了可能,同时也大大的提高了效率和生产力
-
管道和重定向
在linux中大多命令都很简单,我们可以通过将不同功能的命令组合一起来达到某个复杂的功能的目的 linux中几乎所有命令的返回数据都是纯文本的(因为命令都是运行在CLI的) 而纯文本形式数据大多是输入格式,就让很多命令协作成为可能 linux的命令行为我们提供了管道和重定向机制,多命令协作就是通过管道和重定向完成的
-
命令行shell的数据流有以下定义
STDIN 标准输入 0 键盘 STDOUT 标准输出 1 终端 STDERR 标准错误 2 终端
命令通过STDIN接受参数数据
通过STDOUT输出结果
通过STDERR输出错误
通过管道和重定向我们可以控制CLI数据流
-
重定向
> 将STDOUT重定向到文件(覆盖) echo"linuxcast" > outfile 将命令的输出保存到文件中 ls > outfile 无法保存错误报错信息 >> 将STDOUT重定向到文件(追加) echo"linuxcast" >> outfile 将命令的输出保存到文件中 ls >> outfile 无法保存错误报错信息 2> 将STDERR重定向到文件 ls nothere 2> errorout 只将命令的报错信息保存到文件 正常信息不会被保存 2>&1 将STDERR和STDOUT结合 ls nothere 2> alloutput 将命令输出和报错都保存到文件 < 重定向STDIN grep linuxcast < /etc/passwd 把文件信息传递给命令
-
管道
| 将一个命令的STDOUT ls -l |greo linuxcast 作为另一个命令的STDIN find / -user linuxcast | grep video 注:重定向到 /dev/null 的信息都会丢弃处理 管道用来组合命令 重定向用来保存信息
第二节 linux命令行文本处理
-
基于关键字信息搜索
命令grep用以基于关键字搜索文本 grep 'linuxcast' /etc/passwd find / -user linuxcast |grep Video -i 搜索忽略大小写 -n 显示结果所在行数 -v 输出不带关键字的行 -Ax 在输出的时候包含结果所在行之后的指定行数 x为行数 -Bx 在输出的时候包含结果所在行之前的指定行数 x为行数
-
基于列处理文本
命令cut用以基于列处理文本内容 cut -d: -f1 /etc/passwd 使用:作为分割符将passwd文件处理为列 然后显示第一列 grep linuxcast /est/passwd |cut -d: -f3 -d 指定分割字符(默认是TAB) -f 指定输出的列号 -c 基于字符进行切割 cut -c2-6 /etc/passwd 只显示第二到第六个字符
-
文本统计
命令wc用以统计文本信息 wc linuxcast -l 只统计行数 -w 只统计单词 -c 只统计字节数 -m 只统计字符数
-
文本排序
命令sort用以对文本内容进行排序 不支持中文 sort linuxcast -r 进行倒序排序 -n 基于数字进行·排序 -f 忽略大小写 -u 删除重复行 -t c 使用c作为分隔符分割为列进行排序 -k x 当进行基于指定字符分割为列的排序时 指定基于哪个列排序 x为数字
-
删除重复行
命令sort -u 可以用以删除重复行 命令uniq用以删除重复的相邻行 默认只能删除相邻重复行
-
文本比较
命令diff用于比较两个文件的区别 diff linuxcast linuxcast-new -i 忽略大小写 -b 忽略空格数量的改变 -u 统一显示比较信息(一般用以生成patch文件,补丁文件) diff -u linuxcast linuxcast-new > final.patch 将文件区别做成补丁文件
-
检查拼写
命令aspell用来检查英文拼写 aspell check linuxcast aspell list <linuxcast
-
处理文本内容
命令tr用于处理文本内容 删除关键字 tr -d'TMD' < linuxcast 转换大小写 tr 'a-z' 'A-Z' < linuxcast
-
搜索替换
命令sed用来搜索并且替换文本 sed 's/linux/unix/g' linuxcast 将linux字符替换为unix sed '1,50s/linux/unix/g' linuxcast sed -e 's/linux/unix/g' -e 's/nash/nash_su/g' linuxcast sed -f sededit linuxcast 单引号之间为正则表达式 将linux字符替换为unix /g为全局替换 s指定行数