아포스트로피와 따옴표가 포함된 명령에 별칭을 추가하는 방법은 무엇입니까?

아포스트로피와 따옴표가 포함된 명령에 별칭을 추가하는 방법은 무엇입니까?

이전 질문으로 인해 결정했습니다.

alias groe= ?vim -c 'normal "+p1Gdddd"' -c ':%s/\n/' -c 'normal"gVGgJy"' -c'q!'?

내 예제에서 "?s"를 대체하여 작동하게 만드는 방법을 모르겠습니다. 물음표와 아포스트로피가 시도되었습니다. 어떤 아이디어라도 크게 감사하겠습니다. 감사해요

답변1

외부 따옴표를 잃을 수 있도록 쉘 함수로 만드십시오.

groe() {
  vim -c 'normal "+p1Gdddd"' -c ':%s/\n/' -c 'normal"gVGgJy"' -c'q!' "$@"
  }

, , , , , vim매개변수를 사용하여 호출 해야 합니다 . at은 함수에 제공하는 인수를 확장하므로 작동해야 합니다.-cnormal "+p1Gdddd"-c:%s/\n/-cnormal"gVGgJy"-cq!"$@"groe foo.txt

답변2

"내부" 작은따옴표의 경우 외부 작은따옴표를 닫은 다음 이스케이프된 작은따옴표를 추가하고 외부 작은따옴표를 다시 열어 작은따옴표를 얻습니다.

echo 'It'\''s ugly.'

즉, 모든 것이 외부 작은따옴표로 묶 '입니다 .'\''

별칭은 다음과 같습니다.

alias groe='vim -c '\''normal "+p1Gdddd"'\'' -c '\'':%s/\n/'\'' -c '\''normal"gVGgJy"'\'' -c'\''q!'\'''

$'...'또는 작은따옴표를 한 번만 이스케이프하고 문자도 이스케이프하는 C 스타일 이스케이프를 사용할 수 있습니다 \n.

echo $'It\'s a newline: \\n'
alias groe=$'vim -c \'normal "+p1Gdddd"\' -c \':%s/\\n/\' -c \'normal"gVGgJy"\' -c\'q!\''

답변3

MacOS에서는 my에 다음 줄을 입력하면 나중에 명령을 사용할 때만 유용한 별칭을 설정하는 .bash_profile별칭이 제공된다는 것을 알았습니다.logr

alias logr="alias r='java -jar LogUtil.jar -gui'"

모든 새 쉘에 대해 생성한 전체 별칭 주위에 큰따옴표를 사용 ""하지만 별칭은 명령을 실행한 후에만 사용할 수 있습니다.logrrlogr

관련 정보