다음과 같은 폴더 구조가 있습니다.
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
쉘 기능이 더 나은 서비스를 제공할 것입니다:
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
옵션을 취하고 함수에 전달한 다른 인수를 추가합니다.
일반적으로 별칭을 추가하는 위치에 이 쉘 함수의 정의를 추가할 수 있습니다.
답변2
다음과 같이 간단하게 사용할 수 있습니다.
alias doit='doit=$(pwd)/src/doit.py;$doit --clean'