当前位置: 首页 > 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.rkmt.cn/news/1447750.html

相关文章:

  • V2X车联网如何重塑城市交通新生态
  • 手把手教你用Farrow结构在Matlab里实现任意倍率的采样率变换(附完整代码)
  • AI内容复制到WPS乱码?DS随心转一键保留数学化学公式,零手动调整 - 【DS随心转】
  • 可视门铃的声学困境与突围:A-29P 在楼宇对讲中的深度适配
  • 3步解锁《Honey Select 2》完整体验:终极游戏增强补丁指南
  • Arduino交通灯控制器:从硬件连接到状态机编程的嵌入式入门实践
  • Apollo Save Tool:如何在PS4上安全管理你的所有游戏存档
  • 投票系统哪个好用? - 微信投票小程序
  • 告别Root!用AutoX.js和VSCode插件实现安卓自动化(保姆级连接与调试教程)
  • 北京高性价比全屋定制公司怎么选?7条实用标准 - 资讯快报
  • 宽带耦合器内部结构
  • 2026年重庆短视频运营代运营怎么选?B2B企业获客与品牌破局的完整指南 - 优质企业观察收录
  • 2026年贵阳全屋定制装修品牌深度横评:从毛坯房到精装改造的一站式解决方案 - 精选优质企业推荐官
  • Multi-Agent框架选型实战:LangGraph vs CrewAI vs AutoGen,生产项目怎么选?
  • 端午节十佳龙舟队网络投票评选活动该怎么做?|完整搭建教程 - 微信投票小程序
  • 微信商城搭建有哪些平台?开店前要了解哪些问题? - FaiscoJeff
  • 苏州然鼎装饰企业全景分析|资质、口碑、报价、工地、售后全梳理 - 速递信息
  • AI营销集成不是选型题,是生存题:92%的市场团队因工具孤岛导致ROI下滑超40%,今天必须重构
  • Simulink实战:手把手教你搭建双三相电机VSD模型(附避坑指南)
  • 3步搞定网络测速:Windows版iperf3下载安装与实战指南
  • 电路设计与制作全流程:从原理到PCB实战指南
  • 2026年重庆AI运营代运营服务商深度对比:如何精准选择企业全网营销合作伙伴 - 优质企业观察收录
  • 2007-2014年工企与税调数据匹配结果(新增去重操作)
  • 别再让Excel拖后腿了:用APS系统搞定多品种小批量生产排程的实战指南
  • 解锁AMD锐龙隐藏性能:SDT调试工具完全指南 [特殊字符]
  • 避坑指南:在UE中用样条线做实时测距,这几个蓝图节点顺序和Actor生命周期问题你遇到了吗?
  • 告别Anaconda臃肿安装!用Miniconda+PyCharm打造轻量级Jupyter开发环境(Windows保姆级教程)
  • 如何永久保存微信聊天记录:WeChatMsg完全免费终极指南
  • 树莓派与OctoPrint集成:打造BMO主题3D打印控制终端
  • 终极Redis可视化管理指南:5分钟掌握Tiny RDM完整教程