有时,当我进入一个文件夹(可以是一个我习惯于从 CLI 键入大量命令的项目)时,我喜欢使用非常自定义的 bash 别名和键绑定。
让我们假设当我输入像“projectAlpha/”这样的文件夹时,我希望有一些自定义别名,例如:
alias doTaskX='./app arg1 arg2...|filter arg1 arg2...'
比我想到的更多:
但是一旦我离开项目的根目录,这些设置就变得不可用。
今天最好的方法是什么?
jim*_*mij 15
Bash 有一个特殊的变量PROMPT_COMMAND
,每次执行命令后都会执行其中的内容,因此您可以将其设置如下:
PROMPT_COMMAND='[[ "$PWD" = /tmp ]] && { alias ll=ls; echo "Remember: ll=ls"; } || { unalias ll 2>/dev/null; }'
Run Code Online (Sandbox Code Playgroud)
从现在开始,每次您在/tmp
目录中时,别名ll
都会被创建,而在所有其他目录中,它会被删除。
可能更实用的是在一个函数中收集所有别名和其他内容(例如makealias
),并在另一个函数中收集所有取消别名makeunalias
,您可以根据需要运行,例如
PROMPT_COMMAND='[[ "$PWD" = /tmp ]] && makealias || makeunalias 2>/dev/null'
Run Code Online (Sandbox Code Playgroud)
请注意,存在 stderr 重定向只是为了防止在这种情况下出现一些无用的警报。