나는 약간 다른 매개 변수를 사용하여 일부 긴 명령을 계속해서 사용하고 있습니다. 예를 들어:
rsync -havu --progress --rsh='ssh -l mylogin' some.machine.somewhere:/some/path /some/local/path
zsh
프롬프트에서 명령을 쉽게 삽입한 다음 명령줄을 탐색하여 경로, 호스트 및 로그인에 필요한 변경을 수행할 수 있기 를 원합니다 . zsh 매개변수를 설정했습니다.
FOO="rsync -havu --progress --rsh='ssh -l mylogin' some.machine.somewhere:/some/path /some/local/path"
$FOO
그런 다음 프롬프트에 따라 확장 할 수 있습니다 . 그러나 확장된 명령의 모든 공백과 따옴표는 백슬래시로 이스케이프됩니다. zsh
확장자에 이스케이프 문자를 넣지 않는 방법이 있나요 ?
유사한 명령에 대한 기록을 검색한 다음 편집할 수 있다는 것을 알고 있습니다. 하지만 여전히 각 새 셸에 긴 문자열을 한 번씩 입력해야 합니다. 나는 또한 내 목적을 달성하는 다른 방법에도 열려 있습니다. Python 스크립트 등을 작성할 수 있지만 이는 상당히 간단한 작업에 비해 많은 오버헤드처럼 보입니다.
답변1
자주 변경하는 옵션에 대한 인수를 허용하는 함수를 사용하는 것이 좋습니다. 이를 ZSH 구성에 넣고 대화형으로 실행할 수 있습니다. 예는 다음과 같습니다.
myrsync() {
username=$1
srchost=$2
srcpath=$3
destpath=$4
rsync -havu --progress --rsh="ssh -l $username" "${srchost}:${srcpath}" "$destpath"
}
myrsync mylogin some.machine.somewhere /some/path /some/local/path