다음을 수행할 수 있습니다.
alias tm=cd /opt/tomcat
alias tmbin=tm/bin
$ tmbin
$pwd
/opt/tomcat/bin
??
나는 내가 할 수 있는 일을 안다:
alias tmbin=tm;cd bin
답변1
간단한 기능을 사용하는 것은 어떻습니까?
# may contain bashisms
function tm () { cd "/opt/tomcat/$1"; }
alias tmbin='tm bin' # if that really is necessary
아니면 좀 더 복잡한 것:
# more configurable
function tm () {
cd /opt/tomcat
case "$1" in
"foo")
# do something funky
;;
"bar")
# do something more funky
;;
esac
}
답변2
실제로 방법이 있지만 내가 찾은 유일한 방법은 약간 복잡합니다. 예를 들어, 내가 무엇을 할 것인지(그런 간단한 별칭에는 권장하지 않지만...)
alias tm="cd /opt/tomcat"
tmp=`alias tm | cut -f2 -d"="`
tmp="${tmp%\'}"
tmp="${tmp#\'}"
alias tmbin="$tmp/bin"
설명하다:
- 먼저, cut과 alias를 사용하여 원래 명령을 별칭에 저장합니다.
- 그런 다음 문자열이 필요하지 않기 때문에 첫 번째와 마지막 "\'"를 제거합니다.
- 그런 다음 원래 별칭을 얻었고 해당 값을 사용하여 새 별칭을 만들 수 있습니다.
제 해결 방법이 전혀 좋지 않은 것 같지만, 혹시 더 좋은 해결 방법이 있으시면 알려주시면 감사하겠습니다 :)
편집: 동일하게 작동하는 더 짧은 솔루션
alias tm="cd /opt/tomcat"
tmp=`alias tm | cut -f2 -d"=" | cut -f2 -d"'"`
alias tmbin="$tmp/bin"
어떤 별칭이라도 확장하는 데 사용할 수 있다는 점을 꼭 말씀드리고 싶습니다. 방금 테스트했는데 작동합니다. 별칭이 길어지면 어떻게 반응할지 모르겠습니다. 별칭이 길고 그 안에 "'"가 많이 포함된 경우 첫 번째 솔루션을 사용하여 첫 번째와 마지막 "'"를 제거하는 것이 좋습니다. 당신한테 달렸습니다. 도움이 되길 바랍니다.
답변3
여기에 좋은 대답이 있습니다스택 오버플로 질문
예를 들어 "-o"를 추가하여 "ls"의 별칭을 확장하려면 다음을 수행합니다.
eval "$(alias -p|grep '^alias ls='|sed "s/'$/ -o'/")"