我有以下文件夹结构:
alpha
src
doit.py
beta
src
doit.py
gama
src
doit.py
Run Code Online (Sandbox Code Playgroud)
和命令
python ../../doit.py --clean --add_source inner
Run Code Online (Sandbox Code Playgroud)
我想创建一个别名, 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
Run Code Online (Sandbox Code Playgroud)
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 "$@"
}
Run Code Online (Sandbox Code Playgroud)
这会将变量dir设置为 string alpha,beta或gamma取决于当前工作目录,或者如果当前目录在其他地方,则抱怨您位于错误的目录树中。
然后它运行 Python 脚本,利用该$dir值和--clean选项,并添加您传递给函数的任何其他参数。
您可以将这个 shell 函数的定义添加到您通常添加别名的任何地方。