Bash에서 별칭에 추가 인수를 포함시키지 않는 방법은 무엇입니까?


10

나는 같은 것을하려고합니다.

alias ftp='echo do not use ftp. Use sftp instead.'

바로 그래서 ftp실수로 사용되지 않습니다. 그러나 나는

ftp abcd.com

명령이 에코됩니다

do not use ftp. Use sftp instead. abcd.com

abcd.com대한 인수로 간주 되기 때문 입니다 echo.

Bash abcd.com가 대체에 추가하지 않거나 추가 echo인수로 사용 하지 않는 방법이 있습니까? (각 접근법마다 해결책이 있습니까?)

나는 그것을 만들 수 있다고 생각

alias ftp='sftp'

그러나 나는 명령을 모두 멈추게하여 사용하지 말 것을 상기시키고 자한다 ftp.


3
대체로 ftp다른 방식으로 금지 할 수 있지만, 원하는 경우 printf대신 사용하십시오 echo:printf "Do not use ftp. Use sftp instead.\n\c"
Costas

echosftp별칭 을 추가 하시겠습니까? 즉 alias ftp='echo "Do not use ftp"; sftp'. 를 사용하면서 미리 알림을 받게됩니다 sftp.
Josh Jolly

@JoshJolly 난 그냥 내가 지속적으로 사용하지 않는 생각 나게됩니다 "를 통해 항해"에시키는 대신에 모두 함께 중지 명령을 만들고 싶었다ftp
nonopolarity

1
별칭은 매우 간단합니다. 그것들은 단순한 문자열 치환에 지나지 않습니다 (1) 대체는 명령 문자열의 시작 부분에서만 발생하고 (2) 비 재귀 적이라는 추가 제한 사항이 있습니다. 별명 자체의 정의를 넘어서 별명이 작동하는 방식을 "구성"하는 방법은 없습니다.
Kyle Strand

죄송합니다. 별칭 재귀 적입니다. 내가 무슨 생각을했는지 모르겠다.
Kyle Strand

답변:


18

별칭을 정의하면 설정 한 명령이 사용자가 작성한 별칭 대신 실행됩니다. 이것은 당신이 실행할 때 ftp abc.com실제로 실행되는 것은

echo do not use ftp. Use sftp instead abc.com

간단한 해결책은 별명 대신 함수를 사용하는 것입니다.

ftp(){ echo 'do not use ftp. Use sftp instead'; }

또는 printfCostas가 제안한대로 사용할 수 있습니다 .

alias ftp="printf 'do not use ftp. Use sftp instead\n'"


9

#별칭 문자열 끝에 공백과 주석 문자 를 넣으십시오 .

alias ftp='echo do not use ftp. Use sftp instead. #'
ftp abcd.com
do not use ftp. Use sftp instead.

그러면 매개 변수가 주석으로 처리됩니다. 공간을 추가하기 전에 공백을 추가하는 것을 잊지 마십시오. #그렇지 않으면 별명 확장 후 별도의 토큰으로 해석되지 않습니다.

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