BSD 4_3_Net_2 release
[unix-history] / usr / src / usr.bin / ftp / ftp.1
index a90c442..9f69ff2 100644 (file)
-.\" Copyright (c) 1983 Regents of the University of California.
-.\" All rights reserved.  The Berkeley software License Agreement
-.\" specifies the terms and conditions for redistribution.
+.\" Copyright (c) 1985, 1989, 1990 The Regents of the University of California.
+.\" All rights reserved.
 .\"
 .\"
-.\"    @(#)ftp.1       5.1 (Berkeley) %G%
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"    This product includes software developed by the University of
+.\"    California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
 .\"
 .\"
-.TH FTP 1C "18 July 1983"
-.UC 5
-.SH NAME
-ftp \- file transfer program
-.SH SYNOPSIS
-.B ftp
-[ 
-.B \-v
-] [
-.B \-d
-] [
-.B \-i
-] [
-.B \-n
-] [
-.B \-g
-] [
-.B host
-]
-.SH DESCRIPTION
-.I Ftp
-is the user interface to the ARPANET standard File Transfer Protocol.
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"    @(#)ftp.1       6.18 (Berkeley) 7/30/91
+.\"
+.Dd July 30, 1991
+.Dt FTP 1
+.Os BSD 4.2
+.Sh NAME
+.Nm ftp
+.Nd
+.Tn ARPANET
+file transfer program
+.Sh SYNOPSIS
+.Nm ftp
+.Op Fl v
+.Op Fl d
+.Op Fl i
+.Op Fl n
+.Op Fl g
+.Op Ar host
+.Sh DESCRIPTION
+.Nm Ftp
+is the user interface to the
+.Tn ARPANET
+standard File Transfer Protocol.
 The program allows a user to transfer files to and from a
 remote network site.
 The program allows a user to transfer files to and from a
 remote network site.
-.PP
-The client host with which 
-.I ftp
+.Pp
+Options may be specified at the command line, or to the
+command interpreter.
+.Bl -tag -width flag
+.It Fl v
+Verbose option forces
+.Nm ftp
+to show all responses from the remote server, as well
+as report on data transfer statistics.
+.It Fl n
+Restrains
+.Nm ftp
+from attempting \*(Lqauto-login\*(Rq upon initial connection.
+If auto-login is enabled,
+.Nm ftp
+will check the
+.Pa .netrc
+(see below) file in the user's home directory for an entry describing
+an account on the remote machine.
+If no entry exists,
+.Nm ftp
+will prompt for the remote machine login name (default is the user
+identity on the local machine), and, if necessary, prompt for a password
+and an account with which to login.
+.It Fl i
+Turns off interactive prompting during
+multiple file transfers.
+.It Fl d
+Enables debugging.
+.It Fl g
+Disables file name globbing.
+.El
+.Pp
+The client host with which
+.Nm ftp
 is to communicate may be specified on the command line.
 If this is done,
 is to communicate may be specified on the command line.
 If this is done,
-.I ftp
-will immediately attempt to establish a connection to an FTP
-server on that host; otherwise, 
-.I ftp
+.Nm ftp
+will immediately attempt to establish a connection to an
+.Tn FTP
+server on that host; otherwise,
+.Nm ftp
 will enter its command interpreter and await instructions
 will enter its command interpreter and await instructions
-from the user.  When 
-.I ftp
-is awaiting commands from the user the prompt \*(lqftp>\*(rq
-is provided the user.  The following commands are recognized
+from the user.
+When
+.Nm ftp
+is awaiting commands from the user the prompt
+.Ql ftp>
+is provided to the user.
+The following commands are recognized
 by
 by
-.IR ftp :
-.TP
-.B \&!
-Invoke a shell on the local machine.
-.TP
-\fBappend\fP \fIlocal-file\fP [ \fIremote-file\fP ]
-Append a local file to a file on the remote machine.  If
-.I remote-file
+.Nm ftp  :
+.Bl -tag -width Fl
+.It Ic \&! Op Ar command Op Ar args
+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.
+.It Ic \&$ Ar macro-name Op Ar args
+Execute the macro
+.Ar macro-name
+that was defined with the
+.Ic macdef
+command.
+Arguments are passed to the macro unglobbed.
+.It Ic account Op Ar passwd
+Supply a supplemental password required by a remote system for access
+to resources once a login has been successfully completed.
+If no argument is included, the user will be prompted for an account
+password in a non-echoing input mode.
+.It Ic append Ar local-file Op Ar remote-file
+Append a local file to a file on the remote machine.
+If
+.Ar remote-file
 is left unspecified, the local file name is used in naming the
 is left unspecified, the local file name is used in naming the
-remote file.  File transfer uses the current settings for
-.IR type ,
-.IR format ,
-.IR mode ,
+remote file after being altered by any
+.Ic ntrans
+or
+.Ic nmap
+setting.
+File transfer uses the current settings for
+.Ic type  ,
+.Ic format ,
+.Ic mode  ,
 and
 and
-.IR structure .
-.TP
-.B ascii
-Set the file transfer 
-.I type
-to network ASCII.  This is the default type.
-.TP
-.B bell
+.Ic structure .
+.It Ic ascii
+Set the file transfer
+.Ic type
+to network
+.Tn ASCII .
+This is the default type.
+.It Ic bell
 Arrange that a bell be sounded after each file transfer
 command is completed.
 Arrange that a bell be sounded after each file transfer
 command is completed.
-.TP
-.B binary
+.It Ic binary
 Set the file transfer
 Set the file transfer
-.I type
+.Ic type
 to support binary image transfer.
 to support binary image transfer.
-.TP
-.B bye
-Terminate the FTP session with the remote server
+.It Ic bye
+Terminate the
+.Tn FTP
+session with the remote server
 and exit
 and exit
-.IR ftp .
-.TP
-.BI cd " remote-directory"
+.Nm ftp  .
+An end of file will also terminate the session and exit.
+.It Ic case
+Toggle remote computer file name case mapping during
+.Ic mget
+commands.
+When
+.Ic case
+is on (default is off), remote computer file names with all letters in
+upper case are written in the local directory with the letters mapped
+to lower case.
+.It Ic \&cd Ar remote-directory
 Change the working directory on the remote machine
 Change the working directory on the remote machine
-to 
-.IR remote-directory .
-.TP
-.B close
-Terminate the FTP session with the remote server, and
+to
+.Ar remote-directory  .
+.It Ic cdup
+Change the remote machine working directory to the parent of the
+current remote machine working directory.
+.It Ic chmod Ar mode file-name
+Change the permission modes of the file
+.Ar file-name
+on the remote
+sytem to
+.Ar mode  .
+.It Ic close
+Terminate the
+.Tn FTP
+session with the remote server, and
 return to the command interpreter.
 return to the command interpreter.
-.TP
-.BI delete " remote-file"
+Any defined macros are erased.
+.It Ic \&cr
+Toggle carriage return stripping during
+ascii type file retrieval.
+Records are denoted by a carriage return/linefeed sequence
+during ascii type file transfer.
+When
+.Ic \&cr
+is on (the default), carriage returns are stripped from this
+sequence to conform with the
+.Ux
+single linefeed record
+delimiter.
+Records on
+.Pf non\- Ns Ux
+remote systems may contain single linefeeds;
+when an ascii type transfer is made, these linefeeds may be
+distinguished from a record delimiter only when
+.Ic \&cr
+is off.
+.It Ic delete Ar remote-file
 Delete the file
 Delete the file
-.I remote-file
+.Ar remote-file
 on the remote machine.
 on the remote machine.
-.TP
-\fBdebug\fP [ \fIdebug-value\fP ]
-Toggle debugging mode.  If an optional
-.I debug-value
+.It Ic debug Op Ar debug-value
+Toggle debugging mode.
+If an optional
+.Ar debug-value
 is specified it is used to set the debugging level.
 When debugging is on,
 is specified it is used to set the debugging level.
 When debugging is on,
-.I ftp
+.Nm ftp
 prints each command sent to the remote machine, preceded
 prints each command sent to the remote machine, preceded
-by the string \*(lq-->\*(rq.
-.TP
-\fBdir\fP [ \fIremote-directory\fP ] [ \fIlocal-file\fP ]
+by the string
+.Ql \-\->
+.It Xo
+.Ic dir
+.Op Ar remote-directory
+.Op Ar local-file
+.Xc
 Print a listing of the directory contents in the
 directory,
 Print a listing of the directory contents in the
 directory,
-.IR remote-directory ,
+.Ar remote-directory  ,
 and, optionally, placing the output in
 and, optionally, placing the output in
-.IR local-file .
+.Ar local-file  .
+If interactive prompting is on,
+.Nm ftp
+will prompt the user to verify that the last argument is indeed the
+target local file for receiving
+.Ic dir
+output.
 If no directory is specified, the current working
 If no directory is specified, the current working
-directory on the remote machine is used.  If no local
-file is specified, output comes to the terminal.
-.TP
-.BI form " format"
-Set the file transfer 
-.I form
-to 
-.IR format .
-The default format is \*(lqfile\*(rq.
-.TP
-\fBget\fP \fIremote-file\fP [ \fIlocal-file\fP ]
-Retrieve the 
-.I remote-file
-and store it on the local machine.  If the local
+directory on the remote machine is used.
+If no local
+file is specified, or
+.Ar local-file
+is
+.Fl  ,
+output comes to the terminal.
+.It Ic disconnect
+A synonym for
+.Ar close  .
+.It Ic form Ar format
+Set the file transfer
+.Ic form
+to
+.Ar format  .
+The default format is \*(Lqfile\*(Rq.
+.It Ic get Ar remote-file Op Ar local-file
+Retrieve the
+.Ar remote-file
+and store it on the local machine.
+If the local
 file name is not specified, it is given the same
 file name is not specified, it is given the same
-name it has on the remote machine.
-The current settings for 
-.IR type ,
-.IR form ,
-.IR mode ,
+name it has on the remote machine, subject to
+alteration by the current
+.Ic case  ,
+.Ic ntrans ,
+and
+.Ic nmap
+settings.
+The current settings for
+.Ic type  ,
+.Ic form ,
+.Ic mode  ,
 and
 and
-.I structure
+.Ic structure
 are used while transferring the file.
 are used while transferring the file.
-.TP
-\fBhash\f
+.It Ic glob
+Toggle filename expansion for
+.Ic mdelete  ,
+.Ic mget
+and
+.Ic mput  .
+If globbing is turned off with
+.Ic glob  ,
+the file name arguments
+are taken literally and not expanded.
+Globbing for
+.Ic mput
+is done as in
+.Xr csh 1 .
+For
+.Ic mdelete
+and
+.Ic mget  ,
+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
+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
+.Ql mls remote-files \-
+Note:
+.Ic mget
+and
+.Ic mput
+are not meant to transfer
+entire directory subtrees of files.
+That can be done by
+transferring a
+.Xr tar 1
+archive of the subtree (in binary mode).
+.It Ic hash
 Toggle hash-sign (``#'') printing for each data block
 Toggle hash-sign (``#'') printing for each data block
-transferred.  The size of a data block is 1024 bytes.
-.TP
-.B glob
-Toggle file name globbing.  With file name globbing enabled,
-each local file or pathname is processed for 
-.IR csh (1)
-metacharacters.  These characters include ``*?[]~{}''.
-Remote files specified in mutliple item commands, e.g.
-.IR mput ,
-are globbed by the remote server.  With globbing disabled
-all files and pathnames are treated literally.
-.TP
-\fBhelp\fP [ \fIcommand\fP ]
+transferred.
+The size of a data block is 1024 bytes.
+.It Ic help Op Ar command
 Print an informative message about the meaning of
 Print an informative message about the meaning of
-.IR command .
-If no argument is given, 
-.I ftp
+.Ar command  .
+If no argument is given,
+.Nm ftp
 prints a list of the known commands.
 prints a list of the known commands.
-.TP
-\fBlcd\fP [ \fIdirectory\fP ]
-Change the working directory on the local machine.  If
-no 
-.I directory
+.It Ic idle Op Ar seconds
+Set the inactivity timer on the remote server to
+.Ar seconds
+seconds.
+If
+.Ar seconds
+is ommitted, the current inactivity timer is printed.
+.It Ic lcd Op Ar directory
+Change the working directory on the local machine.
+If
+no
+.Ar directory
 is specified, the user's home directory is used.
 is specified, the user's home directory is used.
-.TP
-\fBls\fP [ \fIremote-directory\fP ] [ \fIlocal-file\fP ]
-Print an abbreviated listing of the contents of a
-directory on the remote machine.  If
-.I remote-directory
-is left unspecified, the current working directory
-is used.  If no local file is specified, the output
-is sent to the terminal.
-.TP
-\fBmdelete\fP \fIremote-files\fP
-Delete the specified files on the remote machine.  If globbing
-is enabled, the specification of remote files will first be
-expanded using
-.IR ls .
-.TP
-\fBmdir\fP \fIremote-files\fP \fIlocal-file\fP
-Obtain a directory listing of multiple files on the remote
-machine and place the result in
-.IR local-file .
-.TP
-\fBmget\fP \fIremote-files\fP
-Retrieve the specified files from the remote machine and
-place them in the current local directory.  If globbing
-is enabled, the specification of remote files will first be
-expanding using
-.IR ls .
-.TP
-\fBmkdir\fP \fIdirectory-name\fP
+.It Xo
+.Ic \&ls
+.Op Ar remote-directory
+.Op Ar local-file
+.Xc
+Print a listing of the contents of a
+directory on the remote machine.
+The listing includes any system-dependent information that the server
+chooses to include; for example, most
+.Ux
+systems will produce
+output from the command
+.Ql ls \-l .
+(See also
+.Ic nlist . )
+If
+.Ar remote-directory
+is left unspecified, the current working directory is used.
+If interactive prompting is on,
+.Nm ftp
+will prompt the user to verify that the last argument is indeed the
+target local file for receiving
+.Ic \&ls
+output.
+If no local file is specified, or if
+.Ar local-file
+is
+.Sq Fl ,
+the output is sent to the terminal.
+.It Ic macdefNs Ar macro-name
+Define a macro.
+Subsequent lines are stored as the macro
+.Ar macro-name  ;
+a null line (consecutive newline characters
+in a file or
+carriage returns from the terminal) terminates macro input mode.
+There is a limit of 16 macros and 4096 total characters in all
+defined macros.
+Macros remain defined until a
+.Ic close
+command is executed.
+The macro processor interprets `$' and `\e' as special characters.
+A `$' followed by a number (or numbers) is replaced by the
+corresponding argument on the macro invocation command line.
+A `$' followed by an `i' signals that macro processor that the
+executing macro is to be looped.
+On the first pass `$i' is
+replaced by the first argument on the macro invocation command line,
+on the second pass it is replaced by the second argument, and so on.
+A `\e' followed by any character is replaced by that character.
+Use the `\e' to prevent special treatment of the `$'.
+.It Ic mdelete Op Ar remote-files
+Delete the
+.Ar remote-files
+on the remote machine.
+.It Ic mdir Ar remote-files local-file
+Like
+.Ic dir  ,
+except multiple remote files may be specified.
+If interactive prompting is on,
+.Nm ftp
+will prompt the user to verify that the last argument is indeed the
+target local file for receiving
+.Ic mdir
+output.
+.It Ic mget Ar remote-files
+Expand the
+.Ar remote-files
+on the remote machine
+and do a
+.Ic get
+for each file name thus produced.
+See
+.Ic glob
+for details on the filename expansion.
+Resulting file names will then be processed according to
+.Ic case  ,
+.Ic ntrans ,
+and
+.Ic nmap
+settings.
+Files are transferred into the local working directory,
+which can be changed with
+.Ql lcd directory ;
+new local directories can be created with
+.Ql "\&! mkdir directory" .
+.It Ic mkdir Ar directory-name
 Make a directory on the remote machine.
 Make a directory on the remote machine.
-.TP
-\fBmls\fP \fIremote-files\fP \fIlocal-file\fP
-Obtain an abbreviated listing of multiple files on the remote
-machine and place the result in
-.IR local-file .
-.TP
-\fBmode\fP [ \fImode-name\fP ]
+.It Ic mls Ar remote-files local-file
+Like
+.Ic nlist  ,
+except multiple remote files may be specified,
+and the
+.Ar local-file
+must be specified.
+If interactive prompting is on,
+.Nm ftp
+will prompt the user to verify that the last argument is indeed the
+target local file for receiving
+.Ic mls
+output.
+.It Ic mode Op Ar mode-name
 Set the file transfer
 Set the file transfer
-.I mode
+.Ic mode
 to
 to
-.IR mode-name .
-The default mode is \*(lqstream\*(rq mode.
-.TP
-\fBmput\fP \fIlocal-files\fP
-Transfer multiple local files from the current local directory
-to the current working directory on the remote machine.
-.TP
-\fBopen\fP \fIhost\fP [ \fIport\fP ]
+.Ar mode-name  .
+The default mode is \*(Lqstream\*(Rq mode.
+.It Ic modtime Ar file-name
+Show the last modification time of the file on the remote machine.
+.It Ic mput Ar local-files
+Expand wild cards in the list of local files given as arguments
+and do a
+.Ic put
+for each file in the resulting list.
+See
+.Ic glob
+for details of filename expansion.
+Resulting file names will then be processed according to
+.Ic ntrans
+and
+.Ic nmap
+settings.
+.It Ic newer Ar file-name
+Get the file only if the modification time of the remote file is more
+recent that the file on the current system.
+If the file does not
+exist on the current system, the remote file is considered
+.Ic newer  .
+Otherwise, this command is identical to
+.Ar get  .
+.It Xo
+.Ic nlist
+.Op Ar remote-directory
+.Op Ar local-file
+.Xc
+Print a  list of the files in a
+directory on the remote machine.
+If
+.Ar remote-directory
+is left unspecified, the current working directory is used.
+If interactive prompting is on,
+.Nm ftp
+will prompt the user to verify that the last argument is indeed the
+target local file for receiving
+.Ic nlist
+output.
+If no local file is specified, or if
+.Ar local-file
+is
+.Fl  ,
+the output is sent to the terminal.
+.It Ic nmap Op Ar inpattern outpattern
+Set or unset the filename mapping mechanism.
+If no arguments are specified, the filename mapping mechanism is unset.
+If arguments are specified, remote filenames are mapped during
+.Ic mput
+commands and
+.Ic put
+commands issued without a specified remote target filename.
+If arguments are specified, local filenames are mapped during
+.Ic mget
+commands and
+.Ic get
+commands issued without a specified local target filename.
+This command is useful when connecting to a
+.No non\- Ns Ux
+remote computer
+with different file naming conventions or practices.
+The mapping follows the pattern set by
+.Ar inpattern
+and
+.Ar outpattern  .
+.Op Ar Inpattern
+is a template for incoming filenames (which may have already been
+processed according to the
+.Ic ntrans
+and
+.Ic case
+settings).
+Variable templating is accomplished by including the
+sequences `$1', `$2', ..., `$9' in
+.Ar inpattern  .
+Use `\\' to prevent this special treatment of the `$' character.
+All other characters are treated literally, and are used to determine the
+.Ic nmap
+.Op Ar inpattern
+variable values.
+For example, given
+.Ar inpattern
+$1.$2 and the remote file name "mydata.data", $1 would have the value
+"mydata", and $2 would have the value "data".
+The
+.Ar outpattern
+determines the resulting mapped filename.
+The sequences `$1', `$2', ...., `$9' are replaced by any value resulting
+from the
+.Ar inpattern
+template.
+The sequence `$0' is replace by the original filename.
+Additionally, the sequence
+.Ql Op Ar seq1 , Ar seq2
+is replaced by
+.Op Ar seq1
+if
+.Ar seq1
+is not a null string; otherwise it is replaced by
+.Ar seq2 .
+For example, the command
+.Pp
+.Bd -literal -offset indent -compact
+nmap $1.$2.$3 [$1,$2].[$2,file]
+.Ed
+.Pp
+would yield
+the output filename "myfile.data" for input filenames "myfile.data" and
+"myfile.data.old", "myfile.file" for the input filename "myfile", and
+"myfile.myfile" for the input filename ".myfile".
+Spaces may be included in
+.Ar outpattern  ,
+as in the example: `nmap $1 sed "s/  *$//" > $1' .
+Use the `\e' character to prevent special treatment
+of the `$','[','[', and `,' characters.
+.It Ic ntrans Op Ar inchars Op Ar outchars
+Set or unset the filename character translation mechanism.
+If no arguments are specified, the filename character
+translation mechanism is unset.
+If arguments are specified, characters in
+remote filenames are translated during
+.Ic mput
+commands and
+.Ic put
+commands issued without a specified remote target filename.
+If arguments are specified, characters in
+local filenames are translated during
+.Ic mget
+commands and
+.Ic get
+commands issued without a specified local target filename.
+This command is useful when connecting to a
+.No non\- Ns Ux
+remote computer
+with different file naming conventions or practices.
+Characters in a filename matching a character in
+.Ar inchars
+are replaced with the corresponding character in
+.Ar outchars  .
+If the character's position in
+.Ar inchars
+is longer than the length of
+.Ar outchars  ,
+the character is deleted from the file name.
+.It Ic open Ar host Op Ar port
 Establish a connection to the specified
 Establish a connection to the specified
-.I host
-FTP server.  An optional port number may be supplied,
-in which case, 
-.I ftp
-will attempt to contact an FTP server at that port.
-If the 
-.I auto-login
-option is on (default), 
-.I ftp
+.Ar host
+.Tn FTP
+server.
+An optional port number may be supplied,
+in which case,
+.Nm ftp
+will attempt to contact an
+.Tn FTP
+server at that port.
+If the
+.Ic auto-login
+option is on (default),
+.Nm ftp
 will also attempt to automatically log the user in to
 will also attempt to automatically log the user in to
-the FTP server (see below).
-.TP
-.B prompt
-Toggle interactive prompting.  Interactive prompting
+the
+.Tn FTP
+server (see below).
+.It Ic prompt
+Toggle interactive prompting.
+Interactive prompting
 occurs during multiple file transfers to allow the
 occurs during multiple file transfers to allow the
-user to selectively retrieve or store files.  If
-prompting is turned off (default), any
-.I mget
+user to selectively retrieve or store files.
+If prompting is turned off (default is on), any
+.Ic mget
 or
 or
-.I mput
-will transfer all files.
-.TP
-\fBput\fP \fIlocal-file\fP [ \fIremote-file\fP ]
-Store a local file on the remote machine.  If 
-.I remote-file
+.Ic mput
+will transfer all files, and any
+.Ic mdelete
+will delete all files.
+.It Ic proxy Ar ftp-command
+Execute an ftp command on a secondary control connection.
+This command allows simultaneous connection to two remote ftp
+servers for transferring files between the two servers.
+The first
+.Ic proxy
+command should be an
+.Ic open  ,
+to establish the secondary control connection.
+Enter the command "proxy ?" to see other ftp commands executable on the
+secondary connection.
+The following commands behave differently when prefaced by
+.Ic proxy  :
+.Ic open
+will not define new macros during the auto-login process,
+.Ic close
+will not erase existing macro definitions,
+.Ic get
+and
+.Ic mget
+transfer files from the host on the primary control connection
+to the host on the secondary control connection, and
+.Ic put  ,
+.Ic mput ,
+and
+.Ic append
+transfer files from the host on the secondary control connection
+to the host on the primary control connection.
+Third party file transfers depend upon support of the ftp protocol
+.Dv PASV
+command by the server on the secondary control connection.
+.It Ic put Ar local-file Op Ar remote-file
+Store a local file on the remote machine.
+If
+.Ar remote-file
 is left unspecified, the local file name is used
 is left unspecified, the local file name is used
-in naming the remote file.  File transfer uses the
+after processing according to any
+.Ic ntrans
+or
+.Ic nmap
+settings
+in naming the remote file.
+File transfer uses the
 current settings for
 current settings for
-.IR type ,
-.IR format ,
-.IR mode ,
+.Ic type  ,
+.Ic format ,
+.Ic mode  ,
 and
 and
-.IR structure .
-.TP
-.B pwd
+.Ic structure  .
+.It Ic pwd
 Print the name of the current working directory on the remote
 machine.
 Print the name of the current working directory on the remote
 machine.
-.TP
-.B quit
-A synonym for bye.
-.TP
-.BI quote " arg1 arg2 ..."
-The arguments specified are sent, verbatim, to the remote FTP
-server.  A single FTP reply code is expected in return.
-.TP
-\fBrecv\fP \fIremote-file\fP [ \fIlocal-file\fP ]
+.It Ic quit
+A synonym for
+.Ic bye  .
+.It Ic quote Ar arg1 arg2 ...
+The arguments specified are sent, verbatim, to the remote
+.Tn FTP
+server.
+.It Ic recv Ar remote-file Op Ar local-file
 A synonym for get.
 A synonym for get.
-.TP
-\fBremotehelp\fP [ \fIcommand-name\fP ]
-Request help from the remote FTP server.  If a 
-.I command-name
+.It Ic reget Ar remote-file Op Ar local-file
+Reget acts like get, except that if
+.Ar local-file
+exists and is
+smaller than
+.Ar remote-file  ,
+.Ar local-file
+is presumed to be
+a partially transferred copy of
+.Ar remote-file
+and the transfer
+is continued from the apparent point of failure.
+This command
+is useful when transferring very large files over networks that
+are prone to dropping connections.
+.It Ic remotehelp Op Ar command-name
+Request help from the remote
+.Tn FTP
+server.
+If a
+.Ar command-name
 is specified it is supplied to the server as well.
 is specified it is supplied to the server as well.
-.TP
-\fBrename\fP [ \fIfrom\fP ] [ \fIto\fP ]
+.It Ic remotestatus Op Ar file-name
+With no arguments, show status of remote machine.
+If
+.Ar file-name
+is specified, show status of
+.Ar file-name
+on remote machine.
+.It Xo
+.Ic rename
+.Op Ar from
+.Op Ar to
+.Xc
 Rename the file
 Rename the file
-.I from
+.Ar from
 on the remote machine, to the file
 on the remote machine, to the file
-.IR to .
-.TP
-.BI rmdir " directory-name"
+.Ar to  .
+.It Ic reset
+Clear reply queue.
+This command re-synchronizes command/reply sequencing with the remote
+ftp server.
+Resynchronization may be necessary following a violation of the ftp protocol
+by the remote server.
+.It Ic restart Ar marker
+Restart the immediately following
+.Ic get
+or
+.Ic put
+at the
+indicated
+.Ar marker  .
+On
+.Ux
+systems, marker is usually a byte
+offset into the file.
+.It Ic rmdir Ar directory-name
 Delete a directory on the remote machine.
 Delete a directory on the remote machine.
-.TP
-\fBsend\fP \fIlocal-file\fP [ \fIremote-file\fP ]
+.It Ic runique
+Toggle storing of files on the local system with unique filenames.
+If a file already exists with a name equal to the target
+local filename for a
+.Ic get
+or
+.Ic mget
+command, a ".1" is appended to the name.
+If the resulting name matches another existing file,
+a ".2" is appended to the original name.
+If this process continues up to ".99", an error
+message is printed, and the transfer does not take place.
+The generated unique filename will be reported.
+Note that
+.Ic runique
+will not affect local files generated from a shell command
+(see below).
+The default value is off.
+.It Ic send Ar local-file Op Ar remote-file
 A synonym for put.
 A synonym for put.
-.TP
-.B sendport
-Toggle the use of PORT commands.  By default, 
-.I ftp
-will attempt to use a PORT command when establishing
-a connection for each data transfer.  If the PORT
-command fails, 
-.I ftp
-will use the default data port.  When the use of PORT
+.It Ic sendport
+Toggle the use of
+.Dv PORT
+commands.
+By default,
+.Nm ftp
+will attempt to use a
+.Dv PORT
+command when establishing
+a connection for each data transfer.
+The use of
+.Dv PORT
+commands can prevent delays
+when performing multiple file transfers.
+If the
+.Dv PORT
+command fails,
+.Nm ftp
+will use the default data port.
+When the use of
+.Dv PORT
 commands is disabled, no attempt will be made to use
 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
+.Dv PORT
+commands for each data transfer.
+This is useful
+for certain
+.Tn FTP
+implementations which do ignore
+.Dv PORT
 commands but, incorrectly, indicate they've been accepted.
 commands but, incorrectly, indicate they've been accepted.
-.TP
-.B status
+.It Ic site Ar arg1 arg2 ...
+The arguments specified are sent, verbatim, to the remote
+.Tn FTP
+server as a
+.Dv SITE
+command.
+.It Ic size Ar file-name
+Return size of
+.Ar file-name
+on remote machine.
+.It Ic status
 Show the current status of
 Show the current status of
-.IR ftp .
-.TP
-\fBstruct\fP [ \fIstruct-name\fP ]
+.Nm ftp  .
+.It Ic struct Op Ar struct-name
 Set the file transfer
 Set the file transfer
-.I structure
+.Ar structure
 to
 to
-.IR struct-name .
-By default \*(lqstream\*(rq structure is used.
-.TP
-.B tenex
+.Ar struct-name .
+By default \*(Lqstream\*(Rq structure is used.
+.It Ic sunique
+Toggle storing of files on remote machine under unique file names.
+Remote ftp server must support ftp protocol
+.Dv STOU
+command for
+successful completion.
+The remote server will report unique name.
+Default value is off.
+.It Ic system
+Show the type of operating system running on the remote machine.
+.It Ic tenex
 Set the file transfer type to that needed to
 Set the file transfer type to that needed to
-talk to TENEX machines.
-.TP
-.B trace
+talk to
+.Tn TENEX
+machines.
+.It Ic trace
 Toggle packet tracing.
 Toggle packet tracing.
-.TP
-\fBtype\fP [ \fItype-name\fP ]
+.It Ic type Op Ar type-name
 Set the file transfer
 Set the file transfer
-.I type
+.Ic type
 to
 to
-.IR type-name .
+.Ar type-name  .
 If no type is specified, the current type
 If no type is specified, the current type
-is printed.  The default type is network ASCII.
-.TP
-\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,
-.I ftp
+is printed.
+The default type is network
+.Tn ASCII .
+.It Ic umask Op Ar newmask
+Set the default umask on the remote server to
+.Ar newmask  .
+If
+.Ar newmask
+is ommitted, the current umask is printed.
+.It Xo
+.Ic user Ar user-name
+.Op Ar password
+.Op Ar account
+.Xc
+Identify yourself to the remote
+.Tn FTP
+server.
+If the
+.Ar password
+is not specified and the server requires it,
+.Nm ftp
 will prompt the user for it (after disabling local echo).
 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
-.I ftp
-is invoked with \*(lqauto-login\*(rq disabled, this
+If an
+.Ar account
+field is not specified, and the
+.Tn FTP
+server
+requires it, the user will be prompted for it.
+If an
+.Ar account
+field is specified, an account command will
+be relayed to the remote server after the login sequence
+is completed if the remote server did not require it
+for logging in.
+Unless
+.Nm ftp
+is invoked with \*(Lqauto-login\*(Rq disabled, this
 process is done automatically on initial connection to
 process is done automatically on initial connection to
-the FTP server.
-.TP
-.B verbose
-Toggle verbose mode.  In verbose mode, all responses from
-the FTP server are displayed to the user.  In addition,
+the
+.Tn FTP
+server.
+.It Ic verbose
+Toggle verbose mode.
+In verbose mode, all responses from
+the
+.Tn FTP
+server are displayed to the user.
+In addition,
 if verbose is on, when a file transfer completes, statistics
 if verbose is on, when a file transfer completes, statistics
-regarding the efficiency of the transfer are reported.  By default,
+regarding the efficiency of the transfer are reported.
+By default,
 verbose is on.
 verbose is on.
-.TP
-\fB?\fP [ \fIcommand\fP ]
+.It Ic ? Op Ar command
 A synonym for help.
 A synonym for help.
-.PP
+.El
+.Pp
 Command arguments which have embedded spaces may be quoted with
 Command arguments which have embedded spaces may be quoted with
-quote (") marks.
-.SH "FILE NAMING CONVENTIONS"
+quote `"' marks.
+.Sh ABORTING A FILE TRANSFER
+To abort a file transfer, use the terminal interrupt key
+(usually Ctrl-C).
+Sending transfers will be immediately halted.
+Receiving transfers will be halted by sending a ftp protocol
+.Dv ABOR
+command to the remote server, and discarding any further data received.
+The speed at which this is accomplished depends upon the remote
+server's support for
+.Dv ABOR
+processing.
+If the remote server does not support the
+.Dv ABOR
+command, an
+.Ql ftp>
+prompt will not appear until the remote server has completed
+sending the requested file.
+.Pp
+The terminal interrupt key sequence will be ignored when
+.Nm ftp
+has completed any local processing and is awaiting a reply
+from the remote server.
+A long delay in this mode may result from the ABOR processing described
+above, or from unexpected behavior by the remote server, including
+violations of the ftp protocol.
+If the delay results from unexpected remote server behavior, the local
+.Nm ftp
+program must be killed by hand.
+.Sh FILE NAMING CONVENTIONS
 Files specified as arguments to
 Files specified as arguments to
-.I ftp
+.Nm ftp
 commands are processed according to the following rules.
 commands are processed according to the following rules.
-.TP
-1)
-If the file name \*(lq\-\*(rq is specified, the
-.B stdin
+.Bl -enum
+.It
+If the file name
+.Sq Fl
+is specified, the
+.Ar stdin
 (for reading) or
 (for reading) or
-.B stdout
+.Ar stdout
 (for writing) is used.
 (for writing) is used.
-.TP
-2)
-If the first character of the file name is \*(lq|\*(rq, the
+.It
+If the first character of the file name is
+.Sq \&| ,
+the
 remainder of the argument is interpreted as a shell command.
 remainder of the argument is interpreted as a shell command.
-.I Ftp
-then forks a shell, using 
-.IR popen (3)
+.Nm Ftp
+then forks a shell, using
+.Xr popen 3
 with the argument supplied, and reads (writes) from the stdout
 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.
-.TP
-3)
-Failing the above checks, if ``globbing'' is enabled, 
+(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.
+.It
+Failing the above checks, if ``globbing'' is enabled,
 local file names are expanded
 local file names are expanded
-according to the rules used in the 
-.IR csh (1);
-c.f. the 
-.I glob
-command. 
-.SH "FILE TRANSFER PARAMETERS"
+according to the rules used in the
+.Xr csh  1  ;
+c.f. the
+.Ic glob
+command.
+If the
+.Nm ftp
+command expects a single local file (.e.g.
+.Ic put  ) ,
+only the first filename generated by the "globbing" operation is used.
+.It
+For
+.Ic mget
+commands and
+.Ic get
+commands with unspecified local file names, the local filename is
+the remote filename, which may be altered by a
+.Ic case  ,
+.Ic ntrans ,
+or
+.Ic nmap
+setting.
+The resulting filename may then be altered if
+.Ic runique
+is on.
+.It
+For
+.Ic mput
+commands and
+.Ic put
+commands with unspecified remote file names, the remote filename is
+the local filename, which may be altered by a
+.Ic ntrans
+or
+.Ic nmap
+setting.
+The resulting filename may then be altered by the remote server if
+.Ic sunique
+is on.
+.El
+.Sh FILE TRANSFER PARAMETERS
 The FTP specification specifies many parameters which may
 The FTP specification specifies many parameters which may
-affect a file transfer.  The 
-.I type
-may be one of \*(lqascii\*(rq, \*(lqimage\*(rq (binary),
-\*(lqebcdic\*(rq, and \*(lqlocal byte size\*(rq (for PDP-10's
-and PDP-20's mostly).
-.I Ftp
-supports the ascii and image types of file transfer.
-.PP
-.I Ftp
+affect a file transfer.
+The
+.Ic type
+may be one of \*(Lqascii\*(Rq, \*(Lqimage\*(Rq (binary),
+\*(Lqebcdic\*(Rq, and \*(Lqlocal byte size\*(Rq (for
+.Tn PDP Ns -10's
+and
+.Tn PDP Ns -20's
+mostly).
+.Nm Ftp
+supports the ascii and image types of file transfer,
+plus local byte size 8 for
+.Ic tenex
+mode transfers.
+.Pp
+.Nm Ftp
 supports only the default values for the remaining
 supports only the default values for the remaining
-file transfer parameters: 
-.IR mode ,
-.IR form ,
+file transfer parameters:
+.Ic mode  ,
+.Ic form ,
 and
 and
-.IR struct .
-.SH OPTIONS
-Options may be specified at the command line, or to the 
-command interpreter.
-.PP
-The
-.B \-v
-(verbose on) option forces
-.I ftp
-to show all responses from the remote server, as well
-as report on data transfer statistics.
-.PP
-The
-.B \-n
-option restrains 
-.I ftp
-from attempting \*(lqauto-login\*(rq upon initial connection.
-If auto-login is enabled, 
-.I ftp
-will check the
-.I .netrc
-file in the user's home directory for an entry describing
-an account on the remote machine.  If no entry exists,
-.I ftp
-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.
-.PP
-The
-.B \-i
-option turns off interactive prompting during
-mutliple file transfers.
-.PP
+.Ic struct  .
+.Sh THE .netrc FILE
 The
 The
-.B \-d
-option enables debugging.
-.PP
+.Pa .netrc
+file contains login and initialization information
+used by the auto-login process.
+It resides in the user's home directory.
+The following tokens are recognized; they may be separated by spaces,
+tabs, or new-lines:
+.Bl -tag -width password
+.It Ic machine Ar name
+Identify a remote machine
+.Ar name .
+The auto-login process searches the
+.Pa .netrc
+file for a
+.Ic machine
+token that matches the remote machine specified on the
+.Nm ftp
+command line or as an
+.Ic open
+command argument.
+Once a match is made, the subsequent
+.Pa .netrc
+tokens are processed,
+stopping when the end of file is reached or another
+.Ic machine
+or a
+.Ic default
+token is encountered.
+.It Ic default
+This is the same as
+.Ic machine
+.Ar name
+except that
+.Ic default
+matches any name.
+There can be only one
+.Ic default
+token, and it must be after all
+.Ic machine
+tokens.
+This is normally used as:
+.Pp
+.Dl default login anonymous password user@site
+.Pp
+thereby giving the user
+.Ar automatic
+anonymous ftp login to
+machines not specified in
+.Pa .netrc .
+This can be overridden
+by using the
+.Fl n
+flag to disable auto-login.
+.It Ic login Ar name
+Identify a user on the remote machine.
+If this token is present, the auto-login process will initiate
+a login using the specified
+.Ar name .
+.It Ic password Ar string
+Supply a password.
+If this token is present, the auto-login process will supply the
+specified string if the remote server requires a password as part
+of the login process.
+Note that if this token is present in the
+.Pa .netrc
+file for any user other
+than
+.Ar anonymous  ,
+.Nm ftp
+will abort the auto-login process if the
+.Pa .netrc
+is readable by
+anyone besides the user.
+.It Ic account Ar string
+Supply an additional account password.
+If this token is present, the auto-login process will supply the
+specified string if the remote server requires an additional
+account password, or the auto-login process will initiate an
+.Dv ACCT
+command if it does not.
+.It Ic macdef Ar name
+Define a macro.
+This token functions like the
+.Nm ftp
+.Ic macdef
+command functions.
+A macro is defined with the specified name; its contents begin with the
+next
+.Pa .netrc
+line and continue until a null line (consecutive new-line
+characters) is encountered.
+If a macro named
+.Ic init
+is defined, it is automatically executed as the last step in the
+auto-login process.
+.El
+.Sh ENVIRONMENT
+.Nm Ftp
+utilizes the following environment variables.
+.Bl -tag -width Fl
+.It Ev HOME
+For default location of a
+.Pa .netrc
+file, if one exists.
+.It Ev SHELL
+For default shell.
+.El
+.Sh SEE ALSO
+.Xr ftpd 8
+.Sh HISTORY
 The
 The
-.B \-g
-option disables file name globbing.
-.SH BUGS
-Many FTP server implementation 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
-.I ftp
-will likely have to be killed by hand.
+.Nm ftp
+command appeared in
+.Bx 4.2 .
+.Sh BUGS
+Correct execution of many commands depends upon proper behavior
+by the remote server.
+.Pp
+An error in the treatment of carriage returns
+in the
+.Bx 4.2
+ascii-mode transfer code
+has been corrected.
+This correction may result in incorrect transfers of binary files
+to and from
+.Bx 4.2
+servers using the ascii type.
+Avoid this problem by using the binary image type.