常用命令列表
- 1.杀掉当前用户的所有进程
- 2. 查看当前用户的所有执行任务 -l查看pid
- 3. 查看所有进程: top
- 4. 杀掉进程: kill -9 pid
- 5. grep保存匹配行上下100行:
- 6. awk根据符号分割字符串 awk -F'string'
- 7. sort排序,根据第二列内容排序 ' '
- 7.1 保持源文件顺序排序
- 7.2 对字母数字组合进行排序 sort -V
- 8.ls -lrt 根据文件时间排序
- 9. dos2unix 文件编码从dos转换为linux格式
- 10.awk
- 11.xargs 后面命令使用通配符
- 12. shell中if语句中的=~
- 13. paste file1 file2
- 14. basename dirname
- 15. 文件的三个时间
- 16. 查看服务器cpu核数
- 17. 2>&1 > log.file diff > log.file 2>&1
- 18. split -10 file.txt
- 19. 文件名中有空格如何批量重命名
- 一行内容有空格 如何按行做for训练遍历 而不是按照空格
- 20. echo -n 不换行输出
- 21. vim u ctrl+R 回退到前面 后面的内容
- 22. sed -i 更改文件内容
- 23. vim文件中的^M
- 24. Linux shell脚本执行后出现语法错误: 未预期的文件结尾
- 25. 将文件指定行到最后一行内容保存为新文件
1.杀掉当前用户的所有进程
killall -u username
2. 查看当前用户的所有执行任务 -l查看pid
jobs -l
3. 查看所有进程: top
4. 杀掉进程: kill -9 pid
5. grep保存匹配行上下100行:
grep -100 'string' finename grep保存匹配行上下100行
grep -C 100 'string' finename grep保存匹配行上下100行
grep -A 100 'string' finename grep保存匹配行下【后】100行 after
grep -B 100 'string' finename grep保存匹配行上【前】100行 before
5.1 grep 匹配多个关键字
grep 'string1\|string2' file.txt
grep -E 'string1|string2' file.txt # 不需要转义字符
grep -P 'string1|string2' file.txt
https://blog.youkuaiyun.com/lovedingd/article/details/116532053
https://blog.youkuaiyun.com/u012745499/article/details/123635245 grep -p
5.2 grep -v 反向匹配
5.3 grep -F 查询语句包含特殊字符
如果要查询的内容中包含正则表达式中的特殊字符(如 .、* 等),可以使用 -F 选项来禁用正则表达式,将查询内容视为普通字符串。
grep -F '包含.和*' file.txt
6. awk根据符号分割字符串 awk -F’string’
cat filename | awk -F= '{print $1,$2}'
7. sort排序,根据第二列内容排序 ’ ’
cat filename | awk -F= '{print $1,$2}' | sort -t' ' -k6 -n
7.1 保持源文件顺序排序
awk '!a[$0]++' test.txt
7.2 对字母数字组合进行排序 sort -V
ls dir
# a_1
# a_11
# a_9
ls dir | sort -V
# a_1
# a_9
# a_11
https://www.cnblogs.com/liujiaxin2018/p/15757227.html
https://www.runoob.com/linux/linux-comm-sort.html
8.ls -lrt 根据文件时间排序
-l 显示详细信息
-r 反向排序
-t 根据文件时间排序,最近更新文件在最前面
9. dos2unix 文件编码从dos转换为linux格式
10.awk
10.1 求平均值
grep ACScore_BatchEval log.log | awk -F',' '{print $3}' | awk -F':' '{print $2}' | awk '{sum+=$1}END{print sum/NR}'
10.2 判断字符串是否为空
awk -F '|' '{if(length($2)==0) print $1,$2}'
https://blog.youkuaiyun.com/Nikki0126/article/details/90714363
10.3 awk -F 根据行内容筛选输出
10.4 awk for循环 分组统计
cat conf.txt|awk '{x[$1]++;}END{for(i in x) print(i ":" x[i])}'
https://blog.youkuaiyun.com/Knightley_K/article/details/120672210
11.xargs 后面命令使用通配符
ls *.wav | xargs -I {} echo {}
ls *.txt | xargs -I {} sh -c 'cat {} | wc -l'
ls | xargs -I {} sh -c 'ls *.txt'
用法
xargs -i 指定替代符号为 {}
xargs -I 后面加替代符号 可任意
xargs -I sh -c ‘’ 单引号里面可以加通配符 或者命令 sh -c 使xargs再支持linux命令 注意sh前没有‘-’横线
12. shell中if语句中的=~
~是对后面的正则表达式匹配的意思,匹配输出1,不匹配输出0
if [[ ${file_name} =~ "wav" ]]
表示变量${file_name} 包含 ‘wav’ 字段
13. paste file1 file2
paste file1 file2 按行并列输出【常用用法】
-d 指定间隔符
-s 把文件的多行转成一行输出
14. basename dirname
basename 只保留文件名
dirname 只保留目录名 【上一级目录】
basename dir1/dir2/file.txt
# file.txt
basename -s dir1/dir2/file.txt
# file
dirname dir1/dir2/file.txt
# dir1/dir2/
15. 文件的三个时间
ls -lc ctime 状态修改时间,即文件权限或属性发生变化的时间
ls -lu atime 状态访问时间,即文件被读取而更新的时间
ls -l mtime 内容修改时间,即文件内容被修改而更新的时间
https://wenku.baidu.com/view/486204e2b84cf7ec4afe04a1b0717fd5360cb229.html
16. 查看服务器cpu核数
cat /proc/cpuinfo | grep "cpu cores" | uniq
https://www.fke6.com/html/97854.html
17. 2>&1 > log.file diff > log.file 2>&1
2>&1 > log.file 只将标准输出写入到log.file 文件中 标准错误还是输出到控制台
> log.file 2>&1 将标准输出和标准错误全部写入到log.file文件中
https://blog.youkuaiyun.com/icanlove/article/details/38018169
18. split -10 file.txt
切分 file.txt 文件, 按行切分,每10行分割成一个小文件,小文件文件名 以split_ 开头 尾部不加其他参数一般以aa ab ac等字符累加表示文件区分
split -10 file.txt split_
19. 文件名中有空格如何批量重命名
一行内容有空格 如何按行做for训练遍历 而不是按照空格
OLDIFS=$IFS
IFS=$'\n'
for循环在读入的时候是从一个大字符串中进行分割,而分割的标识是IFS,IFS默认分隔符是空格\tab\换行,所以会将换行符和空格同样对待,所以需要更改IFS的分割标志.这里将IFS的分割标志换成了 $’\n’ 换行符,如果写成’\n’仅仅表示字母n。此时for循环不会将空格作为分隔,显示的文件名是完整有空格的
路径有空格无法正常处理,需要将空格转义,加上一个转义字符
OLDIFS=$IFS
IFS=$'\n'
for one in `find ./ -name '*.wav'`;do
path=`echo "$one" | sed 's# #\\ #g'`
ls $path
done
https://blog.youkuaiyun.com/m0_37549859/article/details/78238062
20. echo -n 不换行输出
21. vim u ctrl+R 回退到前面 后面的内容
https://www.runoob.com/linux/linux-vim.html
22. sed -i 更改文件内容
1. sed -i ‘s###g’ file.txt
2. 在每行行首添加字符:
sed ‘s#^#HEAD&#g’ file.txt
3. 在每行行尾添加字符:
sed ‘s#$#&TAIL#g’ file.txt
4. 删除每行最后一个路径分隔符和空格之间的内容 [只替换文件绝对路径为上级目录,其他内容不变]
sed ‘s#/[^/]* # #g’ file
[^/]*:是一个正则表达式,表示匹配除了/之外的任意字符,[^/]表示不是/的字符,*表示匹配前面的表达式零次或多次
23. vim文件中的^M
文件是win系统生成的,直接显示在linux系统上,因为换行符的不一样会导致有^M显示。
win换行符 \r\n linux换行符\n
解决方法:直接替换\r 为空 或者替换^M 为空即可。
24. Linux shell脚本执行后出现语法错误: 未预期的文件结尾
shell脚本总共341行,但是执行报下面的错误, 这种一般有两种错误
- 是格式错误,文件换行符 \n与Windows换行符 \r\n mac换行符\r 不一致有关
- 是if for while 这种语句忘记写了 fi then done 语句,检查语句是否对应完整
25. 将文件指定行到最后一行内容保存为新文件
tail -n +10086
-n 指定行号 +10086 表示从10086行开始