Grep#
grep 我们通常用来从终端输出 / 文本中过滤字符
基本语法
grep "let's find something" file.[txt,json,js,md,etc]
选项
-i:忽略大小写
-c:统计匹配的行树
使用 grep 可以方便的进行日志分析,在应急响应中,通常可以用来分析日志文件,过滤出指定的内容
-e:指定多个搜索条件
-r:递归搜索,搜索指定目录下的所有文件
-o:打印匹配的内容
grep 可以结合管道符 |
使用,如:
cat /etc/passwd | grep "root"
Man#
man 命令用来查看其他命令的语法手册信息
Cat#
cat 命令是用来查看文件的内容,内容会全部输出在当前的终端上
- 合并文件
- 创建文件
cat > newfile.txt
Head#
head 命令用来查看文件的头部指定行内容,默认查看 10 行
-n:指定行数
Awk#
awk 是强大文本流编辑器,可以用来过滤、提取或转换数据
Sed#
sed 命令是文本流编辑器,可以用来查找、替换、插入或删除文件或数据流中的内容
- 替换
# 将5替换成five
echo 'They ate 5 apples' | sed 's/5/five/'
- 打印指定行
# 只展示给定输入中的第四、五、六和七行
seq 65 78 | sed -n '4,7p'
68
69
70
71
要打印筛选后的行,请使用 p 命令。然而,需要注意的是,默认情况下会打印所有输入行。所以,通常我们会和 -n 命令行选项一起使用这个命令,来关闭默认的打印功能。
- 正则表达式
BRE:基础正则表达式,ERE:扩展正则表达式
默认情况下,sed 将搜索模式视为基本正则表达式(BRE)。通过使用 -E 选项可以启用扩展正则表达式(ERE)。旧版本中使用的是 -r 来表示 ERE,虽然仍然有效,但是 -E 更加通用。在 GNU sed 中,BRE 和 ERE 之间唯一的区别就是元字符的应用方式不同,并且它们的功能没有差异。
# 打印以sp开头的行
printf 'spared no one\npar\nspar\n' | sed -n '/^sp/p'
spared no one
spar
# 打印以ar结尾的行
printf 'spared no one\npar\nspar\n' | sed -n '/ar$/p'
par
spar
# 打印所有行并将par替换成PAR
printf 'spared no one\npar\nspar\n' | sed 's/^par$/PAR/'
spared no one
PAR
spar
- 批量重命名文件
Tail#
tail 用来查看文件的末尾几行的内容
Chmod#
chmod 命令用来更改文件权限,在 linux 下,文件的权限分为三组:属主、属组和其它,权限分别为:读(read)、写(write)和执行(execute)。
字符表示法即为 rwx,数字表示法即为 755(r:4,w:2,x:1)。
每个文件都有默认的权限,如文件的默认权限是 644
,目录的默认权限是 755
。
文件默认权限如下 (rw-r--r--
):
目录默认权限如下(rwxr-xr-x
):
那么通过 chmod 命令就可以赋予一个文件对应的权限
# 赋予其它用户执行的权限
chmod +x Test.jar
# 赋予目录下所有文件所有权限,通常不建议赋值777权限,有些可执行文件如果权限太大,可能会导致安全问题
chmod 777 -R Pentest/
Xargs#
使用其它命令的输出通过 xargs 来构建和运行命令
find /var/www/html -type f -name "*.php" | xargs grep "eval("
# find命令用于查找所有/var/www/html目录下的php文件
# xargs用于将查找的文件列表作为参数传递给grep进行内容过滤,从每个php文件中过滤eval(字符
# 压缩多个文件
ls *.log | xargs gzip
Find#
find 命令用来查找文件和目录
# 查找所有以log结尾的文件
find / -name "*.log"
# 定期清理超过一个月的日志文件
find /var/log -type f -name "*.log" -mtime +30 -delete
# 备份重要文件
find ~/Documents -name "*.docx" -exec cp {} /path/to/backup/ \;
参考:
https://www.trevorlasn.com/blog/10-essential-terminal-commands-every-developer-should-know