【Linux】新手还在用bash?老手已经用zsh起飞了!新手必看的zsh命令大全
以下是 zsh 中一些常用命令和功能,这些命令可以帮助你更高效地使用 zsh,提升你的命令行体验。
zsh入门
1. 基本命令
1.1 文件和目录操作
-
cd
:切换目录。cd /path/to/directory cd .. # 返回上一级目录 cd - # 返回上一个工作目录
-
ls
:列出目录内容。ls -l # 以长格式列出文件和目录 ls -a # 列出所有文件(包括隐藏文件) ls -h # 以易读格式显示文件大小
-
mkdir
:创建目录。mkdir mydir mkdir -p mydir/subdir # 创建多级目录
-
rm
:删除文件或目录。rm file.txt rm -r directory # 递归删除目录
-
cp
:复制文件或目录。cp file.txt /path/to/destination cp -r dir1 dir2 # 复制目录
-
mv
:移动或重命名文件。mv file.txt /path/to/destination mv oldname newname # 重命名文件
1.2 文件查看
-
cat
:显示文件内容。cat file.txt
-
less
:分页查看文件内容。less file.txt
-
head
:显示文件的前几行。head -n 10 file.txt # 显示前10行
-
tail
:显示文件的最后几行。tail -n 10 file.txt # 显示最后10行 tail -f logfile.log # 实时查看文件更新
1.3 系统信息
-
pwd
:显示当前工作目录。pwd
-
df
:显示磁盘使用情况。df -h
-
du
:显示文件或目录的磁盘占用情况。du -sh directory # 显示目录的总大小
-
ps
:显示当前进程。ps aux
-
top
:实时显示系统进程和资源使用情况。top
-
free
:显示系统内存使用情况。free -h
2. zsh 特有功能
2.1 命令补全
zsh 提供了强大的命令补全功能,可以通过以下快捷键使用:
Tab
:自动补全命令、文件名或路径。Ctrl+X
,然后按Tab
:显示所有可能的补全选项。Ctrl+X
,然后按?
:显示当前命令的补全帮助。
2.2 历史命令
Up
和Down
:浏览历史命令。Ctrl+R
:反向搜索历史命令。Ctrl+G
:退出搜索模式。history
:显示历史命令列表。history
2.3 别名和函数
-
定义别名:
alias ll='ls -l' alias grep='grep --color=auto'
-
定义函数:
my_function() { echo "Hello, $1!" }
2.4 插件和主题
如果你使用了 Oh My Zsh,可以通过插件和主题增强 zsh 的功能:
-
插件:在
~/.zshrc
中启用插件:plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
-
主题:设置 zsh 的提示符主题:
ZSH_THEME="robbyrussell"
3. 高级功能
3.1 管道和重定向
-
管道:将一个命令的输出传递到另一个命令的输入。
cat file.txt | grep "pattern" | sort
-
重定向:将输出保存到文件。
cat file1.txt > file2.txt # 覆盖文件 cat file1.txt >> file2.txt # 追加到文件
3.2 背景任务
-
后台运行命令:
command &
-
查看后台任务:
jobs
-
将任务放到后台:
Ctrl+Z # 暂停当前任务 bg # 将任务放到后台
3.3 条件语句
-
if
语句:if [ -f file.txt ]; then echo "File exists!" else echo "File does not exist!" fi
-
for
循环:for file in *.txt; do echo $file done
4. 常用快捷键
以下是一些在 zsh 中常用快捷键,可帮助你更高效地操作命令行:
4.1 行编辑快捷键
Ctrl+A
:光标移动到行首。Ctrl+E
:光标移动到行尾。Ctrl+B
:光标向左移动一个字符。Ctrl+F
:光标向右移动一个字符。Ctrl+P
:向上历史命令。Ctrl+N
:向下历史命令。Ctrl+D
:删除当前光标后的字符。Ctrl+K
:从光标位置到行尾的内容被删除。Ctrl+U
:删除从光标位置到行首的内容。Ctrl+W
:删除光标前的一个单词。Ctrl+Y
:粘贴之前删除的内容。Ctrl+T
:交换光标前的两个字符。
4.2 命令历史快捷键
Ctrl+R
:反向搜索历史命令。Ctrl+G
:退出搜索模式。Ctrl+P
:向上历史命令。Ctrl+N
:向下历史命令。
4.3 文件和目录操作快捷键
Ctrl+X
Ctrl+L
:列出当前目录下的所有文件和文件夹。Ctrl+X
Ctrl+D
:列出当前目录下的所有文件和文件夹,并显示详细信息。Ctrl+X
Ctrl+I
:显示当前目录下文件和文件夹的简要列表。Ctrl+X
Ctrl+C
:显示当前目录下隐藏文件和文件夹的简要列表。Ctrl+X
Ctrl+S
:拼写检查当前路径。Ctrl+X
Ctrl+P
:显示当前路径的绝对路径。Ctrl+X
Ctrl+Q
:显示当前路径的权限。Ctrl+X
Ctrl+W
:显示当前路径的所有者。Ctrl+X
Ctrl+G
:显示当前路径的组。Ctrl+X
Ctrl+T
:显示当前路径的类型。Ctrl+X
Ctrl+K
:显示当前路径的大小。Ctrl+X
Ctrl+M
:显示当前路径的修改时间。
4.4 其他快捷键
Ctrl+L
:清屏。Ctrl+C
:终止当前运行的命令。Ctrl+Z
:暂停当前运行的命令。Ctrl+X
Ctrl+U
:打开或关闭自动补全。Ctrl+X
Ctrl+R
:重新读取当前目录下的所有文件和文件夹。Ctrl+X
Ctrl+H
:显示当前目录下文件和文件夹的隐藏属性。Ctrl+X
Ctrl+B
:显示当前目录下文件和文件夹的基本属性。Ctrl+X
Ctrl+Y
:显示当前目录下文件和文件夹的类型。Ctrl+X
Ctrl+N
:显示当前目录下文件和文件夹的所有属性。Ctrl+X
Ctrl+E
:使用编辑器打开当前路径。
5. 实用命令组合
5.1 查找文件
find . -name "*.txt" # 查找当前目录下所有扩展名为 .txt 的文件
5.2 替换文件内容
sed -i 's/old/new/g' file.txt # 替换文件中的内容
5.3 监控文件变化
watch "ls -l" # 定期刷新命令的输出
5.4 批量重命名文件
for file in *.txt; do
mv "$file" "${file%.txt}.md"
done
6.命令自动纠正
6.1 启用自动纠正功能
在 zsh 中,correction
功能用于自动纠正拼写错误的命令或路径。它通过 setopt
命令来启用或配置:
setopt correct
启用自动纠正功能,但会在纠正前提示用户是否接受纠正。例如:
zsh: correct 'eixt' to 'exit' [nyae]?
在 zsh 中,nyae
是一个提示符,用于命令自动纠正功能。当 zsh 检测到你输入的命令可能存在拼写错误时,它会提示你是否需要更正命令。nyae
是一个选项提示,具体含义如下:
n
:表示“no”,拒绝更正。y
:表示“yes”,接受更正。a
:表示“abort”,中止当前命令。e
:表示“edit”,进入编辑模式,手动修改命令。
例如,如果你输入了一个错误的命令 lls
,zsh 会提示:
zsh: correct 'lls' to 'ls' [nyae]?
你可以根据提示选择操作:
- 输入
y
,接受更正并执行ls
命令。 - 输入
n
,拒绝更正并保留原命令。 - 输入
a
,中止当前命令。 - 输入
e
,进入编辑模式,手动修改命令。
setopt correctall
启用自动纠正功能,但不会提示用户,直接执行纠正后的命令。例如:
zsh: correct 'eixt' to 'exit'? y
它会直接执行 exit
命令,而不会等待用户确认。
永久启用 correction
功能
在 ~/.zshrc
文件中,添加以下内容之一:
setopt correct # 启用纠正功能,但会提示用户
或者:
setopt correctall # 启用纠正功能,不会提示用户
6.2 如何禁用 correction
功能?
禁用 correction
功能
如果你不想使用纠正功能,可以在 ~/.zshrc
文件中添加以下内容:
unsetopt correct
或者直接删除或注释掉 setopt correct
或 setopt correctall
。
6.3 关于 ENABLE_CORRECTION="true"
ENABLE_CORRECTION="true"
并不是 zsh 或 Oh My Zsh 的标准配置选项。如果你在某些地方看到这个配置,可能是某些自定义脚本或主题中使用的变量,而不是 zsh 的内置功能。
在标准的 zsh 和 Oh My Zsh 配置中,应该使用 setopt correct
或 setopt correctall
来启用或禁用纠正功能。
zsh进阶
Oh My Zsh
1. 安装 Oh My Zsh
Oh My Zsh 是一个开源的 zsh 配置管理框架,提供了丰富的插件和主题,可以显著提升 zsh 的使用体验。安装 Oh My Zsh 的命令如下:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
如果你在国内,可以使用 Gitee 的镜像:
sh -c "$(curl -fsSL https://gitee.com/shmhlsy/oh-my-zsh-install.sh/raw/master/install.sh)"
2. 配置主题
Oh My Zsh 提供了许多主题,可以通过编辑 ~/.zshrc
文件来启用。例如,启用默认的 robbyrussell
主题:
ZSH_THEME="robbyrussell"
如果你想要一个更高级的主题,比如 powerlevel10k
,可以先安装它:
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
然后在 ~/.zshrc
文件中设置:
ZSH_THEME="powerlevel10k/powerlevel10k"
保存后,运行 source ~/.zshrc
使配置生效。
3. 安装插件
Oh My Zsh 的插件可以扩展 zsh 的功能,以下是一些常用的插件:
-
zsh-autosuggestions
:自动补全命令,输入时会显示可能的建议,按右键可以快速采用。git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
-
zsh-syntax-highlighting
:命令语法高亮,合法命令显示为绿色,非法命令显示为红色。git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
-
zsh-completions
:增强命令补全功能。git clone https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-completions
在 ~/.zshrc
文件中启用插件:
plugins=(git zsh-autosuggestions zsh-syntax-highlighting zsh-completions)
4. 自动补全功能
Oh My Zsh 提供了强大的自动补全功能,可以通过以下方式使用:
- 按
Tab
键:自动补全命令、文件名或路径。 - 按
Ctrl+X
,然后按Tab
:显示所有可能的补全选项。
5. 其他常用命令
- 更新 Oh My Zsh:
upgrade_oh_my_zsh
- 查看主题列表:
cat ~/.oh-my-zsh/themes/* | grep ZSH_THEME
- 配置 Powerlevel10k 主题:
这个命令会启动一个交互式配置向导,帮助你自定义提示符的外观。p10k configure
6. 注意事项
- 如果主题或插件显示不正确,可能需要安装支持的字体,如 Nerd Fonts。
- 在 VSCode 中使用 zsh 时,可以通过设置
terminal.integrated.defaultProfile.linux
为zsh
来将 zsh 设置为默认终端。
通过以上配置,你可以充分利用 Oh My Zsh 的强大功能,提升你的终端使用体验。
快速启动
在 zsh 中,直接在 .zshrc
文件中使用 source
命令加载插件(如 zsh-autosuggestions
)和将插件名称添加到 Oh My Zsh 的 plugins
数组中,这两种方法都可以加载插件,但它们在启动速度上可能会有所不同。
1. 直接在 .zshrc
文件中使用 source
命令
直接在 .zshrc
文件中使用 source
命令加载插件,可以更早地加载插件,从而在 zsh 启动时立即生效。这种方法的优点是:
- 启动速度快:插件在 zsh 启动时直接加载,不需要等待 Oh My Zsh 的初始化过程。
- 灵活性高:你可以更精细地控制插件的加载顺序和方式。
示例:
# Enable command autosuggestions
source ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
# Enable syntax highlighting
source ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
2. 将插件名称添加到 Oh My Zsh 的 plugins
数组中
将插件名称添加到 Oh My Zsh 的 plugins
数组中,Oh My Zsh 会在其初始化过程中自动加载这些插件。这种方法的优点是:
- 简化配置:你只需要在
plugins
数组中添加插件名称,而不需要手动指定插件的路径。 - 兼容性好:Oh My Zsh 会处理插件的加载和初始化,确保插件与 Oh My Zsh 的其他功能兼容。
示例:
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
性能比较
- 直接使用
source
命令:这种方法通常会稍微快一些,因为插件在 zsh 启动时直接加载,不需要等待 Oh My Zsh 的初始化过程。 - 使用
plugins
数组:这种方法可能会稍微慢一些,因为 Oh My Zsh 需要额外的时间来解析和加载插件。
推荐做法
如果你希望插件在 zsh 启动时立即生效,并且希望有更高的灵活性,建议直接在 .zshrc
文件中使用 source
命令加载插件。
如果你希望简化配置,并且希望 Oh My Zsh 处理插件的加载和初始化,建议将插件名称添加到 Oh My Zsh 的 plugins
数组中。
总结
直接在 .zshrc
文件中使用 source
命令加载插件通常会比将插件名称添加到 Oh My Zsh 的 plugins
数组中启动更快。然而,这种差异通常很小,可以根据你的个人偏好和需求选择合适的方法。