2013-02-20 39 views
5

मैं कुछ पुराने शेल स्क्रिप्ट पर देख रहा हूँ और वहाँ एक लाइन है कि मैं काफी समझ में नहीं आता है में क्या करता है:क्या बी विकल्प SFTP

~]$ sftp -b /dev/fd/3 [email protected] 

मैं आदमी से देख सकते हैं कि फाइल - बी बैच के लिए है, और तर्क एक बैचफाइल माना जाता है।

इस मामले में, ऐसा लगता है कि बैच फ़ाइल को एक/dev/fd/3 - फ्लॉपी ड्राइव पर होना चाहिए? मैं इसे पाने के लिए प्रतीत नहीं कर सकता।

कोई विचार क्या करना चाहिए?

उत्तर

3

"/dev/fd*" फ़ाइलें विशेष डिवाइस हैं। ये वास्तव में आपके सिस्टम पर उतनी जगह नहीं ले रहे हैं। वे एक प्रक्रिया को फाइल डिस्क्रिप्टरों को संख्या से एक्सेस करने की अनुमति देते हैं; 0,1,2 मानक हैं input, standard output और standard error, और अन्य खुली फ़ाइलों से /dev/fd/3

उदाहरण आदेश को पढ़ने के लिए -b का उपयोग कर 3

के साथ शुरू अपने मामले sftp में:

[[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 
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 

नोट्स

उत्पादन: आपके मामले में इनपुट फ़ाइल अलग हो सकता है कि

3

/dev/fd वास्तव में फ्लॉपी ड्राइव नहीं है - "एफडी" "फाइल डिस्क्रिप्टर" के लिए है। टर्मिनल में man fd आज़माएं।

यह पृष्ठ इस पर एक सिंहावलोकन देता है कि क्या हो रहा है: http://lists.apple.com/archives/darwinos-users/2004/Apr/msg00042.html। असल में, पहली फ़ाइल एसएफटीपी लिखती है (शायद यह फ़ाइल डाउनलोड करता है?) बैच फ़ाइल के रूप में खुद को वापस भेज दिया जा रहा है।

पूरी स्क्रिप्ट को देखे बिना या एसएफटीपी के आंतरिक को जानने के बिना, मैं बिल्कुल नहीं बता सकता कि क्या हो रहा है। मुझे लगता है कि स्क्रिप्ट से जुड़े सर्वर पर फ़ाइलों की एक सूची है, और/dev/fd/3 का उपयोग सूची डाउनलोड करने के लिए SFTP प्राप्त करने के लिए किया जाता है और फिर फ़ाइलों को फिर से कनेक्ट किए बिना डाउनलोड किया जाता है।