other languages
other sections
FTP(1) | General Commands Manual | FTP(1) |
NAME¶
ftp — Internet 文件传输程序 (file transfer program)概述 (SYNOPSIS)¶
ftp [-pinegvd] [host] pftp [-inegvd] [host]说明 (DESCRIPTION)¶
用户通过 Ftp 这个程序来使用 Internet 上的标准文件传输协议 (File Transfer Protocol). 本程序允许用户向远端网站发送文件, 或从远端网站接收文件. 参数选项可以在命令行启动ftp时指定, 也可以在ftp命令解释模式下输入.- -p
- 使用被动模式进行数据传输. 如果你本地网络有防火墙, 外部主机不能连接到你这个客户端, 这个选项就派上用场了. 本选项要求 ftp 服务器支持 PASV 命令. 如果使用 pftp 从命令行启动 ftp, 本选项是默认打开的.
- -i
- 进行多个文件传输时关掉交互式的确认提示.
- -n
- 一般,在启动 ftp 时, ftp 会试着进行自动登录. 本选项可以关掉这个功能. 如果 auto-login 功能被启用的话, ftp 会在用户 home 目录下的 .netrc (参阅 netrc(5)) 文件中查找远端主机上的用户帐号. 如果 .netrc 文件中用户帐号这一项不存在, ftp 会提示用户输入远端主机上的登录名 (缺省为用户在本地机器上的帐号), 如果需要, 还会提示你输入密码和用来登录的帐号. ?? (译者注: 使用本选项, 可以实现所谓的 "非交互式登录". 你可以试试下面这条命令: echo open ftp_server "\n" user my_name my_password "\n" dir "\n" bye | ftp -n 不能使用 rcp 的时候, 可以用这条 ftp 命令来代替.)
- -e
- 如果被编译成了 ftp 可执行格式, 本选项会关掉命令编辑和历史命令功能; 否则什么也不做. ??
- -g
- 关掉文件名匹配功能.
- -v
- 显示详细信息. 本选项使得 ftp 显示远端服务器的所有响应, 并在数据传输完成后显示传输数据的统计信息.
- -d
- 打开 debug 模式.
ftp>
’
ftp
能够识别以下的命令:
- ! [command [args]]
- 在本地机器上启动一个交互的shell. 如果本命令带有参数, 第一个参数作为 shell 命令直接执行, 其它的参数成为这个 shell 命令的参数.
- $ macro-name [args]
- 执行宏 macro-name 所指代的命令. 宏使用 macdef 命令来定义. 本命令中的参数不进行文件名匹配, 直接传给这个宏.
- account [passwd]
- 在你成功登录以后, 本命令可以提供一个附加的密码, 远端系统会用这个密码来访问某些资源. 如果不指定参数, 则会提示用户输入密码; 输入密码时, 回显会被禁止.
- append local-file [remote-file]
- 添加本地文件到远端机器上. 如果没有指定 remote-file, 则本地文件名在经过 ntrans 或 nmap 转换后, 作为远端文件名使用. 在文件传输过程中还会使用 type, forma, mode 和 structure 的当前设置.
- ascii
- 将当前文件传输方式设置为网络 ASCII 方式, 即文本模式. 这也是缺省的文件传送方式.
- bell
- 每个文件传送命令完成后响铃提示.
- binary
- 将当前文件传输方式设置为 binary image, 即二进制模式.
- bye
- 终止与当前 FTP 服务器的连接, 退出 ftp. 文件结束符 (译者注: ctrl-D) 有同样的功能.
- case
- 转换 case 状态, 即远端主机文件名大小写转换规则. mget 命令会中用到本状态. case 状态若为 on, 远端主机文件传输到本地时, 文件名中的大写字母会被转换为小写. 缺省的 case 状态为 off. (译者注: toggle 这个词我翻译成转换. 意思是说, 如果当前 case 状态为 on, 你执行 case 这个命令, case 状态就转成了 off; 如果当前为 off, 则会变成 on. 下同.)
- cd remote-directory
- 改变远端机器上的当前目录到 remote-directory.
- cdup
- 改变远端机器上的当前目录到其父目录, 即其上级目录.
- chmod mode file-name
- 将远端系统上文件 file-name 的权限改为 mode.
- close
- 终止与当前远端服务器的 FTP 连接, 回到命令解释模式. 所有定义的宏都会被清除.
- cr
- 转换 cr 状态, 即 ascii 方式下取文件时的回车换行转换规则. 用 ascii 方式获取文件时, 文件内容被分割为一条条纪录, 以回车换行符为分隔符; 如果 cr 状态为 on, 回车换行符会被转换为 UNIX 系统的单个换行符. 非 UNIX 系统的文本文件中可能含有单个换行符; 在进行 ascii 方式的文件传输时, 只有将 cr 状态设置为 off, 这些单个换行符才能与回车换行符区分开来. cr 的缺省状态为 on. (译者注: 回车符的 ASCII 码为 0D, 对应的 C 语言转义字符为 \r; 换行符的 ASCII 码为 0A , 对应的 C 语言转义字符为 \n; UNIX 下的文本文件, 换行的时候就一个换行符; DOS 下的文本文件, 换行的时候是两个字符: 回车 + 换行. 服务器端 ftpd 在用 ascii 方式发送文件时, 会先把单个换行转换为回车 + 换行, 再送到网络上传输; 客户端 ftp 在用 ascii 方式接受文件时, 如果 cr 状态为 on, ftp 会把回车 + 换行转换为单个换行; 如果为 off, 则不进行这种转换. 如果网上传输的数据中同时含有单个换行和回车 + 换行, 你就一定要把 cr 状态设为 off, 才能把数据原样取回来; 否则, 取回来的单个换行和回车 + 换行都转换成了单个换行, 你就分不清这两种了. 还是使用 binary 最好.)
- delete remote-file
- 删除远端机器上的文件 remote-file.
- debug [debug-value]
- 转换 debugging 状态,
即是否跟踪每条指令.
debug-value 是可选的,
其值用来设置跟踪的级别.
当 debigging 状态为 on 时,
ftp
会显示每条送往远端机器的指令,
并在显示的指令前加上
‘
-->
’ - dir [remote-directory] [local-file]
- 显示远端机器目录 remote-director 下的文件名. local-file 这个参数是可选的. 如果指定了这个参数, 本命令的显示结果会保存在 local-file 这个本地文件中. 如果 prompt 状态为 on, ftp 会提示用户确认最后这个参数是用来存放 dir 显示结果的本地文件. 如果不指定 remote-director, 则本命令显示远端机器当前目录下的文件名. 如果不指定 local-file, 或 local-file 指定为 -, 则输出结果显示在你的终端上.
- disconnect
- 同 close.
- form format
- 将文件传输格式设置为 format. 缺省格式为 “file”. ??
- get remote-file [local-file]
- 把远端机器上的文件 remote-file 取回到本地. 如果不指定本地文件名, 则远端文件名在经过 case, ntrans 和 nmap 转换后, 作为本地文件名使用. 文件传输过程中会用到当前的 type, form, mode, 和 structure 状态.
- glob
- 转换 glob 状态,
即在执行 mdelete,
mget 和 mput
命令时,
是否进行文件名匹配.
如果 glob 状态为 off,
则不进行文件名匹配.
对 mput 而言,
文件名匹配规则和本地的
csh(1)
文件名匹配一样. 对
mdelete 和 mget
而言,
每个远端机器文件名都分别在远端机器上进行匹配,
匹配结果中的同名文件不会合并.
目录名匹配规则和文件名匹配规则不尽相同,
具体结果要取决于远端系统和
ftp 服务程序.
你可以使用 ‘
mls remote-files -
’ 预先看看匹配结果是否如你所愿. 注意: mget 和 mput 可能不会传送子目录. 想连着子目录一起传送, 你可以使用 binary 方式传送这个子目录的 tar(1) 包. (译者注: 1、 文件匹配是说, *n 代表所有以 n 结尾的文件. 例如, 在你本地 linux 机器当前目录下有三个文件 Xie Wen Min , 在 shell 下用 echo *n 这条命令, 结果为 Wen Min , 可见 *n 被 shell 匹配为 Wen Min. 在 ftp 中, 如果 glob 为 on , mput *n 这条指令会被匹配为 mput Wen Min , 本地的 Wen Min 两个文件被传送到远端. 如果 glob 为 off , mput *n 这条指令不会被匹配, 于是 mput 会试图把文件名为 "*n" 的本地文件传到远端, 如果本地没有这个名为 "*n" 的文件, ftp 就会报错. 2、 mput 是把本地文件送到远端机器, 故其匹配规则与本地 shell的文件名匹配一致. mget, mdelete 则是把远端机器上的文件送到本地, 故其匹配规则和最终结果要取决于远端系统. 3、 考虑如下情况: 远端机器上有三个文件 Xie, Wen, Min 如果执行 mget X* W* *n, 显然, 匹配结果会是 Xie Wen Min Wen. 虽然 Wen 这个文件出现了两次, 但 ftp 不会把这两个文件名合为一个, 所以 Wen 这个文件会被 mget 两次, 第二次覆盖第一次. 如果 mdel X* W* *n, Wen 这个文件会被删两次, 第二次报错.) - hash
- 转换 hash 状态, 即是否显示数据传输进度. 如果 hash 状态为 on, 每传送完一个 1024 字节的数据块时显示一个 # 号.
- help [command]
- 显示指定命令 command 的简要说明. 如果不指定参数, 本命令列出所有已知的 ftp 命令.
- idle [seconds]
- 将远端服务器的最长空闲时间设为 seconds 秒. 如果不指定参数 seconds, 则本命令显示当前的最长空闲时间值. (译者注:如果在最长空闲时间内没执行任何 ftp 命令, 与远端机器的连接将自动终止. )
- lcd [directory]
- 改变本地的当前工作目录. 如果不指定参数 directory, 则切换到用户的 home 目录.
- ls [remote-directory] [local-file]
- 显示远端机器目录下的文件名列表. 具体如何显示与远端系统有关; 例如, 大多数 UNIX 系统显示 shell 命令 ls -l 的输出 (参阅 nlist ). 如果不指定 remote-directory 则显示远端机器当前目录的内容. 如果 prompt 状态为 on , ftp 会提示用户确认最后一个参数是用来存放 ls 显示结果的本地文件. 如果不指定 local-file , 或者 local-file 指定为 ‘-’, 则结果显示到用户终端上. 可以在本命令中用引号指定附加参数. 例如, 如果远端系统为 UNIX, 则 ls "-rt /usr" 这条命令会显示远端机器 /usr 这个目录下的文件, 显示结果按创建时间由远到近排序.
- macdef macro-name
- 定义一个宏. 执行本命令后, 接下来输入的内容会存放到宏 macro-name 里. 空行 (文件中的连续换行, 或终端的回车换行) 表示宏定义结束. 最多只能定义 16 条宏, 而且所有的宏内容加起来不能超过 4096 字节. 执行 close 命令后所有的宏定义会被清除. 在宏中, $ 和 \ 这两个字符为特殊字符. $ 字符后跟数字, 将在这个宏在执行时将替换为命令行中的参数. $ 字符后跟字符 i , 表示循环执行当前宏. 在循环的第一次, $i 被替换为命令行中的第一个参数; 第二次, 替换为第二个参数, 以此类推. \ 后面跟一个字符, 表示这个字符本身. 例如, \ 可以去掉 $ 的特殊意义, 表示 $ 这个字符本身.
- mdelete [remote-files]
- 删除远端机器文件 remote-files.
- mdir remote-files local-file
- 和 dir 命令相似, 但是允许你指定多个远端文件. 如果 prompt 状态为 on, ftp 会提示用户确认最后一个参数是用来存放输出结果的本地文件.
- mget remote-files
- 匹配参数
remote-files
中指定的远端文件名,
对匹配结果里的每个文件都执行一个
get 命令.
关于文件名匹配,
请参阅 glob 命令.
根据当前的 case,
ntrans, 和 nmap
状态,
远端文件名在经过适当的转换后,
作为本地文件名使用.
文件被传输到本地机器的当前目录.
你可以用 ‘
lcd directory
’ 命令改变本地机器的当前目录, 也可以用 ‘! mkdir directory
’ 命令新建本地目录. - mkdir directory-name
- 在远端机器上创建目录.
- mls remote-files local-file
- 和 nlist 命令相似, 但是允许你指定多个远端文件, 而且 local-file 这个参数必须指定. 如果 prompt 状态为 on, ftp 会提示用户确认最后一个参数是用来存放输出结果的本地文件.
- mode [mode-name]
- 将文件传输模式设置为 mode-name 所指定的模式. 缺省模式为 “stream” 模式. ??
- modtime file-name
- 显示远端机器上文件的最后修改时间.
- mput local-files
- 匹配参数中指定的本地文件名, 对匹配结果里的每个文件都执行一个 put 命令. 关于文件名匹配, 请参阅 glob 命令. 根据当前的 ntrans 和 nmap 状态, 本地文件名在经过适当的转换后, 作为远端文件名使用.
- newer file-name [local-file]
- 比较远端文件和本地文件的修改时间, 如果远端文件比本地文件新, 或本地文件不存在, 则从远端机器上取此文件.
- nlist [remote-directory] [local-file]
- 显示远端机器上指定目录下的文件列表. 如果不指定参数 remote-directory, 则显示远端机器当前目录的内容. 如果 prompt 状态为 on, ftp 会提示用户确认最后一个参数是用来存放显示结果的本地文件. 如果不指定本地文件 local-file, 或者本地文件 local-file 指定为 ‘Fl,’ 显示结果会在用户终端上显示出来.
- nmap [inpattern outpattern]
- 设置或取消文件名映射机制. 如果不指定参数, 则本命令取消文件名映射机制. 如果指定了参数, 则在执行 mput 或 put 命令, 且不指定远端文件名时, 远端文件名会被映射; 在执行 mget 或 get 命令, 且不指定本地文件名时, 本地文件名会被映射. 非 unix 的远端系统常使用不同于 unix 的文件命名规则, 当用 ftp 连接到这样的远端系统时, 本命令会很有用处. 转换规则由参数 inpattern 和 outpattern 决定. 一个文件名会先经过 ntrans 和 case 的转换, 再按照 inpattern 进行 nmap 映射. 参数 inpattern 指定转换前的文件命名规则. 参数 outpattern 指定转换后的文件命名规则. 在 inpattern 和 outpattern 这两个参数中, 用 $1, $2, ..., $9 来替代变量; 用 \$ 替代 $ 字符; 其余的字符则没有特殊含义. 例如, 若 inpattern 为 $1.$2, 则对于文件名 mydata.data, $1 取值 mydata, $2取值 data. 结果文件名由 outpattern 决定. 在 outpattern 中, $1, $2, ..., $9 被相应的取值代替, 作为最终结果. $0 被替换为整个原始文件名. 对方括号括起来的两个变量 [$x,$y] 而言, 若 $x 非空, 则其相当于 $x; 否则相当于 $y (以上 x,y 为数字). 举例如下: 输入命令行 nmap $1.$2.$3 [$1,$2].[$2,file], 则 原始文件名 myfile.data 会被映射为 myfile.data, 原始文件名 myfile.data.old 会被映射为 myfile.data, 原始文件名 myfile 会被映射为 myfile.file, 原始文件名 .myfile 会被映射为 myfile.myfile, Spaces may be included in outpattern, as in the example: `nmap $1 sed "s/ *$//" > $1' . ?? (译者注: 这一段我没看懂, 也没试出来.) `$', '[', ']', `,' 这四个字符有特殊含义, 所以若要使用这四个字符, 需在前面加上 \ 以去掉其特殊含义.
- ntrans [inchars [outchars]]
- 设置或取消文件名字符转换机制. 如果不指定参数, 则本命令取消文件名字符转换机制. 如果指定了参数, 则在执行 mput 和 put 命令, 且不指定远端文件名时, 远端文件名中的字符会被转换; 在执行 mget 和 get 命令, 且不指定本地文件名时, 本地文件名中的字符会被转换. 非 unix 的远端系统常使用不同于 unix 的文件命名规则, 用 ftp 连接到这样的远端系统时, 本命令会很有用处. 原始文件名中的 inchars 会被替换为对应的 outchars. 如果 inchar 字符串比 outchar 长, 则多出的那一部分字符会从原始文件名中删掉.
- open host [port]
- 连接到指定的远端主机 host FTP 服务器. 端口号 ftp 是可选的; 如果指定了端口号, ftp 会尝试使用这个指定的端口号连接远端 FTP 主机. 如果自动登陆选项 auto-login 是打开的话 (缺省为打开), ftp 还会尝试自动登陆. (详见下述)
- prompt
- 转换 prompt 状态, 即是否进行交互提示. 如果 prompt 状态为 on , 在传送多个文件时, ftp 会提示用户选择要上传或下载的文件; 如果 prompt 状态为 off (缺省为 on), mget 和 mput 这两个命令会不加提示地传送所有指定的文件, mdelete 会不加提示地删掉所有指定的文件.
- proxy ftp-command
- 在副连接上执行
ftp 命令.
本命令允许同时连接到两个远端
ftp 服务器,
并在这两个远端服务器之间传送文件.
(译者注: 原始的 ftp
所建立的连接为 primary control
connection, 主连接; 使用 proxy open
所建立的连接为 secondary control
connection, 副连接.
在副连接上运行 ftp
命令, 即在 ftp
命令前加上 proxy 前缀, 如
proxy open, proxy put 等. 以下将这种
``proxy ftp command'' 译为
"代理命令".)
第一个执行的代理命令应该是
open 命令,
用来建立副连接. 运行
"proxy ?" 命令,
可以看到所有能在副连接中运行的
ftp 命令. 以下的 ftp
命令在副连接中运行时,
效果与在主连接中不同:
在自动登录过程中,
open
不会定义新的宏;
close
不会清除已有的宏定义;
get 和 mget
将文件从主连接的远端主机传送到副连接的远端主机;
put, mput, 和
append
将文件从副连接的远端主机传至主连接的远端主机.
第三方文件传输取决于副连接的远端主机是否支持
ftp 协议中的
PASV
命令. - put local-file [remote-file]
- 将本地文件传至远端主机. 如果不指定参数 remote-file, 则根据当前的 ntrans 和 nmap 状态, 本地文件名在经过适当的转换后, 作为远端文件名使用. 在文件传输过程中会用到当前的 type, format, mode 和 structure 状态.
- pwd
- 显示远端机器的当前路径.
- quit
- 同 bye 命令.
- quote arg1 arg2 ...
- 将你指定的参数原样送到远端 FTP 服务器. (译者注: 你输入的 ftp 命令, 经由本地 ftp 客户程序解释, 转换成 ftp 协议命令, 再发送给远端 ftp 服务程序. 这些转换后的 ftp 协议命令, 叫做 raw ftp command, 也就是本命令所能使用的参数. 关于这些参数, 请参阅 remotehelp 命令. 下文中出现的大写字母的命令都是 raw ftp command.)
- recv remote-file [local-file]
- 同 get 命令.
- reget remote-file [local-file]
- 和 get 命令相似, 略有差异如下: 如果本地文件 local-file 的长度比远端文件 remote-file 短, ftp 会认为这是由于上一次传送异常中断, 导致本地文件只是远端文件的开头一部分, 故 reget 会从本地文件的最后开始续传. 在连接不稳、经常异常断掉的网络中传送大文件时, 本命令会很有用.
- remotehelp [command-name]
- 显示远端 FTP 服务程序的帮助信息. 如果指定了参数 command-name, 则此参数也会一并传给远端服务器.
- remotestatus [file-name]
- 如果不指定参数, 本命令显示远端机器的状态. 如果指定了参数 file-name, 则显示远端文件 file-name 的状态.
- rename [from] [to]
- 将远端机器上的文件 from 重命名为 to.
- reset
- 清除应答队列. 本命令使本地 ftp 客户和远端 ftp 服务程序 重新同步命令/应答序列. 远端 ftp 服务程序可能出错, 并导致 ftp 协议出现错误, 此时需要使用本命令.
- restart marker
- 使用本命令后, 接下来应使用一个 get 或 put 命令; 此时的 get 或 put 命令会从参数 marker 指定的 UNIX 系统文件偏移处 (一般以字节计算) 重传文件.
- rmdir directory-name
- 删除远端机器上的目录.
- runique
- 转换 runique 状态, 即本地同名文件是否自动覆盖. 如果 runique 状态为 off, 则在使用 get 或 mget 命令取远端文件到本地时, 远端文件会自动覆盖本地的同名文件; 如果 runique 状态为 on, 则在文件同名时, 会在取回的文件名后加一个 .1; 如果加了一个 .1 还是与本地文件重名, 则在远端文件名后加 .2; 若还是重名, 加 .3; 以此类推, 如果直到 .99 还重名, 则会报错. 新文件名会显示给用户. 注意 runique 状态并不影响本地 shell 命令的文件覆盖. 缺省的 runique 状态为 off.
- send local-file [remote-file]
- 同 put 命令.
- sendport
- 转换 sendport 状态,
即是否使用
PORT
命令. 缺省状态下, ftp 每建立一个连接进行数据传送时, 都会使用一个PORT
命令. 使用PORT
命令可以免掉多文件传输时的延迟时间. 如果PORT
命令失败, ftp 会使用缺省的数据端口. 如果禁止使用PORT
命令, 则在每次进行数据传送时不会使用PORT
命令. 有些版本的 FTP 在具体实现中忽略了PORT
命令, 但却错误地应答说已经接受了PORT
指令, 此时就需要使用本命令. - site arg1 arg2 ...
- 本命令将参数作为
SITE
命令原样传给远端 FTP 服务器. - size file-name
- 显示远端机器上文件 file-name 的大小.
- status
- 显示 ftp 当前的各种状态.
- struct [struct-name]
- 将文件传输结构 structure 设置为参数 struct-name. 缺省取值为 stream. ??
- sunique
- 转换 sunique 状态,
即远端同名文件是否自动覆盖.
要使用本命令, 远端的
ftp 服务程序必须支持 ftp
协议中的
STOU
命令. 新生成的不同的远端文件名会显示给用户. 缺省的 sunique 状态为 off, 即自动覆盖远端同名文件. - system
- 显示远端机器的操作系统类型.
- tenex
- 设置文件传输方式为与 TENEX 机器通讯所需要的方式. ??
- trace
- 转换 trace 状态, 即是否跟踪每个数据包.
- type [type-name]
- 将文件传送类型 type 设置为 type-name. 如果不指定参数, 则本命令显示当前文件传送类型. 缺省的文件传送类型是网络 ASCII 类型.
- umask [newmask]
- 设置远端机器上的文件掩码为 newmask. 如果不指定参数 newmask, 则本命令显示当前的文件掩码.
- user user-name [password] [account]
- 使用 [user-name] 作为用户名登录远端 FTP 服务器. 如果不指定参数 password, 而远端服务器需要提供密码, 则 ftp 会提示用户输入密码 (无回显); 如果不指定参数 account, 而远端 FTP 服务器需要提供账号, ftp 会提示用户输入账号. 如果指定了参数 account, 而在登录过程中远端 FTP 服务程序不需要账号, 则在登录完成以后会使用一个 account 命令将账号发送给服务器. 一般而言, ftp 在启动时, 会与远端 FTP 服务器建立连接并自动完成以上的登录过程. 也可以在启动 ftp 时使用 -n 选项禁止此自动登录功能.
- verbose
- 转换 verbose 状态, 即是否显示详细信息. 如果 verbose 状态为 on , 则会显示远端 FTP 服务器的每一个响应, 并在文件传送结束后显示关于传输效率的统计信息. 缺省的 verbose 状态为 on .
- ? [command]
- 同 help 命令.
放弃当前文件传送 (ABORTING A FILE TRANSFER)¶
按中断键 (一般为 Ctrl-C ) 可放弃当前文件传送. 对发送文件而言, 此时当前发送过程会立刻终止; 对文件接收, 此时会发送一个 ftp 协议中的ABOR
命令到远端服务器,
而剩下未接受的数据会被丢弃.
这个过程有快有慢,
具体取决于远端服务器如何实现
ABOR
命令.
如果远端服务器不支持
ABOR
命令,
则服务器会继续当前文件传送,
直到传送完成,
才再显示出提示符
‘ftp>.
’
如果所有的本地操作已经完成,
ftp
在等待远端服务器应答时,
不会对中断键做出响应.
如果这时候 ftp
协议出了问题,
或如上所述远端服务器不支持
ABOR
命令而坚持把当前文件发送完,
用户就会等待很长时间得不到响应.
如果确实是 ftp
协议出了问题,
用户必需手工杀掉这个
ftp 进程.
文件名转换 (FILE NAMING CONVENTIONS)¶
ftp 命令中, 若指定文件名作为参数, 则此文件名会经过以下几步的处理:- 如果指定的文件名为 ‘-’, 则在输出时使用标准输出 stdin, 在输入时使用标准输入 stdout.
- 如果指定的文件名首字母是 ‘|,’ 则此参数余下的部分被当作是一个 shell 命令. Ftp 会使用 popen(3) 和所提供的参数创建一个 shell 进程, 并使用标准输入 stdin (标准输出 stdout) 来进行读 (写) 操作. 如果 shell 命令中包含空格, 则必须用引号将其引起来; 例如: "ls -lt". 一个有用的例子是: "dir | more".
- 如果上述两步处理失败, 而 globbing 状态为 on , 本地文件名会进行匹配, 匹配规则同 csh(1) (参阅 glob 命令). 如果 ftp 命令只需要单个的本地文件作参数 (如 put), 则仅使用匹配结果里的第一个文件名.
- 对 mget 和 get 命令而言, 如果不指定本地文件名, 则远端文件名在经过 case, ntrans, 或 nmap 转换后, 作为本地文件名使用. 如果 runique 状态为 on, 本地文件名还可能加上一个后缀以免覆盖.
- 对 mput 和 put 命令而言, 如果不指定远端文件名, 则本地文件名在经过 ntrans 或 nmap 转换后, 作为远端文件名使用. 如果 sunique 状态为 on, 远端服务器可能还会给远端文件名加上一个后缀以免覆盖.
文件转换参数 (FILE TRANSFER PARAMETERS)¶
FTP 规格说明书中指定了许多可能影响文件传送的参数. type 可设置为 ascii, image (binary), ebcdic, 或 local byte size (一般用于 PDP-10's 和 PDP-20's 机器). Ftp 支持 ascii 和 image 类型的文件传输, 对于 tenex 机器, 还支持 local byte size 8 方式的文件传输. 其它可能影响文件传输的参数有 mode, form, 和 struct. Ftp 只支持这些参数的缺省值.环境 (ENVIRONMENT)¶
Ftp 使用了以下的环境变量:HOME
- 本环境变量指明了文件 .netrc 的缺省路径, 如果其存在的话.
SHELL
- 本环境变量指明了缺省的 shell.
参阅 (SEE ALSO)¶
ftpd(8,) RFC 959历史 (HISTORY)¶
ftp 命令最初见于 4.2.BSD错误 (BUGS)¶
对许多 ftp 命令而言, 其能否正确执行, 取决于远端服务器如何响应. 使用 4.2BSD 的 ascii 方式传送文件时, 对回车换行符的处理有错误. 本版本中已经修正了此问题, 但同时带来了另一个问题: 使用 ascii 方式, 与 4.2BSD 服务器互传二进制文件时可能出错. 要避免此问题, 请使用 binary image 类型来传送文件.August 15, 1999 | Linux NetKit (0.16) |