文章标题
2016-07-10 14:50
232 查看
前言
本文介绍了常用的Linux shell命令,包括date、cut、sort、uniq、sed、vi、diff、find等,同时给出尽可能使用的实例以便于理解。
Linux shell命令
2.1 date
作用:获取或者设置日期
用法:date [选项] 显示时间格式(以+开头,后面接格式)
举例:
(1) 以固定格式显示时间:date + “%Y%m%d%H”
(2) 显示明天的日期:date -d “tomorrow” +”%Y-%m-%d”
(3) 显示前天的日志:date -d “1 days ago” +”%Y-%m-%d”
2.2 cut
作用:从输入文件或者命令的输出中析取出各种域
用法:cut –c{字符串范围} –d{字段间分割符} –f{字段索引编号}
举例:
(1)查看在线用户:who | cut –c1-8
(2)从系统文件/etc/passwd中获取用户名列表:cut –d: -f1 /etc/passwd
2.3. paste
作用:将多个域合并
用法:cut –d{字段间分割符}
举例:
paste –d’:’ filename1 filename2
2.4. sort
作用:排序
用法:
-t 指定分隔符, 默认为空格
-r 以降序来排列
-u 去掉重复行
-d 以字典序来排列,包括字母,数字,符号等
-n 以数字序来排列
+positon1 -positon2 从第position1 字段到position2字段,包括position1,不包括position2。positon1从0开始。
-k KeyDefinition 指定排序关键字。KeyDefinition 选项的格式为:
[ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]
排序关键字包括任何以 FStart 变量指定的字段和 CStart 变量指定的列开头的字符及以 FEnd 变量指定的字段和
CEnd 变量指定的列结束的字符。Modifier 变量的值能够是 b、d、f、i、n 或 r。修饰符和同一字母的标志等价。
举例:
(1) 对/etc/passwd 文件的第三项进行排序(userid): sort -t: -k 3n /etc/passwd
(2) 基于ip地址对/etc/hosts文件排序: sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n /etc/hosts
2.5. uniq
作用:对数据进行去重
用法:先要对数据进行排序,然后再去重
-d:输出重复行
-c:对数据进行计数
举例:
找出/etc/passwd文件中的重复用户名:sort /etc/passwd | cut –f1 –d: | uniq –d
2.6. sed
作用:编辑数据
用法:
sed command file
-n选项:指定行号或者行号范围,如果未指定,表示任意一行;用p表示打印
举例:
sed –n ‘-1,2p’ file.txt #显示前两行
sed –n ‘/UNIX/p’ filename #显示包含“UNIX“的行
d命令:删除数据
举例:
sed ‘1,2d’ intro #删掉前两行
sed ‘/UNIX/d’ intro #删掉包含“UNIX“的行
s命令:替换
举例
Sed ‘s/Unix/UNIX/g’ intro > temp #将文件intro中“Unix“替换为UNIX, 并将结果保存到temp文件中
2.7. vi
(1) 光标移动
nG:光标移至第n行首
n+:光标下移n行
n-:光标上移n行
n$:光标移至第n行尾
(2) 删除命令
do:删至行首
d$:删至行尾
ndd:删除当前行及其后n-1行
:n1,n2 d:将n1行到n2行之间的内容删除
(3) 搜索替换
/pattern:从光标开始处向文件尾搜索pattern
?pattern:从光标开始处向文件首搜索pattern
:s/p1/p2/g:将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:将文件中所有p1均用p2替换
(4) 复制粘贴
yy:复制当前行,将光标移动到某一行,p粘贴
n1,n2 co n3:n1为起始行,n2为结束行,n3为粘贴行(其中,co是copy的简称,也可以直接用copy代替)
(5) 文件保存与退出
:w :保存当前文件
:x :保存当前文件并退出
:q!:不保存文件并退出vi
(6) 多个文件之间的复制粘贴
先在开始处做标志mk (注:m是做标注的命令,语法是m[字母],[字母]为该行的标注)
然后在末尾用”ay k (光标自动回到开始处,此时已经把你的内容放到缓冲区了)
其中a表示缓冲区a
然后用ex转义到你的文件B中,然后用”ap命令粘贴就行
即:vi 1.txt 2.txt mk“ay kex 2.txt ”ap
(7) vi切分窗口
:split two.c:打开另一个窗口并用该窗口编辑另一个指定的文件
:vsplit:垂直分割窗口
CTRL-W:跳转窗口
(8) 比较两个文件的不同之处
vimdiff 1.txt 2.txt
2.8. diff和patch
(1) diff命令
功能是用来比较两个文件的不同,然后记录下来,也就是所谓的 diff 补丁
选项
-r 是一个递归选项
-u 选项以统一格式创建补丁文件,这种格式比缺省格式更紧凑些。
(2) patch命令
patch 就是利用 diff 制作的补丁来实现源文件(夹) 和目的文件(夹) 的转换。
选项:
-p0 选项要从当前目录查找目的文件(夹)
-p1 选项 要忽略掉第一层目录,从当前目录开始查找。
-E 选项说明如果发现了空文件,那么就删除它
-R 选项说明在补丁文件中的 “ 新 ” 文件和 “ 旧 ” 文件现在要调换过来了(实际上就是给新版本打补丁,让它变成老版本)
举例:
单个文件:
diff –uN from-file to-file >to-file.patch
patch –p0 < to-file.patch
patch –RE –p0 < to-file.patch
多个文件:
diff –uNr from-docu to-docu >to-docu.patch
patch –p1 < to-docu.patch
patch –R –p1
本文介绍了常用的Linux shell命令,包括date、cut、sort、uniq、sed、vi、diff、find等,同时给出尽可能使用的实例以便于理解。
Linux shell命令
2.1 date
作用:获取或者设置日期
用法:date [选项] 显示时间格式(以+开头,后面接格式)
举例:
(1) 以固定格式显示时间:date + “%Y%m%d%H”
(2) 显示明天的日期:date -d “tomorrow” +”%Y-%m-%d”
(3) 显示前天的日志:date -d “1 days ago” +”%Y-%m-%d”
2.2 cut
作用:从输入文件或者命令的输出中析取出各种域
用法:cut –c{字符串范围} –d{字段间分割符} –f{字段索引编号}
举例:
(1)查看在线用户:who | cut –c1-8
(2)从系统文件/etc/passwd中获取用户名列表:cut –d: -f1 /etc/passwd
2.3. paste
作用:将多个域合并
用法:cut –d{字段间分割符}
举例:
paste –d’:’ filename1 filename2
2.4. sort
作用:排序
用法:
-t 指定分隔符, 默认为空格
-r 以降序来排列
-u 去掉重复行
-d 以字典序来排列,包括字母,数字,符号等
-n 以数字序来排列
+positon1 -positon2 从第position1 字段到position2字段,包括position1,不包括position2。positon1从0开始。
-k KeyDefinition 指定排序关键字。KeyDefinition 选项的格式为:
[ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]
排序关键字包括任何以 FStart 变量指定的字段和 CStart 变量指定的列开头的字符及以 FEnd 变量指定的字段和
CEnd 变量指定的列结束的字符。Modifier 变量的值能够是 b、d、f、i、n 或 r。修饰符和同一字母的标志等价。
举例:
(1) 对/etc/passwd 文件的第三项进行排序(userid): sort -t: -k 3n /etc/passwd
(2) 基于ip地址对/etc/hosts文件排序: sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n /etc/hosts
2.5. uniq
作用:对数据进行去重
用法:先要对数据进行排序,然后再去重
-d:输出重复行
-c:对数据进行计数
举例:
找出/etc/passwd文件中的重复用户名:sort /etc/passwd | cut –f1 –d: | uniq –d
2.6. sed
作用:编辑数据
用法:
sed command file
-n选项:指定行号或者行号范围,如果未指定,表示任意一行;用p表示打印
举例:
sed –n ‘-1,2p’ file.txt #显示前两行
sed –n ‘/UNIX/p’ filename #显示包含“UNIX“的行
d命令:删除数据
举例:
sed ‘1,2d’ intro #删掉前两行
sed ‘/UNIX/d’ intro #删掉包含“UNIX“的行
s命令:替换
举例
Sed ‘s/Unix/UNIX/g’ intro > temp #将文件intro中“Unix“替换为UNIX, 并将结果保存到temp文件中
2.7. vi
(1) 光标移动
nG:光标移至第n行首
n+:光标下移n行
n-:光标上移n行
n$:光标移至第n行尾
(2) 删除命令
do:删至行首
d$:删至行尾
ndd:删除当前行及其后n-1行
:n1,n2 d:将n1行到n2行之间的内容删除
(3) 搜索替换
/pattern:从光标开始处向文件尾搜索pattern
?pattern:从光标开始处向文件首搜索pattern
:s/p1/p2/g:将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:将文件中所有p1均用p2替换
(4) 复制粘贴
yy:复制当前行,将光标移动到某一行,p粘贴
n1,n2 co n3:n1为起始行,n2为结束行,n3为粘贴行(其中,co是copy的简称,也可以直接用copy代替)
(5) 文件保存与退出
:w :保存当前文件
:x :保存当前文件并退出
:q!:不保存文件并退出vi
(6) 多个文件之间的复制粘贴
先在开始处做标志mk (注:m是做标注的命令,语法是m[字母],[字母]为该行的标注)
然后在末尾用”ay k (光标自动回到开始处,此时已经把你的内容放到缓冲区了)
其中a表示缓冲区a
然后用ex转义到你的文件B中,然后用”ap命令粘贴就行
即:vi 1.txt 2.txt mk“ay kex 2.txt ”ap
(7) vi切分窗口
:split two.c:打开另一个窗口并用该窗口编辑另一个指定的文件
:vsplit:垂直分割窗口
CTRL-W:跳转窗口
(8) 比较两个文件的不同之处
vimdiff 1.txt 2.txt
2.8. diff和patch
(1) diff命令
功能是用来比较两个文件的不同,然后记录下来,也就是所谓的 diff 补丁
选项
-r 是一个递归选项
-u 选项以统一格式创建补丁文件,这种格式比缺省格式更紧凑些。
(2) patch命令
patch 就是利用 diff 制作的补丁来实现源文件(夹) 和目的文件(夹) 的转换。
选项:
-p0 选项要从当前目录查找目的文件(夹)
-p1 选项 要忽略掉第一层目录,从当前目录开始查找。
-E 选项说明如果发现了空文件,那么就删除它
-R 选项说明在补丁文件中的 “ 新 ” 文件和 “ 旧 ” 文件现在要调换过来了(实际上就是给新版本打补丁,让它变成老版本)
举例:
单个文件:
diff –uN from-file to-file >to-file.patch
patch –p0 < to-file.patch
patch –RE –p0 < to-file.patch
多个文件:
diff –uNr from-docu to-docu >to-docu.patch
patch –p1 < to-docu.patch
patch –R –p1
相关文章推荐
- 312. Burst Balloons
- Android系统各种类型的service刨根解读
- meta标签使360浏览器默认极速模式
- 关于《调试九法》
- 爱我T4 T4B T4+ A2.150129 MT6582官方线刷包+工具+驱动 解决rom被破坏问题亲测可用
- 深入理解Android四大组件之一ContentProvider
- JavaScript基础——强大的数组
- 从Stage角度看cassandra write
- leetcode2 Add Two Numbers
- 从Stage角度看cassandra write
- 大话设计模式读书笔记(一)
- Java中Long与long的区别(转)
- iOS 滚动数字控件:DPScrollNumberLabel 实现
- JavaScript 将类数组对象转化为数组
- Android面试准备之集合
- TextSwticher 与 TextView 实现上下滚动和跑马灯效果
- JMeter带json数据的post请求测试
- Redis(五):关于过期键(1)过期键的设置、获取和删除过期时间
- 一个简单的后台与数据库交互的登录与注册[sql注入处理、以及MD5加密]
- Linux系统自带spi驱动加载及应用程序编写方法详解