명령의 일부로 공백이있는 배시 별명


11

별칭 자체에 공백이있는 bash 별칭을 만들려고합니다.

아이디어는 별칭 (즉, con)을 나타냅니다 sudo openvpn --config /path/to/my/openvpn/configs/. con별명이 사용될 때 읽을 수있는 명령이 발생합니다 .

즉 : `con uk.conf` == `sudo openvpn --config /path/to/my/openvpn/configs/uk.conf`

다음과 같이 별칭을 선언 할 수 없음을 이해합니다 con ="sudo openvpn --config /path/to/my/openvpn/configs/". 이 시나리오에서 bash 함수가 작동합니까? 나는 그것을 들어 본 적이 없지만이 사소한 문제에 대한 해결책을 연구 할 때.

답변:


12

예, 기능을 사용해야합니다. 매개 변수를 추가하려는 경우 별칭이 작동합니다. 별칭에 지정된 모든 인수는 별칭이 지정된 프로그램에 인수로 전달되지만 별도의 매개 변수로 전달됩니다 . 설명하기 위해 :

$ alias foo='echo bar'
$ foo
bar
$ foo baz
bar baz

보다시피, 반향 된 것은 bar baz아니었다 barbaz. 기존 매개 변수에 전달한 값을 연결하려면 다음과 같은 것이 필요합니다.

function com(){ sudo openvpn --config /path/to/my/openvpn/configs/"$@"; }

위에 줄을 추가하면 ~/.bashrc준비가 된 것입니다.


4
후속 인수도 전달되도록 "$@"대신 사용할 수 있습니다 "$1". (일반적인 의견, 여기서는 특정 사례와 관련이 없을 수도 있음)
Toby Speight

@TobySpeight D' oh! 나는 그것을 생각해야했다. 고마워요
terdon

1
@TobySpeight 단지 설명을 위해, 그 의미 하는가 com uk.conf -something else에 번역 것 sudo openvpn --config /path/to/my/openvpn/configs/uk.conf -something else?
TMH

4
@TomHart 예. $@주어진 모든 매개 변수를 포함합니다. $ *와 $ @의 차이점무엇입니까?를 참조하십시오 . .
terdon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.