$variables 앞에 "$"를 사용하지 않고 일반적으로 사용되는 문자열에 대한 별명을 만들 수 있습니까?
문자열은 고정될 수 있으며 쉘 프롬프트의 수명 동안 변경할 필요가 없습니다.
bash $variables가 있다는 것을 알고 있지만 $variables 앞에 "$"를 사용하지 않는 솔루션을 찾고 있으므로 입력이 더 빠릅니다.
전체 명령을 단축하는 별칭이 있다는 것을 알고 있지만 명령을 단축하고 싶지 않고 명령의 일부만 단축하고 싶습니다.
예를 들어 다음과 같이 바꾸고 싶습니다.
$ ssh remote_server_1
$ scp remote_server_1
$ my_script.sh remote_server_1
$ ssh remote_server_2
$ scp remote_server_2
$ my_script.sh remote_server_2
이것으로:
$ aliasthingy r1="remote_server_1"
$ aliasthingy r2="remote_server_2"
$ ssh r1
$ scp r1
$ my_script.sh r1
$ another_script.sh r1
$ ssh r2
$ scp r2
$ my_script.sh r2
$ another_script.sh r2
다음을 수행하지 마십시오.
$ export r1="build_server_r1"
$ export r2="build_server_r2"
$ ssh $r1
$ scp $r1
$ my_script.sh $r1
$ another_script.sh $r1
$ ssh $r2
$ scp $r2
$ my_script.sh $r2
$ another_script.sh $r2
그 이유는 각 r1 r2 앞에 "$"를 붙이지 않는 것이 앞에 $r1 $r2를 입력하는 것보다 빠르기 때문에 "$"를 제거할 수 있으면 좋을 것 같습니다.
답변1
SSH의 특정 사용 사례의 경우 별칭은 다음과 같습니다.~/.ssh/config
가는 길입니다. 이는 SSH의 호스트 매개변수와 옵션 세트를 줄여서 표현한 것입니다. 이전 항목이 필요하지 않을 뿐만 아니라 $
SSH를 통해 액세스되는 호스트 이름을 호출하지 않는 컨텍스트에서는 사용되지 않으며 SSHFS, rsync 등과 같이 SSH를 통해 액세스 가능한 호스트 이름을 호출하는 다른 컨텍스트에서도 사용됩니다.
Host r1
HostName remote_server_1
UserName vassilis
Host r2
HostName remote_server_2
UserName vp
Host r2test
HostName remote_server_2
UserName guest
실제로 명령줄 별칭이 필요한 다른 사용 사례의 경우 zsh에는 다음과 같이 정의된 전역 별칭이 있습니다.alias -g
. 배쉬에는 그런 것이 없습니다.
alias -g r1=remote_server_1
ssh r1
전역 별칭의 주요 문제점은 의미가 없더라도 모든 곳에서 트리거된다는 것입니다.
% echo r1
remote_server_1
그러나 단어의 일부인 경우 실행되지 않으므로 scp r1:/some/path .
작동하지 않습니다.
셸 명령줄 어디에서나 작동하도록 하려면 변수를 정의한 다음 를 입력하세요 $
. 키보드로 입력하는 것이 정말 어려운 경우 사용하기 쉬운 키에 매핑할 수 있습니다. 예를 들어, M-v
를 삽입 하려면 $
다음 위치에 넣으세요 .bashrc
.
readline_insert () {
READLINE_LINE="${READLINE_LINE:0:$READLINE_POINT}${1}${READLINE_LINE:$READLINE_POINT:}"
((READLINE_POINT += ${#1}))
}
bind -x '\ev: readline_insert \$'
답변2
음, 저장하려는 값이 호스트 이름인 특정 예의 경우에는 가능합니다. 파일을 편집 /etc/hosts
하고 다음 줄을 추가하세요.
build_server_r1 r1
build_server_r2 r2
이제 다음을 실행할 수 있습니다.
ssh r1
scp r1:/path/to/file .
작동 여부 my_script.sh r1
는 스크립트에 따라 다릅니다. 서버에 연결을 시도하면 작동할 수도 있습니다. r1
string 으로 확장 해야 하는 경우에는 remote_server_1
그렇지 않습니다.
답변3
그러한 메커니즘은 없습니다. 별칭은 이를 수행할 수 있지만 변수처럼 작동하지 않습니다. 변수 확장을 표시해야 합니다 $
(입력이 많지는 않습니다).
그러나 특히 호스트 이름은 다양한 방법으로 별칭을 지정할 수 있습니다.
통과하다
/etc/host
$ip|$target_hostname $hostalias
지정된 사용자 수준 호스트 파일을 통해
export HOSTALIASES=$the_hostfile
$hostalias $ip|$target_hostname
통과하다
dns
SSH 구성 파일('~/.ssh/config')을 통해(Ssh에만 해당):
Host $hostalias HostName $target_hostname