02-Shell 工具和脚本
参考链接
- 视频链接: https://www.youtube.com/watch?v=kgII-YWo3Zw
- 相关讲义以及课后习题:Shell 工具和脚本
有趣的知识点
bash字符
Bash 中的字符串通过 ' 和 " 分隔符来定义,但是它们的含义并不相同。以 ' 定义的字符串为原义字符串,其中的变量不会被转义,而 " 定义的字符串会将变量值进行替换。
bash参数列表:
$0- 脚本名$1到$9- 脚本的参数。$1是第一个参数,依此类推。$@- 所有参数$#- 参数个数$?- 前一个命令的返回值$$- 当前脚本的进程识别码!!- 完整的上一条命令,包括参数。常见应用:当你因为权限不足执行命令失败时,可以使用sudo !!再尝试一次。$_- 上一条命令的最后一个参数。如果你正在使用的是交互式 shell,你可以通过按下Esc之后键入 . 来获取这个值。
一些运算符:
退出码可以搭配 &&(与操作符)和 ||(或操作符)使用,用来进行条件判断,决定是否执行其他程序。
&&前面执行成功了,才能执行后面
||前面执行失败了,才能执行后面
示例:
false || echo "Oops, fail"
# Oops, fail
true || echo "Will not be printed"
#
true && echo "Things went well"
# Things went well
false && echo "Will not be printed"
#
false ; echo "This will always run"
# This will always run
变量替换命令输出:区别$(xx)和$xx
$( CMD ) 输出命令得到的结果
$cmd 输出cmd变量值
对于shebang
内核知道去用 python 解释器而不是 shell 命令来运行这段脚本,是因为脚本的开头第一行的 shebang。
#!/usr/local/bin/python
import sys
for arg in reversed(sys.argv[1:]):
print(arg)
一些shell工具
查找命令
- man
TLDR pages
查找文件
find、fd、locate
对比: find VS locate
查找代码
查找 shell 命令
- history eg:
history | grep find会打印包含 find 子串的命令。 - 对于大多数的 shell 来说,您可以使用
Ctrl+R对命令历史记录进行回溯搜索。敲Ctrl+R后您可以输入子串来进行匹配,查找历史命令行。 Ctrl+R可以配合 fzf 使用。fzf是一个通用的模糊查找工具- 基于历史的自动补全
文件夹导航
fasd 和 autojump 查找最常用或最近使用的文件和目录
Fasd 基于 frecency 对文件和文件排序,也就是说它会同时针对频率(frequency)和时效(recency)进行排序。默认情况下,fasd 使用命令 z 帮助我们快速切换到最常访问的目录。例如, 如果您经常访问 /home/user/files/cool_project 目录,那么可以直接使用 z cool 跳转到该目录。对于 autojump,则使用 j cool 代替即可。
概览目录结构:
tree, broot
或更完整的文件管理器,例如 nnn 或 ranger
使用到的一些命令:
- grep
- touch
- xargs
浙公网安备 33010602011771号