记录一些常用的linux shell命令, 做个备忘
命令形式: grep [-acinv] [--color[=auto]] "搜寻内容" filename
, 其中搜索串可以是正则表达式
常用参数:
常用示例:
向前显示5行: grep "2016-6-23 12:00:00" -B5 --color access.log
配合sed
命令和awk
命令
$ grep "运行时间为" qcredit.log | sed 's/ms//' | awk -F ':' '{if($5>100) print}'
通过sed
命令把字符串里的ms
换成空串, awk
命令 -F ':'
表示用:
对文本分割, $5
对应分割后的时间那一列
awk [-F 分隔符] 'commands' filename
, 其中-F
可选, 不写默认以空格
或制表符
分割内置变量(具体参考man
手册):
常用示例:
# 以 : 分割, 打印第7列($0表示整行)
cat /etc/passwd | awk -F ':' '{print $7}'
# 打印列数超过10列的行
awk '{if(NF>10) print $0}'
# 在开头和结尾打印一些东西
cat /etc/passwd | awk -F ':' 'BEGIN {print "name,shell"} {print $1","$7} END {print "aaa,bbb"}'
组合使用sort
和uniq
, 如:sort test.txt | uniq -c | sort -rn
其中:
uniq
命令只能对相邻行进行去重复操作,所以在进行去重前,先要对文本行进行排序,使重复行集中到一起: sort test.txt
sort test.txt | uniq
uniq -c
可以实现对重复次数进行统计, 文本行去重并按重复次数排序: sort test.txt | uniq -c
sort -n
可以识别每行开头的数字,并按其大小对文本行进行排序。默认是按升序排列,如果想要按降序要加-r
选项(sort -rn
)软链接: ln -s src_name link_name
硬链接: ln file_name link_name
常用参数:
常用示例:
打包: tar -cvf output.tar inpt1 input2 ...
压缩: tar -zcvf output.tar directory/input
解压: tar -xvf input.tar
常用参数:
常用示例:
上传: scp -r local_file username@remote_ip:remote_file
下载: scp -r username@ip:remote_file local_file
递归修改权限,比如,将某目录下面的所有文件修改为644,所有目录修改为755
find ./mydir -type f | xargs chmod 644
find ./mydir -type d | xargs chmod 755
不用sudo
看不到PID/Program name
sudo netstat -tunlp
# 查看硬盘剩余空间
df -h
# 查看目录占用空间
du -hs dir
# 列出一级目录所占空间
du -ah --max-depth=1 dir