한 줄을 사용하여 여러 명령을 sftp로 보내는 방법 보내는 방법 캐리지

다음 명령은 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