2013-02-20 5 views
5

sto guardando alcuni vecchi script di shell e non v'è una linea che io non capisco:Che cosa fa l'opzione -b fare SFTP

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

posso vedere dall'uomo file - b è per batch e l'argomento dovrebbe essere un batchfile.

In questo caso, sembra che il file batch si trovi su/dev/fd/3 - un'unità floppy? Non riesco a raggiungerlo.

Qualche idea su cosa dovrebbe fare?

risposta

3

I file "/dev/fd*" sono dispositivi speciali. In realtà non occupano molto spazio sul tuo sistema. Consentono a un processo di accedere ai descrittori di file in base al numero; 0,1,2 sono di serie input, standard output e standard error, e altri file aperti Iniziamo con 3

Nel tuo caso sftp utilizzando -b leggere comando da /dev/fd/3

Esempio:

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

È possibile leggere i dati utilizzando read comando

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

uscita del /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 

Note: Nel tuo caso che file di input potrebbe essere diversa

3

/dev/fd non è in realtà l'unità floppy - "fd" sta per "descrittore di file". Prova man fd in un terminale.

Questa pagina fornisce una panoramica di cosa sta succedendo: http://lists.apple.com/archives/darwinos-users/2004/Apr/msg00042.html. Fondamentalmente, il primo file che SFTP scrive (forse il file che scarica?) Viene passato di nuovo in sé come file batch.

Senza vedere l'intero script o conoscere gli interni di SFTP, non posso dire esattamente cosa sta succedendo. Immagino che ci sia un elenco di file sul server al quale lo script si connette e/dev/fd/3 è usato per ottenere SFTP per scaricare l'elenco e quindi scaricare i file senza ricollegarli.