看官请直接跳原文: https://linuxtools-rst.readthedocs.io/zh_CN/latest/index.html 个人记笔记一是为了巩固记忆, 二是离线的时候方便查看

帮助命令

  1. # 查看命令说明
  2. $whatis command
  3. # 正则
  4. $whatis -w "loca"
  5. # 详细文档
  6. $info command
  7. # 查看命令的说明文档
  8. $man command
  9. # 查看程序二进制文件所在路径
  10. $which command
  11. eg: 查看make程序安装路径
  12. $which make
  13. /opt/app/openav/soft/bin/make install
  14. # 查看程序搜索路径
  15. $whereis command

文件及目录管理

创建和删除

  1. # 创建:mkdir
  2. # 删除:rm
  3. # 删除非空目录:rm -rf file目录
  4. # 删除日志 rm *log (等价: $find ./ -name “*log” -exec rm {} ;)
  5. # 移动:mv source dest
  6. # 复制:cp (复制目录:cp -r source_dir dest_dir)

目录切换

  1. # 找到文件/目录位置:cd
  2. # 切换到上一个工作目录: cd -
  3. # 切换到home目录: cd or cd ~
  4. # 显示当前路径: pwd
  5. # 更改当前工作路径为path: $cd path

列出目录项

  1. # 按时间排序, 以列表方式显示目录: ls -lrt
  2. # 给每个文件前加上一个id: ls | cat -n

查找目录及文件

  1. # 查找文件或目录: find ./ -name "core*" | xargs file
  2. # 递归当前目录及子目录删除所有.o文件: find ./ name "*.o* -exec rm {} \

查看文件内容

  1. # 显示时同时显示行号: cat -n
  2. # 按页显示列表内容: ls -al |more
  3. # 只看前10行: head -10 filename
  4. # 显示文件倒5行: tail -5 filename
  5. # 查看文件差别: diff file1 file2
  6. # 动态显示文本最新信息: tail -f *.log

查找文件内容

  1. # 在b.txt中查找含this的行: egrep "this" b.txt
  2. # 将查找到的行输出到文件: egrep "this" b.txt > c.txt

文件与目录权限修改

  1. # 改变文件的拥有者 chown
  2. # 改变文件读、写、执行等属性 chmod
  3. # 递归子目录修改: chown -R tuxapp source/
  4. # 增加脚本可执行权限: chmod a+x myscript

给文件增加别名

  1. # 创建硬连接: ln a.txt aa, 删除a.txt后aa依然能查看
  2. # 创建软连接: ln -s a.txt aa, 删除a.txt后aa无法使用

管道和重定向

  1. 管道
  2. # 批处理命令连接执行,使用 |
  3. # 串联: 使用分号 ;
  4. # 前面成功,则执行后面一条,否则,不执行:&&
  5. # 前面失败,则后一条执行: ||
  6. # 提示命令成功或失败: ls / && echo suss! || echo failed!
  7. 重定向
  8. ls proc/*.c > list 2> &l 将标准输出和标准错误重定向到同一文件;
  9. 等价于: ls proc/*.c &> list
  10. 清空文件: :> a.txt
  11. 重定向: echo aa >> a.txt

设置环境变量

  1. 启动账号后自动执行的文件为 .profile, 通过这个文件可设置自己的环境变量

文本处理

find文件查找

  1. # 查找txt和pdf文件: find . \( -name "*.txt" -o -name "*.pdf" \) -print
  2. # 正则方式查找.txt和pdf: find . -regex ".*\(\.txt|\.pdf\)$"
  3. -iregex 忽略大小写的正则
  4. # 否定参数 ,查找所有非txt文本: find . ! -name "*.txt" -print
  5. # 指定搜索深度,打印出当前目录的文件(深度为1): find . -maxdepth 1 -type f

定制查找

  1. # 按类型搜索: find . -type d -print //只列出所有目录
  2. -type f 文件 / l 符号链接 / d 目录
  3. # 按时间搜索, 最近第7天被访问过的所有文件: find . -atime 7 -type f -print
  4. -atime 访问时间 (单位是天,分钟单位则是-amin,以下类似)
  5. -mtime 修改时间 (内容被修改)
  6. -ctime 变化时间 (元数据或权限变化)
  7. # 按大小搜索, 寻找大于2k的文件: find . -type f -size +2k
  8. # 按权限查找, 找具有可执行权限的所有文件: find . -type f -perm 644 -print
  9. # 按用户查找, 找用户weber所拥有的文件: find . -type f -user weber -print

找到后的后续动作

  1. # 删除当前目录下所有的swp文件: find . -type f -name "*.swp" -delete
  2. 也可以: find . type f -name "*.swp" | xargs rm
  3. # 执行动作,将当前目录下的所有权变更为weber: find . -type f -user root -exec chown weber {} \;
  4. 注:{}是一个特殊的字符串,对于每一个匹配的文件,{}会被替换成相应的文件名;
  5. # 执行动作, 将找到的文件全都copy到另一个目录: find . -type f -mtime +10 -name "*.txt" -exec cp {} OLD \;
  6. # 如果需要后续执行多个命令,可以将多个命令写成一个脚本。然后 -exec 调用时执行脚本即可:
  7. -exec ./commands.sh {} \;

-print的定界符

默认使用’\n’作为文件的定界符;
-print0 使用’\0’作为文件的定界符,这样就可以搜索包含空格的文件;

grep文本搜索

  1. grep match_pattern file
  2. 常用参数:
  3. -o 只输出匹配的文本行 VS -v 只输出没有匹配的文本行
  4. -c 统计文件中包含文本的次数
  5. grep -c text filename
  6. -n 打印匹配的行号
  7. -i 搜索时忽略大小写
  8. -l 只打印文件名
  9. # 多级目录中递归搜索: grep "class" . -R -n
  10. # 匹配多个模式: grep -e "class" -e "vitural" file

xargs命令行参数转换

xargs 能够将输入数据转化为特定命令的命令行参数;这样,可以配合很多命令来组合使用。比如grep,比如find; - 将多行输出转化为单行输出

  1. # 将单行转化为多行输出: cat single.txt | xargs -n 3
  2. -n:指定每行显示的字段数

sort排序

  1. -n 按数字进行排序 VS -d 按字典序进行排序
  2. -r 逆序排序
  3. -k N 指定按第N列排序
  4. 示例:
  5. sort -nrk 1 data.txt
  6. sort -bd data // 忽略像空格之类的前导空白字符

uniq消除重复行

  1. # 消除重复行: sort unsort.txt | uniq
  2. # 统计各行在文件中出现的次数: sort unsort.txt | uniq -c
  3. # 找出重复行: sort unsort.txt | uniq -d

tr转换

  1. 通用用法
  2. echo 12345 | tr '0-9' '9876543210' //加解密转换,替换对应字符
  3. cat text| tr '\t' ' ' //制表符转空格
  4. 删除字符
  5. cat file | tr -d '0-9' // 删除所有数字
  6. -c 求补集
  7. cat file | tr -c '0-9' //获取文件中所有数字
  8. cat file | tr -d -c '0-9 \n' //删除非数字数据
  9. tr -s 压缩文本中出现的重复字符;最常用于压缩多余的空格: cat file | tr -s ' '

cut按列切分文本

paste按列拼接文本

wc统计行和字符的工具

sed文本替换利器

awk数据流处理工具

  1. # awk脚本结构
  2. awk ' BEGIN{ statements } statements2 END{ statements } '
  3. 工作方式
  4. 1.执行begin中语句块;
  5. 2.从文件或stdin中读入一行,然后执行statements2,重复这个过程,直到文件全部被读取完毕;
  6. 3.执行end语句块;
  7. # 打印当前行
  8. echo -e "line1\nline2" | awk 'BEGIN{print "start"} {print } END{ print "End" }'
  9. 特殊变量: NR NF $0 $1 $2
  10. NR:表示记录数量,在执行过程中对应当前行号;
  11. NF:表示字段数量,在执行过程总对应当前行的字段数;
  12. $0:这个变量包含执行过程中当前行的文本内容;
  13. $1:第一个字段的文本内容;
  14. $2:第二个字段的文本内容;
  15. # 打印每一行的第二和第三个字段: awk '{print $2, $3}' file
  16. # 统计文件的行数: awk ' END {print NR}' file
  17. # 打印指定列: ls -lrt | awk '{print $6}'
  18. 也可以: ls -lrt | cut -f6
  19. awk常用内建函数
  20. index(string,search_string):返回search_stringstring中出现的位置
  21. sub(regex,replacement_str,string):将正则匹配到的第一处内容替换为replacement_str;
  22. match(regex,string):检查正则表达式是否能够匹配字符串;
  23. length(string):返回字符串长度
  24. # 迭代文件中的每一行: cat file.txt| awk '{print}'
  25. 效果等同:
  26. while read line;
  27. do
  28. echo $line;
  29. done < file.txt
  30. 改成子shell:
  31. cat file.txt | (while read line;do echo $line;done)

磁盘管理

查看磁盘空间

  1. # 查看磁盘空间利用大小: df -h
  2. -h: human缩写,以易读的方式显示结果(即带单位:比如M/G,如果不加这个参数,显示的数字以B为单位)
  3. # 查看当前目录所占空间大小: du -sh
  4. -h 人性化显示
  5. -s 递归整个目录的大小
  6. # 查看当前目录下所有子文件夹排序后的大小:
  7. for i in `ls`; do du -sh $i; done | sort
  8. 或者:
  9. du -sh `ls` | sort

打包/压缩

进程管理工具

查询进程

  1. # 查询正在运行的进程信息: ps -ef | grep java
  2. # 查看端口占用的进程状态:lsof -i:3306

终止进程

  1. # 杀死指定PID的进程: kill PID

进程监控

  1. top
  2. 输入top命令后,进入到交互界面;接着输入字符命令后显示相应的进程状态:
  3. P:根据CPU使用百分比大小进行排序。
  4. M:根据驻留内存大小进行排序。
  5. i:使top不显示任何闲置或者僵死进程。