进入文件夹时设置临时 bash 别名

进入文件夹时设置临时 bash 别名

有时我喜欢在进入文件夹时使用非常定制的 bash 别名和键绑定(可以是我习惯从 CLI 输入大量命令的项目)。

假设当我输入像“projectAlpha/”这样的文件夹时,我期望一些自定义别名,例如:

  • alias doTaskX='./app arg1 arg2...|filter arg1 arg2...'
  • ...

我想到的还不止这些:

  • 显示一条有用的消息,显示别名和常用命令
  • 显示我的项目的一些常见自定义键绑定

但是一旦我离开项目的根目录,这些设置就变得不可用。

今天最好的方法是什么?

答案1

Bash 有一个特殊的变量,PROMPT_COMMAND每次都会执行该变量的内容命令被执行,所以可以如下设置:

PROMPT_COMMAND='[[ "$PWD" = /tmp ]] && { alias ll=ls; echo "Remember: ll=ls"; } || { unalias ll 2>/dev/null; }'

从现在开始,每次您进入目录时都会创建/tmp别名,而在所有其他目录中它将被删除。ll


可能更实际的是将所有别名和其他内容收集在一个函数中(例如makealias),并将所有非别名收集在另一个函数中makeunalias,您可以根据需要运行该函数,例如

PROMPT_COMMAND='[[ "$PWD" = /tmp ]] && makealias || makeunalias 2>/dev/null'

请注意,stderr 重定向的存在只是为了防止在这种情况下出现一些无用的警报。

相关内容