$VARIABLE 없이 문자열을 대체하려면 bash cli에서 별명을 생성하세요.

$VARIABLE 없이 문자열을 대체하려면 bash cli에서 별명을 생성하세요.

$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는 스크립트에 따라 다릅니다. 서버에 연결을 시도하면 작동할 수도 있습니다. r1string 으로 확장 해야 하는 경우에는 remote_server_1그렇지 않습니다.

답변3

그러한 메커니즘은 없습니다. 별칭은 이를 수행할 수 있지만 변수처럼 작동하지 않습니다. 변수 확장을 표시해야 합니다 $(입력이 많지는 않습니다).

그러나 특히 호스트 이름은 다양한 방법으로 별칭을 지정할 수 있습니다.

  1. 통과하다/etc/host

    $ip|$target_hostname $hostalias
    
  2. 지정된 사용자 수준 호스트 파일을 통해export HOSTALIASES=$the_hostfile

    $hostalias $ip|$target_hostname
    
  3. 통과하다dns

  4. SSH 구성 파일('~/.ssh/config')을 통해(Ssh에만 해당):

    Host $hostalias
       HostName $target_hostname
    

관련 정보