linux常用命令

本文介绍了Linux常用命令如killall、jobs-l、grep、awk、sort、ls等的实战应用,包括进程管理、文本搜索、数据处理和文件操作。还涵盖了常见问题如编码转换、脚本错误排查和文件重命名等解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常用命令列表

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行,但是执行报下面的错误, 这种一般有两种错误

  1. 是格式错误,文件换行符 \n与Windows换行符 \r\n mac换行符\r 不一致有关
  2. 是if for while 这种语句忘记写了 fi then done 语句,检查语句是否对应完整
    在这里插入图片描述

25. 将文件指定行到最后一行内容保存为新文件

tail -n +10086

-n 指定行号 +10086 表示从10086行开始

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值