Linux常见命令整理
一、文件管理
1、文件查找find
find [查找目录] [查找条件]
查找目录
.:表示当前目录以及子目录中进行查找 、
A:在目录A及A的子目录中进行查找
查找条件
-name:根据文件名查
-regex:正则表达式匹配
-size:按大小查找
实例:
1、find . –name *.cpp 按照文件名进行查找
2、find . –regex “*.cpp” 正则表达式进行匹配查找
2、文件拷贝cp
cp [选项] 源路径 目的路径
选项:
-a:将所有属性一起复制
-i:目标文件存在的时候,进行询问
-r:递归复制
二、文本处理
1、查看文件(显示行号): nl(行号计算不包括空行)
nl 文件名
实例:
nl main.cpp
2、文本查找 grep
grep [选项] 模式串 文件
输出 | grep [选项] 模式串
选项:
-e 使用多个模式串
-i 忽略大小写
-n 打印行号
-c 统计次数
grep –e “printf” –e “cout” main.cpp
grep –n “cout” main.cpp//统计main.cpp中出现cout的行号
3、排序 sort
sort [选项] 文件
输出 | sort [选项]
选项:
-d 按字典序排列
-n 按数字排序
-k “-k n”表示按各行第n列进行排序
-r 反序
4、切分文本:cut
cut [选项] 文件
输出 | cut [选项]
选项:
-d:分割符(-d ‘:’表示以 : 为分隔符)
-f:选择域(-f 1,2 输出分割后的第一列和第二列)
-c:字符范围(-c n-m 输出第n到m个字符,如果没有m,输出到末尾)
example
echo $PATH | cut –d ‘:’-f 3,5//按:分割$PATH,输出第三个和第五个
export | cut –c 12-20//输出export运行结果每行的12-20个字符
5、拼接文本 paste
paste [选项] file1 file2
选项:
-d:指定拼接时使用的分割符
6、统计:wc
wc [选项] 文件
输出 | wc [选项]
选项:
-c:统计字符数
-w:统计单词数
-l:统计行数
7、数据处理:sed
sed常用于一整行的处理。如果有一个100万行的文件,要在第100行加某些文字,此时由于文件太大,不适合用vim处理。因此使用sed是个很好的选择
sed [选项] ‘[动作]’ 文件
输入| sed [选项] ‘[动作]’
选项:
-n 安静模式,只输出sed处理过的行
-i 直接作用到文件,没有指定的时候不会修改文件
-e 在命令行模式上输入动作
-f 从文件中读取动作
动作:
[n1[,n2]] function
function:
a/i 在后插入/在前插入
d 删除
p 打印
s 替换
example
插入:
nl main.cpp | sed ‘2a drink’ #在第二行插入drink
删除:
nl main.cpp |sed ‘2d’#删除第二行
打印:
nl main.cpp | sed ‘2,5p’#打印2-5行
替换:
nl main.cpp | sed ‘1s/iostream/stdio.h/g’#将第一行的iostream替换成stdio.h,g是结尾标志
8、数据处理:awk
相比于sed常用于一整行的处理,awk则比较倾向于将一行分成数个“字段”来处理。因此,相当适合小型的数据处理.
处理步骤:
- 读入第一行,并将第一行的数据填入$0,$1,$2等变量中
- 根据条件类型的限制,判断是否需要后面的操作
- 做完所有的动作和条件类型
- 若还有后续的行的数据,则重复第一到第3步,直到所有的数据读完
awk ‘条件类型1{动作1} 条件类型2{动作2}…’ filename
输出|awk ‘条件类型1{动作1} 条件类型2{动作2}…’
变量:
$0:整行
$1:按分隔符分割后的第一列
$2:按分隔符分割后的第二列
$k:按分隔符分割后的第k列
NF 每一行拥有的字段数
NR 目前所处理的行数
FS 目前的分隔字符
条件判断:>,<,>=,<=,==,!=
example
nl main.cpp | awk '{print $1 "\t" $3 "\t"#每行经过分隔符(默认情况下为空格或tab)分隔后的第1列和第3列
cat /etc/passwd | awk '{FS=":"} $3<10{print $1 "\t" $3}'打印第3列小于10的所有行的第1列和第3列
三、性能分析
1、进程查询:ps
ps –l #列出仅与自身环境有关的进程,最上层的父进程是允许该ps命令的bash而没有扩展到init进程中去
ps aux#列出所有的进程,会阶段command 列
ps –ef #不会阶段
ps axjf #以进程数的方式显示所有进程
F:进程标志,说明进程的权限
- 4:root权限
- 1:仅能fork而不能exec
- 0:既非4也非1
S:进程状态
- R:正在运行
- S:可被唤醒的睡眠
- D:不可唤醒的睡眠
- T:停止
- Z:僵尸进程
C:cpu使用率
PRI/NI:cpu优先级
ADDR/SZ/WCHAN:内存相关,ADDR指出进程在内存的哪个部分,running进程一般显示'-'。SZ为进程使用的内存。WCHAN表示进程当前是否运行中'-',当进程睡眠时,指出进程等待的事件
TTY:进程运行的终端机
TIME:进程用掉的CPU时间