如何用脚本快速跳转目录

wen 实用脚本 2

本文目录导读:

如何用脚本快速跳转目录

  1. 使用 cd 别名(最简单)
  2. 创建 jump 函数
  3. 使用 Zoxide(推荐)
  4. 使用 Fasd 或 Autojump
  5. 自定义 Bookmark 脚本
  6. 使用 pushd/popd 目录栈
  7. 终极方案:智能跳转脚本
  8. 使用工具组合
  9. 使用建议

使用 cd 别名(最简单)

# 在 ~/.bashrc 或 ~/.zshrc 中添加
alias proj='cd ~/Documents/projects'
alias work='cd /var/www/html'
alias docs='cd ~/Documents'

创建 jump 函数

# 在 ~/.bashrc 或 ~/.zshrc 中添加
jump() {
    case "$1" in
        proj) cd ~/Documents/projects ;;
        work) cd /var/www/html ;;
        doc)  cd ~/Documents ;;
        down) cd ~/Downloads ;;
        desk) cd ~/Desktop ;;
        *) echo "未知目录: $1" ;;
    esac
}

使用 Zoxide(推荐)

# 安装
curl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bash
# 添加别名到 shell 配置文件
eval "$(zoxide init bash)"  # 或 zsh
# 使用
z proj      # 跳转到最经常访问的匹配目录
zi proj     # 交互式选择

使用 Fasd 或 Autojump

# Autojump 安装后使用
j proj      # 基于访问频率跳转
jo proj     # 用文件管理器打开
# Fasd 使用
z proj      # 跳转

自定义 Bookmark 脚本

# 创建书签管理脚本 ~/.bash_bookmarks
bookmark() {
    if [ $# -eq 1 ]; then
        # 保存当前目录书签
        echo "$1 $(pwd)" >> ~/.bookmarks
    elif [ "$1" = "list" ]; then
        # 列出所有书签
        cat ~/.bookmarks
    fi
}
goto() {
    if [ $# -eq 1 ]; then
        cd "$(grep "^$1 " ~/.bookmarks | cut -d' ' -f2-)"
    fi
}

使用 pushd/popd 目录栈

# 快速切换常用目录
cd ~/project1 && pushd
cd ~/project2 && pushd
popd   # 回到 project1

终极方案:智能跳转脚本

# ~/.smart_jump.sh
#!/bin/bash
smart_jump() {
    # 预定义常用目录映射
    declare -A dirs=(
        [proj]="$HOME/Documents/Projects"
        [www]="/var/www/html"
        [logs]="/var/log"
        [config]="/etc"
        [home]="$HOME"
        [tmp]="/tmp"
    )
    # 如果目录在映射中
    if [[ -n "${dirs[$1]}" ]]; then
        cd "${dirs[$1]}"
        echo "→ 已跳转到: $(pwd)"
        return
    fi
    # 搜索最近访问的目录
    if command -v fzf &>/dev/null; then
        cd "$(z -l | fzf | awk '{print $2}')"
    fi
}
# 绑定快捷键(Ctrl+j)
bind '"\C-j": "smart_jump\n"'

使用工具组合

# 配置 .bashrc
# 组合 fzf + zoxide
fz() {
    local dir
    dir=$(z -l | fzf --height 40% --preview 'ls {}')
    if [ -n "$dir" ]; then
        cd "${dir#*  }"
    fi
}

使用建议

  1. 最快速方案:直接用 alias 最快速
  2. 最智能方案:zoxide 或 autojump
  3. 最可定制:写个自己的函数

选择适合自己的方法,能大大提高工作效率!

抱歉,评论功能暂时关闭!