防止在 bash 中使用 `cd ..`?

ken*_*nny 4 bash alias

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

alias u='cd ..'

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

所以,我很自然地尝试设置另一个别名来阻止我使用cd ..

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

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

有任何想法吗?

Gil*_*il' 10

任何更复杂的事情,即为命令提供一些额外的参数对于别名来说太过分了,而是需要一个函数。使用builtin cd调用原。

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

如果您正在运行 bash ?4.0,我会质疑这个特定别名的实用性。把shopt -s autocd你的~/.bashrc,并且只需键入..或任何其他目录名来切换到它。