仅当目录是 $HOME 的子目录时,当我 cd 进入该目录时自动列出该目录的内容

仅当目录是 $HOME 的子目录时,当我 cd 进入该目录时自动列出该目录的内容

从 Reddit 线程中,我发现了这个简短的片段,您可以将其添加到自动显示您已进入的.bashrc目录的内容列表中:cd

cd() {
    builtin cd "$@" && ls
}

虽然这很棒,但我希望只有当我cd进入的文件夹是$HOME.有什么办法可以做到吗?

答案1

ls仅当当前目录(成功更改后)是用户的主目录或其子目录时,才会执行以下命令:

cd () {
    builtin cd "$@" || return

    case $PWD in
        "$HOME"|"$HOME"/*) ls
    esac
}

或者,使用 a[ ... ][[ ... ]]test in bash

cd () {
    builtin cd "$@" || return

    if [ "$PWD" = "$HOME" ] || [[ $PWD == "$HOME"/* ]]; then
        ls
    fi
}

或者,使用扩展的通配模式bash

cd () {
    builtin cd "$@" || return

    if [[ $PWD == @("$HOME"|"$HOME"/*) ]]; then
        ls
    fi
}

相关内容