2013-02-20 19 views
5

Patrzę na niektórych starych skryptów powłoki i jest linia, że ​​nie bardzo rozumiem:Co oznacza opcja -b zrobić w SFTP

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

widzę od człowieka plik, który - b jest dla wsadu, a argument ma być plikiem wsadowym.

W tym przypadku wygląda na to, że plik wsadowy powinien znajdować się na/dev/fd/3 - dyskietce? Nie mogę się do tego dostać.

Jakieś pomysły, co to ma zrobić?

Odpowiedz

3

Pliki "/dev/fd*" są urządzeniami specjalnymi. To nie zajmuje tak dużo miejsca w twoim systemie. Pozwalają procesowi na dostęp do deskryptorów plików według numeru; 0,1,2 są standardowe input, standard output i standard error i inne otwarte pliki zacząć 3

W twoim przypadku sftp użyciu -b czytać polecenia ze /dev/fd/3

Przykład:

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

można odczytać dane przy użyciu read polecenie

[[email protected] fd]# read -u 3 a b 
[[email protected] fd]# echo $a $b 
nameserver 10.10.10.10 

wyjście /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 

Uwagi: W twoim przypadku, że plik wejściowy może być różny

3

/dev/fd to właściwie nie stacja dyskietek - "fd" oznacza "deskryptor pliku". Wypróbuj man fd w terminalu.

Ta strona zawiera przegląd tego, co się dzieje: http://lists.apple.com/archives/darwinos-users/2004/Apr/msg00042.html. Zasadniczo, pierwszy plik SFTP zapisuje (prawdopodobnie plik do pobrania?) Jest przekazywany do siebie jako plik wsadowy.

Nie widząc całego skryptu ani nie znając wewnętrznych elementów SFTP, nie mogę dokładnie powiedzieć, co się dzieje. Zgaduję, że istnieje lista plików na serwerze, z którymi łączy się skrypt, a/dev/fd/3 służy do pobierania SFTP w celu pobrania listy, a następnie pobrania plików bez ponownego łączenia.