이 질문은 중복되지 않습니다.별칭이 bash 명령을 직접 실행하는 것과 다르게 동작하는 이유는 무엇입니까?왜냐하면 나는 이미 성공하지 못한 채 그 해결책을 시도했기 때문입니다. 모든 작은따옴표를 큰따옴표로 바꾸었고 그 반대도 마찬가지였습니다. 이 명령은 둘 다 수행하지 않습니다.
sys
시스템 변경 사항을 추적하고, sys.md
날짜를 추가하고, 줄을 가져와서 붙여넣고, -
마크다운 h2 형식으로 바꾸고, 새 줄을 열고, 하나를 -
마크다운으로 삽입하는 파일을 여는 별칭을 구현하려고 합니다. 총알 형식. vi.stackexchange.com에서 이 명령을 구현하는 데 도움을 받았습니다. 효과가있다:
nvim +'$pu_|r!date' +'norm yypVr-o ' ~/notes/sys.md
작은따옴표를 큰따옴표로 바꾸면 $pu_가 평가되어 다음과 같은 결과를 얻습니다.
zsh: event not found: date
그래서 작은 따옴표가 중요합니다. 그러나 별칭을 구현할 때
alias sys="nvim +'$pu_|r!date' +'norm yypVr-o- ' ~/notes/sys.md"
별칭이 실패했습니다. nvim
열리지만 날짜가 맨 아래가 아닌 두 번째 행에 추가됩니다. 분명히 $pu_는 BASH에서 변수로 평가되고 있습니다. ( nvim
구문 검사기는 그것이 평가되고 있음을 보여줍니다.) 이중 및 단일을 반전하여 생성
alias sys='nvim +"$pu_|r!date" +"norm yypVr-o- " ~/notes/sys.md'
같은 행동을 합니다. 백틱,
alias sys=`nvim +"$pu_|r!date" +"norm yypVr-o- " ~/notes/sys.md`
bash를 고정하세요 source .zshrc
. 어떻게 진행해야 할지 모르겠습니다. 어떤 도움이라도 대단히 감사하겠습니다.
답변1
bash 함수에 넣기만 하면 됩니다(에 함수를 추가할 수 있음 .bashrc
).
sys() {
nvim +'$pu_|r!date' +'norm yypVr-o ' ~/notes/sys.md
}
그런 다음 별칭처럼 호출할 수 있습니다.
답변2
유일한 문제가 single quote
작은따옴표 문자열에 문자를 포함하는 방법을 이해하는 것이라면 방법은 다음과 같습니다. 사용:
'\''
작은따옴표로 묶인 문자열 내의 문자 에 사용됩니다 single quote
.
이는 현재 인용 문자열을 종료하고 인용 문자열을 삽입한 다음 새 인용 문자열을 시작합니다.
참고: 이는 일반적인 문제이므로 bosh
이 변환을 자동화하는 방법이 제공됩니다. 이를 가져와 schilytools
컴파일한 후 다음 bosh
을 호출하면 사용할 수 있습니다.
set -o hashcmds
#b aliasname aliasreplacement
나중에 호출하면 패턴에 값이 aliasreplacement
입력됩니다 .raw
alias aliasname
다음을 입력하면 별칭이 올바르게 인용된 형식으로 나타나는 것을 볼 수 있습니다.
alias -R aliasname
raw
스키마에 별칭이 표시됩니다.