cat --查看文本内容
语法:cat 文本文件名称
选项:
长选项与短选项等价
-A, --show-all 等价于"-vET"组合选项。
-b, --number-nonblank 只对非空行编号,从1开始编号,覆盖"-n"选项。
-e 等价于"-vE"组合选项。
-E, --show-ends 在每行的结尾显示'$'字符。
-n, --number 对所有行编号,从1开始编号。
-s, --squeeze-blank 压缩连续的空行到一行。
-t 等价于"-vT"组合选项。
-T, --show-tabs 使用"^I"表示TAB(制表符)。
-u POSIX兼容性选项,无意义。
-v, --show-nonprinting 使用"^"和"M-"符号显示控制字符,
除了LFD(line feed,即换行符'\n')和TAB(制表符)。
--help 显示帮助信息并退出。
--version 显示版本信息并退出。
返回值 :
返回状态为成功除非给出了非法选项或非法参数。
主要用途:
显示文本内容,如果没有文本或文本为-则读取标准输入。
将多个文本的内容进行连接并打印到标准输出。
显示文本内容中的不可见字符(控制字符、换行符、制表符等)。
补充说明:
查看目录内容:ls 文件名称
head -n 文件名 ---- 查看文本文件的前几行(n用数字代替)
tail -n 文件名 -----查看文本文件的最后几行(n用数字代替)
head 文件名 ----默认查看前10行
tail 文件名 ----默认查看最后10行
less -N 文件名 -----逐行查看 (退出查看,q)
管道| 传递的作用 将前面一个选项的结果 传递给后面一个选项
案例:
1)查看/root/anaconda-ks.cfg文件内容
cat -n /root/anaconda-ks.cfg
2)查看/etc/default/useradd文件内容
cat -n /etc/default/userad
3)查看/etc/hosts文件内容
cat -n /etc/hosts
4)显示文件/root/anaconda-ks.cfg文件内容的头3行内容
cat -n /root/anaconda-ks.cfg | head -3
5)显示文件/root/anaconda-ks.cfg文件内容的尾4行内容
cat -n /root/anaconda-ks.cfg | tail -4
6)显示文件/root/anaconda-ks.cfg文件内容的头12行内容
cat -n /root/anaconda-ks.cfg | head -12
7)利用less分屏阅读/root/anaconda-ks.cfgs文件内容(退出q,显示行号-N)
less -N /root/anaconda-ks.cfg
8)显示文件/root/anaconda-ks.cfg文件内容的查看第5行的内容
cat -n /root/anaconda-ks.cfg | head -5 | tail -1
9)显示文件/root/anaconda-ks.cfg文件内容的查看第15到20行的内容
cat -n /root/anaconda-ks.cfg | head -20 | tail -6
10)查看/etc/passwd全文内容中包含bash的行分别在哪几列
cat -n /etc/passwd | grep bash
grep --搜索工具 或者过滤
--global search regular expression(RE) and print out the line
语法:grep [选项]... 模式 [文件]...
选项:
<模式>可以包括多个模式字符串,使用换行符进行分隔。
模式选择与解释:
-E, --extended-regexp <模式> 是扩展正则表达式
-F, --fixed-strings <模式> 是字符串
-G, --basic-regexp <模式> 是基本正则表达式
-P, --perl-regexp <模式> 是 Perl 正则表达式
-e, --regexp=<模式> 用指定的<模式>字符串来进行匹配操作
-f, --file=<文件> 从给定<文件>中取得<模式>
-i, --ignore-case 在模式和数据中忽略大小写
--no-ignore-case 不要忽略大小写(默认)
-w, --word-regexp 强制<模式>仅完全匹配字词
-x, --line-regexp 强制<模式>仅完全匹配整行
-z, --null-data 数据行以一个 0 字节结束,而非换行符
杂项:
-s, --no-messages 不显示错误信息
-v, --invert-match 选中不匹配的行
-V, --version 显示版本信息并退出
--help 显示此帮助并退出
输出控制:
-m, --max-count=<次数> 得到给定<次数>次匹配后停止
-b, --byte-offset 输出的同时打印字节偏移
-n, --line-number 输出的同时打印行号
--line-buffered 每行输出后刷新输出缓冲区
-H, --with-filename 为输出行打印文件名
-h, --no-filename 输出时不显示文件名前缀
--label=<标签> 将给定<标签>作为标准输入文件名前缀
-o, --only-matching 只显示行中非空匹配部分
-q, --quiet, --silent 不显示所有常规输出
--binary-files=TYPE 设定二进制文件的 TYPE(类型);
TYPE 可以是 'binary'、'text' 或 'without-match'
-a, --text 等同于 --binary-files=text
-I 等同于 --binary-files=without-match
-d, --directories=ACTION 读取目录的方式;
ACTION 可以是`read', `recurse',或`skip'
-D, --devices=ACTION 读取设备、先入先出队列、套接字的方式;
ACTION 可以是`read'或`skip'
-r, --recursive 等同于--directories=recurse
-R, --dereference-recursive 同上,但遍历所有符号链接
--include=GLOB 只查找匹配 GLOB(文件模式)的文件
--exclude=GLOB 跳过匹配 GLOB 的文件
--exclude-from=FILE 跳过所有匹配给定文件内容中任意模式的文件
--exclude-dir=GLOB 跳过所有匹配 GLOB 的目录
-L, --files-without-match 只打印没有匹配上的<文件>的名称
-l, --files-with-matches 只打印有匹配的<文件>的名称
-c, --count 只打印每个<文件>中的匹配行数目
-T, --initial-tab 行首制表符对齐(如有必要)
-Z, --null 在<文件>名最后打印空字符
文件控制:
-B, --before-context=NUM 打印文本及其前面NUM 行
-A, --after-context=NUM 打印文本及其后面NUM 行
-C, --context=NUM 打印NUM 行输出文本
-NUM same as --context=NUM
--group-separator=SEP print SEP on line between matches with context
--no-group-separator do not print separator for matches with context
--color[=WHEN],
--colour[=WHEN] use markers to highlight the matching strings;
WHEN is 'always', 'never', or 'auto'
-U, --binary do not strip CR characters at EOL (MSDOS/Windows)
规则表达式(没必要硬背):
^ # 锚定行的开始 如:'^grep'匹配所有以grep开头的行。
$ # 锚定行的结束 如:'grep$' 匹配所有以grep结尾的行。
. # 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
* # 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。
.* # 一起用代表任意字符。
[] # 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
[^] # 匹配一个不在指定范围内的字符,如:'[^A-Z]rep' 匹配不包含 A-Z 中的字母开头,紧跟 rep 的行
\(..\) # 标记匹配字符,如'\(love\)',love被标记为1。
\< # 锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。
\> # 锚定单词的结束,如'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。
普通案例:
grep home /etc/passwd 在全文查找包含有home的行
cat -n /etc/passwd | grep home 带行号查询包含有home的行
cat -n /etc/passwd | grep root 带行号查询包含有root的行
cat -n /etc/passwd | grep bash 带行号查询包含有bash的行
cat -n /etc/passwd | tail | grep bash 查看最后10行包含bash的行
grep---对应技巧性用法
目的:输出包含指定字符行
• 在文本文件内容中,输出包含关键字符串的行 – grep [选项] 关键字符串 文本文件...
• 常用命令选项
- -v:取反匹配
- -i:忽略大小写
- ^word: 以字符串word开头 (不要使用cat -n)
- word$: 以字符串word结尾
- ^$ 代表空行
-
在linux代表注释行(不执行)
案例:
grep -i ROOT /etc/passwd #忽略大小写找/etc/passwd包含ROOT的行
cat -n /etc/passwd | grep root #带行号显示查询含root的行
cat -n /etc/passwd | grep -v root #带行号查找/etc/passwd显示不包含root的行
cat -n /etc/default/useradd | grep -iv YEs 取反和忽略大小写
grep ^# /etc/default/useradd 查看以#号开头的行
grep -i ^shell /etc/default/useradd 忽视大小写 查看以shell开头的行
grep h$ /etc/default/useradd 查看以h结束的行
cat -n /etc/default/useradd | grep ^HOME 无结果(查以什么开头,不可以与cat -n连用)
grep -v ^# /etc/default/useradd | grep ^$ 去除注释行并显示空行
grep -v ^# /etc/default/useradd | grep -v ^$ | cat -n 去除注释行和去除空行并带行号显示剩余内容
小总结:
(1) grep ^word 文件名称 以什么开头(单个字母或者单词)(cat -n 不可以在前面)
(2) grep word$ 文件名称 以什么结尾(单个字母或者单词)
(3) grep -v 文件名称 取反
(4) grep -i 文件名称 忽视大小写
(5) ^$ 代表空行
(6) grep -v ^$ 文件名称 去除空行
(7) grep -v ^# 文件名称 去除注释行
vim
语法:vim 文本文件
说明:Vim是交互式 一问一答
Vim :当文本文件不存在,会自动创建文本文件,会打开,但是不会创建目录;当文本文件存在,会打开
选项:
Ctrl+u:向文件首翻半屏;
Ctrl+d:向文件尾翻半屏;
Ctrl+f:向文件尾翻一屏;
Ctrl+b:向文件首翻一屏;
Esc:从编辑模式切换到命令模式;
ZZ:命令模式下保存当前文件所做的修改后退出vi;
:行号:光标跳转到指定行的行首;
:$:光标跳转到最后一行的行首;
x或X:删除一个字符,x删除光标后的,而X删除光标前的;
D:删除从当前光标到光标所在行尾的全部字符;
dd:删除光标行正行内容;
ndd:删除当前行及其后n-1行;
nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字;
p:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的下方;
P:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的上方;
/字符串:文本查找操作,用于从当前光标所在位置开始向文件尾部查找指定字符串的内容,查找的字符串会被加亮显示;
?字符串:文本查找操作,用于从当前光标所在位置开始向文件头部查找指定字符串的内容,查找的字符串会被加亮显示;
a,bs/F/T:替换文本操作,用于在第a行到第b行之间,将F字符串换成T字符串。其中,“s/”表示进行替换操作;
a:在当前字符后添加文本;
A:在行末添加文本;
i:在当前字符前插入文本;
I:在行首插入文本;
o:在当前行后面插入一空行;
O:在当前行前面插入一空行;
:wq:在命令模式下,执行存盘退出操作;
:w:在命令模式下,执行存盘操作;
:w!:在命令模式下,执行强制存盘操作;
:q:在命令模式下,执行退出vi操作;
:q!:在命令模式下,执行强制退出vi操作;
:e文件名:在命令模式下,打开并编辑指定名称的文件;
:n:在命令模式下,如果同时打开多个文件,则继续编辑下一个文件;
:f:在命令模式下,用于显示当前的文件名、光标所在行的行号以及显示比例;
:set number:在命令模式下,用于在最左端显示行号;
:set nonumber:在命令模式下,用于在最左端不显示行号;
注意:
- 不能新建父目录、vim务必接文件名称
- [root@localhost ~]# vim /a.txt
- 进入命令行模式 字母:i a o 三选一
- 插入行模式 按esc退出插入,返回命令行 按键shift:
- 末行模式:第一--保存w;第二--保存并退出wq 第三--强行退出不* * 保存 q!
image.png
1.末行模式:
(1)设置行号 set nu
(2)取消行号 set nonu
(3)保存文件内容w
(4)保存并退出 wq
(5)不保存强行退出q!
2.插入模式: 写入内容
(1)注意事项 可以写中文,内容写完之后,务必恢复到英文
3.命令行切换到插入行:i a o
按字母i,输入内容在光标的前面;
按字母a,输入内容在光标的后面;
按字母o,另起一个行,输入内容;
4.命令行模式: 复制并粘贴 删除 查询内容 查询并替换 快速光标 文档撤销
(1)快速移动光标 G(文件末尾) gg(文件行首) ngg(n用数字代替,例如10gg,含义光标到第10行)
(2)文档恢复 撤销u 反撤销 ctrl+r
(3)删除文件内容
1)命令行模式:删除整行dd (删除光标所在行) ndd(n用数字代替,例如5dd,含义删除5行,光标所在行向下删除)
2)命令行模式:删除单个字母或者单个单词 x 或者delete
3)插入行模式:或者进入插入行,退格一个一个删除
4)末行模式: 例如 1到5行(1,5d)
(4)复制并粘贴
1)命令行模式:复制yy(复制光标当前行) 复制多行nyy (光标所在行,向下复制) 粘贴 p(会在光标所在行的下一行新增一行粘贴内容)
2)末行模式:例如 1到5行(1,5y) 粘贴 p(会在光标所在行的下一行新增一行粘贴内容)
(5)查询内容 /输入想要查询的内容 n可以跳转到下一个高亮的内容(查找不存在的内容可以消除高亮)
(6)查询并替换 (末行模式下)
1)替换当前行 :s/旧内容/新内容/g 例如:s/o/A/g
2)全文替换 :%s/旧内容/新内容/g 例如:%s/root/3c/g
3)局部替换 :10,20s/旧内容/新内容/g 例如:10,20s/bin/love/g
案例:
1)在vim中显示行号,再取消行号,再显示行号 set nu
2)切换到最后一行 G
3)切换到第30行 30gg
4)切换到第一行 gg
5)删除第6行 :6,6d
6)删除1-5行 :1,5d
7)查找全文的sbin字符串 /sbin
8)将全文的o替换成大写的O :%s/o/O/g
9)去掉全文的#号 :%s/#//g
10)撤销所有步骤,复制13行到18行 到文件的最后一行 u :13,18y G p