我在看一些老shell腳本和有一條線,我不太明白這樣做:是什麼-b選項在SFTP
~]$ sftp -b /dev/fd/3 [email protected]
我可以從該名男子看到文件 - b用於批處理,並且該參數應該是批處理文件。
在這種情況下,它看起來像批處理文件應該在/ dev/fd/3上 - 一個軟盤驅動器?我似乎無法做到。
任何想法這應該做什麼?
我在看一些老shell腳本和有一條線,我不太明白這樣做:是什麼-b選項在SFTP
~]$ sftp -b /dev/fd/3 [email protected]
我可以從該名男子看到文件 - b用於批處理,並且該參數應該是批處理文件。
在這種情況下,它看起來像批處理文件應該在/ dev/fd/3上 - 一個軟盤驅動器?我似乎無法做到。
任何想法這應該做什麼?
"/dev/fd*"
文件是特殊設備。這些並沒有真正佔用您系統上的太多空間。它們允許進程通過數字訪問文件描述符; 0,1,2
是標準input
,standard output
和standard error
,等打開的文件開始3
在你的情況sftp
使用-b
從/dev/fd/3
讀取示例命令:
[[email protected] fd]# exec 3< /etc/resolv.conf
[[email protected] fd]# cat /dev/fd/3
search example.com
nameserver 10.10.10.10
nameserver 20.20.20.20
可以使用read
讀取數據命令
[[email protected] fd]# read -u 3 a b
[[email protected] fd]# echo $a $b
nameserver 10.10.10.10
輸出/dev/fd
directoy
[[email protected] fd]# ls -l /dev/fd/
total 0
lrwx------ 1 root root 64 Feb 20 14:34 0 -> /dev/pts/0
lrwx------ 1 root root 64 Feb 20 14:34 1 -> /dev/pts/0
lrwx------ 1 root root 64 Feb 20 14:34 2 -> /dev/pts/0
lr-x------ 1 root root 64 Feb 20 14:34 3 -> /etc/resolv.conf
注意事項:在你的情況下輸入文件可以是不同的
/dev/fd
實際上並不是軟盤驅動器 - 「fd」代表「文件描述符」。在終端中嘗試man fd
。
本頁概述了發生了什麼事情:http://lists.apple.com/archives/darwinos-users/2004/Apr/msg00042.html。基本上,SFTP寫入的第一個文件(可能是它下載的文件?)將作爲批處理文件傳回給自己。
沒有看到整個腳本或知道SFTP的內部,我無法確切地知道發生了什麼。我猜想腳本連接到的服務器上有一個文件列表,而/ dev/fd/3用於讓SFTP下載列表,然後下載文件而不重新連接。