zsh命令
符号 | 作用 | 示例 | 执行逻辑 |
---|---|---|---|
; | 顺序执行,无论前一条命令是否成功 | cmd1; cmd2 | 执行 cmd1,然后执行 cmd2 |
&& | 仅当前一条命令成功(退出状态码为 0)时,才执行下一条命令 | cmd1 && cmd2 | 若 cmd1 成功,则执行 cmd2 |
` | ` | 仅当前一条命令失败(退出状态码非 0)时,才执行下一条命令 | |
& | 前一条命令在后台运行,不阻塞下一条命令 | cmd1 & cmd2 | cmd1 后台运行,同时执行 cmd2 |
仅当前一条命令失败(退出状态码大于0)时,才执行下一条命令 |
Echo命令,控制台输出, \n参数用于去除末尾自动换行。
Source命令,接脚本文件,执行脚本,并且脚本中若定义了函数或者变量,都直接在当前shell中生效。 而如果执行输入脚本文件,相当于在新的shell子进程中运行脚本,不会影响当前shell环境。
. 是 source 的等效写法(例如 . ~/.zshrc)。
Export命令,用于使普通变量对当前shell的子进程也有效。
比如: v1=“hello”, 然后export v1
也可以 export v1=“hello”
执行任何外部命令都会在子进程中执行。
基本语法:
单引号: ‘’ 包裹的内容原样办理出,不解析特殊符号
比如: echo ‘$HOME’ 输出 $HOME
Echo “$HOME” 输出 /Users/roland
: 追加内容到文件末尾
~: 代表用户的家目录
~/.zshrc: 追加内容到文件末尾。 .zshrc是Zsh Shell的配置文件,每次启动终端(严格说是启动Zsh Shell)都会自动执行这个配置文件中的脚本。
cd: 进入某一层目录
当目标为符号链接时,跟随符号链接,进入到逻辑相同的目录。
cd -P 符号链接, 进入到实际的物理目录。
比如/opt/homebrew/opt目录下的python@3.13是一个符号链接,指向../Cellar/python@3.13/3.13.3
cd /opt/homebrew/opt/python@3.13 进入逻辑目录
此时pwd显示 /opt/homebrew/opt/python@3.13
Pwd -P 显示/opt/homebrew/Cellar/python@3.13/3.13.3
若使用cd -P opt/homebrew/opt/python@3.13, 则进入物理目录
此时pwd和pwd -P 都显示 /opt/homebrew/Cellar/python@3.13/3.13.3
pwd: 返回当前目录
ls: 查看目录内容
ls [选项] [目录或文件]
-a: 显示隐藏文件
-l: 显示详细信息(列表样式)
-d: 只显示目录,不递归。
-p: 显示时会对目录名称后面加个“/”,便于区分是目录还是文件。
ls -d 等价于 ls -d . 因为目录或文件参数默认值是.
ls默认显示目录中所有内容(不包括隐藏文件) , 而所显示的目录如果不指定,就是当前目录,即“.”, 即 ls 等价于 ls .
而-d选项是只显示目录,所有 ls -d 等价于 ls -d . 就只显示当前目录本身,所有就只显示一个 “.”。 当然这样是没有意义的。
目录或文件通配符:
*: 代表目录或文件
*/ : 代表目录
ls * 会显示当前目录的所有文件及子目录和子目录的所有文件
ls -d * 由于有-d选项,只保留了子目录部分,不会显示子目录里的文件
grep: 文本搜索工具
grep [选项] "搜索模式" [文件或目录]
- 搜索模式 :可以是普通字符串或正则表达式。
- 文件或目录 :如果省略,则从标准输入(如管道 |)读取数据。
Which 与 where 的区别:
特性 which where
搜索范围 第一个匹配项 所有匹配项
显示别名/函数 是(优先显示) 是(并列出所有路径)
递归搜索 $PATH 否 是
which python3
/opt/homebrew/bin/python3
Where python3
/opt/homebrew/bin/python3
/usr/bin/python3
读取符号链接的真实路径
readlink -f mylink
realpath mylink
file [选项] 文件名或路径
检测文件类型。
复杂命令拆解:
dirname "$(readlink -f "$(which python3)”)”
$(command): 命令替换, 等价于将括号中的命令的输出会存到一个变量中,之后再引用这个变量。
双引号作用: 防止返回的内容(尤其是路径)中有空格,影响其做为一个整体做为下一个命令的参数。
dirname: 返回上级目录
basename: 返回最末级目录或文件
在当前shell环境中删除环境变量,但不会永久修改环境变量。因为环境变量可能是在配置文件中,下载启动shell还会再加载。
unset HOMEBREW_BOTTLE_DOMAIN
unset HOMEBREW_API_DOMAIN