简介
本文介绍Linux下查看文档的命令,有实例。命令有:tail、head、cat、tac、vi、vim、hexdump、cut。
tail
格式
tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]
参数
- -f 监视File文件增长。
- -c Number 从Number字节位置读取指定文件
- -n Number 从Number行位置读取指定文件。
- -m Number 从Number多字节字符位置读取指定文件。
- 比方你的文件假设包括中文字,假设指定-c参数,可能导致截断,但使用-m则会避免该问题。
- -b Number 从Number表示的512字节块位置读取指定文件。
- -k Number 从Number表示的1KB块位置读取指定文件。
示例
1、监视文件的尾部内容(默认10行,相当于增加参数 -n 10),刷新显示在屏幕上。
tail -f filename
退出:CTRL+C
2、显示filename最后20行
tail -n 20 filename 或 tail -20 filename
3、监视文件的尾部100行内容
tail -100f filename
4、逆序显示filename最后10行
tail -r -n 10 filename 或 tail -r -10 filename
head
参数
-q 隐藏文件名
-v 显示文件名
-c 显示前多少个字节数
-n 显示前几行
示例
1.显示文件的前5行
head -n 5 test.txt
2.显示文件前5个字节
head -c 5 test.txt
3.显示除了最后5个字节以外的内容
head -c -5 test.txt
cat
作用
显示文件
示例
cat file1 //显示文件file1的内容
cat file1 file2 > file3
cat file1 file1 > file2 // 此时file1被复制了两次,然后写到file2中
tac
反向显示文件(和cat显示顺序相反)
vi
定位
命令 | 作用 |
0(或^) | 光标移到行首 |
$ | 光标移到行尾 |
gg | 光标移动到文件首部 |
G | 光标移动到文件末尾 |
ngg/nG 无需回车 :n 回车 vi +n fileName 回车 | 跳转到第n行。 |
ctrl+o | 回到上一个光标的位置 |
ctrl+i | 回到下一个光标的位置 |
/ | 输入查找的字符,按n会往后查找,按N会往前查找 |
? | 输入查找的字符,按n会往前查找,按N会往后查找 |
ctrl+b | 上翻 |
ctrl+f | 下翻 |
编辑
命令 | 作用 |
u | 恢复到上一步 |
ctrl+R | 恢复到撤销之前的状态。(对撤销的撤销) |
a | 光标后插入文本 |
i | 光标前插入文本 |
o | 插入新的一行,从行首开始输入 |
d0 | 删至行首 |
ndd | 删除从当前行开始的n行 |
D | 删至行尾 |
x | 删除光标后一个字符 |
退出
命令 | 作用 |
:w | 保存文件 |
:wq | 保存文件并退出 |
:q | 退出 |
:q! | 退出但是不保存 |
:qall! | 放弃所有修改并退出 (可以用:qa!) |
:wqall! | 保存所有并退出(可以用:wqa!) |
窗口
命令 | 作用 |
:split | 竖直分割窗口。(可以用":sp",另外,可以这样用:":sp./file1,以打开另一个文件) |
:vsplit | 竖直分割窗口。(可以用":vs",另外,可以这样用:":vs./file1,以打开另一个文件) |
ctrl+w | 可以在窗口之间跳转 |
:only | 关闭其他窗口,只保留此窗口(可以用:on) |
vim-o | 水平分割打开。例如:vim-ofile1file2 |
vim-O | 竖直分割打开。例如:vim-Ofile1file2 |
:shell | 在vi编辑的时候用此命令暂时跳出vi,可以运行命令(可用:sh)。可以用exit来恢复到vi界面 |
vi上下左右和退格不正常问题解决
步骤一:
输入chsh,回车
在Login Shell...后输入/bin/bash回车
步骤二:
修改/etc/vim/vimrc.tiny
修改 set compatible 为 set nocompatible 设置是否兼容
添加 set backspace=2 设置 backspace可以删除任意字符
备注:
set baskspace=2等同于set backspace=indent,eol,start
indent: 如果用了:set indent,:set ai 等自动缩进,想用退格键将字段缩进的删掉,必须设置这个选项。否则不响应。
eol:如果插入模式下在行开头,想通过退格键合并两行,需要设置eol。
start:要想删除此次插入前的输入,需设置这个。
more
作用
more会以一页一页的显示方便使用者逐页阅读,而且还有搜寻字串的功能。
格式
more [-dlfpcsu ] [-num ] [ / pattern] [ linenum] [file ... ]
参数
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行
- 空格:向下滚动一屏(Ctrl F也可以)
- b:返回上一屏(Ctrl B也可以)
- =:输出当前行的行号
- f 输出文件名和当前行的行号
- v:调用vi编辑器(或者V)
- !命令:调用Shell,并执行命令
- / 向后搜索
- q 退出more
less
作用
less会以一页一页的显示方便使用者逐页阅读,而且还有搜寻字串的功能。
操作命令
- 向前翻一页:[pageup] 或 ctrl+b 或 b
- 向后翻一页:[pagedown] 或 ctrl+f 或 空格
- 向前翻半页:u
- 向后翻半页:d
- 向前翻一行:k 或 y
- 向后翻一行:j 或 回车
- 移动到最后一行:G
- 移动到第一行:g
- 向上搜索:?字符串
- 向下搜索:/字符串
- 重复前一个搜索:n
- 反向重复前一个搜索:N
- 使用配置的编辑器编辑:v
- 显示帮助界面:h
- 退出命令:q或Q
参数
- -b <缓冲区大小> 设置缓冲区的大小
- -e 当文件显示结束后,自动离开
- -f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
- -g 只标志最后搜索的关键词
- -i 忽略搜索时的大小写
- -m 显示类似more命令的百分比
- -N 显示每行的行号
- -o <文件名> 将less 输出的内容在指定文件中保存起来
- -Q 不使用警告音
- -s 显示连续空行为一行
- -S 行过长时间将超出部分舍弃
- -x <数字> 将"tab"键显示为规定的数字空格
hexdump
格式
hexdump [-bcCdovx] [-e fmt] [-f fmt_file] [-n length] [-s skip] [file ...]
参数
-b 每个字节显示为8进制。一行共16个字节,一行开始以十六进制显示偏移值
-c 每个字节显示为ASCII字符
-C 每个字节显示为16进制和相应的ASCII字符
-d 两个字节显示为10进制
-e 格式化输出
-f Specify a file that contains one or more newline separated format strings. Empty lines and lines whose first non-blank
character is a hash mark (#) are ignored.
-n 只显示前n个长度的字符
-o 两个字节显示8进制数据
-s 从偏移量开始输出
-v The -v option causes hexdump to display all input data. Without the -v option, any number of groups of output lines,
which would be identical to the immediately preceding group of output lines
-x 双字节十六进制显示
示例
1.以ASCII字符显示文件中字符
hexdump -c test
2.以16进制和相应的ASCII字符显示文件里的字符
hexdump -C test
3.只显示文件中前n个字符
hexdump -C -n 5 test
4.以偏移量开始格式输出
hexdump -C -s 5 test
cut
简介
cut 命令从文件的每一行来剪切字节、字符和字段,并将这些字节、字符和字段写至标准输出。
选项 | 含义 | |||
-b,--bytes=lists | 只选中指定的这些字节 | |||
-c,--characters=lists | 只选中指定的这些字符 | |||
-d, --delimiter=分界符 | 使用指定分界符代替制表符作为区域分界。只有指定-f时使用。不指定时分界为制表符。 | |||
-f, --fields=列表 | 只选中指定的这些域;并打印所有不包含分界符的行,除非-s 选项被指定。 仅使用f -b, -c 或-f 中的一个,每一个列表都是专门为一个类别作出的,或者您可以用逗号隔开要同时显示的不同类别。您的输入顺序将作为读取顺序,每个仅能输入一次。 每种参数格式表示范围如下: N 从第1 个开始数的第N 个字节、字符或域 N- 从第N 个开始到所在行结束的所有字符、字节或域 N-M 从第N 个开始到第M 个之间(包括第M 个)的所有字符、字节或域 -M 从第1 个开始到第M 个之间(包括第M 个)的所有字符、字节或域 | |||
-n | 取消分割多字节字符。仅和 -b 标志一起使用,如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除。 | |||
--complement | 补全选中的字节、字符或域 | |||
-s, --only-delimited | 不打印没有包含分界符的行 | |||
--output-delimiter=字符串 | 使用指定的字符串作为输出分界符,默认采用输入的分界符 | |||
--help | 显示此帮助信息并退出 | |||
--version | 显示版本信息并退出 | |||
示例 | ||||
cat test.txt 结果: Name; Mark; Percent tom; 69; 91 jack; 71; 87 alex; 68; 98 | cut -d " " -f1 test.txt 结果: Name; tom; jack; alex; | cut -d " " -f2,3 test.txt 结果: Mark; Percent 69; 91 71; 87 68; 98 | cut -d " " -f2 --complement test.txt 结果: Name; Percent tom; 91 jack; 87 alex; 98 | cut -c1-3 test.txt 结果: Nam tom jac ale |
cut -c1- test.txt 结果: Name; Mark; Percent tom; 69; 91 jack; 71; 87 alex; 68; 98 | cut -d ";" -f2 test.txt 结果:(有空格) Mark 69 71 68 | cut -d ";" -f2 test.txt | cut -d " " -f2 结果:(无空格) Mark 69 71 68 |