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

echo에 sftp별칭 을 추가 하시겠습니까? 즉 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.