1 文件和目录操作
- cd 改变当前文件目录
- pwd 显示当前目录位置
- ls 显示目录文件,-a 显示所有文件,-l 显示文件详细信息
- mkdir 创建目录
- rm 删除文件,-r 参数:递归文件夹删除目录和文件,-f 强制删除,root用户慎用-f参数
- rmdir 删除文件夹
- mv 移动或重命名文件
- touch 修改文件的访问时间,如果文件不存在,则会创建一个空文件。
- stat 查看文件详细信息,包括文件大小、索引节点值、创建时间、修改时间、访问时间等。
- ln -s 创建软链文件,如果不加-s 参数,则创建硬链接
2 查看文件内容
- cat 显示全部文件内容
- more 可向后翻看文件内容
- less 可前翻和后翻文件内容
- head 查看文件头内容
- tail 查看文件尾内容,-f 参数可以动态显示文件尾内容
3 改变文件权限
- chmod 修改文件读、写和执行权限,可以使用字母或数字参数,例:chmod u+x file,用户类型:u:表示文件所有者,g:表示同组用户,o:表示其它用户,a:表示所有用户。操作:+:添加某个权限,-:取消某个权限,=:赋予给定的权限,并取消原有的权限。权限:r:可读,w:可写,x:可执行。
- chown 修改文件所属用户,例:chown user1 file
- chgrp 修改文件所属组,例:chgrp user1 file
4. wc -[cmlw] 统计文本字节、字符、行数、单词数等
- -c 字节数
- -m 字符数
- -l 行数
- -w 单词数
5. 文本搜索 grep [-e] pattern content_file
- -e 使用正则表达式,-E使用扩展正则表达式,-F 匹配固定文本,默认支持匹配符号
- -v 搜索不包含模式的文本
- -A n 显示匹配行及之后的n行内容
- -B n 显示匹配行及之前的n行内容
- -C n 显示匹配行及前后的n行内容
- -c 统计行数
- -n 输出行号
- -l 输出文件名称
- -r 递归文件夹搜索
- --color=auto 按颜色显示匹配字符串
6. 排序: sort -nr -t ':' -k 2 result_file
- -nr 按数字大小倒排序
- -t ':' -k 2 按照冒号 ':' 分隔字符串,并按照第二个字段排序
7. uniq 去重,通常在排序之后去重
8. 查看磁盘使用情况
- df -h 显示文件系统的磁盘使用情况,包括大小、已用、可用空间,使用率以及挂载点
- du -sh * 统计每个文件及文件夹占用磁盘大型
9 ps 查看进程
- ps aux 使用BSD格式显示所有进程的信息
- ps -ef 使用标准格式显示所有进程的信息
10 监控系统运行状态: top -M
- 参数-M 以k/M/G单位显示内存使用情况
- 快捷键 T:以CPU使用时间排序进程
- 快捷键 P:以CPU使用率排序进程
- 快捷键 M:以内存使用率排序进程
- 快捷键 N:以进程序号大小排序进程
- 快捷键 ?:显示可以使用的快捷键
- l t m,l:显示负载情况,t:显示进程状态统计和cpu使用情况,m:显示内存使用情况
- c i,c:显示进程命令名称或完整命令,i:只显示idle状态进程
- z:改变数据文本颜色
- q:退出top程序
11. awk 基于列的文本处理工具
分组排序:统计分组数量并按数量排序,类似sql group by field order by count
awk -F "," 'BEGIN{print "分类\t数量"} $1>=100&&$1<=200 {a[$1]++} END{for (i in a) print i "," a[i]}' file
- -F "," 分隔文本行
- 单引号部分实现分组统计数量,BEGIN部分打印头,中间是范围条件以及统计脚本,END部分是打印分组数量
- 最后跟文件名称
统计某类程序占用的全部内存:
ps axu | grep php | grep -v grep | awk '{print $2}' | xargs -i cat /proc/{}/status | grep VmRSS | awk '{a=a+$2} END{print a}'
把按行存储的关键字转换成sql in 可用参数:
cat tmpfile | awk -F '|' '{print $2}' | awk -v d="','" -v d0="'" 'BEGIN{} {a=a""d""$1} END {print a d0}'
12. sed 面向流的文本编辑器
sed -n -e 'p' content.txt 显示文本内容
- -n 不自动显示模式空间
- -e 'script' 指定处理命令
- 'p' 打印行
- -f 指定脚本文件
命令作用范围
- 1,3 第1行到第3行
- 1,$ 第1行到最后一行
- [/pattern1/], [/pattern2/] 两个匹配范围之间的行
编辑命令:
- sed -e '3 i abc' content_file 在行之前插入文本行
- sed -e '3 a abc' content_file 在行之后添加文本行
- sed -e '3 d' content_file 删除行
- sed -e '1,3 s/min/max/' content_file 替换行行内文本,默认替换第一个符合条件的字符串,加上数字可选性,则可以限定替换第几个符合条件字符串,g替换全部符合条件的字符串
- sed -e '1, 3 c abc' content_file 替换全部行
13 locate,find,which 和 who
- locate 到文件索引数据库中查找文件,数据库中的文件信息可能和实时文件系统不一致,可能会查不到文件,但是速度很快。
- find 在文件系统中查找文件,速度比locate要慢
- which 查看命令的完整目录,which会到PATH环境变量定义的目录中查找命令的完整目录。
- who 查看系统当前登录用户。
14 tar 归档文件
- -c :创建压缩文件
- -x :解开压缩文件
- -t :查看压缩文件中的文件
- -z :使用gzip压缩
- -j :使用bzip2压缩
- -v :压缩的过程中显示文件
- -f :指定归档文件名称,必须在其后跟文件名
- 完整命令,tar zxvf zip.tar.gz ./test/* , tar zcvf zip.tar.gz
15 用户和密码
- add user 创建用户,可以通过参数定义用户的一些属性,如所属的组、home目录等。
- passwd 修改密码,root和普通用户都可以直接输入passwd来修改自己的密码,root可以使用passwd username来修改其他用户的密码。
- su 切换用户,如果不加参数默认切换到root,可以跟用户名参数
- sudo 使用root用户来执行命令或脚本
- useradd -g 1000 -d /home/usera -s /bin/bash -m usera
16 screen
直接输入screen,就可以进入一个screen会话,在screen会话中可以执行任何命令,然后通过ctrl + a, d快捷键退出会话,进行别的工作,当需要的时候可以通过screen -r 会话ID,回到之前的screen 会话,接着进行工作,或者监控之前执行的任务。screen 特别适合需要长时间运行的工作任务,可以在screen会话中执行这样的任务,然后退出会话,当需要的时候通过screen -r 回到之前的会话。
- screen -ls 列出所有当前的screen 会话
- screen -r 会话ID,回到某一个会话
- ctrl + a, d detach screen会话,暂时退出screen 会话
- 执行exit就直接退出会话了
- 也可以在screen后直接跟命令,开启一个screen会话。
17 bash快捷键
- ctrl+a:光标移到行首。
- ctrl+b:光标左移一个字母
- ctrl+c:杀死当前进程。
- ctrl+d:退出当前 Shell。
- ctrl+e:光标移到行尾。
- ctrl+h:删除光标前一个字符,同 backspace 键相同。
- ctrl+k:清除光标后至行尾的内容。
- ctrl+l:清屏,相当于clear。
- ctrl+r:搜索之前打过的命令。会有一个提示,根据你输入的关键字进行搜索bash的history
- ctrl+u: 清除光标前至行首间的所有内容。
- ctrl+w: 移除光标前的一个单词
- ctrl+t: 交换光标位置前的两个字符
- ctrl+y: 粘贴或者恢复上次的删除
- ctrl+d: 删除光标所在字母;注意和backspace以及ctrl+h的区别,这2个是删除光标前的字符
- ctrl+f: 光标右移
- ctrl+z : 把当前进程转到后台运行,使用’ fg ‘命令恢复。比如top -d1 然后ctrl+z ,到后台,然后fg,重新恢复
- esc组合
- esc+d: 删除光标后的一个词
- esc+f: 往右跳一个词
- esc+b: 往左跳一个词
- esc+t: 交换光标位置前的两个单词。
待续......