02-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工具

查找命令

查找文件

find、fdlocate
对比: find VS locate

查找代码

grep、 ackag 和 rg

查找 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 代替即可。
 概览目录结构
 treebroot
 或更完整的文件管理器,例如 nnn 或 ranger

使用到的一些命令:

  • grep
  • touch
  • xargs
posted @ 2025-06-26 21:50  艳爚邀灼  阅读(33)  评论(0)    收藏  举报