
이전 질문의 결과로 나는 다음과 같이 결정했습니다.
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 은 함수에 제공한 매개변수로 확장되므로 제대로 작동합니다.-c
normal "+p1Gdddd"
-c
:%s/\n/
-c
normal"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'"
모든 새 셸에 대해 생성되는 ""
전체 별칭 주위에 큰따옴표를 사용했지만 명령 을 실행한 후에만 별칭을 사용할 수 있습니다 .logr
r
logr