V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
FoolgryWang
V2EX  ›  分享创造

zsh alias 快速持久化

  •  
  •   FoolgryWang · 16 天前 · 1312 次点击

    平时用的是 zsh ,但是 fish 中有个 funcsave 功能很好用,能够把自己在命令行中临时定义的 alias 持久化,于是写了个简单的 shell 函数,实现这个功能

    将以下代码添加到你的 ~/.zshrc 文件中:

    # Function to save a specific alias
    function alias_save {
      # Check if the alias exists
      if alias "$1" > /dev/null 2>&1; then
        # Extract the alias definition and ensure the correct format
        local alias_definition=$(alias "$1" | sed "s/^alias //")
        
        # Append the alias to the ~/.zsh_aliases file with alias prefix
        echo "alias $alias_definition" >> ~/.zsh_aliases
        
        echo "Alias $1 saved to ~/.zsh_aliases"
      else
        echo "Alias $1 does not exist"
      fi
    }
    
    # Function to load aliases
    function load_aliases {
      if [ -f ~/.zsh_aliases ]; then
        source ~/.zsh_aliases
        echo "Aliases loaded from ~/.zsh_aliases"
      else
        echo "No alias file found."
      fi
    }
    
    # Automatically load aliases on shell startup
    load_aliases
    

    重新加载 Zsh 配置文件,自动加载已保存的 alias:

    source ~/.zshrc
    

    使用

    alias b='git status'
    alias_save b # 持久化
    b  # 运行 'git status'
    
    

    https://github.com/foolgry/zsh_alias

    12 条回复    2024-06-07 21:14:24 +08:00
    ShineyWang
        1
    ShineyWang  
       16 天前
    交互式命令行工具我用的 navi
    https://github.com/denisidoro/navi

    这也可以持久化命令
    FoolgryWang
        2
    FoolgryWang  
    OP
       16 天前
    @ShineyWang #1 大佬!!!你这个是很完整的工具,我这个就是简单的脚本,自己玩玩
    FoolgryWang
        3
    FoolgryWang  
    OP
       16 天前
    @ShineyWang #1 很久之前就 star 了
    YzSama
        4
    YzSama  
       16 天前
    我倒是想要个输入 alias ,提示原来的指令提示功能。
    类似 warp 终端一样的显示
    vvhy
        5
    vvhy  
       16 天前
    不想手动编辑 zshrc ,能把这个 function 自动 save 一下吗🤔
    FoolgryWang
        6
    FoolgryWang  
    OP
       16 天前
    @vvhy #5 也不是不行,这两天有空了整一下,弄好了回复你
    FoolgryWang
        7
    FoolgryWang  
    OP
       16 天前
    @YzSama #4 提示这块没搞过,简单看的话 alias |grep xxx 就可以
    molezznet
        8
    molezznet  
       16 天前
    原来 fish 还有 funcsave 这个功能, 学习下学到了
    FoolgryWang
        9
    FoolgryWang  
    OP
       14 天前   ❤️ 1
    @vvhy #5 搞好了,安装脚本在这里 https://github.com/foolgry/zsh_alias/blob/main/install.sh

    可以使用 wget 或者 curl 一条命令安装,任意一个都可以
    sh -c "$(curl -fsSL https://raw.githubusercontent.com/foolgry/zsh_alias/main/install.sh)"
    sh -c "$(wget -qO- https://raw.githubusercontent.com/foolgry/zsh_alias/main/install.sh)"
    vvhy
        10
    vvhy  
       14 天前
    @FoolgryWang #9 脚本里多了一个\n
    FoolgryWang
        11
    FoolgryWang  
    OP
       13 天前
    @vvhy #10 那是加一个换行,不影响使用,不想要的话也可以去掉,我在 mac 测试没问题,其他环境还没测试
    vvhy
        12
    vvhy  
       13 天前
    @FoolgryWang #11 在 arch 上会多"\n"两个字符,有点奇怪,另一台设备却没问题哈哈
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3612 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 05:14 · PVG 13:14 · LAX 22:14 · JFK 01:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.