cd … 是返回上一层目录, cd - 是返回到上一次的工作目录,cd ~ 是家目录。
find / -name "some.java"
find / -name "*.java"
find / -iname "*.java" #忽略大小写
chown -R runoob:runoobgroup *
#将目前目录下的所有文件与子目录的拥有者皆设为 runoob,群体的使用者 runoobgroup:
chmod -R 777 /var/lib/nginx
-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
777这个顺便了解一下
r 4 可读,当前用户可以读取文件内容
w 2 可写,当前用户可以新增或修改文件内容并且删除、移动目录或目录内文件
x 1 可执行。
检索文件内容,查找文件里符合条件的字符串
grep "haha" *.java #查找含有haha的某一行
find ~ |grep "*.java" #查找文件名为的文件
grep 'abc' a.log | grep -o 'some\[[0-9a-z]\]'
#grep -o 正则表达式 []里面数字字母
grep -v 'zz' #去掉信息
一次读取一行文本,按输入分隔符进行切片,切成多个组成部分
将切片直接保存在内建的变量中,$1,$2…($0 表示行的全部)
支持对单个切片的判断,支持循环判断,默认分隔符为空格
awk [options] 'cmd' file #基本语法
awk '{print $1,$4}' netstat.txt #逐行遍历 以空格为分隔符 第一列和第四列
awk '$1=="tcp" && $2==1 {print $0}' netstat.txt #打印proto是tcp,Recv-Q是1的一行全部数据
awk '($1=="tcp" && $2==1) || NR=1 {print $0}' netstat.txt #加上表头,NR是数据行数
awk默认是空格为分隔符,可以设定特定的分隔符
awk -F "," '{print $2}' test.txt #以逗号为分隔符,打印第二列
统计:
grep 'abc' a.log | grep -o 'some\[[0-9a-z]\]' | awk '{arr[$1]++} END {for(i in arr) print i "\t" arr[i] }'
# arr[$1] 里面元素名是第一列的内容,元素的值是次数
# 语法
sed [option] 'sed command' filename
全名 stream editor ,流编辑器,适用于对文本的行内容进行处理
例子:
# 将str 改成string
sed -i 's/^Str/String' replace.java
#-i表示修改,不加则只会把替换结果输出到命令行,不会修改
# s 表示字符串的操作
# ^Str 表示以Str开头的被替换的字符串
# String 表示替换的字符串
# 将末尾的.改成分号
sed -i 's/\.$/\;/' replace.java
# \. \; 表示转义
# 所有的Jack转成me
sed -i 's/Jack/me/g' replace.java
# g表示全局替换
# 删除符合条件的行
sed -i '/^ *$/d' replace.java
# 删除空行