📄 jkl.txt
字号:
drwxr-xr-x 2 jdx other 512 Nov 7 1995 bin
drwx------ 2 jdx other 512 Nov 10 1995 doc
-rw-r----- 1 jdx other 81470 Jun 12 15:14 file1.txt
-rw-r----- 1 jdx other 28064 Jun 12 14:37 file2.txt
-rw-r----- 1 jdx other 2416 Jun 12 14:37 file3.txt
drwx------ 4 jdx other 1536 Oct 6 1995 hmpro30
drwxr-x--- 4 jdx other 512 Feb 5 16:44 hostinfo
drwx------ 5 jdx other 512 Oct 27 1995 internet
-rw-r--r-- 1 jdx other 28337 Apr 2 14:39 nohup.out
drwxr-xr-x 2 jdx other 512 Apr 2 09:54 oradaemon
-rw-r--r-- 1 jdx other 5906 Mar 28 11:38 tcps.c
drwx------ 2 jdx other 512 Oct 17 1995 webedit
drwxr-x--- 2 jdx other 512 Mar 12 17:30 winsock2
226 Transfer complete.
而ls是短格式显示,它只显示文件名,这在网络传输速度很慢时可以节省不少时间。
有时候,我们不仅关心远程主机的目录情况,还要关心本地主机的目录情况,这时就要用到本地主机的有关目录操作的命令。lcd是ftp提供的改变本地主机当前工作目录的命令, 其用法类同cd。但是,它并不提供lpwd和ldir之类的命令,如果用户想了解本地主机的目录情况,可以用一个shell命令,这使用ftp子命令“!”来得到,如:
ftp> !pwd
/u/jdx/winsock
ftp> !ls
bbs.txt file1.txt httpd1.txt winsock.faq
cernet.txt file2.txt msws.txt winsock.txt
chinanet.txt file3.txt novell.txt wsbookce.zip
eruda.txt ftpmail.txt sendmail.txt www.txt
!引导一个Unix shell命令,在执行完shell命令后,又回到ftp程序的ftp>提示状态。如果用户想暂时离开ftp程序而不断绝连接,他甚至可以单独执行!命令来产生一个新的shell交互进程。在shell交互进程中用户可以干自己愿意干的所有事情,一旦他想回到ftp程序,他可以在shell提示符下执行exit退出shell,回到ftp会话。
3.4 文件传送参数设置
在第2章中我们介绍过文本文件和二进制文件的区别,以及在使用电子函件时对不同文件应做不同的处理。其实,在FTP文件传送中同样存在这样的问题,ftp程序提供了一些命令用来设置传输参数,本节我们将介绍这些命令的使用方法。
ftp传输文本文件和二进制文件时所做的处理不同:对于二进制文件,它按与源文件完全相同的信息建立目标文件;但对文本文件,它将做一些转换,主要是根据操作系统的不同,对回车符和换行符进行转换(有时候我们发现源文件和目标文件长度不一致,原因就在此)。因此,如果用户要想得到传输正确的文件,他必须正确设置传输文件的类型。ftp程序提供了type命令来设置文件传送类型,type命令可以指定传输的文件类型,如ascii,binary,image和ebcdic等。一般情况下,我们传输的文件类型是ascii和binary,设置ascii类型传输文本文件,设置binary类型传输二进制文件。type 命令不带参数则显示当前设置的文件传送类型。其实,我们很少用到type命令──ftp程序支持ascii和binary命令,它们相当于type ascii和type binary, 我们甚至只用这两个命令的前三个字符,就可设置文件传送类型。在ftp>提示符后键入asc,你会看到:
ftp> asc
200 Type set to A.
我们在做文件传送时经常遇到,远程主机和本地主机的当前工作目录上有同名的文件,稍不小心,就会覆盖掉文件,造成不可预见的损失。为了防止这种情况的发生,ftp程序提供了两个唯一名参数设置命令:runique设置本地目标文件唯一名;sunique设置远程目标文件唯一名。在默认情况下,runique和sunique的值都是off,此状态下使用ftp命令传输文件将覆盖同名文件。如果用runique和/或sunique命令将该状态值设置为on,则当目标文件与接收方的文件重名时,ftp程序将给目标文件加上后缀.1。如果加.1的文件名也存在,则用后缀.2……如此类推,直到找到一个唯一文件名。如果后缀达到.99仍找不到唯一文件名,则ftp程序报告错误,并终止此次文件传送。值得注意的是此类命令在不同的ftp程序中其实现方法就不一样,有些DOS下的ftp程序是采用overwrite命令来设置是否默认覆盖,读者在使用该命令时可查询自己的ftp程序的使用手册。有时候,传输的文件很长,在相当长一段时间,用户看不到ftp的任何动作,也不知道文件传送究竟已完成多少。遇到这种情况时,hash命令就很有用处。hash状态默认为off,当使用hash命令设置为on时,ftp程序在文件传送时每传送完一个数据块(1024字节)后就显示“#”字符(hash状态)。这样,用户就能准确掌握一个较大文件的传输进度。
ftp程序还提供了另外一些传输参数及其设置命令,如bell命令用来设置是否在每次文件传送完成时响铃命令等。这里我们就不再详述,读者可以参见后面的ftp子命令列表。另外,ftp程序还提供了一个命令status,该命令用来显示ftp程序的当前状态信息,如我们机器的默认的状态信息就是:
ftp> status
Connected to ncr3550.cic.tsinghua.edu.cn.
No proxy connection.
Mode: stream; Type: ascii; Form: non-print; Structure: file
Verbose: on; Bell: off; Prompting: on; Globbing: on
Store unique: off; Receive unique: off
Case: off; CR stripping: on
Ntrans: off
Nmap: off
Hash mark printing: off; Use of PORT cmds: on
Experimental commands: off
3.5 匿名ftp
在第3.1节中我们提到使用ftp传送文件要求在远程主机上有一个帐号,Internet上许多主机提供了一个公共的ftp帐号anonymous,供用户使用匿名ftp传送文件。提供了匿名ftp服务的主机叫做匿名ftp服务器。Internet上有着众多的匿名ftp服务器,可以毫不夸张地说,正是因为有了匿名ftp服务器,才使得ftp的使用这样广泛,这样有意义。
Internet上匿名ftp服务器是个不断增值的资源宝库,我们所需要的各种类型的信息,几乎都能通过匿名ftp下载。特别是对于一个Internet的新用户来说,可能需要安装一套可以漫游Internet的工具,那么,下面我们就以此为例看匿名ftp能帮助我们干什么(实际上它能给我们的帮助远不止此)。
我们使用ftp程序和清华大学网络中心的ftp服务器建立连接:
$ ftp ftp.tsinghua.edu.cn
Connected to mail.tsinghua.edu.cn.
220 mail FTP server (UNIX(r) System V Release 4.0) ready.
Name (ftp.tsinghua.edu.cn:jdx): anonymous
331 Guest login ok, send ident as password.
Password:
230 Guest login ok, access restrictions apply.
ftp>
我们使用anonymous帐号登录,使用email地址作为口令。使用email地址作为口令是为了便于某些匿名FTP服务器统计来访者的信息,事实上,如果用户输入的口令不太像一个email地址,有些FTP服务器还会拒绝用户登录。下面我们继续上例的搜索:
ftp> dir
200 PORT command successful.
150 ASCII data connection for /bin/ls (166.111.4.5,2168) (0 bytes).
total 12
lrwxrwxrwx 1 root other 7 Jul 11 1995 Obin -> usr/bin
lrwxrwxrwx 1 root other 7 Jul 11 1995 bin -> usr/bin
dr-xr-xr-x 2 root other 512 Jul 11 1995 dev
dr-xr-xr-x 2 root other 512 Jul 11 1995 etc
drwxrwxrwx 10 ftp other 512 Jun 12 05:04 pub
drwxr-xr-x 4 root other 512 Jul 11 1995 usr
226 ASCII Transfer complete.
ftp> cd pub
250 CWD command successful.
ftp> dir
200 PORT command successful.
150 ASCII data connection for /bin/ls (166.111.4.5,2169) (0 bytes).
total 6884
drwxrwxrwx 5 root other 512 Jun 12 06:05 incoming
drwxrwxrwx 2 ftp 30000 512 Jun 12 04:54 jenny
drwxrwxrwx 2 ftp 30000 3072 Jun 12 06:02 jpeg
drwxr-xr-x 2 root other 512 Jul 19 1995 onlan
drwxr-xr-x 2 root other 512 May 6 22:46 recommend
drwxrwxrwx 2 ftp 30000 512 Jun 12 05:00 tools
drwxr-xr-x 22 root other 512 Apr 16 07:00 windows
drwxrwxrwx 2 ftp 30000 512 Jun 12 04:54 zhl
-rw-rw-rw- 1 ftp 30000 3499563 Jun 12 05:06 zhl.exe
226 ASCII Transfer complete.
ftp> cd recommend
250 CWD command successful.
ftp> dir
200 PORT command successful.
150 ASCII data connection for /bin/ls (166.111.4.5,2171) (0 bytes).
total 33210
-r--r--r-- 1 root other 186957 Oct 15 1995 archie.exe
-rw-r--r-- 1 root other 3616768 Apr 28 23:54 g32e201.exe
-r--r--r-- 1 root other 2507254 Apr 20 01:41 n16e20.exe
-rw-r--r-- 1 root other 3270656 Apr 28 23:52 n32e201.exe
-r--r--r-- 1 root other 645650 Oct 15 1995 news.exe
-r--r--r-- 1 root other 3193800 Apr 20 01:40 orapb16.exe
-r--r--r-- 1 root other 30336 Nov 30 1995 uudecode.exe
-r--r--r-- 1 root other 14672 Nov 30 1995 uuencode.exe
-r--r--r-- 1 root other 2557592 Apr 26 08:34 w32s130a.exe
-r--r--r-- 1 root other 878181 Apr 19 00:14 zrfw801.zip
226 ASCII Transfer complete.
通过这样的过程,我们到达了/pub/recommend目录,在这个目录下,我们找到了我们需要的Netscape、archie等共享软件,那么取过来:
ftp> get n16e20.exe
200 PORT command successful.
150 ASCII data connection for n16e20.exe (166.111.4.5,2172) (2507254 bytes).
226 ASCII Transfer complete.
2517328 bytes received in 5.816 seconds (422.7 Kbytes/s)
ftp> get ......
如果还不满足,还可以继续搜寻,你会在/pub/windows/mail下找到Windows电子函件软件Eudora,在/pub/windows/ftp下找到Windows文件传送软件ws_ftp,在/pub/windows/telnet下找到Windows远程登录软件netterm等。
够了,满载而归,使用quit退出ftp连接。有时,如果你有好的自由软件希望与人共享,你还可以通过匿名ftp上载到/pub/incoming目录。一般情况下/pub/incoming和/pub/upload之类的目录是供用户上载软件用的。
有很多FTP服务器的文件系统非常庞大,首次进入很容易迷路。不过不要紧,只要你注意观察,还是会找到正确路径的。首先,可以使用pwd命令查看当前工作目录,确定自己的所在位置;其次,可以看看所在目录有无下列文件:
README
index
ls-lR.Z
ls-ltR.Z
一般来说,README文件中一般含有总体信息,index文件中含有该目录的文件索引,而ls-lR.Z和ls-ltR.Z文件通常详细列出了该FTP服务器的公共文件与目录。用户可以先将这些文件下载一两个先看看。
另外,在进入一个目录时,注意看看欢迎词,这里面很可能包含了你想知道的重要信息。好了,有了这些知识,你可以找个匿名FTP服务器试试啦。
3.6 宏定义与自动登录
在我们的日常工作中,我们可能要进行一些规律性的文件传送工作,这些工作每次都一样,重复劳动是如此的乏味与费时,有没有好的解决办法呢?有。本节介绍的宏定义与自动登录将使你的日常例行文件传送变得如此轻松愉快!
ftp程序提供了一个子命令macdef,它可以用来定义一个宏。宏一般用来模块化操作,如我们可以定义一个批处理文件传送宏如下:
ftp>macdet batchget
bin
prompt off
mget *
在进行宏定义时,一行一行地输入ftp子命令,并用一个空行来结束宏定义。一旦定义了一个宏,那我们可以随时引用宏,这通过使用$符号来引用宏,如:
ftp> $batchget
就执行了宏batchget中的三条命令。值得注意的是,宏定义是从属于ftp会话的;对每一个ftp会话,最多只能定义16个宏;并且每个宏最多只能有4096个字符;宏定义的有效性也只保持到执行close子命令关闭会话为止。
为了增加宏的灵活性,在宏定义时可以使用参数:$符号后跟一个数字表示宏在引用时相应的位置参数,如$1表示第一个参数,$2表示第二个参数......;$符号后跟字符i表示此宏将循环执行,并且$i在每一次循环时代替一个宏参数,第n次循环代表第n个参数。如,我们为了实现get file1和get file2的文件传送,可以使用下面两种宏定义和引用中的任何一种:
1: ftp> macdef get2
get $1
get $2
ftp> $get2 file1 file2
2: ftp> macdef getmore
get $i;
ftp> $getmore file1 file2
在宏定义中,因为$符号有其特殊含义,因此,如果我们要使用其作为一个普通字符时,则必须取消它的特殊含义,这通过使用转意符“\”实现:转意符\在宏定义中用来取消$符号和其本身\符号的特殊含义,即\$相当于普通字符$,\\相当于普通字符\。
前面介绍的宏定义都是在ftp提示符状态下定义宏,这要求用户每次使用宏都必须先定义。ftp程序有一个配置文件,它以名.netrc存在于用户主目录$HOME下:每当用户启动ftp程序和远程主机建立连接时,ftp程序就搜索配置文件$HOME/.netrc;如果此文件存在,ftp程序就在该文件中查找为指定的远程主机设置的自动登录及宏定义入口;如果找到了指定主机的自动登录入口,ftp程序就使用入口中的信息自动登录到远程主机;自动登录成功后,ftp程序就试图执行入口中定义的初始化宏init(如果定义了该宏的话);如果init宏中不存在,或该宏定义中没有包含quit和bye子命令,则ftp程序显示ftp>提示符进入交互式会话模式,此时用户可输入任何子命令或引用.netrc中为该入口定义的宏。例如,我的ftp配置文件如下,它使我的例行文件传送变得非常简单:
machine tirc.dcs.tsinghua.edu.cn
login jdx
password 123jdx
macdef init
cd book1
bin
mget *.doc
macdef putbook
cd /home/jdx/book2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -