我有以下文件夹结构:
alpha
src
doit.py
beta
src
doit.py
gama
src
doit.py
和命令
python ../../doit.py --clean --add_source inner
我想创建一个别名,doit
根据我所在的父文件夹执行相应的文件。
例如:
如果我在内部
alpha
或其中一个子目录中,当我使用时:doit --addsource extra
实际运行:
python /home/alpha/src/doit.py --clean --addsource extra
如果我在内部
beta
或其中一个子目录中,当我使用时:doit --addsource inner
实际运行:
python /home/beta/src/doit.py --clean --addsource inner
答案1
shell 函数会更好地为您服务:
doit () {
local dir
case $PWD/ in
/home/alpha/*) dir=alpha ;;
/home/beta/*) dir=beta ;;
/home/gamma/*) dir=gamma ;;
*) echo 'Not standing in the correct directory' >&2
return 1
esac
python "/home/$dir/src/doit.py" --clean "$@"
}
这会将变量设置dir
为 string alpha
,beta
或者gamma
取决于当前工作目录,或者如果当前目录位于其他位置,则抱怨您位于错误的目录树中。
然后,它运行 Python 脚本,利用该$dir
值和--clean
选项,并添加您传递给该函数的任何其他参数。
您可以将此 shell 函数的定义添加到通常添加别名的位置。
答案2
您可以像下面这样简单地使用它:
alias doit='doit=$(pwd)/src/doit.py;$doit --clean'