[
Shell
]
Shell
-
传统意义上的 Shell 指的是命令行式的 Shell(即 Command-line shells )。命令行式的 Shell 是用一个叫 command interpreter(命令解析器)的程序来实现 CLI 。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 手动删除那一项。
文件夹导航
概览目录结构
文件管理器
通知工具
notify-send # 使用当前桌面环境的通知系统创建一条通知
查看日志
# 显示此次开机后 systemd 的所有日志
journalctl -b
# 显示内核的日志
dmesg