매개변수를 문자열의 일부로 별칭에 전달

매개변수를 문자열의 일부로 별칭에 전달

어리석은 질문이라면 죄송합니다.

내 작업 공간에는 dir1, dir2, dir3 및 dirzz 4개의 디렉토리가 있습니다. 호출할 디렉터리를 결정하려면 매개변수로 별칭을 설정해야 합니다. 예를 들어

$ gotodir 1

그러면 dir1로 이동해야 합니다.

$ gotodir z

이건 나를 dirzz로 데려가야 해

나는 노력했다 alias gotodir="cd ~/home/user/dir${1}" alias gotodir='cd ~/home/user/dir$1'

하지만 둘 다 오류가 발생합니다

누구든지 도와줄 수 있나요?

답변1

~에서배쉬 매뉴얼 페이지alias섹션의:

대체 텍스트에 매개변수를 사용하는 메커니즘은 없습니다. 매개변수가 필요한 경우 쉘 함수를 사용해야 합니다.

따라서 원하는 것을 수행하려면 함수를 정의하면 됩니다.

gotodir() { cd ~/dir"$1"; }

그런 다음 호출하십시오.

gotodir 1

답변2

기능을 사용할 수 있습니다~에별명:

 alias gotodir='function _gtdir() { cd ~/dir${1} ; } ; _gtdir '

답변3

당신은 " gotodir z나를 dirzz로 데려가야 한다"고 말하는데, 내가 아는 한 지금까지 게시된 답변 중 어느 것도 그렇게 하지 않습니다. 하지만 문자 하나만 변경하면 됩니다.켈룸의 답변:

gotodir() {
        cd ~/dir"$1"*
}

*추가된 와일드카드 문자에 유의하세요 . 이렇게 하면 gotodir z홈 디렉토리의 이름이 다음과 같은 것을 볼 수 있습니다.시작( 있는 dirz경우 디렉토리입니다).

배쉬에서 테스트되었습니다. 이것이 모든 쉘에서 작동하는지 모르겠습니다.

답변4

또 다른 가능성은 CDPATH 변수를 설정하는 것입니다. 여기에는 cd상대 디렉터리로 전환할 때 확인할 쉼표로 구분된 디렉터리 목록이 포함되어 있습니다. 디렉토리 이름이 너무 길면 심볼릭 링크를 사용하십시오.

관련 정보