쉘 명령에 별칭을 인수로 전달하는 방법

쉘 명령에 별칭을 인수로 전달하는 방법

이렇게 별칭을 설정했습니다.

alias X='`xclip -o --selection primary`'

이제 이는 클립보드 값을 에코하려는 경우 매우 유용합니다. 그러나 나는 그것을 다른 명령에 대한 인수로 사용할 수 있기를 정말로 원합니다.

ssh X

나는 또한 그것을 함수로 만들려고 노력했지만 그것도 작동하지 않는 것 같습니다. 나는 그것을 문자열로 저장하고 실행할 수 있다고 생각 ssh $(X) 하지만 비슷한 구문은 피하고 싶습니다.

지금까지 살펴본 바에 따르면 매개변수는 전혀 확장되지 않고 처음 입력한 항목에서만 작동하는 것 같습니다.

나는 그것이 가능하다는 것을 알고 있지만 alias X="ssh xclip..."ssh뿐만 아니라 모든 명령에 대해 작동하기를 원합니다.

그래서 질문은 명령 인수일 때 단일 문자를 확장하는 방법이라고 생각합니다.

답변1

별칭에서 사용할 수 있는 명령을 먼저 정의해야 하지만 까다로운 작은 해결 방법을 사용하여 별칭을 연결할 수 있습니다.

널리 알려지지 않았을 수도 있지만 저 같은 분이 계시다면

alias chx='chmod +x'

그런 다음 실행을 시도 sudo chx하면 sudo: chx: command not found.

하지만. 제공하는 경우

alias sudo='sudo '
alias chx='chmod +x'

sudo이제 다른 별칭이 첫 번째 인수인 한 이 별칭과 다른 별칭을 사용할 수 있습니다 .


이 클립보드를 가장 많이 사용하려는 프로그램에 적용할 수 있습니다. 제공한 예제가 작동하려면 다음과 같이 하십시오.

alias ssh='ssh '
alias X='`xclip -o --selection primary`'

답변2

ssh `X` 

별칭 X를 실행하고 해당 출력을 ssh(또는 다른 명령)에 입력 인수로 전달할 것으로 예상되는 작업을 수행해야 합니다.

또한 다음을 사용할 수 있습니다.

X | xargs ssh 

이것은 동일한 작업을 수행합니다

답변3

모든 명령의 출력은 "백틱" 또는 "악센트"를 통해 다른 명령(일반적으로 인수) 내의 어느 위치에나 배치될 수 있습니다. 그게 당신이 묻는 것인가요?

[user@domain]$ alias X='ls'
[user@domain]$ X
file1 file2 file3
[user@domain]$ echo X
X
[user@domain]$ echo `X`
file1 file2 file3

귀하의 질문이 그런 의미인지는 모르겠지만, 제가 읽은 방식은 그렇습니다. 별칭(명령)의 출력은 새 명령 문자열(예제에서는 ssh 호출)에 붙여넣어집니다. 클립보드를 SSH 매개변수로 전송하면 일부 보안 위험이 발생합니다.

관련 정보