目录
一.显示命令
1.cat
2.tac
3.rev
二.分页显示命令
1.more
2.less
三.显示内容命令
1.head
2.tail
3.wc
4.paste
5.split
6.grep
6.1.grep
6.2.正则表达式
四.压缩与解压缩
1.gzip bzip2
2.tar
五.vi编辑器
1.vi编辑器简介
2.命令模式
3.编辑模式
4.底行模式
格式:cat [选项]... [文件]...
选项 | 说明 |
-n | 显示行号包括空行 |
-b | 跳过空白行编号 |
-s | 将所有的连续的多个空行替换为一个空行(压缩成一个空行 |
-A | 显示隐藏字符 |
#内核版本信息
[root@localhost 123]#cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core)
#系统版本详细信息
[root@localhost 123]#cat /proc/version
Linux version 3.10.0-693.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017
[root@localhost 123]#ls
aa bb cc.txt dd.txt
#跳过空行编号
[root@localhost 123]#cat -b bb
1 aa
2 bb
3 cc
#把空行压缩成一行
[root@localhost 123]#cat -s bb
aa
bb
cc
[root@localhost 123]#
[root@localhost 123]#ls
aa bb cc.txt dd.txt
[root@localhost 123]#echo 1 > cc.txt
[root@localhost 123]#echo 2 > dd.txt
#可以显示多个文件,谁在前面先显示谁
[root@localhost 123]#cat cc.txt dd.txt
1
2
[root@localhost 123]#cat dd.txt cc.txt
2
1
#空行也会被标上行号
[root@localhost 123]#cat -n bb
1 aa
2
3
4
5
6
7 bb
8
9
10 cc
tac:逆向显示文本内容
[root@localhost 123]#seq 10 | tac
10
9
8
7
6
5
4
3
2
1
#逆向显示10行文件内容
rev:将同一行的内容逆向显示
#正常显示
[root@localhost 123]#cat aa.txt
1 2 3 4 5 6 7
a b c d e f
#逆向显示
[root@localhost 123]#tac aa.txt
a b c d e f
1 2 3 4 5 6 7
#每一行逆向显示
[root@localhost 123]#rev aa.txt
7 6 5 4 3 2 1
f e d c b a
#1到10逆向显示
[root@localhost 123]#echo {1..10} | rev
01 9 8 7 6 5 4 3 2 1
more可以按页来查看文件的内容,还支持直接跳转行等功能。
参数:
+n 从笫n行开始显示。
-n 定义屏幕大小为n行。
+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示。
-c 从顶部清屏,然后显示。
-d 提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能。
-l 忽略Ctrl+l(换页)字符。
-p 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似。
-s 把连续的多个空行显示为一行。
-u 把文件内容中的下画线去掉。
命令:
Enter #向下n行,默认为1行
F键 #向下滚动一屏
空格键 #向下滚动一屏
B键 #返回上一屏
= #输出当前行的行号
V键 #在使用more查看时,使用v调用vi编辑器
!命令 #调用Shell,并执行命令
q #退出more
less 在查看之前不会加载整个文件
-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将"tab"键显示为规定的数字空格
/字符串:向下搜索"字符串"的功能
?字符串:向上搜索"字符串"的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一行
回车键 滚动一页
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
可以显示文件或标准输入的前面行
格式:head [OPTION]... [FILE]...
选项 | 说明 |
-c | 指定获取前#字节 |
-n 正数 | 指定获取前#行 |
-n 负数 | 从文件头取到倒数第#前 |
head -n 具体数字 文件名 (不加具体的数字,默认开头十行)
[root@localhost 123]#touch aaa
[root@localhost 123]#vim aaa
[root@localhost 123]#
[root@localhost 123]#ls
aaa
#显示前4个字节
[root@localhost 123]#head -c 4 aaa
1
2
#显示前四行
[root@localhost 123]#head -n +4 aaa
1
2
3
4
#显示第一行到倒数第四行前
[root@localhost 123]#head -n -4 aaa
1
2
3
4
5
6
7
[root@localhost 123]#
tail 和head 相反,查看文件或标准输入的倒数行
格式:tail [OPTION]... [FILE]...
选项 | 说明 |
-f | 跟踪显示文件新追加的内容 |
-n 正数 | 从第#行开始显示 |
-n 负数 | 显示最后#行 |
tail -n 具体数字 文件名 (不加具体的数字,默认结尾十行)
#不显示最后3行
[root@localhost 123]#head -n -3 aaa
1
2
3
4
5
6
7
8
#只显示最后三行
[root@localhost 123]#tail -n -3 aaa
9
10
#只显示前三行
[root@localhost 123]#head -n +3 aaa
1
2
3
#从第三行开始
[root@localhost 123]#tail -n +3 aaa
3
4
5
6
7
8
9
10
补充:
生成随机密码:
cat /dev/urandom |tr -cd '[:alnum:]' |head -c12
统计
格式:
wc [选项]... 目标文件..
选项 | 说明 |
-l | 统计行数 |
-w | 统计单词个数 |
-c | 统计字节数 |
[root@localhost 123]#cat bbb
sdqwd sdfsf qwerqeklno
#默认三个全部统计
[root@localhost 123]#wc bbb
1 3 23 bbb
#统计行数
[root@localhost 123]#wc -l bbb
1 bbb
#统计单词个数
[root@localhost 123]#wc -w bbb
3 bbb
#统计字节数
[root@localhost 123]#wc -c bbb
23 bbb
[root@localhost 123]#
合并文件
[root@localhost 123]#cat user.txt pass.txt
aaa
bb
cccc
123
456
789
#合并显示
[root@localhost 123]#paste user.txt pass.txt
aaa 123
bb 456
cccc 789
#用分隔符:隔开显示
[root@localhost 123]#paste -d: user.txt pass.txt
aaa:123
bb:456
cccc:789
[root@localhost 123]#
分割文件
格式:
split [-b ][-C ][-][-l ][要切割的文件][输出文件名前缀][-a ]
选项 | 说明 |
-b | 值为每一输出档案的大小,单位为 byte |
-c | 每一输出档中,单行的最大 byte 数 |
-d | 使用数字作为后缀 |
-l | 值为每一输出档的行数大小 |
-a | 指定后缀长度(默认为2) |
[root@localhost 123]#dd if=/dev/zero of=aaa bs=100M count=1
记录了1+0 的读入
记录了1+0 的写出
104857600字节(105 MB)已复制,0.652566 秒,161 MB/秒
[root@localhost 123]#
[root@localhost 123]#split -b 10M aaa -d -a 3 date
[root@localhost 123]#ls
aaa date000 date001 date002 date003 date004 date005 date006 date007 date008 date009
[root@localhost 123]#
格式:grep [选项]… 查找条件 目标文件
选项 | 说明 |
-i | 在搜索的时候忽略大小写 |
-n | 显示结果所在行号 |
-c | 统计匹配到的总行数 |
-o | 只显示符合条件的字符串,但是不整行显示,每个符合条件的字符串单独显示一行 |
-v | 输出不带关键字的行 |
-w | 匹配整个单词,如果是字符串中包含这个单词,则不作匹配 |
-e | 实现多个选项的匹配,逻辑or关系 |
-x | 只显示全列符合的列 |
-A # | 在输出的时候包含结果所在行之后的指定行数,这里指之后的x行,A:after |
-B # | 在输出的时候包含结果所在行之前的指定行数,这里指之前的x行,B:before |
-C # | 在输出的时候包含结果所在行之前和之后的指定行数,这里指之前和之后的x行,C:context |
-R | 递归目录,也处理软链接 |
^ | 匹配正则表达式的以“某字符串”开头的行 |
$ | 匹配正则表达式的以“某字符串”结尾的行 |
# grep -i 'root' passwd 忽略大小写匹配包含root的行
# grep -w 'ftp' passwd 精确匹配ftp单词
# grep -w 'hello' passwd 精确匹配hello单词;自己添加包含hello的行到文件
# grep -wo 'ftp' passwd 打印匹配到的关键字ftp
# grep -n 'root' passwd 打印匹配到root关键字的行好
# grep -ni 'root' passwd 忽略大小写匹配统计包含关键字root的行
# grep -nic 'root' passwd 忽略大小写匹配统计包含关键字root的行数
# grep -i '^root' passwd 忽略大小写匹配以root开头的行
# grep 'bash$' passwd 匹配以bash结尾的行
# grep -n '^$' passwd 匹配空行并打印行号
# grep '^#' /etc/vsftpd/vsftpd.conf 匹配以#号开头的行
# grep -v '^#' /etc/vsftpd/vsftpd.conf 匹配不以#号开头的行
# grep -A 5 mail passwd 匹配包含mail关键字及其后5行
# grep -B 5 mail passwd 匹配包含mail关键字及其前5行
# grep -C 5 mail passwd 匹配包含mail关键字及其前后5行
正则表达式,又称规则表达式,通常用来检索、替换那些符合某个模式(规则)的文本。
正则表达式是为字符串处理而生的,它使用特定的格式,来检测字符串中的某个特定模式。
^ # 锚定行的开始 如:'^grep'匹配所有以grep开头的行。
$ # 锚定行的结束 如:'grep$' 匹配所有以grep结尾的行。
. # 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
* # 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。
.* # 一起用代表任意字符。
[] # 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
[^] # 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
\(..\) # 标记匹配字符,如'\(love\)',love被标记为1。
\< # 锚定单词的开始,如:'\ # 锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。
x\{m\} # 重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。
x\{m,\} # 重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。
x\{m,n\} # 重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。
\w # 匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
\W # \w的反置形式,匹配一个或多个非单词字符,如点号句号等。
\b # 单词锁定符,如: '\bgrep\b'只匹配grep。
gzip [-9] 文件名… 提高压缩比例,但是文件较大时效率会低
bzip2 [-9] 文件名...
gzip -d .gz格式的压缩文件 d就是解压
bzip2 -d .bz2格式的压缩文件
9代表压缩比率,9最大1最小,使用以上两种压缩源文件不存在了
gzip的压缩率 要高于bzip2
格式:
tar [选项] ... 归档文件名 源文件或目录
tar [选项] ... 归档文件名 [-C 目标目录]
选项 | 说明 |
-c | 创建 .tar 格式的包文件 |
-C | 解压时指定释放的目标文件夹 |
-p | 打包时保留文件及目录的权限 |
-P | 打包时保留文件及目录的绝对径 |
-x | 解开.tar 格式的包文件 |
-f | 表示使用归档文件(使用tar都需要带这个选项) |
-t | 列表查看包内的文件 |
-v | 输出详细信息 |
-j | 调用 bzip2 程序进行压缩或解压 |
-z | 调用 gzip 程序进行压缩或解压 |
#对当前所有文件调用gzip程序进行压缩
[root@localhost 123]#tar -zcf vv.tar *
#对vv.tar压缩包解压至opt目录下
[root@localhost 123]#tar -zxf vv.tar -C /opt
Linux 系统中“一切皆文件”,当我们在命令行下更改文件内容时,就要用到文本编辑器。
vim是vi的升级版
格式:
vim [OPTION]... ...
命令 选项 文件
vim 文件名不存在 是新建
vim 文件名存在 就是修改
vi编辑器有三种模式:分别是命令模式,编辑模式,末行模式。
①.命令或普通模式:默认模式,可以实现移动光标,剪切/粘贴文本
②.插入或编辑模式:用于修改文本
③.扩展命令或末行模式:保存,退出等搜索替代
使用vi打开一个文件首先进入命令模式,是使用vi的入口,通过命令对文件进行常规的编辑操作,如:定位、复制、粘贴、翻页、删除等。
①.光标移动
功能键 | 效果 |
h | 左 |
l | 右 |
k | 上 |
j | 下 |
②.行内移动
功能键 | 效果 |
w | 向后移动一个单词 |
b | 向前移动一个单词 |
0 | 行首 |
^ | 行首,即不是空白字符的位置 |
$ | 行尾 |
③.行数移动
功能键 | 效果 |
gg | 文件顶部 |
G | 文件尾部 |
数字+gg | 移动到指定数字的行数 |
数字+G | 移动到指定数字的行数 |
数字 | 移动到指定数字的行数 |
④.段落移动
功能键 | 效果 |
{ | 上一段 |
} | 下一段 |
⑤.屏幕移动
功能键 | 效果 |
ctrl + b | 向上翻页 |
ctrl + f | 向下翻页 |
H | 屏幕顶部 |
M | 屏幕中部 |
L | 屏幕底部 |
⑥.复制命令
功能键 | 效果 |
yw | 光标所在之处到字尾的字符复制到缓冲区 |
#yw | 复制#个字到缓冲区 |
yy | 复制行 |
#yy | 复制多行 |
p | 将缓冲区内的字符贴到光标所在位置 |
⑦.删除命令
功能键 | 效果 |
x | 删除光标所在位置的后面一个字符 |
#x | 删除光标所在位置的后面#个字符 |
X | 删除光标所在位置的前面一个字符 |
#X | 删除光标所在位置的前面#个字符 |
dd | 删除光标所在行 |
#dd | 从光标所在行开始删除#行 |
⑧.更改命令
功能键 | 效果 |
cc | 删除当前行并输入新内容 |
C | 删除当前光标到行尾,并切换成插入模式 |
u | 撤销最近的更改 |
U | 撤消光标落在这行后所有此行的更改 |
⑨.查找命令
功能键 | 效果 |
/PATTERN | 从当前光标所在处向文件尾部查找 |
?PATTERN | 从当前光标所在处向文件首部查找 |
n | 与命令同方向 |
N | 与命令反方向 |
用于正常的文字编辑
功能键 | 效果 |
i | 在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动 |
I | 行首插入命令 |
a | 在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本 |
A | 在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本 |
o | 在当前光标所在位置之后插入随后输入的文本 |
O | 行尾插入命令 |
快捷键 | 功能效果 |
---|---|
:q | 退出不保存 |
:q! | 强制退出不保存 |
:w | 保存 |
:w 新文件名 | 另存为新文件: |
:wq :zz :x | 保存并退出 |
:e 其他文件名(如果已修改需要加e!) | 打开新文件进行编辑 |
:r 其他文件名 | 在当前文件中读入其他文件内容 |
!命令 | 执行命令 |
:r!命令 | 读入命令 |
: [替换范围] s /旧的内容/新的内容[/g] | |
:s /old/new | 替换当前行中的第一个old改为new |
:s /old/new/g | 替换当前行中的所有old改为new |
:#,# s /old/new/g | #到#行所有old改为new |
:%s /old/new/g | %代表全文 全文替换所有old改为new |
# d | 删除 第#行 |
#,# d | 删除#到#行 |
#,# y | 复制三到6 行 |
:set nu 或:set nonu | 加行号 不显示行号 |
:set cul (:set nocul ) | 光标所在行有下划线(取消) |
no hl | 取消高亮 |
:set ai | 对齐 回车后和上一行对齐 |
:set all 可以看所有的一些帮助 | 可以看所有的一些帮助 |
set key=password (大X) | 加密码 |
set key=空白 | 取消密码 |
set tabstop=4 (set ts=4) | tab 一次为四个空格 |
.!命令 (who,date ) | 将date命令插入当前行注意会覆盖当前行 |