.\" Copyright (c) 1983 Regents of the University of California.
.\" All rights reserved. The Berkeley software License Agreement
.\" specifies the terms and conditions for redistribution.
.\" @(#)ftp.1 6.1 (Berkeley) %G%
ftp \- ARPANET file transfer program
is the user interface to the ARPANET standard File Transfer Protocol.
The program allows a user to transfer files to and from a
The client host with which
is to communicate may be specified on the command line.
will immediately attempt to establish a connection to an FTP
server on that host; otherwise,
will enter its command interpreter and await instructions
is awaiting commands from the user the prompt \*(lqftp>\*(rq
is provided the user. The following commands are recognized
Invoke an interactive shell on the local machine.
If there are arguments, the first is taken to be a command to execute
directly, with the rest of the arguments as its arguments.
\fBappend\fP \fIlocal-file\fP [ \fIremote-file\fP ]
Append a local file to a file on the remote machine. If
is left unspecified, the local file name is used in naming the
remote file. File transfer uses the current settings for
to network ASCII. This is the default type.
Arrange that a bell be sounded after each file transfer
to support binary image transfer.
Terminate the FTP session with the remote server
.BI cd " remote-directory"
Change the working directory on the remote machine
Terminate the FTP session with the remote server, and
return to the command interpreter.
.BI delete " remote-file"
\fBdebug\fP [ \fIdebug-value\fP ]
Toggle debugging mode. If an optional
is specified it is used to set the debugging level.
prints each command sent to the remote machine, preceded
by the string \*(lq-->\*(rq.
\fBdir\fP [ \fIremote-directory\fP ] [ \fIlocal-file\fP ]
Print a listing of the directory contents in the
and, optionally, placing the output in
If no directory is specified, the current working
directory on the remote machine is used. If no local
file is specified, or \fIlocal-file\fP is \fB-\fP,
output comes to the terminal.
The default format is \*(lqfile\*(rq.
\fBget\fP \fIremote-file\fP [ \fIlocal-file\fP ]
and store it on the local machine. If the local
file name is not specified, it is given the same
name it has on the remote machine.
are used while transferring the file.
Toggle filename expansion for \fBmdelete\fP, \fBmget\fP and \fBmput\fP.
If globbing is turned off with \fBglob\fP, the file name arguments
are taken literally and not expanded.
Globbing for \fBmput\fP is done as in \fBcsh\fP(1).
For \fBmdelete\fP and \fBmget\fP, each remote file name is expanded
separately on the remote machine and the lists are not merged.
Expansion of a directory name is likely to be radically
different from expansion of the name of an ordinary file:
the exact result depends on the foreign operating system and ftp server,
and can be previewed by doing `\fBmls\fP\ \fIremote-files\fP\ \fB-\fP'.
Note: \fBmget\fP and \fBmput\fP are not meant to transfer
entire directory subtrees of files. That can be done by
transferring a \fBtar\fP(1) archive of the subtree (in binary mode).
Toggle hash-sign (``#'') printing for each data block
transferred. The size of a data block is 1024 bytes.
\fBhelp\fP [ \fIcommand\fP ]
Print an informative message about the meaning of
prints a list of the known commands.
\fBlcd\fP [ \fIdirectory\fP ]
Change the working directory on the local machine. If
is specified, the user's home directory is used.
\fBls\fP [ \fIremote-directory\fP ] [ \fIlocal-file\fP ]
Print an abbreviated listing of the contents of a
directory on the remote machine. If
is left unspecified, the current working directory
is used. If no local file is specified, or if \fIlocal-file\fR is \fB-\fR,
the output is sent to the terminal.
\fBmdelete\fP [ \fIremote-files\fP ]
Delete the \fIremote-files\fP on the remote machine.
\fBmdir\fP [ \fIremote-files\fP ] [ \fIlocal-file\fP ]
Like \fBdir\fP, except multiple remote files may be specified.
\fBmget\fP \fIremote-files\fP
Expand the \fIremote-files\fP on the remote machine
and do a \fBget\fP for each file name thus produced.
See \fBglob\fR for details on the filename expansion.
Files are transferred into the local working directory,
which can be changed with `\fBlcd\fP\ directory';
new local directories can be created with `\fB!\fP\ mkdir\ directory'.
\fBmkdir\fP \fIdirectory-name\fP
Make a directory on the remote machine.
\fBmls\fP [ \fIremote-files\fP ] [ \fIlocal-file\fP ]
Like \fBls\fP, except multiple remote files may be specified.
\fBmode\fP [ \fImode-name\fP ]
The default mode is \*(lqstream\*(rq mode.
\fBmput\fP \fIlocal-files\fP
Expand wild cards in the list of local files given as arguments
and do a \fBput\fR for each file in the resulting list.
See \fBglob\fP for details of filename expansion.
\fBopen\fP \fIhost\fP [ \fIport\fP ]
Establish a connection to the specified
FTP server. An optional port number may be supplied,
will attempt to contact an FTP server at that port.
will also attempt to automatically log the user in to
the FTP server (see below).
Toggle interactive prompting. Interactive prompting
occurs during multiple file transfers to allow the
user to selectively retrieve or store files.
If prompting is turned off (default), any \fBmget\fP or \fBmput\fP
will transfer all files, and any \fBmdelete\fP will delete all files.
\fBput\fP \fIlocal-file\fP [ \fIremote-file\fP ]
Store a local file on the remote machine. If
is left unspecified, the local file name is used
in naming the remote file. File transfer uses the
Print the name of the current working directory on the remote
.BI quote "arg1 arg2 ..."
The arguments specified are sent, verbatim, to the remote FTP
server. A single FTP reply code is expected in return.
\fBrecv\fP \fIremote-file\fP [ \fIlocal-file\fP ]
\fBremotehelp\fP [ \fIcommand-name\fP ]
Request help from the remote FTP server. If a
is specified it is supplied to the server as well.
\fBrename\fP [ \fIfrom\fP ] [ \fIto\fP ]
on the remote machine, to the file
.BI rmdir " directory-name"
Delete a directory on the remote machine.
\fBsend\fP \fIlocal-file\fP [ \fIremote-file\fP ]
Toggle the use of PORT commands. By default,
will attempt to use a PORT command when establishing
a connection for each data transfer. If the PORT
will use the default data port. When the use of PORT
commands is disabled, no attempt will be made to use
PORT commands for each data transfer. This is useful
for certain FTP implementations which do ignore PORT
commands but, incorrectly, indicate they've been accepted.
Show the current status of
\fBstruct\fP [ \fIstruct-name\fP ]
By default \*(lqstream\*(rq structure is used.
Set the file transfer type to that needed to
\fBtype\fP [ \fItype-name\fP ]
If no type is specified, the current type
is printed. The default type is network ASCII.
\fBuser\fP \fIuser-name\fP [ \fIpassword\fP ] [ \fIaccount\fP ]
Identify yourself to the remote FTP server. If the
password is not specified and the server requires it,
will prompt the user for it (after disabling local echo).
If an account field is not specified, and the FTP server
requires it, the user will be prompted for it. Unless
is invoked with \*(lqauto-login\*(rq disabled, this
process is done automatically on initial connection to
Toggle verbose mode. In verbose mode, all responses from
the FTP server are displayed to the user. In addition,
if verbose is on, when a file transfer completes, statistics
regarding the efficiency of the transfer are reported. By default,
\fB?\fP [ \fIcommand\fP ]
Command arguments which have embedded spaces may be quoted with
.SH "FILE NAMING CONVENTIONS"
Files specified as arguments to
commands are processed according to the following rules.
If the file name \*(lq\-\*(rq is specified, the
If the first character of the file name is \*(lq|\*(rq, the
remainder of the argument is interpreted as a shell command.
then forks a shell, using
with the argument supplied, and reads (writes) from the stdout
(stdin). If the shell command includes spaces, the argument
must be quoted; e.g. \*(lq"| ls -lt"\*(rq. A particularly
useful example of this mechanism is: \*(lqdir |more\*(rq.
Failing the above checks, if ``globbing'' is enabled,
local file names are expanded
according to the rules used in the
.SH "FILE TRANSFER PARAMETERS"
The FTP specification specifies many parameters which may
affect a file transfer. The
may be one of \*(lqascii\*(rq, \*(lqimage\*(rq (binary),
\*(lqebcdic\*(rq, and \*(lqlocal byte size\*(rq (for PDP-10's
supports the ascii and image types of file transfer,
plus local byte size 8 for \fBtenex\fP mode transfers.
supports only the default values for the remaining
file transfer parameters:
Options may be specified at the command line, or to the
(verbose on) option forces
to show all responses from the remote server, as well
as report on data transfer statistics.
from attempting \*(lqauto-login\*(rq upon initial connection.
If auto-login is enabled,
file in the user's home directory for an entry describing
an account on the remote machine. If no entry exists,
will use the login name on the local machine as the user
identity on the remote machine, and prompt for a password
and, optionally, an account with which to login.
option turns off interactive prompting during
option enables debugging.
option disables file name globbing.
Many FTP server implementations do not support the experimental
operations such as print working directory. Aborting a file
transfer does not work right; if one attempts this the local
will likely have to be killed by hand.