当前位置: 首页 > news >正文

fish与bash的差别

🏗️ Bash 核心语法与特性总结(POSIX 标准代表)

  • 基础语法与变量
    • 变量赋值: 绝对不能有空格name="test"
    • 命令替换: 支持 $() 或反引号 ``。current_dir=$(pwd)
    • 导出环境变量: 使用 exportexport PATH="/usr/bin:$PATH"
  • 数据结构(数组)
    • 定义与引用: 语法较为繁琐,索引从 0 开始arr=(a b c); echo ${arr[0]}
    • 获取全部元素: 使用 @ 符号。echo ${arr[@]}
  • 控制流(If / For / Function)
    • 条件判断: 依赖 [[[,必须以 then 开头,fi 结尾。if [ $a -gt 10 ]; then echo "yes"; fi
    • 循环语句: 需要 dodone 关键字。for i in 1 2 3; do echo $i; done
    • 函数定义: 使用 () 块,参数通过 $1, $2 隐式获取。hello() { echo "hi $1"; }
  • 拓展进阶特性
    • 逻辑运算符: 使用传统的 &&(与)和 ||(或)。mkdir new_dir && cd new_dir
    • 状态码获取: 使用 $? 获取上一条命令的退出状态。echo $?
    • 字符串切片: 支持原生的复杂字符串裁剪。var="hello_world"; echo ${var:0:5}(输出 hello)

🐠 Fish 核心语法与特性总结

  • 基础语法与变量
    • 变量赋值: 必须使用 set 关键字,空格分隔set name "test"
    • 命令替换: 极简,直接用纯括号 ()set current_dir (pwd)
    • 导出环境变量: 使用 set -xset -x PATH "/usr/bin" $PATH
    • 路径追加助手: 独有命令,自动去重。fish_add_path /usr/local/bin
  • 数据结构(真正的列表)
    • 定义与引用: 变量本质皆列表,索引从 1 开始set files a.txt b.txt; echo $files[1]
    • 负数索引: 支持倒数获取元素。echo $files[-1](输出最后一个元素)
  • 控制流(If / For / Function)
    • 条件判断: 纯自然语言,不需要 then,统一用 end 结尾。if test $a -gt 10; echo "yes"; end
    • 数学直接运算: 条件判断支持直接写符号。if test $a > 10; echo "yes"; end
    • 循环语句: 不需要 do,统一用 end 结尾。for i in 1 2 3; echo $i; end
    • 函数定义: 使用 function 关键字,参数通过 $argv 列表获取。function hello; echo "hi $argv[1]"; end
  • 拓展进阶特性
    • 逻辑运算符: 推荐使用自然语言 andor 分行写。mkdir new_dir; and cd new_dir
    • 状态码获取: 使用 $status,可读性更强。echo $status
    • 事件监听机制: 函数可绑定系统事件(如切换目录)。function on_cd --on-variable PWD; echo $PWD; end
    • 别名永久保存: 独有命令,无需手动写配置文件。alias ll="ls -l"; funcsave ll

配置文件差异

Bash配置文件

  • ~/.bashrc(非登录交互)
  • ~/.bash_profile(登录交互)

Fish 配置文件

  • 主配置:~/.config/fish/config.fish(类似 .bashrc
  • 函数:~/.config/fish/functions/
  • 补全:~/.config/fish/completions/
  • 无需手动 source,修改后自动生效
  • 环境变量直接 set -x 永久保存:set -Ux JAVA_HOME /usr/lib/jvm/default-U = 全局,重启不丢失。

使用oh-my-fish设置界面

下面是我使用的模版:使用Starship中的官方预设主题:Tokyo Night(东京之夜)
alt text

  • Starship
  • Tokyo Night Preset
  • tokyo-night-vscode-theme

下面是实现步骤:

  1. 安装Starshipcurl -sS https://starship.rs/install.sh | sh
  2. 让 fish 接管 Starship:starship init fish | source
  3. 应用 Tokyo Night 预设:starship preset tokyo-night -o ~/.config/starship.toml
  4. 下载字体Nerd Font:其中FiraCode Nerd Font 或 MesloLGS NF比较友好。安装好字体后,给终端或VSCode选择这个字体即可。
  5. 步骤2只是激活了Starship,关闭后再打开设置会失效。
    • 打开你的终端,输入命令编辑配置文件(如果文件不存在,它会自动创建):nano ~/.config/fish/config.fish
    • 使用键盘方向键把光标移动到文件的最末尾,确保里面包含这行接管 UI 的代码:starship init fish | source
    • 按下 Ctrl + O 保存,按回车确认,然后按下 Ctrl + X 退出编辑器。
    • 再次关闭并重新打开终端,看看主题是否自动加载了。

如果你设置了背景,可能模版的字体颜色与背景颜色相近,影响使用,可以在fish_config中修改。

http://www.jsqmd.com/news/936400/

相关文章:

  • V2X车联网如何重塑城市交通新生态
  • 手把手教你用Farrow结构在Matlab里实现任意倍率的采样率变换(附完整代码)
  • 别再乱选预处理器了!Stable Diffusion ControlNet Tile模型三大预处理器实战对比(附WebUI参数设置)
  • SkillOpt:智能体技能优化器
  • 极简安装 OpenClaw,零基础用户 5 分钟快速部署
  • Windows终极指南:让APK文件在资源管理器中显示真实应用图标
  • AI内容复制到WPS乱码?DS随心转一键保留数学化学公式,零手动调整 - 【DS随心转】
  • 高低温试验舱/恒温恒湿/快速温变/三综合/环境/砂尘/淋雨试验箱哪家靠谱?2026年值得合作的5家实力供应商+主流品牌横向评测 - 品牌推荐大师
  • 可视门铃的声学困境与突围:A-29P 在楼宇对讲中的深度适配
  • 3步解锁《Honey Select 2》完整体验:终极游戏增强补丁指南
  • 2026年西安别墅大平层设计师推荐|高端商业空间设计一站式方案 - 企业名录优选推荐
  • Windows平台终极ADB Fastboot驱动一键安装解决方案:告别复杂配置,轻松连接安卓设备
  • Arduino交通灯控制器:从硬件连接到状态机编程的嵌入式入门实践
  • kkFileView4.4.0 安装与使用
  • 基于MicroPython与LINE Notify的物联网设备通知系统开发实践
  • 2026年西安商铺装修设计师推荐|懂商业、懂规范、懂落地的全案设计方案对比指南 - 企业名录优选推荐
  • 2026苏州装修品牌对比测评:十大装修公司口碑榜单与行业趋势洞察 - 资讯速览
  • ApkShellext2:Windows APK文件管理的终极解决方案,让移动应用包一目了然
  • Win7钉子户救星:用VHD在Win10/11主机上无损体验老系统(附避坑指南)
  • Apollo Save Tool:如何在PS4上安全管理你的所有游戏存档
  • Windows HEIC缩略图终极解决方案:3步让iPhone照片在资源管理器中原生预览
  • 投票系统哪个好用? - 微信投票小程序
  • 别再折腾虚拟机了!一个Windows系统搞定两个OneDrive个人账号同步(保姆级教程)
  • 2026年西安商业空间设计师全面评测:从工装全案到酒店民宿的深度选型指南 - 企业名录优选推荐
  • 从零复现 Lovable,其实不难
  • 全双工流畅度的技术基石:A-29P 在双讲场景下的回声消除性能分析
  • 图文并茂|OpenClaw 从零安装,零基础友好教程
  • 告别Root!用AutoX.js和VSCode插件实现安卓自动化(保姆级连接与调试教程)
  • 京东 E 卡回收:盘活闲置资产的简单实用方法 - 团团收购物卡回收
  • 2000-2024年上市公司创业导向指数