一、 基础命令
man 命令帮助
SYNOPSIS 用法格式说明 •
[] 可选内容 •
<> 必选内容 •
a|b 二选一 •
{ } 分组 •
… 同一内容可出现多次
DESCRIPTION 详细说明
OPTIONS 选项说明
EXAMPLES 示例
FILES 相关文件
AUTHOR 作者
COPYRIGHT 版本信息
REPORTING BUGS bug信息
SEE ALSO 其它帮助参考
help 内部命令帮助
#whatis [command] 显示command的帮助用法
二、文件目录操作
ls 列出目录属性信息
-a 包含隐藏文件
-l 显示详细的信息
-R 目录递归打开文件看信息
-d 目录和符号链接信息
-1 文件分行显示
–S 按从大到小排序
–t 按mtime排序
–u 配合-t选项,显示并按atime从新到旧排序
–U 按目录存放顺序显示
–X 按文件后缀排序
- #ls /etc/*.conf
? 字符
cd 当前目录切换指定目录
cp 复制文件或目录
-i:覆盖前提示
-f 先删除后创建新文件
-p 保留一部分
-v 显示过程
-a 全部保留、原始内容作为备份
mkdir 创建目录
-p: 存在于不报错,且可自动创建所需的各目录
-v: 显示详细信息
-m MODE: 创建目录时直接指定权限
mv 移动或重命名
mv [OPTION]… -t DIRECTORY SOURCE…
-i: 交互式
-f: 强制
#pwd 显示当前绝对路径
#rename 重命名文件
touch 创建空文件 改变已有文件的时间及属性
touch [OPTION]… FILE…
-a 仅改变 atime和ctime
-m 仅改变 mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳
-c 如果文件不存在,则不予创建
tree 以树形结构显示目录内容
-d: 只显示目录
-L level:指定显示的层级数目
-P pattern: 只显示由指定pattern匹配到的路径
basename 显示文件名或目录名
chattr 改变文件扩展属性
#dirname 显示文件目录路径
lsattr 查看文件扩展属性
file 显示文件的类型
-b 列出文件辨识结果时,不显示文件名称
-f filelist 列出文件filelist中文件名的文件类型
-F 使用指定分隔符号替换输出文件名后默认的”:”分隔符
-L 查看对应软链接对应文件的文件类型
–help 显示命令在线帮助
rm 删除
-i: 交互式
-f: 强制删除
-r: 递归
–no-preserve-root
#ln 创建硬链接
例:#ln 旧文件自动创建新文件
rmdir 删除空目录
-p: 递归删除父空目录
-v: 显示详细信息
ifconfig;ip addr 网卡信息
lscpu cpu信息
#uname -a 内核信息/操作系统/cpu
free;cat /proc/meminfo 内存信息
lsblk 磁盘分区.
三、内部处理命令
cat 连接多个文件并且打印到屏幕输出定向指定文件中
cat [OPTION]… [FILE]…
-E: 显示行结束符$
-n: 对显示出的每一行进行编号
-A:显示所有控制符
-b:非空行编号
-s:压缩连续的空行成一行
tac tac是cat从尾看到头
more 分页显示文件内容
-d: 显示翻页及退出提示
less 一页一页显示文件内容
查看时有用的命令包括:
/文本 搜索 文本
n/N 跳到下一个 或 上一个匹配
head 显示文件内容的开头
-c #: 指定获取前#字节
-n #: 指定获取前#行
-#: 指定行数
例:#head -n10 /etc/passwd 显示前十行
例:#head -c10 /etc/passwd 显示前十个字节
tail 显示文件内容的尾部
-c #: 指定获取后#字节
-n #: 指定获取后#行
-#: -f: 跟踪显示文件fd新追加的内容,常用日志监控
相当于 --follow=descriptor
-F: 跟踪文件名,相当于—follow=name --retry
例:#tail -f /var/log/httpd/access-log 观察日志的变化
例:统计/var/log/httpd/access-log日志中访问IP地址数量、统计前十IP地址。
#cat /var/log/httpd/access_log |cut -d" " -f1|sort|uniq -c |sort -nr |head -n10
cut 过滤
-d DELIMITER: 指明分隔符,默认tab
-f FILEDS:
#: 第#个字段
#,#[,#]:离散的多个字段,例如1,3,6
#-#:连续的多个字段, 例如1-6
混合使用:1-3,7
-c 按字符切割 --output-delimiter=STRING指定输出分隔符
显示文件或STDIN数据的指定列
例:#cut -d: -f1 /etc/passwd
例:#cat /etc/passwd | cut -d: -f7
例:#cut -c2-5 /usr/share/dict/words
例:#who |cut -c1-9 取出1-9字节
例:#cut -d: -f1,2,7 /etc/passwd
例:#df |cut -c44-46
例:#df |tr -s” “ |cut -d” “ -f5 |tr -d %
例:#cut -d: -f1,3 --output -delimiter="-" /etc/passwd
例:#cut -d: -f1,3 /etc/passwd|sort -t: -k2 -nr 取出userUID大到小
split 分割文件为不同的小片段
-b 指定大小
-d 指定目录
paste 按行合并文件内容
paste [OPTION]… [FILE]…
-d 分隔符:指定分隔符,默认用TAB
-s : 所有行合成一行显示
paste f1 f2
paste -s f1 f2
sort 按文件内容排序
sort [options] file(s)
常用选项
-R 随机排序
-r 执行反方向(由上至下)整理
-n 执行按数字大小整理
-f 选项忽略(fold)字符串中的字符大小写
-u 选项(独特,unique)删除输出中的重复行
-t c 选项使用c做为字段界定符
-k X 选项按照使用c字符分隔的X列来整理能够使用多次
uniq 从输入中删除前后相接的重复的行
uniq [OPTION]… [FILE]…
-c: 显示每行重复出现的次数
-d: 仅显示重复过的行
-u: 仅显示不曾重复的行
连续且完全相同方为重复
wc 统计文件的行数 单词数或字节数
wc story.txt
39 237 1901 story.txt
行数 字数 字节数
常用选项 -l 只计数行数
-w 只计数单词总数
-c 只计数字节总数
-m 只计数字符总数
-L 显示文件中最长行的长度
iconv 转换文件的编码格式
dos2unix 将DOS格式转换UNIX格式
#diff 命令行可视文件比较工具常用文本
-u 额外信息
-b备份
例:#diff filename1.txt filename2.txt
5c5
< use_widgets = no
use_widgets = yes
注明第5行有区别(改变)
vimdiff 命令行可视化比较工具 用于文本
#rev 反向输出内容
grep 文本编辑器grep sed awk
alias grep=’grep --color=auto’ 定义颜色
例:#grep root /etc/passwd
例:#grep “$user” /etc/passwd
-v: 显示不被pattern匹配到的行
-i: 忽略字符大小写
-n:显示匹配的行号
-c: 统计匹配的行数
-o: 仅显示匹配到的字符串
-q: 静默模式,不输出任何信息
-A #: after, 后#行
-B #: before, 前#行
-C #:context, 前后各#行
-e:实现多个选项间的逻辑or关系
例:#grep –e ‘cat ’ -e ‘dog’ file
例:# grep -e root -e bash /etc/passwd
| 并关系
例:#grep root /etc/passwd| grep bash
-w:匹配整个单词
-E:使用ERE
-F:相当于fgrep,不支持正则表达式
字符匹配:
. 匹配任意单个字符
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
[:alnum:] 字母和数字
[:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z
[:lower:] 小写字母
[:upper:] 大写字母
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
[:cntrl:] 不可打印的控制字符(退格、删除、警铃…)
[:digit:] 十进制数字
[:xdigit:]十六进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号
匹配次数:
用在要指定次数的字符后面,用于指定前面的字 符要出现的次数
- 匹配前面的字符任意次,包括0次 贪婪模式:尽可能长的匹配
.* 任意长度的任意字符
? 匹配其前面的字符0或1次
+ 匹配其前面的字符至少1次
{n} 匹配前面的字符n次
{m,n} 匹配前面的字符至少m次,至多n次
{,n} 匹配前面的字符至多n次
{n,} 匹配前面的字符至少n次
位置锚定:定位出现的位置
^ 行首锚定,用于模式的最左侧
$ 行尾锚定,用于模式的最右侧
^PATTERN$ 用于模式匹配整行
^$ 空行
1$ 空白行
< 或 \b 词首锚定,用于单词模式的左侧
> 或 \b 词尾锚定;用于单词模式的右侧
<PATTERN> 匹配整个单词
分组:
() 将一个或多个字符捆绑在一起,当作一个整体进 行处理,如:(root)+
分组括号中的模式匹配到的内容会被正则表达式引擎记录于 内部的变量中,这些变量的命名方式为: \1, \2, \3, …
\1 表示从左侧起第一个左括号以及与之匹配右括号之间的 模式所匹配到的字符
示例: (string1+(string2))
\1 :string1+(string2)*
\2 :string2
后向引用:引用前面的分组括号中的模式所匹配字符,而非 模式本身
或者:| 示例:a|b: a或b C|cat: C或cat (C|c)at:Cat或cat
#egrep 扩展正则表达式
egrep = grep -E
egrep [OPTIONS] PATTERN [FILE…]
扩展正则表达式的元字符:
字符匹配:
. 任意单个字符
[] 指定范围的字符
[^] 不在指定范围的字符
次数匹配: - 匹配前面字符任意次
?: 0或1次 +:1次或多次
{m}:匹配m次
{m,n}:至少m,至多n次
位置锚定:
^ :行首
$ :行尾
<, \b :语首
>, \b :语尾
分组:
( )
后向引用:\1, \2, …
或者: a|b: a或b
C|cat: C或cat
(C|c)at:Cat或cat
#sed 文本编辑器
sed [option]… ‘script’ inputfile…
常用选项:
-n:不输出模式空间内容到屏幕,即不自动打印
-e: 多点编辑
-f:/PATH/SCRIPT_FILE: 从指定文件中读取编辑脚本
-r: 支持使用扩展正则表达式
-i.bak: 备份文件并原处编辑
script: ‘地址命令’
地址定界:
(1)不给地址:对全文进行处理
(2)单地址:
#: 指定的行,$:最后一行
/pattern/:被此处模式所能够匹配到的每一行
(3)地址范围: #,# #,+# /pat1/,/pat2/ #,/pat1/
(4) ~:步进 1~2 奇数行 2~2 偶数行
编辑命令:
d: 删除模式空间匹配的行,并立即启用下一轮循环
p:打印当前模式空间内容,追加到默认输出之后
a []text:在指定行后面追加文本 支持使用\n实现多行追加
i []text:在行前面插入文本
c []text:替换行为单行或多行文本
w /path/somefile: 保存模式匹配的行至指定文件
r /path/somefile:读取指定文件的文本至模式空间中
匹配到的行后
=: 为模式空间中的行打印行号
!:模式空间中匹配行取反处理
s///:查找替换,支持使用其它分隔符,s@@@,s###
例: #sed ‘s/bash/jiangxiaoxiao/’ /etc/passwd 将/bash替换/jiangxiaoxiao
#sed ‘s/root/jiangxiaoxiao/g’ /etc/passwd 全局替换
正则#sed -r ‘s/(bash)/\1love/g’ /etc/passwd 在bash后面追加love
#sed -r “s/(root)/jiangxiaoxiao\1/g” /etc/passwd 全局root前面追加
#sed -r ‘s/(.*)/\1 jiangxiaoxiao/’ /etc/passwd 全局在尾部加上
sed -r ‘s/(.*)/jiangxiaoxiao\1/’ /etc/passwd全局在首部加上
#ifconfig |sed -r “s@.inet(.)net.*@\1@”|head -n2|tail -n1
seq 1 10 |sed ‘N;s/\n//’
#seq 1 10 |xargs -n2
替换标记:
g: 行内全局替换
p: 显示替换成功的行
w /PATH/TO/SOMEFILE:将替换成功的行保存至文件中
示例
#sed ‘2p’ /etc/passwd
#sed –n ‘2p’ /etc/passwd
#sed –n ‘1,4p’ /etc/passwd
#sed –n ‘/root/p’ /etc/passwd
#sed –n ‘2,/root/p’ /etc/passwd 从2行开始
#sed -n ‘/^KaTeX parse error: Unexpected character: '' at position 18: …’ file 显示空行行号 ̲ #sed –n –e ‘/^/p’ –e ‘/^KaTeX parse error: Unexpected character: '' at position 11: /=’ file ̲ #sed ‘/root/…/d’ file
#sed ‘1,10d’ file
#nl /etc/passwd | sed ‘2,5d’
#nl /etc/passwd | sed ‘2a tea’
#sed ‘s/test/mytest/g’ example
#sed –n ‘s/root/&superman/p’ /etc/passwd 单词后
#sed –n ‘s/root/superman&/p’ /etc/passwd 单词前
#sed -e ‘s/dog/cat/’ -e ‘s/hi/lo/’ pets
#sed –i.bak ‘s/dog/cat/g’ pets
#ifconfig ens33 |sed -n ‘2p’ 取IP这行
高级编辑命令
P:打印模式空间开端至\n内容,并追加到默认输出之前
h: 把模式空间中的内容覆盖至保持空间中
H:把模式空间中的内容追加至保持空间中
g: 从保持空间取出数据覆盖至模式空间
G:从保持空间取出内容追加至模式空间
x: 把模式空间中的内容与保持空间中的内容进行互换
n: 读取匹配到的行的下一行覆盖至模式空间
N:读取匹配到的行的下一行追加至模式空间
d: 删除模式空间中的行
D:如果模式空间包含换行符,则删除直到第一个换行符的模 式空间中的文本,并不会读取新的输入行,而使用合成的模式 空间重新启动循环。如果模式空间不包含换行符,则会像发出 d命令那样启动正常的新循环
示例
sed -n ‘n;p’ FILE
sed ‘1!G;h;KaTeX parse error: Unexpected character: '' at position 10: !d' FILE ̲ sed 'N;D‘ FIL…!N;KaTeX parse error: Unexpected character: '' at position 10: !D' FILE ̲ sed '!d’ FILE
sed ‘G’ FILE
sed ‘g’ FILE
sed ‘/^KaTeX parse error: Unexpected character: '' at position 12: /d;G’ FILE ̲ sed 'n;d' FILE…p’ FILE
join 按两个文件的相同字字段合并
tr 替换或删除字符
-c –C --complement:取字符集的补集
-d --delete:删除所有属于第一字符集的字符
-s --squeeze-repeats:把连续重复的字符以单独一个字符表示<