防止在 bash 中使用“cd ..”?

防止在 bash 中使用“cd ..”?

我在 .bashrc 中设置了一个别名,如下所示:

alias u='cd ..'

我的世界一切都很好……直到我打字cd ..并感到畏缩,我没有使用我令人难以置信的新别名。事实上,对于这个特殊的事情来说,它是非常根深蒂固的。很难改变我的行为——我需要认真的干预。

因此,我自然地尝试设置另一个别名以防止我使用cd ..

alias 'cd ..'='echo "Use your alias!"'

但这显然行不通。我的想法是,这也可能在某种程度上与u别名冲突,在某种无限循环的别名中。

有任何想法吗?

答案1

任何比为命令提供一些额外参数更复杂的事情对于别名来说都太多了,需要一个函数来代替。用于builtin cd调用原件。

cd () {
  if [ "$*" = ".." ]; then
    echo 1>&2 'Use your alias instead!'
    return 2
  else
    builtin cd "$@"
  fi
}

如果您运行的是 bash ≥4.0,我会质疑这个特定别名的实用性。输入shopt -s autocd您的~/.bashrc, 然后只需键入..或任何其他目录名称即可切换到它。

相关内容