2013-02-20 16 views
5

Tôi đang xem xét một số kịch bản shell cũ và có một dòng mà tôi không hoàn toàn hiểu:gì tùy chọn -b làm trong SFTP

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

tôi có thể nhìn thấy từ người nộp đó - b là cho lô, và đối số đó được cho là một batchfile.

Trong trường hợp này, có vẻ như tệp lô được cho là nằm trên/dev/fd/3 - một ổ đĩa mềm? Tôi dường như không thể làm được.

Bất kỳ ý tưởng nào về việc này phải làm gì?

Trả lời

3

Tệp "/dev/fd*" là các thiết bị đặc biệt. Đây không thực sự chiếm nhiều không gian trên hệ thống của bạn. Chúng cho phép một quá trình truy cập các bộ mô tả tập tin theo số; 0,1,2 là tiêu chuẩn input, standard outputstandard error, và các tập tin đang mở khác bắt đầu với 3

Trong trường hợp của bạn sftp sử dụng -b để đọc lệnh từ /dev/fd/3

Ví dụ:

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

Bạn có thể đọc dữ liệu sử dụng read command

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

sản lượng /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 

Ghi chú: Trong trường hợp của bạn mà tập tin đầu vào có thể là khác nhau

3

/dev/fd không thực sự là ổ đĩa mềm - "fd" là viết tắt của "bộ mô tả tệp". Hãy thử man fd trong một thiết bị đầu cuối.

Trang này cung cấp tổng quan về những gì đang diễn ra: http://lists.apple.com/archives/darwinos-users/2004/Apr/msg00042.html. Về cơ bản, tệp SFTP đầu tiên ghi vào (có lẽ tệp mà nó tải xuống?) Đang được truyền lại vào chính nó dưới dạng tệp lô.

Nếu không nhìn thấy toàn bộ tập lệnh hoặc biết nội bộ của SFTP, tôi không thể nói chính xác những gì đang xảy ra. Tôi đoán rằng có một danh sách các tập tin trên máy chủ mà kịch bản kết nối đến, và/dev/fd/3 được sử dụng để tải SFTP xuống danh sách và sau đó tải xuống các tệp mà không cần kết nối lại.