看官请直接跳原文: https://linuxtools-rst.readthedocs.io/zh_CN/latest/index.html 个人记笔记一是为了巩固记忆, 二是离线的时候方便查看
帮助命令
# 查看命令说明
$whatis command
# 正则
$whatis -w "loca"
# 详细文档
$info command
# 查看命令的说明文档
$man command
# 查看程序二进制文件所在路径
$which command
eg: 查看make程序安装路径
$which make
/opt/app/openav/soft/bin/make install
# 查看程序搜索路径
$whereis command
文件及目录管理
创建和删除
# 创建:mkdir
# 删除:rm
# 删除非空目录:rm -rf file目录
# 删除日志 rm *log (等价: $find ./ -name “*log” -exec rm {} ;)
# 移动:mv source dest
# 复制:cp (复制目录:cp -r source_dir dest_dir)
目录切换
# 找到文件/目录位置:cd
# 切换到上一个工作目录: cd -
# 切换到home目录: cd or cd ~
# 显示当前路径: pwd
# 更改当前工作路径为path: $cd path
列出目录项
# 按时间排序, 以列表方式显示目录: ls -lrt
# 给每个文件前加上一个id: ls | cat -n
查找目录及文件
# 查找文件或目录: find ./ -name "core*" | xargs file
# 递归当前目录及子目录删除所有.o文件: find ./ name "*.o* -exec rm {} \
查看文件内容
# 显示时同时显示行号: cat -n
# 按页显示列表内容: ls -al |more
# 只看前10行: head -10 filename
# 显示文件倒5行: tail -5 filename
# 查看文件差别: diff file1 file2
# 动态显示文本最新信息: tail -f *.log
查找文件内容
# 在b.txt中查找含this的行: egrep "this" b.txt
# 将查找到的行输出到文件: egrep "this" b.txt > c.txt
文件与目录权限修改
# 改变文件的拥有者 chown
# 改变文件读、写、执行等属性 chmod
# 递归子目录修改: chown -R tuxapp source/
# 增加脚本可执行权限: chmod a+x myscript
给文件增加别名
# 创建硬连接: ln a.txt aa, 删除a.txt后aa依然能查看
# 创建软连接: ln -s a.txt aa, 删除a.txt后aa无法使用
管道和重定向
管道
# 批处理命令连接执行,使用 |
# 串联: 使用分号 ;
# 前面成功,则执行后面一条,否则,不执行:&&
# 前面失败,则后一条执行: ||
# 提示命令成功或失败: ls / && echo suss! || echo failed!
重定向
ls proc/*.c > list 2> &l 将标准输出和标准错误重定向到同一文件;
等价于: ls proc/*.c &> list
清空文件: :> a.txt
重定向: echo aa >> a.txt
设置环境变量
启动账号后自动执行的文件为 .profile, 通过这个文件可设置自己的环境变量
文本处理
find文件查找
# 查找txt和pdf文件: find . \( -name "*.txt" -o -name "*.pdf" \) -print
# 正则方式查找.txt和pdf: find . -regex ".*\(\.txt|\.pdf\)$"
-iregex: 忽略大小写的正则
# 否定参数 ,查找所有非txt文本: find . ! -name "*.txt" -print
# 指定搜索深度,打印出当前目录的文件(深度为1): find . -maxdepth 1 -type f
定制查找
# 按类型搜索: find . -type d -print //只列出所有目录
-type f 文件 / l 符号链接 / d 目录
# 按时间搜索, 最近第7天被访问过的所有文件: find . -atime 7 -type f -print
-atime 访问时间 (单位是天,分钟单位则是-amin,以下类似)
-mtime 修改时间 (内容被修改)
-ctime 变化时间 (元数据或权限变化)
# 按大小搜索, 寻找大于2k的文件: find . -type f -size +2k
# 按权限查找, 找具有可执行权限的所有文件: find . -type f -perm 644 -print
# 按用户查找, 找用户weber所拥有的文件: find . -type f -user weber -print
找到后的后续动作
# 删除当前目录下所有的swp文件: find . -type f -name "*.swp" -delete
也可以: find . type f -name "*.swp" | xargs rm
# 执行动作,将当前目录下的所有权变更为weber: find . -type f -user root -exec chown weber {} \;
注:{}是一个特殊的字符串,对于每一个匹配的文件,{}会被替换成相应的文件名;
# 执行动作, 将找到的文件全都copy到另一个目录: find . -type f -mtime +10 -name "*.txt" -exec cp {} OLD \;
# 如果需要后续执行多个命令,可以将多个命令写成一个脚本。然后 -exec 调用时执行脚本即可:
-exec ./commands.sh {} \;
-print的定界符
默认使用’\n’作为文件的定界符;
-print0 使用’\0’作为文件的定界符,这样就可以搜索包含空格的文件;
grep文本搜索
grep match_pattern file
常用参数:
-o 只输出匹配的文本行 VS -v 只输出没有匹配的文本行
-c 统计文件中包含文本的次数
grep -c “text” filename
-n 打印匹配的行号
-i 搜索时忽略大小写
-l 只打印文件名
# 多级目录中递归搜索: grep "class" . -R -n
# 匹配多个模式: grep -e "class" -e "vitural" file
xargs命令行参数转换
xargs 能够将输入数据转化为特定命令的命令行参数;这样,可以配合很多命令来组合使用。比如grep,比如find; - 将多行输出转化为单行输出
# 将单行转化为多行输出: cat single.txt | xargs -n 3
-n:指定每行显示的字段数
sort排序
-n 按数字进行排序 VS -d 按字典序进行排序
-r 逆序排序
-k N 指定按第N列排序
示例:
sort -nrk 1 data.txt
sort -bd data // 忽略像空格之类的前导空白字符
uniq消除重复行
# 消除重复行: sort unsort.txt | uniq
# 统计各行在文件中出现的次数: sort unsort.txt | uniq -c
# 找出重复行: sort unsort.txt | uniq -d
tr转换
通用用法
echo 12345 | tr '0-9' '9876543210' //加解密转换,替换对应字符
cat text| tr '\t' ' ' //制表符转空格
删除字符
cat file | tr -d '0-9' // 删除所有数字
-c 求补集
cat file | tr -c '0-9' //获取文件中所有数字
cat file | tr -d -c '0-9 \n' //删除非数字数据
tr -s 压缩文本中出现的重复字符;最常用于压缩多余的空格: cat file | tr -s ' '
cut按列切分文本
paste按列拼接文本
wc统计行和字符的工具
sed文本替换利器
awk数据流处理工具
# awk脚本结构
awk ' BEGIN{ statements } statements2 END{ statements } '
工作方式
1.执行begin中语句块;
2.从文件或stdin中读入一行,然后执行statements2,重复这个过程,直到文件全部被读取完毕;
3.执行end语句块;
# 打印当前行
echo -e "line1\nline2" | awk 'BEGIN{print "start"} {print } END{ print "End" }'
特殊变量: NR NF $0 $1 $2
NR:表示记录数量,在执行过程中对应当前行号;
NF:表示字段数量,在执行过程总对应当前行的字段数;
$0:这个变量包含执行过程中当前行的文本内容;
$1:第一个字段的文本内容;
$2:第二个字段的文本内容;
# 打印每一行的第二和第三个字段: awk '{print $2, $3}' file
# 统计文件的行数: awk ' END {print NR}' file
# 打印指定列: ls -lrt | awk '{print $6}'
也可以: ls -lrt | cut -f6
awk常用内建函数
index(string,search_string):返回search_string在string中出现的位置
sub(regex,replacement_str,string):将正则匹配到的第一处内容替换为replacement_str;
match(regex,string):检查正则表达式是否能够匹配字符串;
length(string):返回字符串长度
# 迭代文件中的每一行: cat file.txt| awk '{print}'
效果等同:
while read line;
do
echo $line;
done < file.txt
改成子shell:
cat file.txt | (while read line;do echo $line;done)
磁盘管理
查看磁盘空间
# 查看磁盘空间利用大小: df -h
-h: human缩写,以易读的方式显示结果(即带单位:比如M/G,如果不加这个参数,显示的数字以B为单位)
# 查看当前目录所占空间大小: du -sh
-h 人性化显示
-s 递归整个目录的大小
# 查看当前目录下所有子文件夹排序后的大小:
for i in `ls`; do du -sh $i; done | sort
或者:
du -sh `ls` | sort
打包/压缩
进程管理工具
查询进程
# 查询正在运行的进程信息: ps -ef | grep java
# 查看端口占用的进程状态:lsof -i:3306
终止进程
# 杀死指定PID的进程: kill PID
进程监控
top
输入top命令后,进入到交互界面;接着输入字符命令后显示相应的进程状态:
P:根据CPU使用百分比大小进行排序。
M:根据驻留内存大小进行排序。
i:使top不显示任何闲置或者僵死进程。