fish 命令
基本介绍
fish(Friendly Interactive Shell) 是一款用户友好的 Unix shell,以其简洁的语法、自动建议、语法高亮和智能补全等特性而闻名。fish 采用不同于传统 shell 的语法设计,更加直观和易于学习,适合新手和高级用户使用。
资料合集:https://pan.quark.cn/s/6fe3007c3e95、https://pan.quark.cn/s/561de99256a5、https://pan.quark.cn/s/985f55b13d94、https://pan.quark.cn/s/d0fb20abd19a
语法
fish[选项][脚本文件]启动选项
| 选项 | 说明 |
|---|---|
-c <command> | 执行指定的命令后退出 |
-i | 启动交互式 shell |
-l | 作为登录 shell 启动 |
-n | 检查脚本语法但不执行 |
-v | 显示版本信息 |
--debug=<level> | 设置调试级别 |
--no-config | 不加载配置文件 |
常用内置命令
文件和目录操作
| 命令 | 说明 |
|---|---|
cd <dir> | 切换目录 |
pwd | 显示当前目录 |
mkdir <dir> | 创建目录 |
rmdir <dir> | 删除空目录 |
rm <file> | 删除文件或目录 |
cp <src> <dst> | 复制文件 |
mv <src> <dst> | 移动或重命名文件 |
变量和环境
| 命令 | 说明 |
|---|---|
set <var> <value> | 设置变量 |
set -x <var> <value> | 设置环境变量 |
set -e <var> | 删除变量 |
env | 显示环境变量 |
echo <text> | 输出文本 |
read <var> | 读取用户输入 |
流程控制
| 命令 | 说明 |
|---|---|
if <condition>; ...; end | 条件判断 |
switch <value>; case <pattern>; ...; end | 多条件分支 |
for <var> in <list>; ...; end | 循环 |
while <condition>; ...; end | 条件循环 |
break | 跳出循环 |
continue | 继续下一次循环 |
函数和脚本
| 命令 | 说明 |
|---|---|
function <name>; ...; end | 定义函数 |
function -e <name> | 删除函数 |
source <file> | 执行脚本文件 |
. <file> | 执行脚本文件(同 source) |
作业控制
| 命令 | 说明 |
|---|---|
& | 后台执行命令 |
jobs | 显示后台作业 |
fg | 将后台作业调至前台 |
bg | 将前台作业放至后台 |
使用示例
1. 启动交互式 shell
fish2. 执行单个命令
fish-c"echo 'Hello World'"3. 执行脚本文件
fish script.fish4. 作为登录 shell 启动
fish-l5. 检查脚本语法
fish-nscript.fish6. 设置变量
setname"John"echo$name7. 设置环境变量
set-xPATH$PATH/usr/local/bin8. 定义函数
functiongreetecho"Hello,$argv[1]!"end greet World9. 条件判断
iftest-f/etc/passwdecho"File exists"end10. 循环遍历
foriin123echo$iend11. 自动建议
# 输入命令时会自动显示建议ls/u<Tab># 自动补全为 /usr/12. 历史搜索
# 使用上下箭头浏览历史# 输入部分命令后按上下箭头搜索配置文件
系统级配置
/etc/fish/config.fish- 全局 fish 配置/etc/fish/conf.d/- 额外配置脚本目录
用户级配置
~/.config/fish/config.fish- 用户 fish 配置~/.config/fish/functions/- 用户函数目录~/.config/fish/completions/- 用户补全配置目录
特殊变量
| 变量 | 说明 |
|---|---|
$argv | 命令行参数数组 |
$argv[1] | 第一个参数 |
$status | 上一条命令的退出状态 |
$pwd | 当前工作目录 |
$USER | 当前用户名 |
$HOME | 用户主目录 |
$PATH | 命令搜索路径 |
高级特性
自动建议
fish 会根据命令历史自动显示建议,按右箭头或 Tab 键接受建议。
语法高亮
fish 提供实时语法高亮,包括命令、参数、路径、变量等的颜色区分。
智能补全
fish 的补全系统支持:
- 命令名补全
- 文件路径补全
- 参数补全
- 命令选项补全
Web 配置界面
fish 提供了一个 Web 界面用于配置:
fish_config插件系统
fish 支持通过 Oh My Fish 等框架管理插件。
实用技巧
1. 安装 Oh My Fish
curl-Lhttps://get.oh-my.fish|fish2. 设置默认 shell
chsh-s/usr/bin/fish3. 查看命令历史
history4. 搜索命令历史
# 输入部分命令后按上下箭头# 或使用 Ctrl+R5. 目录跳转
cd~/Documentscd..# 返回上级目录cd-# 返回上一次所在目录6. 管道和重定向
ls-la|grep".txt">output.txt7. 后台执行
sleep10&与 bash 的区别
| 特性 | fish | bash |
|---|---|---|
| 语法 | 简洁直观 | 传统语法 |
| 自动建议 | 内置支持 | 不支持 |
| 语法高亮 | 内置支持 | 需要插件 |
| 数组 | 原生支持 | 有限支持 |
| 变量赋值 | set var value | var=value |
| 条件判断 | if test ... | if [ ... ] |
| 兼容性 | 不完全兼容 | 完全兼容 |
相关命令
| 命令 | 说明 |
|---|---|
bash | Bourne-Again Shell |
sh | Bourne Shell |
zsh | Z Shell |
csh | C Shell |
tcsh | TENEX C Shell |
注意事项
- 安装:部分系统需要先安装 fish(
apt install fish或dnf install fish) - 语法差异:fish 的语法与 bash 不同,需要学习新语法
- 兼容性:bash 脚本可能需要修改才能在 fish 中运行
- 配置文件:配置文件位于
~/.config/fish/ - 插件管理:建议使用 Oh My Fish 管理插件
总结
fish是一款用户友好的 Unix shell,以其简洁的语法、自动建议和语法高亮等特性而闻名。它适合新手学习,也能满足高级用户的需求,通过配置和插件可以打造个性化的开发环境。