在命令“cd production”上显示消息

时间:2009-09-03 04:05:25

标签: linux shell

我希望完成以下任务:

如果我在bash提示符下执行“cd production”,我应该进入目录并显示一条消息“你正在制作中”,以便用户收到警告。

2 个答案:

答案 0 :(得分:8)

不要这样做。 :)

你真正想知道的不是用户是否只是通过cd命令进入'production'目录;你真正想知道的是你是否正在修改生产数据,以及你如何到达那里(cd,pushd,popd,已经从该目录中的父进程打开一个shell)是无关紧要的。

当你在生产目录中时,让你的shell发出令人讨厌的警告更有意义。

function update_prompt() {
  if [[ $PWD =~ /production(/|$) ]] ; then
    PS1="\u@\h \w [WARNING: PRODUCTION] $"
  else
    PS1="\u@\h \w $"
  fi
}
PROMPT_COMMAND=update_prompt

随意用更丰富多彩的东西替换有问题的琴弦。

答案 1 :(得分:4)

您可以在shell上下文中执行以下操作(例如.bashrc)。

xcd() {
    if [[ "$1" == "production" ]] ; then
        echo Warning, you are in production.
    fi
    builtin cd $1
}
alias cd=xcd

这会创建一个函数,然后将cd命令别名到该函数。函数本身提供警告,然后调用真实的cd

然而,更好的解决方案可能是检测真实路径,因为您要求的解决方案会为"cd $HOME ; cd production"提供误报并为"cd /production/x"提供误报(如果{{1}确实是危险区域。)

我会做类似的事情:

/production

允许您将顶级危险目录配置为绝对路径。