一、重定向和管道
重定向和管道linux中命令基本都实现简单功能,通过将不同命令组合在一起使用达到复杂功能。
linux中提供管道和重定向机制来实现多命令协作,管道及重定向就是Linux多命令协作的基础机制
Linux的Shell对数据流进行以下分类定义:
名称
|
说明
|
编号
|
默认
|
stdin
|
标准输入
|
0
|
键盘
|
stdout
|
标准输出
|
1
|
终端
|
stderr
|
标准错误
|
2
|
终端
|
分类
|
关键字
|
作用
|
例子
|
重定向
|
>
|
将stdout以覆盖方式重定向到文件
|
ls>outfile
|
重定向
|
>>
|
将stdout以追加方式重定向到文件
|
date>>outfile
|
重定向
|
2>
|
将stderr重定向到文件(覆盖)
|
ls notexits 2>outfile (2> /dev/null 不输出错误信息)
|
重定向
|
2>&1
|
将stdout和stderr结合到一起
|
ls notexits 2>&1 outfile
|
重定向
|
<
|
重定向stdin
|
grep linuxcast < /etc/passwd
|
管道 | | | 将一个命令的stdout作为另一个命令的stdin | ls -l | grep linuxcast find / -user linuxcast | grep video |
二、文本处理命令
文件浏览
cat 查看文件内容
more 翻页查看文件内容(只能向下翻)
less 翻页查看文件内容(上下翻页)
head 查看文件开头10行
tail 查看文件结束10行
基于关键字搜索
grep 关键字 指定文件 ( 基于关键字搜索文本)
grep 'linuxcast' /etc/passwd
find / -user linuxcast | grep video(查找所属用户为linuxcast文件中包含video的文件)
-i 搜索时忽略大小写
-n 显示结果所在行
-v 显示不包含关键字的行(排除)
-Ax 在输出时候包含结果所在行之后指定行数
-Bx 在输出时候包含结果所在行之前几行
基于列处理文件
cut -d: -f1 /etc/passwd
-d 指定分割字符
-f 指定显示列
-c 基于字符顺序进行列分割
cut -c2-6 /etc/passwd (只显示第2到第6个字符)
文本统计(word count)
wc 文件
-l 只统计行数
-w 只统计单词数
-c 只统计字节数
-m 只统计字符数
文本排序
sort 文件
-r 倒序排序
-n 基于数字进行排序
-f 忽略大小写
-u 删除重复行
删除重复行
sort -u linuxcast
uniq 删除重复行(只能删除相邻重复行)
cat linuxcast | uniq
文本比较
diff linuxcast-1 linuxcast-2
-i 忽略大小写
-b 忽略空格数变化
-u 统一显示信息(一般用于生成patch文件)
检查拼写
aspell check linuxcast
处理文本内容
删除关键字 tr -d 'TMD' <linuxcast
转换大小写 tr 'a-z' 'A-Z' < linuxcast 转换大小写
搜索替换
sed 正则表达式 文件
sed 's/linux/unix/g' linuxcast 将所有linux关键字替换为unix