bash에서 '~'와 같은 사용자 정의 "디렉토리 별명"을 만들 수 있습니까?


11

bash에서 나는 나의 홈 디렉토리로 갈 수 cd ~있고 실제로 어떤 명령 으로든 내 홈 디렉토리를 참조 할 수있다 ~.

새로운 "사용자 정의"디렉토리 별명 (?)을 만들어 다른 디렉토리를 참조 할 수 있습니까? 가상의 예 :

make_alias "~~" /mnt/photon/work/foo_project/

cp ~/home.png ~~/set_8/home_4.png

그렇다면 어떻게 할 수 있습니까? 그것이 가능하지 않다면, 그것은 의도적으로 설계된 것이고, 왜 그렇습니까?

Nice to have : ~이 "~"에 설정되고 바인딩되는 장소와 방법 은 무엇입니까?


1
특별히 도움이되는 것은 아니지만 , ZSH에서는 글로벌 별칭 을 사용할 수 있지만 BASH에서는 사용할 수 없습니다. : 별칭 -g ~~ = '/ mnt / photon / work / foo_project /'
SuperMagic

1
@SuperMagic : 전 세계 별칭도 좋아합니다. 그러나 두 번째 예제 (cp ~~ / set ...)에서는 실패합니다. : 명명 된 디렉토리는 더 적합 n=/mnt/photon/work/foo_project하고 cp foo ~n/bar. (OP를위한 참고 사항 : 또한 zsh로 제한됨).
mpy

1
@ 올리버 잘츠부르크 : 저는 이것이 중복 된 것으로 생각하지 않습니다. 다른 질문은 단일 문자 재 매핑 ( @또는 _) 에 대해 묻습니다 . bash에서는 가능하지 않지만 ~~확실히 (해킹은 가능하지만) 가능합니다. 또한이 매핑이 어떻게 수행되는지에 대해서는 답변하지 않습니다.
Dennis

관련 질문은 다음과 같습니다. superuser.com/questions/541767
n611x007

답변:


24

물결표 그것은 (단지 같은 배쉬의 쉘 확장의 일부, 별명되지 않습니다 *.txt또는 $((1 + 2))).

Bash 물결 확장 은 다음과 같은 물결표 접두사를 지원합니다.

~            The value of $HOME

~/foo        $HOME/foo

~fred/foo    The subdirectory foo of the home directory of the user fred

~+/foo       $PWD/foo

~-/foo       ${OLDPWD-'~-'}/foo

~N           The string that would be displayed by `dirs +N'

~+N          The string that would be displayed by `dirs +N'

~-N          The string that would be displayed by `dirs -N'

dirs디렉토리 스택을 사용합니다. pushd디렉토리를 사용 하여 디렉토리를 추가 할 수 있습니다 .

특정 질문에 대한 답변 ~~ , 네, 그것을 디렉토리에 매핑하는 것이 가능 합니다. 호출 된 사용자를 만들고 홈 디렉토리로 ~설정 /mnt/photon/work/foo_project/하면됩니다.

sudo useradd '~'
sudo sed -i 's#:/home/~:[^:]*$#:/mnt/photon/work/foo_project:/bin/false#' /etc/passwd

물론 많은 "saner"접근법은 ~/.bashrc명령 을 사용하여 디렉토리를 가리키는 쉘 변수를 정의하는 것 입니다.

foo=/mnt/photon/work/foo_project

을 통해 액세스 할 수 있습니다. $foo평소와 같이 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.