如何把文字導到stdin - Linux

Table of Contents

sftp 的 man page 提到可以先把 sftp 的指令寫到檔案中

然後用 -b 使 sftp 執行該檔案中的指令

當 -b 後接的檔名為 - 時 表示用 stdin 當做要執行的檔案

$ cat sftp.txt
get .bashrc

$ sftp -b sftp.txt user@host
sftp> get .bashrc
Fetching /root/home/user/.bashrc to .bashrc

$ sftp -b - user@host
get .bashrc => 這行是手打的(stdin)
sftp> get .bashrc
Fetching /root/home/user/.bashrc to .bashrc
exit
sftp> exit

--

我想問的是

如何把 'get .bashrc' 寫在 'sftp -b - ...' 的指令中

而不需準備一個 sftp.txt 或是從 stdin 手動輸入 'get .bashrc'

我猜指令大概長這樣(這是舉例 實際上沒用):

sftp -b - user@host << 'get .bashrc'

(然後弄成alias 之後要呼叫就方便多了)

上網查很久 但實在是找不到做法

希望有人可以教一下 十分感謝~


其實我想過用scp

但 scp 傳一次檔案都要登入 server 一次

傳多少次就要登入多少次server

比起 sftp 來說會花更多時間 (雖然就單次傳檔來說 scp 較快)

我知道可以用 wildcard 或把檔案 tar 起來再傳

但檔名不太規則 wildcard不適用

加上 tar 檔案也是要花不少時間的

所以可以的話還是希望用sftp

wget就不用考慮了 因為檔案不是放在網路空間

--

All Comments

Daniel avatarDaniel2011-03-12
echo "get .bashrc" | sftp -b - user@host 可以嗎?
Damian avatarDamian2011-03-14
tar 可以選擇不要壓縮..