命令帮助
whatis command 查看命令的作用
info command 查看命令的详情
man command 查看命令的怎么使用,说明文档
which 查看命令二进制文件所在地方
文件及目录:
目录及文件的创建
mkdir:创建目录 参数 -m 设置权限,-p递归创建 -v 显示创建信息
mkdir -p /dir1/dir2
rm 删除文件或是目录
rm -rf 递归删除目录及文件。
递归删除删除某一类后缀名 find ./rm/. -name “*.txt” |xargs rm -f
mv 移动文件或者文件夹到另外一个目录下,-i 提示是否覆盖 -f强制覆盖 -v打印移动信息
mv fileName1 fileName2 更改文件名
mv dir1 dir2 目标目录存在则移动dir1到dir2,dir2不存在更改目录命名
mv file dir将文件移动到目录下
cp :复制文件或是目录
ls 显示目录下下文件 ls -al ,ls -alt
cd 进入目录,pwd显示当前所在文件路径
scp 拷贝远程到本机或者本机到远程
scp local/dir root@IP:/server/dir
split 切割文件
查找文件及目录
find ./ -name 文件名
查看文件内容
cat -n 显示行号
tail -f 实时跟踪文件变更
wc -l 查看文件总行数
head -10 查看文件开头十行
tail -10查看文件最后十行
grep 匹配文件内容
cat file | grep
egrep 查找文件内容
改变文件属性
chown 改变文件所属用户组。chmod 改变文件读写执行权限
链接
ln -s fiel newfile 建立软连接【软连接保存了指向目标文件的路径信息】
ln cc ccAgain :硬连接;删除一个,将仍能找到;
一些特殊符号
| 管道符号,用于把一个命令的输出的内容传递另外一个命令里 find . -name “*.txt” |xargs rm -f
> ,>> 重定向符号
df,du磁盘相关:du -sh -h是人性化显示 s是递归整个目录的大小
网络攻击:
netstat:查看网络端口和服务
1 | netstat -a #列出所有端口netstat -at #列出所有tcp端口 |
route 查看路由状态
ping 发送ping报
traceroute IP 探测前往地址IP的路由路径
性能监控:
top ,htop
sar -u 查看CPU利用率
free -m 查看内存使用情况
进程相关:
ps:查找进程的命令。
1 | linux上进程有5种状态: 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生) 4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放) 5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行) ps工具标识进程的5种状态码: D 不可中断 uninterruptible sleep (usually IO) R 运行 runnable (on run queue) S 中断 sleeping T 停止 traced or stopped Z 僵死 a defunct (”zombie”) process 1.命令格式:ps[参数]2.命令功能:用来显示当前进程的状态3.命令参数:a 显示所有进程-a 显示同一终端下的所有程序-A 显示所有进程c 显示进程的真实名称-N 反向选择-e 等于“-A”e 显示环境变量f 显示程序间的关系-H 显示树状结构r 显示当前终端的进程T 显示当前终端的所有程序u 指定用户的所有进程-au 显示较详细的资讯-aux 显示所有包含其他使用者的行程 -C<命令> 列出指定命令的状况--lines<行数> 每页显示的行数--width<字符数> 每页显示的字符数--help 显示帮助信息--version 显示版本显示例子: ps auxps -ef ps -fe| grep colin115|grep HOST |awk '{print $2}' | xargs kill -9; //将用户colin115下所有进程名中包含HOST的进程终止: |
使用命令pmap 进程ID,来输出进程内存的状况,可以用来分析线程堆栈;
kill pid 杀死进程,kill -9 pid杀死相关进程
1 | 命令参数: |
文本处理:
sed:命令处理文本内容
tr:将字符进行替换压缩和删除
1 | -c或——complerment:取代所有不属于第一字符集的字符;-d或——delete:删除所有属于第一字符集的字符; |
grep :文本搜索工具:是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活。
选项:
1 | --text # 不要忽略二进制数据。-A <显示行数> --after-context=<显示行数> # 除了显示符合范本样式的那一行之外,并显示该行之后的内容。 |
规则表达式
1 | ^ # 锚定行的开始 如:'^grep'匹配所有以grep开头的行。 |
常见用法:
1 | 在文件中搜索一个单词,命令会返回一个包含 “match_pattern” 的文本行:grep "match_pattern" file_name |
xargs:是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs 能够处理管道或者 stdin 并将其转换成特定命令的命令参数。xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs 的默认命令是 echo,空格是默认定界符。这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。xargs 是构建单行命令的重要组件之一。
1 | 用作替换工具,读取输入数据重新格式化后输出。cat test.txt | xargs |
awk:命令
是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。
常用命令选项
- -F fs fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:
- -v var=value 赋值一个用户定义变量,将外部变量传递给awk
- -f scripfile 从脚本文件中读取awk命令
- -m[fr] val 对val值设置内在限制,-mf选项限制分配给val的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。
awk模式和操作
awk脚本是由模式和操作组成的。
模式
模式可以是以下任意一个:
- /正则表达式/:使用通配符的扩展集。
- 关系表达式:使用运算符进行操作,可以是字符串或数字的比较测试。
- 模式匹配表达式:用运算符
~
(匹配)和!~
(不匹配)。 - BEGIN语句块、pattern语句块、END语句块:参见awk的工作原理
操作
操作由一个或多个命令、函数、表达式组成,之间由换行符或分号隔开,并位于大括号内,主要部分是:
变量或数组赋值
输出命令
内置函数
控制流语句
awk脚本基本结构
1
awk 'BEGIN{ print "start" } pattern{ commands } END{ print "end" }' file
一个awk脚本通常由:BEGIN语句块、能够使用模式匹配的通用语句块、END语句块3部分组成,这三个部分是可选的。任意一个部分都可以不出现在脚本中,脚本通常是被 单引号 或 双引号 中,例如:
1
2awk 'BEGIN{ i=0 } { i++ } END{ print i }' filename
awk "BEGIN{ i=0 } { i++ } END{ print i }" filenameawk的工作原理
1
awk 'BEGIN{ commands } pattern{ commands } END{ commands }'
第一步:执行
BEGIN{ commands }
语句块中的语句;第二步:从文件或标准输入(stdin)读取一行,然后执行
pattern{ commands }
语句块,它逐行扫描文件,从第一行到最后一行重复这个过程,直到文件全部被读取完毕。第三步:当读至输入流末尾时,执行
END{ commands }
语句块。BEGIN语句块 在awk开始从输入流中读取行 之前 被执行,这是一个可选的语句块,比如变量初始化、打印输出表格的表头等语句通常可以写在BEGIN语句块中。
END语句块 在awk从输入流中读取完所有的行 之后 即被执行,比如打印所有行的分析结果这类信息汇总都是在END语句块中完成,它也是一个可选语句块。
pattern语句块 中的通用命令是最重要的部分,它也是可选的。如果没有提供pattern语句块,则默认执行
{ print }
,即打印每一个读取到的行,awk读取的每一行都会执行该语句块。示例
1
2
3
4
5echo -e "A line 1\nA line 2" | awk 'BEGIN{ print "Start" } { print } END{ print "End" }'
Start
A line 1
A line 2
End当使用不带参数的
print
时,它就打印当前行,当print
的参数是以逗号进行分隔时,打印时则以空格作为定界符。在awk的print语句块中双引号是被当作拼接符使用,例如:1
2echo | awk '{ var1="v1"; var2="v2"; var3="v3"; print var1,var2,var3; }'
v1 v2 v3
特殊变量: NR NF $0 $1 $2
NR:表示记录数量,在执行过程中对应当前行号;
NF:表示字段数量,在执行过程总对应当前行的字段数;
$0:这个变量包含执行过程中当前行的文本内容;
$1:第一个字段的文本内容;
$2:第二个字段的文本内容;
使用-F来设置定界符(默认为空格):
1 | awk -F: '{print $NF}' /etc/passwd |
uniq:消除重复行
sort:排序
1 | sort unsort.txt | uniq -c 统计各行在文件中出现的次数 |
wc 统计行和字符的工具
cut:按列分割文本