Shell中常用的工具
[ Shell ]

Shell

只要我们能想到的,就一定有方便的办法能够办到。因此当你想要完成某件事却又不知道应该做什么的时候,请向 Google 求助。

重要的是你要知道有些问题使用合适的工具就会迎刃而解,而具体选择哪个工具则不是那么重要。

find

# 查找所有名称为 src 的文件夹(不区分大小写使用 -iname )
find . -name src -type d
# 查找所有文件夹路径中包含 test 的 python 文件
find . -path '*/test/*.py' -type f
# 查找前一天修改的所有文件
find . -mtime -1
# 查找所有大小在 500k 至 10M 的 tar.gz 文件
find . -size +500k -size -10M -name '*.tar.gz'

# 删除全部扩展名为 .tmp 的文件
find . -name '*.tmp' -exec rm {} \;
# 查找全部的 PNG 文件并将其转换为 JPG
find . -name '*.png' -exec convert {} {}.jpg \;

# 递归地查找文件夹中所有的 HTML 文件,并将它们压缩成 zip 文件, -d '\n' 保证文件名中有空格时命令也可以正确执行
# xargs 的 -d 选项默认使用空格来切分数据,-d '\n' 表明使用换行符来切分数据
find . -type f -name "*.html" | xargs -d '\n'  tar -cvzf html.zip
# 递归的查找文件夹中最近使用的文件,按照最近的使用时间列出文件
find . -type f -mmin -60 -print0 | xargs -0 ls -lt | head -10

替代品:fd locate vs find

grep

# 输出匹配结果的前后 5 行
grep -C 5

替代品:rg

查找Shell命令

敲 Ctrl + R 后输入子串对命令历史记录进行搜索,反复按下 Ctrl + R 会在所有搜索结果中循环。在 zsh 中可以使用上下方向键完成这项工作。

如果在命令的开头加上一个空格,它就不会被加进 shell 记录中。这在输入包含密码或敏感信息的命令时很有用。完成这个功能需要在 .bashrc 中添加 HISTCONTROL=ignorespace 或者向 .zshrc 添加 setopt HIST_IGNORE_SPACE 。如果忘记加空格,可以通过编辑 bash_history 或 .zhistory 手动删除那一项。

文件夹导航

fasd autojump

概览目录结构

tree broot

文件管理器

nnn ranger

通知工具

notify-send # 使用当前桌面环境的通知系统创建一条通知

查看日志

# 显示此次开机后 systemd 的所有日志
journalctl -b
# 显示内核的日志
dmesg

参考资料:

[1] MIssing-semester:Shell 工具和脚本