![仅当目录是 $HOME 的子目录时,当我 cd 进入该目录时自动列出该目录的内容](https://linux22.com/image/214315/%E4%BB%85%E5%BD%93%E7%9B%AE%E5%BD%95%E6%98%AF%20%24HOME%20%E7%9A%84%E5%AD%90%E7%9B%AE%E5%BD%95%E6%97%B6%EF%BC%8C%E5%BD%93%E6%88%91%20cd%20%E8%BF%9B%E5%85%A5%E8%AF%A5%E7%9B%AE%E5%BD%95%E6%97%B6%E8%87%AA%E5%8A%A8%E5%88%97%E5%87%BA%E8%AF%A5%E7%9B%AE%E5%BD%95%E7%9A%84%E5%86%85%E5%AE%B9.png)
从 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
}