한 줄을 사용하여 sftp에 여러 명령을 보내는 방법

한 줄을 사용하여 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명령을 나열하는 외부 파일을 로드하는 옵션을 사용하지 않는 것입니다.

답변1

사용 중인 here-string() 구문에서 <<<쉘이 인 것으로 추측하므로 bash백슬래시 이스케이프 문자와 함께 string()을 사용할 수도 있습니다 $''.

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

답변2

-b/--batchfile적절한 오류 처리를 위해 이 옵션을 사용하십시오 .

 printf '%s\n' 'lcd /home' 'cd /myhome' 'get file' | sftp -b - user@host

답변3

네, 사용해도 됩니다echo -e

echo -e "lcd /home\ncd /myhome\nget file" | sftp user@host

답변4

Mybru, 다음과 같이 명령을 파이프할 수 있습니다.

echo '
    lcd /home
    cd /myhome
    get file
' | sftp -o PasswordAuthentication=no user@host

관련 정보