banner
lca

lca

真正的不自由,是在自己的心中设下牢笼。

提高效率的10个 linux 命令

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"

Pasted image 20250110172003

Man#

man 命令用来查看其他命令的语法手册信息

Pasted image 20250110172155

Cat#

cat 命令是用来查看文件的内容,内容会全部输出在当前的终端上

  • 合并文件
  • 创建文件
cat > newfile.txt

Head#

head 命令用来查看文件的头部指定行内容,默认查看 10 行

-n:指定行数

Pasted image 20250110172447

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--):

Pasted image 20250113102714

目录默认权限如下(rwxr-xr-x):

Pasted image 20250113102748

那么通过 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

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。