별칭을 사용하고 계속 사용하세요.

별칭을 사용하고 계속 사용하세요.

내가 이 별칭을 가지고 있다고 가정해 봅시다..bashrc

alias somedir="cd /var/www/site"

somedir... 명령을 어떻게 사용합니까 cd?

예를 들어

cd somedir/app/

현재 이렇게 하면 다음이 반환됩니다.

-bash: cd: somedir/app: 해당 파일이나 디렉터리가 없습니다.

이런 식으로 별칭을 사용할 수 있습니까?

답변1

셸에는 별칭 없이 이 작업을 수행하는 데 도움이 되는 셸 변수가 bash있습니다 .CDPATH

 $ CDPATH=".:/var/www/site"
 $ cd app
 /var/www/site/app

app이름이 하위 디렉터리 인 경우 doc:

 $ cd app/doc
 /var/www/site/app/doc

CDPATH값 이 이면 .:/var/www/site명령은 cd먼저 현재 디렉토리에서 명령줄에 제공된 디렉토리 경로를 찾고, 찾을 수 없으면 아래를 찾습니다 /var/www/site.

bash매뉴얼 에서 :

CDPATH

명령에 대한 검색 경로입니다 cd. 이는 쉘이 명령에 의해 지정된 대상 디렉토리를 찾는 콜론으로 구분된 디렉토리 목록입니다 cd. 샘플 값은 입니다 ".:~:/usr".

CDPATH일반적으로 이 변수가 bash대화형 세션에서 실행되는 스크립트에 영향을 주지 않기를 원하므로 이 변수를 내보내면 안 됩니다 .

답변2

인용하다편리한 Bash 참조(강조):

Bash 별칭은 본질적으로 키보드 단축키, 약어 및 긴 명령 시퀀스 입력을 방지하는 방법에 지나지 않습니다. ...별칭이 C 전처리기의 일부 기능(예: 매크로 확장)을 사용할 수 있다면 좋겠지만 불행하게도 Bash는 별칭 본문 내에서 인수를 확장하지 않습니다. 또한 스크립트는 if/then 문, 루프 및 함수와 같은 "복합 구조" 내에서 별칭 자체를 확장할 수 없습니다. 또 다른 제한 사항은 별칭이 재귀적으로 확장되지 않는다는 것입니다.거의 항상 별칭으로 수행하려는 작업은 함수를 사용하여 더 효율적으로 수행할 수 있습니다.

귀하의 상황은 독특하지만 CDPATH,코살라 난다(Kosala Nanda)가 대답했듯이, 해당 기능은 다음과 같습니다.

somedir() {
    cd /var/www/site/"${1:-}"
}

이제 다음을 수행할 수 있습니다.

$ pwd
/tmp
$ somedir
$ pwd
/var/www/site
$ somedir app
$ pwd
/var/www/site/app

답변3

별칭은 이와 같이 작동하지 않지만 대신 변수를 사용할 수 있습니다.

somedir="/var/www/site"
cd "$somedir/app"

정당한 신용으로여우그리고로로머신댓글로 추천해주세요


일부 키 입력을 저장하려면 별칭을 설정할 수 있습니다.

alias somedir='cd "$somedir"'

또는 활성화하는 경우 다음 명령과 같이 변수를 제공 autocd할 수 있습니다 .cd

~$ shopt -s autocd
~$ "$somedir"
/var/www/site$ 

관련 정보