다음 명령은 sftp
한 줄 을 사용하여 하나의 명령을 보냅니다 .
sftp -o PasswordAuthentication=no user@host" <<<"lcd /home"
sftp
한 줄 을 사용하여 여러 줄을 보내는 방법 캐리지 리턴을 삽입하거나이를 달성하기위한 방법이 있습니까? 예를 들면 다음과 같습니다.
sftp -o PasswordAuthentication=no user@host" <<<"lcd /home\n cd /myhome\n get file"
sftp -b
외부 파일 나열 명령이로드 되는 옵션을 사용하지 않는 것이 좋습니다 .
답변
here-string ( <<<
) 구문에서 쉘이 같다고 생각 bash
하므로 백 슬래시 이스케이프 문자 ( $''
) 와 함께 문자열을 사용할 수도 있습니다 .
sftp -o PasswordAuthentication=no user@host <<< $'lcd /home\n cd /myhome\n get file'
휴대용 대안은 다음과 같습니다.
sftp -o PasswordAuthentication=no user@host <<END
lcd /home
cd /myhome
get file
END
답변
-b/--batchfile
적절한 오류 처리를 하려면 옵션을 사용하십시오 .
printf '%s\n' 'lcd /home' 'cd /myhome' 'get file' | sftp -b - user@host
답변
예, 당신은 사용할 수 있습니다 echo -e
echo -e "lcd /home\ncd /myhome\nget file" | sftp user@host
답변
-b
배치 파일을 디스크에 쓰는 것을 피하는 옵션을 피할 필요는 없습니다 . 사용 공정 대체하는 것은 당신이 즉시 일괄 처리를 생성 할 수 있습니다.
batch() {
echo lcd /home
echo cd /myhome
echo get file
}
sftp -b <(batch) -o PasswordAuthentication=no user@host
답변
기본 sftp 명령 사용
sftp -o PasswordAuthentication = 사용자 @ 호스트 없음 : / home / myhome / file
답변
Mybru, 다음과 같이 명령을 mos 파이프 할 수 있습니다.
echo '
lcd /home
cd /myhome
get file
' | sftp -o PasswordAuthentication=no user@host