ncftp(1)

NAME

NcFTP - Internet file transfer program

SYNOPSIS

ncftp     [program      options]      [[open      options]
hostname[:pathname]]

OPTIONS

Program options:
-D : Turn debug mode and trace mode on.
-L : Don't use visual mode (use line mode).
-V : Use visual mode.
-H : Dump the version information.
Command-line open options:
-a : Open anonymously.
-u : Open with username and password prompt.
-p X : Use port number X when opening.
-r : Redial until connected.
-d X : Redial, delaying X seconds between tries.
-g X : Give up after X redials without connection.
Command-line retrieve options:
-C : Force continuation (reget).
-f : Force overwrite.
-G : Don't use wildcard matching.
-R : Recursive. Useful for fetching whole directo
ries.
-n X : Get selected files only if X days old or newer.

DESCRIPTION

NcFTP is a user interface to the Internet standard File
Transfer Protocol. This program allows a user to transfer files
to and from a remote network site, and offers additional features
that are not found in the standard interface, ftp.
The program runs in one of three modes: visual mode, line
mode, and colon mode.
If your system is somewhat modern, the default mode should
be visual mode. This is a full-screen interface that uses the
curses library. With visual mode, you edit the program's set
tings with a nice screen interface instead of typing arcane com
mands.
If you are not in visual mode, you will be using line mode
for the interactive shell. This mode is a no-frills command-line
interface that will look like the default ftp program's command
shell.
The third mode, colon mode, refers to the program's abili
ty to do a quick retrieve of a file directly from your shell com
mand line, without going into the program's own shell. This mode
is useful for shell scripts.

INTRODUCTION TO VISUAL MODE

When entering visual mode, the screen clears and is
rewritten with the splash screen. You should see the black sta
tus bar occupying the second to last row on the screen. Beneath
the status bar is the input line, where you type commands to the
program's shell.
The program then waits for you to do something. Usually
this means you want to open a remote filesystem to transfer files
to and from your local machine's filesystem. To do that, you
need to know the symbolic name of the remote system, or its
Internet Protocol (IP) address. For example, a symbolic name
might be ``typhoon.unl.edu,'' and its IP address could be
``129.93.33.24.'' To open a connection to that system, you use
the program's open command:

open typhoon.unl.edu
open 129.93.33.24
Both of these try to open the machine called typhoon at
the University of Nebraska. Using the symbolic name is the pre
ferred way, because IP addresses may change without notice, while
the symbolic names usually stay the same.
When you open a remote filesystem, you need to have per
mission. The FTP Protocol's authentication system is very simi
lar to that of logging in to your account. You have to give an
account name, and its password for access to that account's
files. However, most remote systems that have anything you might
be interested in don't require an account name for use. You can
often get anonymous access to a remote filesystem and exchange
files that have been made publicly accessible. The program at
tempts to get anonymous permission to a remote system by default.
What actually happens is that the program tries to use ``anony
mous'' as the account name, and when prompted for a password, us
es your E-mail address as a courtesy to the remote system's main
tainer. You can have the program try to use a specific account
also. That will be explained later.
If the connection succeeded, you should see the status bar
change to hold the remote system's name on one side, and the cur
rent remote directory on the other side. To see what's in the
current remote directory, you can use the program's ls and dir
commands. The former is terse, preferring more remote files in
less screen space, and the latter is more verbose, giving de
tailed information about each item in the directory.
You can use the program's cd command to move to other di
rectories on the remote system. The cd command behaves very much
like the command of the same name in the Bourne and Korn shell.
The purpose of the program is to exchange data with other
systems. You can use the program's get command to copy a file
from the remote system to your local system:

get README.txt
The program will display the progress of the transfer on
the screen, so you can tell how much needs to be done before the
transfer finishes. When the transfer does finish, then you can
enter more commands to the program's command shell.
You can use the program's put command to copy a file from
your system to the remote system:

put something.tar
When you are finished using the remote system, you can
open another one or use the quit command to terminate the pro
gram.

THE BOOKMARKS FILE

One of the program's goals is to minimize typing and maxi
mize convenience. The program automatically saves information
about the sites you call on in a special file called the
bookmarks file, which is stored in the .ncftp subdirectory of
your home directory. Each bookmark saves the host name along
with other settings, including the remote directory you were in,
the account information, and more. This makes it easy to call
back a site later and have everything be like it was when you
left the last time.
A big advantage of saving this information is that you can
refer to a site by a shorter, more meaningful name, instead of
using the full symbolic host name for a site. For example, if
you called a site named ``typhoon.unl.edu'' frequently, its book
mark name might be just ``typhoon.'' Then, instead of:

open typhoon.unl.edu
you could use:

open typhoon
You could also abbreviate the bookmark name further, as
long as the program will know which site you are referring to.
If no other bookmark's name starts with the letters ``ty,'' you
could do just:

open ty
Use the bookmarking feature to assign mnemonic names to
hosts whose real names don't give much hint to what you call
there for. A popular game called Nethack is archived at
linc.cis.upenn.edu, in the /pub/NH3.1 directory. You could as
sign ``nethack'' as the bookmark name for this site. Then you
could try:

open nethack
instead of:

open linc.cis.upenn.edu

USING THE BOOKMARK EDITOR

To manipulate the bookmarks stored in your bookmarks file,
you use the program's bookmark editor. Run the bookmark editor
by typing the bookmarks command from within the program. This
brings up a new screen of information.
On the right side is the list of remote systems the pro
gram has saved for you already. Each time you open a connection
to a remote system, the program saves an entry in your bookmark
file for you automatically. If you have not opened any sites
successfully yet, this list would be empty.
On the left side is some instructions saying what you can
do with the list. The bookmark editor is waiting for you to do
something, like select a bookmark whose settings you want to ed
it.
Some bookmark editor ``hot key'' commands are one key on
ly. You do not need to hit enter after the hot key commands. To
exit the bookmark editor for example, you would just type the
``x'' key only. The multi-key commands require a slash first and
do require the enter key. To delete the selected site, for exam
ple, you would type the ``/'' key, then ``del,'' and then the en
ter key.
You can use the ``d'' key to move down one line in the
list, and the ``u'' key to move up one line. If you have many
entries in the bookmark list, you won't be able to see them all
at once. The bookmark list scrolls as appropriate to bring the
other sites into view. Use the ``p'' and ``n'' keys to move
pages at a time.
Another way to select a site in the bookmark list is to
use the capital letters. If I had many entries in my bookmark
list, but wanted to select a site whose bookmark name was
``nethack,'' I could type ``N'' and the list would zoom to the
first site with bookmark starting with the letter ``n.''
After you have hilited a bookmark you want to edit, use
the /ed command. Doing that brings up another screen with the
settings for that bookmark.
In the Bookmark Options screen, you use hot keys to select
a setting to edit. To edit the bookmark name, for example, you
would type ``a.'' When you are finished editing this bookmark,
hit the ``x'' key to return to the bookmark editor's screen.

BOOKMARK OPTIONS

Edit the Bookmark name field to change the name you use to
open this site with. Remember, when you change the bookmark name
, you must use this name to refer to this particular bookmark, so
if you change it to ``foobar,'' you need to use ``open foobar.''
This is required because you can have multiple entries for a re
mote host. For example, you could have two bookmarks for
wuarchive.wustl.edu, named ``wumac'' and ``wuwindows.'' If you
were to say ``open wuarchive.wustl.edu,'' it would not be clear
to the program which host entry to use.
Change the login information for the site by editing the
User, Password, and Account fields. Normally you would want to
leave these as is for anonymous logins. Depending on your situa
tion, you might want to use a specific account on the remote sys
tem. This is one way to get the program to use a non-anonymous
login.
The Directory field specifies the directory to move to up
on successful connection to the remote host for this bookmark.
When you close the site, this field is updated for you automati
cally to be the directory you were in when you closed the site.
The Transfer Type field can be changed to use a different
translation mode when transferring files. This program is usual
ly running on a UNIX system, and most remote systems are also
UNIX variants, so the default transfer type is binary, which does
no translation at all.
However, when you need to work with plain text files and
transfer them between non-UNIX systems, you can change this to
ASCII. That will guarantee that the text-only files will trans
late correctly. Most often, you will need to use the binary
transfer type.
The Port field can be changed so that the program tries to
use a non-standard port number. I have yet to ever need a dif
ferent port number, but this capability is here in case it's
needed.
The Has SIZE Command field will probably not need to be
edited. This field is mostly for your information only. The
SIZE command is an FTP Protocol command that the program would
like the remote server to support. If it is supported, the pro
gram can get an exact number of bytes of remote files before
transferring. That is nice to know so the progress reports work
better.
The Has MDTM Command field will probably not need to be
edited either. If the remote server supports it, the program can
get the exact modification date of the remote file, and set the
local file to the same date.
The Can Use Passive FTP field specifies whether the remote
server allows use of the FTP Protocol's PASV command. There are
two ways to set up FTP connections. The default way is what I
call Port FTP. Unfortunately, Port FTP cannot be used when your
local host is hiding behind a Firewall. Passive FTP can be used
with a firewall, and that's why I would like to use that method
if possible. You probably will not need to edit this field,
since this can be detected automatically most of the time.
The Operating System field is used by the program to tell
if it can rely on certain dependencies to specific operating sys
tems. If the OS is a UNIX variant, the program can make some as
sumptions about the remote server's responses. For example, if
the OS is UNIX, the ls command tries to use the -CF flags, like
you could with ``/bin/ls -CF'' on UNIX. If the OS wasn't UNIX,
the ``-CF'' might not make sense to the remote server and it
might complain. You probably will not need to edit this field,
since this can be detected automatically most of the time.
The comment field can be used to store a brief description
about the site. For example, for my ``nethack'' entry, I could
use this field to hold ``Archive site for latest version of
Nethack.'' When you are in the bookmark editor's window, if you
hilite a site that has a comment, it is printed at the bottom of
the screen so you do not have to edit the site to look at it.

PREFERENCES

In addition to remote-host specific options, the program
has global options that are user-configurable. To change the
program's preferences, run the prefs command from within the pro
gram.
The Default open mode field specifies how the program
should try to open connections. If you do a lot of anonymous FT
Ping, you should leave this set to anonymous. You might want to
set this field to user & password if the hosts you FTP to most
often don't allow anonymous logins. For example, if you are us
ing the program on your company network to copy things from dif
ferent company machines, you would not want to use anonymous FTP
mode.
The Anonymous password field lets you change the value
given to the remote host when you use an anonymous login. It is
customary (and sometimes required) to use your e-mail address as
the password for anonymous FTP, so the remote host's administra
tor knows who is using the service. If the program didn't get
your e-mail address right, or you want to use something differ
ent, you can change it here.
The program now uses more whitespace than before to reduce
eyestrain. If you prefer, you can turn off that feature by
changing the Blank lines between cmds field.
The program can log the transfers you do to a file so you
can refer to the log if you can't remember where you got some
thing. To turn on the log, which is saved as ~/.ncftp/log, you
can set the User log size field to a number greater than zero.
You probably do not want to let this file grow forever, so you
set the maximum size of the log by setting that field.
Although the program is perfectly happy saving every site
you ever open in the bookmarks file, you may want to put an upper
bound on the number of sites saved. If you have a slow machine,
which might cause the program to take awhile to load and save the
bookmarks, or if disk space is at a premium, you can set the Max
bookmarks to save field to limit the number of bookmarks saved.
Once that limit is reached, the program will discard sites whose
time since the last connection is the longest. In other words, a
site you only called once a long time ago and forgot about will
be the first to go.
A few program functions need to use a pager program to
view large amounts of text. For example, the page command re
trieves a remote file and uses the pager to view it. You can
specify the program to use (and its command line flags, if any)
by setting the pager field.
When you transfer files between the remote host and your
local host, the program uses a progress meter to show you the
status of the transfer. The program has a few different progress
meters to choose from, and you can try out the other ones by
changing the Progress meter field.
You can control how much of the remote server's chatter is
printed by changing the Remote messages field. The program al
ways prints error messages, but most of the time the remote serv
er doesn't have anything useful to say. There are a couple of
messages that may be worth printing. The first is the startup
message. Typically, when you connect to a server it has some im
portant information about the server. Some servers have chdir
messages, which are sent when you enter a special directory. You
specify whether to print these messages by toggling the Remote
messages field.
By default, the program stays in the same directory you
were in when you ran the program, so that downloads will go in
that directory. I like to use a ``download directory'' so that
all of my downloads go to a specific directory. This prevents me
from exceeding my quota, and overwriting my other files. You can
set the Startup in Local Dir field to have the program change the
local directory each time when the program starts up. Then you
know where to expect your downloads to end up.
The program itself has some messages which you may get
tired of and want to turn off. You can change the Startup
messages field to specify whether the program prints its ``splash
screen'' and whether it prints a tip on how to maximize use of
the program.
When you retrieve a remote file, by default the program
tries to also set the exact modification time of the local file
as the remote file. You can turn that off by changing the File
timestamps field.
If you don't like the full-screen graphics, you can use
the line-oriented mode by changing the Screen graphics field.
Once you turn visual mode off from the Preferences screen, you
won't be able to get back to the preferences screen again when
using line mode. To get back into visual mode, you can run the
program with the ``-V'' flag, like:

ncftp -V

COMMAND REFERENCE

I will now describe the commands that the program's com
mand shell supports. The first command to know is help. If you
just type

help
from the command shell, the program prints the names of
all of the supported commands. From there, you can get specific
help for a command by typing the command after, for example:

help open
prints information about the open command.
The shell escape command is simply the exclamation point,
! To spawn a shell, just do:

!
You can also use this to do one command only, like:

!date +%H:%M:%S
The cd command changes the working directory on the remote
host. Use this command to move to different areas on the remote
server. If you just opened a new site, you might be in the root
directory. Perhaps there was a directory called
``/pub/news/comp.sources.d'' that someone told you about. From
the root directory, you could:

cd pub
cd news
cd comp.sources.d
or, more concisely,

cd /pub/news/comp.sources.d
Then, commands such as get, put, and ls could be used to
refer to items in that directory.
Some shells in the UNIX environment have a feature I like,
which is switching to the previous directory. Like those shells,
you can do:

cd
to change to the last directory you were in.
The close command disconnects you from the remote server.
The program does this for you automatically when needed, so you
can simply open other sites or quit the program without worrying
about closing the connection by hand.
Sometimes it may be necessary to use the create command.
This makes an empty file on the remote host. This can be useful
when you are unable to contact the remote server's administrator,
but hope someone in the know will spot your file. For example,

create readline2.0.tar_is_corrupt
might persuade someone to repost that file.
The debug command is mostly for use by me and the testers.
You could type

debug 1
to turn debugging mode on. Then you could see all mes
sages between the program and the remote server, and things I
print only in debugging mode. If you report a bug, I might ask
you to send me a trace file. To do that, you would run the pro
gram, and then type

debug trace 1
And so I could see how the program was compiled, you would
type

version
After you quit the program, you could then send me an
email with the contents of the ~/.ncftp/trace file, which would
also have the version information in it.
The dir command prints a detailed directory listing. It
tries to behave like UNIX's ``/bin/ls -l'' command. If the re
mote server seems to be a UNIX host, you can also use the same
flags you would with ls, for instance

dir -rt
would try to act like

/bin/ls -lrt
would on UNIX.
The echo command wouldn't seem very useful, but it can be
nice for use with the program's macros. It behaves like the
equivalent command does under a UNIX shell, but accepts some ex
tra flags. All ``percent'' flags are fed through strftime(4).
So you could type

echo It is now %H:%M on %B %d.
and you should get something like this printed on your
screen:

It is now 19:00 on January 22.
There are also ``at'' flags, which the program expands:

@H : Name of connected host
@D : Full pathname of remote current working directo
ry
@J : Short name of remote current working directory
@N : Newline.
@n : Bookmark name of connected host
Example:

echo "Connected to @H at %H:%M." >> junk
If you later looked at the contents of ``junk,'' it might
say:

Connected to sphygmomanometer.unl.edu at 20:37.
The get command copies files from the current working di
rectory on the remote host to your machine's current working di
rectory. To place a copy of ``README'' in your local directory,
you could try:

get README
The get command has some powerful features which are de
scribed below, in ``SPECIAL DOWNLOADING FEATURES.''
The bookmarks command runs the Bookmark Editor. You al
ready know how what that does, since you read the section above
on it, right?
The lcd command is the first of a few ``l'' commands that
work with the local host. This changes the current working di
rectory on the local host. If you want to download files into a
different local directory, you could use lcd to change to that
directory and then do your downloads.
Another local command that comes in handy is the lls com
mand, which runs ``/bin/ls'' on the local host and displays the
results in the program's window. You can use the same flags with
lls as you would in your command shell, so you can do things
like:

lcd ~/doc
lls -lrt p*.txt
The program also has a built-in interface to the name ser
vice via the lookup command. This means you can lookup entries
for remote hosts, like:

lookup cse.unl.edu ftp.cs.unl.edu sphygmomanome
ter.unl.edu
prints:

cse.unl.edu 129.93.33.1
typhoon.unl.edu 129.93.33.24
sphygmomanometer.unl.edu 129.93.33.126
There is also a more detailed option, enabled with ``-v,''
i.e.:

lookup -v cse.unl.edu ftp.cs.unl.edu
prints:

cse.unl.edu:
Name: cse.unl.edu
Address: 129.93.33.1
ftp.cs.unl.edu:
Name: typhoon.unl.edu
Alias: ftp.cs.unl.edu
Address: 129.93.33.24
You can also give IP addresses, so this would work too:

lookup 129.93.33.24
prints:

typhoon.unl.edu 129.93.33.24
The lpage command views a local file one page at a time.
By default, the program uses your pager program to view the
files. You can choose to use the built-in pager by using the
``-b'' flag. Example:

lpage -b ~/.ncftp/bookmarks
The lpwd command is prints the current local directory.
Use this command when you forget where you are on your local ma
chine.
The ls command prints a brief directory listing. It tries
to behave like UNIX's ``/bin/ls -CF'' command. If the remote
server seems to be a UNIX host, you can also use the same flags
you would with ls, for instance

ls -rt
would try to act like

/bin/ls -CFrt
would on UNIX.
The mkdir command tries to create a new directory on the
remote host. For many public archives, you won't have the proper
access permissions to do that.
Some servers let you use different transfer modes. Most
servers support only the default mode, which is stream mode. The
program supports that mode and also block mode. The primary ad
vantage to using this mode is that you can use the same data con
nection for all your transfers. With stream mode the program and
server must establish a new data connection for each file, and
doing that takes extra time and bandwidth. To use the mode com
mand to turn on block mode, you would type

mode b
and the command to use stream mode would be

mode s
The program turns on block mode automatically when it
knows the remote server supports it and implements it correctly,
so you should not need to use this command.
The open command connects you to a remote host. Many
times, you will simply open a host without using any flags, but
nonetheless the open command has some flags to enable certain
features.
To force an anonymous open, use the ``-a'' flag. On the
ftp.ncftp.com machine, which is the official archive site for
NcFTP, I have a need to use both anonymous logins and user lo
gins. The Bookmark Editor remembers type of login I used last,
so if the last time was a user login, I could use the ``-a'' flag
to switch back to the anonymous login type without having to use
the Bookmark Editor to change that.
Likewise, I could use the ``-u'' flag to force a user
open. Then I could give my account name and password to access
that account.
Many of the big archive sites like wuarchive.wustl.edu are
busy, so you aren't guaranteed a connection to them. The program
lets you ``redial'' sites periodically, until a connection suc
ceeds. Use the ``-r' flag to turn on automatic redial.
Redial itself has a few parameters. You can set the de
lay, in seconds, of the time spent waiting between redials. You
can also have the program give up after a maximum number of redi
als is reached. Here's an example that fully utilizes redial
mode:
open -r -d 75 -g 10 bowser.nintendo.co.jp
The ``-r'' turns on redialing, the ``-d'' sets the redial
delay to 75 seconds, and the ``-g'' flag limits redialing to 10
tries. If you like, you can just trust the default redial set
tings and only use ``-r.''
The open command will run the Bookmark Editor if you don't
supply a hostname to open. You can use the Bookmark Editor to
select a host and open it by hitting the return key.
The page command lets you browse a remote file one page at
a time. This is useful for reading README's on the remote host
without downloading them first. This command uses whatever pro
gram you have set the pager field in the Preferences screen to
view the file.
The pdir and pls commands are equivalent to dir and ls re
spectively, only they feed their output to your pager. These
commands are primarily for line mode because directory listings
can scroll offscreen. If you do a normal ls while in visual
mode, if it would go offscreen, the built-in pager kicks in auto
matically. Therefore I don't recommend using pdir and pls while
in visual mode.
The redir and predir commands give you a way to re-display
the last directory listing. The program saves the output from
the last dir or ls command you did, so if you want to see it
again you can do this without wasting network bandwidth. The
predir command is the same as redir, except that the output is
fed to your pager.
I have found that I mostly download, and have next to no
need at all to upload. But the put command is there in case you
need to upload files to remote hosts. For example, if I wanted
to send some files to a remote host, I could do:

lcd ~/docs/files
put 02.txt 03.txt 05.txt 07.txt 11.txt
The put command won't work if you don't have the proper
access permissions on the remote host. Also, this command
doesn't have any of the special features that the get command
has, except for the ``-z'' option.
The pwd command prints the current remote working directo
ry. In visual mode, this is in the status bar.
If you need to change the name of a remote file, you can
use the rename command, like:

rename SPHYGMTR.TAR sphygmomanometer-2.3.1.tar
Of course, when you finish using the program, type quit to
end the program (You could also use bye, exit, or ^D).
The quote command can be used to send a direct FTP
Protocol command to the remote server. Generally this isn't too
useful to the average user (or me either).
The rhelp command sends a help request to the remote serv
er. The list of FTP Protocol commands is often printed, and
sometimes some other information that is actually useful, like
how to reach the site administrator.
Depending on the remote server, you may be able to give a
parameter to the server also, like:

rhelp NLST
One server responded:

Syntax: NLST [ <sp> path-name ]
If you need to delete a remote file you can try the rm
command. Much of the time this won't work because you won't have
the proper access permissions. This command doesn't accept any
flags, so you can't nuke a whole tree by using ``-rf'' flags like
you can on UNIX.
Similarly, the rmdir command removes a directory. Depend
ing on the remote server, you may be able to remove a non-empty
directory, so be careful.
The set command is provided for backward compatibility
with older versions of the program, and is superseded by the
prefs command. The basic syntax is:

set option value
Where the option is the short name of the corresponding
field in the Preferences screen. The short names of the prefer
ences fields can be found by browsing your ~/.ncftp/prefs file.
This command is mainly for use with line mode, but since that
mode is no longer officially supported by me, I want to discour
age the use of this command.
One obscure command you may have to use someday is site.
The FTP Protocol allows for ``site specific'' commands. These
``site'' commands vary of course, but one common sub-command that
is useful that some sites support is chmod, i.e.:

site chmod 644 README
Try doing one of these to see what the remote server sup
ports, if any:

rhelp SITE
site help
You may need to change transfer types during the course of
a session with a server. You can use the type command to do
this. Try one of these:

type ascii
type binary
type image
If you ever need to contact me about the program, please
familiarize yourself with the version command. This command
dumps a lot of information that tells me which edition of the
program you are using, and how it was installed on your system.
Here's a way to save the output of this command to a file, so you
can send it to me:

version > version.txt

SPECIAL DOWNLOADING FEATURES

You probably already know that you use the get command to
copy files on the remote host to the local host. But the get
command has a few other tricks that you might find useful. First
of all, ncftp skips files you already have. If you try to

get file24
and there is a file named ``file24'' in the current local
directory already, the program uses some additional heuristics to
determine if it should actually waste network bandwidth to down
load it again.
The program tries to get the date and size of the remote
file ``file24.'' If that file has the exact same date and size
as the local file ``file24,'' the program will skip over that
file. If the program could not get the date or size of the re
mote file, or the size differs, the program will go ahead and
fetch the file.
In addition, if the local file's date is newer than the
remote file's date, the program skips the download because it
concludes you already have a more recent version.
What all this means for you is that you can use the pro
gram to mirror another archive. For example, you might have a
task that requires you keep a mirror of all the files of a remote
directory called ``files.'' In that directory, there might be
dozens of files, some of which are updated occasionally. You
could use ncftp to help you out by setting the appropriate local
and remote directories, then simply doing:

get *
The program will skip over the old files, and only down
load the files that you don't have or have been updated since the
last time.
Nonetheless, you may want to ignore the program's advice
and download a file anyway, despite the program's thinking that
you don't need to. You can use the ``-f'' flag with get to force
a download:

get -f README
You may also need to use the ``-C'' flag to force the pro
gram to continue downloading where it left off. I sometimes call
that feature ``forced reget'' for historical reasons.
You can also turn off wildcard matching with get by using
the ``-G'' flag. Other FTP programs used the syntax

get remote-file [local-file]
which allowed you to specify a local pathname for the file
you were trying to download. NcFTP differs in that respect, and
if you used the older programs, you would find that the program's
get behaves more like those other program's mget command. This
means that in NcFTP,that

get file01 file02
tries to download remote files named ``file01'' and
``file02.'' If you like, you can get that older behavior by us
ing the ``-z'' flag, so:

get -z file01 ../junk/files/01.txt
would get ``file01'' and use the local name
``../junk/files/01.txt.''
Another thing that get does is that you can use the ``-n''
flag to fetch files that are a certain number of days old or new
er. If you just want to get the newest files at an archive, you
don't have to use a full mirror. You can just say ``download all
files that are 3 days old or newer.'' Do that by going to a di
rectory, and trying:

get -n 3 *
The program also has ``reget'' mode built into the get
command. Other FTP programs provided a reget command, which was
useful when you lost a connection during a download. Instead of
the remote host resending the entire file, you could use the
reget command to continue the transfer where it was cut off.
NcFTP has this capability built-in, and it examines the
date and size of the remote file and local file to determine if
the program should continue where it left off last time. If the
dates are the same, but the local file is smaller, the program
attempts to ``reget.''
The last, and most wasteful feature of get is recursive
mode, which is turned on with the ``-R'' flag. This feature lets
you download an entire directory's contents, i.e.:

get -R /pub/info/help
That creates a directory called ``./help'' in the current
local directory, and copies all files and subdirectories into it.
Please use some discretion with this feature. If you get
a large directory, you could really bog down the remote host.
Archive administrators are providing a public service, so don't
abuse the archive so much that they have to shut down public ac
cess because the real users of that archive can't get their work
done.

MACROS

The program has a simple macro/alias facility. You can
use macros to roll your own commands, or do things when certain
events happen.
To use macros, you will need to create and edit the macros
file in your .ncftp subdirectory of your home directory. Your
~/.ncftp directory is created for you automatically the first
time you run the program, but you have to make the macros file
yourself since most users won't have a need for them.
You can have any number of macros. The syntax is:

macro macro-name
macro-body...
end
Here's a simple macro that users of the old ftp program
might appreciate:

macro binary
type i
end
You could run that macro simply by running the program and
typing the macro name as if it were a regular ncftp command.
Macros can also have parameters, much like the Korn
Shell's shell functions and the C-Shell's aliases. These parame
ters are sent to your macro, and if your macro uses the appropri
ate ``dollar'' variables, they are expanded. To illustrate, try
this macro:

macro cdls
cd $1
ls
end
To run that macro, open a connection and try:

cdls /pub
That would try to cd to /pub, and then try to list its
contents with ls.
Dollar variables are somewhat like those in the Bourne and
Korn shells. Example syntax:

$4 : Argument 4
$* : All arguments.
$@ : All arguments, each of them surrounded by
double quotes.
$(2-5) : Arguments 2, 3, 4, and 5.
$(2,5) : Arguments 2 and 5.
$(3+) : Arguments 3, 4, 5, ..., N.
A better way to code the ``cdls'' macro might be:

macro cdls
cd $1
ls $(2+)
end
There are some special macros, which I call event macros.
The program looks for macros by special names, and if they exist,
runs the macro when that event happens.
One event macro is the .start.ncftp macro. If you have a
macro by that name defined in your macros file, the program will
run that macro each time you run the program.
Similarly, there is also a .quit.ncftp macro that is run
each time you quit the program.
Another set of event macros are site-specific. For exam
ple, if I have a site bookmarked as ``typhoon'' I could then de
fine macros named .open.typhoon and .close.typhoon which would
run each time I opened and closed ``typhoon.''
Another, more generic set of event macros are the
.open.any and .close.any macros which run when I open or close
any site. One possible use for these macros is to run separate
shell scripts to do some processing after you finish using a
site. I could have a macro like this:

macro .quit.ncftp
echo "Started post-processing downloads at
%H:%M:%S"
!sh ~/scripts/download-decoder
echo "Finished post-processing downloads at
%H:%M:%S"
end
Another use is to duplicate the old macdef init hack that
the traditional ftp program used in its .netrc file. For exam
ple:

macro .open.infomac
echo "Getting recent files list"
get -z /pub/info-mac/help/recent-files ~/docs/re
cent
ls -lrt
end

USING COLON MODE

The colon-mode feature is used from your shell's command
line.
In ancient times, way back during the Disco Era, you could
use a program called tftp to fetch a file using the Internet
standard Trivial File Transfer Protocol. You could use that pro
gram to do something like this from within its shell:

get wuarchive.wustl.edu:/graphics/gif/README
and that would call wuarchive and fetch the README file.
You can use this program to do the same thing from your
shell's command line:

csh> ncftp wuarchive.wustl.edu:/graphics/gif/README
csh> head README
This tells your shell, in this case the C-shell to run
NcFTP, which would open wuarchive, fetch /graphics/gif/README and
write the file /README in the current working directory, and then
exits.
The colon-mode feature is nice if you don't want to browse
around the remote site, and you know exactly want you want. It
also comes in handy in shell scripts, where you don't want to en
ter the command shell, and might not want the program to spew
output.
You can use the Uniform Resource Locator standard also.
For example, this would work:

csh> ncftp ftp://wuarchive.wustl.edu/graph
ics/gif/README
There are times where you might not want the program to
write a colon-mode file in the current working directory, or per
haps you want to pipe the output of a remote file into something
else. Colon-mode has options to do this. It was inspired by the
guy who wrote the ftpcat perl script. The ``-c'' option tells
the program to write on the standard output stream. The ``-m''
option pipes the file into your pager (like more) Of course this
won't work if the thing you give colon-mode is a directory! This
example just dumps a remote file to stdout:

csh> ncftp -c wuarc:/graphics/gif/README
This example redirects a remote file into a different lo
cation:

csh> ncftp -c wu:/README > ~pdietz/thesis.tex
This one shows how to use a pipeline:

csh> ncftp -c wuarc:/README | tail | wc -l
10
csh>
This shows how to page a remote file:

csh> ncftp -m wuarc:/graphics/gif/README

USING LINE MODE

The only reason I provide line mode is so that the primi
tive operating systems whose curses library is missing or dys
functional won't render the program completely useless.
exceptions of the functions that require visual mode, such
as the Preferences screen and the Bookmark Editor. You will have
to edit the ~/.ncftp/prefs and ~/.ncftp/bookmarks file manually,
with a text editor.
As a small consolation, you get to use the full-powered
line-editing libraries, like GNU Readline if they were compiled
with the program.

SUMMARY OF COMMAND LINE OPTIONS

When you invoke the program from your shell, there are
``dash flags'' you can use like you can with most other UNIX pro
grams.
Here's a list of options you can use from the command
line:

-D : Turns on debugging mode and tracing.
-V : Uses ``visual'' mode for this session.
-L : Uses ``line mode'' for this session.
-H : Prints the information from the ``version'' com
mand and exits.
When you turn on tracing, the program writes a log with
debugging information to a file called trace in your .ncftp sub
directory of your home directory. If you need to report a bug,
it would be helpful to mail me the trace file so I can track it
down better.
In addition to the program flags, you can also use flags
from the open and get commands with a colon mode path. Here's a
really complex example:

csh> ncftp -r -d 120 -n 3 sphygmomanome
ter.unl.edu:/pub/stuff/*
This tries redialing that host every two minutes, and
fetching all files from the ``/pub/stuff'' directory that are 3
days old or newer.

AUTHOR

NcFTP was written by Mike Gleason, (mgleason@NcFTP.com).
NcFTP is copyrighted 1995 by Mike Gleason. All rights reserved.
As of this writing, the most recent version is archived in
<ftp://ftp.ncftp.com/ncftp/>.

THANKS

Ideas and some code contributed by my partner, Phil Dietz,

Thanks to everyone who has helped test the program, and
sent in feedback over the years. Your support is what drives me
to improve the program!
I'd like to thank my former system administrators, most
notably Charles Daniel, for making testing on a variety of plat
forms possible, letting me have some extra disk space, and for
maintaining the UNL FTP site.
I also thank Dale Botkin and Tim Russell at Probe
Technology, for giving ncftp a home on probe.net.
For testing above and beyond the call of duty, I am espe
cially grateful to: Phil Dietz, Kok Hon Yin (hkok@yoda.unl.edu),
Andrey A. Chernov (ache@astral.msk.su).
Thanks to Tim MacKenzie (t.mackenzie@trl.oz.au) for the
filename completion code.
Thanks to DaviD W. Sanderson (dws@ssec.wisc.edu), for
helping me out with the man page.

BUGS

Due to a limitation in the curses library, scrolling may
be slow in visual mode.
Shell escapes, suspending (^Z) and resuming, and interrup
ing (^C) still have quirks with visual mode.
There are no such sites named bowser.nintendo.co.jp or
sphygmomanometer.unl.edu.

SEE ALSO

ftp(1), ftpd(8), nslookup(1), archie(1), rcp(1), tftp(1).
NcFTP 2.4.3
Copyright © 2010-2025 Platon Technologies, s.r.o.           Index | Man stránky | tLDP | Dokumenty | Utilitky | O projekte
Design by styleshout