linux步步为营(1)--高级
lsof -f | grep Log
查看那个在用Log 文件,//一个应用起了两个程序,看那个的端口起来了
终端:交互工具,用户用来与shell环境交互。
echo:
bash不会对单引号引用变量求值echo '$JAVA_HOME'
双引号引用的!要进行转义\!
变量:bash中,每个变量的值都是字符串,不用声明类型。
cat /proc/$PID/environ //$PID 为进程号,查看进程的环境变量。
echo $SHELL //显示当前shell
echo $UID //显示是否为超级用户 0是
~ //当前用户的根目录
shell文件第一行:#!bin/bash 注释
sh -> bash 怎么重命名?
文件描述符、重定向
文件描述符,是个正数。系统预留:0=stdin,1=stdout,2=stderr
">"=输出 "|"=输入
ll + >a.txt (1>等于>): 错误提示不能输入到文件
ll + 2>a.txt :: 错误提示可以输入到文件
tee
cat a* | tee o1 o2 | cat -n //tee把一份副本写入o1,o2,另一份作为后续命令的stdin
IFS(internal Field Separator)默认值:空白字符()
循环
cat a.txt -n //显示行号
find /usr/ -name "*dev" //通配符
管道:把一个命令的stdout,重定向到另一个命令的stdio
xargs: 把stdio转换为命令行参数,多行单行互转。
多行-->单行 cat e.txt | xargs
每行3列: cat e.txt | xargs -n 3
-d指定分隔符:echo "12,34,55,66" | xargs -d , -n 2
sort:
sort -nrk 2 ee.txt //-nrk//n=数字、r=逆序,"k 2"=第二列
sort ee.txt |uniq -c //uniq 过滤重复,-c 重复次数
grep (Globally search a Regular Expression and Print)
grep -E "roleId :[0-9]+" logs/catalina.out //"E" 使用正则,只支持基本的,不支持"\d"
grep -C 10 "wnj" logs/catalina.out //-A,-B //上下10行
ssh 粘贴 shift+insert
sed(stream editor)
sed 's/9/nine/g' ee.txt //替换,g表示全部,可以不用。同vi
awk:对数据流的行和列操作。
NR: number of record 行数; NF: number of fields 列数; $0 当前文本; $1 当前文本第一列
循环文本每一行
cat ee.txt |(while read t ; do echo $t+"--"; done)
循环文本每一行每一个单词
cat ee.txt |(while read t ; do for w in $t; do echo $w+"=="; done;done)
tar -zcvf a.tar.gz tmp/ //
tar -zxcv a.tar.gz
du:disk useage 文件/文件夹大小。占用磁盘空间
df: disk free 磁盘未用空间
which: 返回命令的位置//#which ls