一、文件系统:
1、常用
- /etc/profile 是所有用户的环境变量, 需要执行source /etc/profile生效
//java的环境变量
export JAVA_HOME=/opt/java/jdk1.7.0_11
export CLASSPATH=.:$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
- ~/.bashrc 当前用户的设置。 //一般用来自定义别名
- /usr/bin/ //目录放到$PATH了, 里面的命令可以在任意地方使用
- ln -s /opt/installer/Postman/Postman /usr/bin/postman //创建软连接,
2、文件元数据
- 文件名称存储在目录中,目录本身的大小>=4096字节
- 改变文件名不会改变文件大小,会改变目录的大小,目录下有超多文件时,目录本身会大于4096字节。
二、压缩解压缩
1、gzip(.gz)
- 压缩:gzip src //执行后生成src.gz,但是会把src这个原文件删除
- 压缩保留源文件:gzip -c src > src.gz
- 解压缩:gzip -d 1.gz执行后生成1,但是会把1.gz这个原压缩文件删除
- 解压缩保留源文件:gzip -dc 1.gz > 1
2、zip/unzip(.zip)
- 压缩:zip abc.zip abc/
- 解压缩:zip abc.zip //不指定解压目录
- 解压缩:zip abc.zip -d abc123 //指定解压目录
3、tar(.tar, .tar.gz)
- 压缩:tar -zcvf abc.tar.gz abc/
- 解压缩:tar -zxvf abc.tar.gz //不指定解压目录
三、查找
1、find 查找文件
- find ./ -name ${FILE_NAME}* // 模糊查找必须加上通配符
2、grep(Globally search a Regular Expression and Print) 查找内容
- grep -nr goal ./test/ //递归查询"./test/"目录,包含"goal"的内容。-n//行号
- grep -nrE “go\w{2}l” ./test/ // -E 使用正则表达式
- grep -C 10 “wnj” logs/catalina.out //-A,-B //上下10行
find ./ -name \*.xml | xargs grep -n goal
// 递归查询"./test/"目录中的.xml文件,包含"goal"的内容
四、vi
1、撤销
- u 撤销最后一次修改
2、插入光标(进入编辑模式)
- a 在光标后插入文本
- A 在当前行插入文本
- i 在光标前插入文本
- I 在当前行前插入文本
- o 在当前行的下边插入新行
- O 在当前行的上边插入新行
3、移动光标
- w 移到下一个字的开头
- W 移到下一个字的开头,忽略标点符号
- b 移到前一个字的开头
- B 移到前一个字的开头,忽略标点符号
- ^ 移到行首
- $ 移到行尾
- G 移到文件的最后一行
- nG 移到文件的第n行
- H 将光标移动到屏幕的顶行
- nH 将光标移动到屏幕顶行下的第n行
- M 将光标移动到屏幕的中间
- L 将光标移动到屏幕的底行
- nL 将光标移动到屏幕底行上的第n行
4、删除字符x
- x 删除光标处的字符
- nx 从当前光标处往后删除n个字符
- X 删除光标前的字符
- nX 从当前光标处往前删除n个字符
- 删除单词和行d
- dw 删至下一个字的开头
- ndw 从当前光标处往后删除n个字
- db 删除光标前面的字
- ndb 从当前行开始往前删除n字
- dd 删除整行
- ndd 从当前行开始往后删除
- d$ 从光标处删除到行尾
- dG 删除行,直到文件结束
5、复制粘贴
- yy 复制当前行
- nyy 复制当前光标开始的n行
- p 粘贴至光标的后面(当前光标的下一行开始)
- P 粘贴至光标的前面(建议使用这个)
6、查找与替换
- /text 在文件中向前查找text
- ?text 在文件中向后查找text
- n 在同一方向重复查找
- N 在相反方向重复查找
- %s/abc/123/g 替换所有的abc为123
- 2,5s/abc/123/g 替换2到5行的abc为123
五、常用命令
- lsof -f | grep Log //查看那个在用Log 文件
- shell文件第一行:#!bin/bash 不然可能运行出错// sh脚本有好几种,bash最常用
- tee //把一份副本写入o1,o2,另一份作为后续命令的stdin
- cat a* | tee o1 o2 | cat -n
- sort -nrk 2 ee.txt //-nrk//n=数字、r=逆序,“k 2”=第二列
- sort ee.txt |uniq -c //uniq 过滤重复,-c 重复次数
- sed ‘s/9/nine/g’ ee.txt //替换,g表示全部,可以不用。同vi
- cat /etc/passwd |awk -F ‘:’ ‘/^mysql/{print $1","$2}’ //过滤mysql开头的,正则表达式用"//“不用”{}"
- xargs: 把stdio转换为命令行参数,多行单行互转。
- ps -ef | grep root |awk ‘{print $2}’ |xargs //合并成1行
- ps -ef | grep root |awk ‘{print $2}’ |xargs -n 20 //合并成行(每行20个)
- ll | awk ‘{print $8}’ |xargs rm -fr //并把合并后的值,作为参数传递给rm
for id in `\cat catalina.out | \grep "server" |awk '{print $8}' | awk -F ':' '{print $NF}'`
do
echo -n "${id}----" ; cat catalina.out | \grep -c "${id}" | sort -n
done
cur_date="`date +%Y-%m-%d`"
fileName=$cur_date.log
echo $fileName
- ps -eo pid,lstart | grep 21673 //查看进程启动时间
- ps -eo pid,lstart,cmd | grep java //查看进程启动时间