.\" 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% .\" .TH FTP 1C "" .UC 5 .SH NAME ftp \- ARPANET 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. The program allows a user to transfer files to and from a remote network site. .PP The client host with which .I ftp 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 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 by .IR ftp : .TP .B \&! [command [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. .TP \fBappend\fP \fIlocal-file\fP [ \fIremote-file\fP ] Append a local file to a file on the remote machine. If .I remote-file 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 , and .IR structure . .TP .B ascii Set the file transfer .I type to network ASCII. This is the default type. .TP .B bell Arrange that a bell be sounded after each file transfer command is completed. .TP .B binary Set the file transfer .I type to support binary image transfer. .TP .B bye Terminate the FTP session with the remote server and exit .IR ftp . .TP .BI cd " remote-directory" Change the working directory on the remote machine to .IR remote-directory . .TP .B close Terminate the FTP session with the remote server, and return to the command interpreter. .TP .BI delete " remote-file" Delete the file .I remote-file on the remote machine. .TP \fBdebug\fP [ \fIdebug-value\fP ] Toggle debugging mode. If an optional .I debug-value is specified it is used to set the debugging level. When debugging is on, .I ftp prints each command sent to the remote machine, preceded by the string \*(lq-->\*(rq. .TP \fBdir\fP [ \fIremote-directory\fP ] [ \fIlocal-file\fP ] Print a listing of the directory contents in the directory, .IR remote-directory , and, optionally, placing the output in .IR local-file . 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. .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 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 , and .I structure are used while transferring the file. .TP \fBglob\fP 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). .TP \fBhash\f Toggle hash-sign (``#'') printing for each data block transferred. The size of a data block is 1024 bytes. .TP \fBhelp\fP [ \fIcommand\fP ] Print an informative message about the meaning of .IR command . If no argument is given, .I ftp prints a list of the known commands. .TP \fBlcd\fP [ \fIdirectory\fP ] Change the working directory on the local machine. If no .I directory 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, or if \fIlocal-file\fR is \fB-\fR, the output is sent to the terminal. .TP \fBmdelete\fP [ \fIremote-files\fP ] Delete the \fIremote-files\fP on the remote machine. .TP \fBmdir\fP [ \fIremote-files\fP ] [ \fIlocal-file\fP ] Like \fBdir\fP, except multiple remote files may be specified. .TP \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'. .TP \fBmkdir\fP \fIdirectory-name\fP Make a directory on the remote machine. .TP \fBmls\fP [ \fIremote-files\fP ] [ \fIlocal-file\fP ] Like \fBls\fP, except multiple remote files may be specified. .TP \fBmode\fP [ \fImode-name\fP ] Set the file transfer .I mode to .IR mode-name . The default mode is \*(lqstream\*(rq mode. .TP \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. .TP \fBopen\fP \fIhost\fP [ \fIport\fP ] 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 will also attempt to automatically log the user in to the FTP server (see below). .TP .B prompt 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. .TP \fBput\fP \fIlocal-file\fP [ \fIremote-file\fP ] Store a local file on the remote machine. If .I remote-file 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 , and .IR structure . .TP .B pwd 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 ] A synonym for get. .TP \fBremotehelp\fP [ \fIcommand-name\fP ] Request help from the remote FTP server. If a .I command-name is specified it is supplied to the server as well. .TP \fBrename\fP [ \fIfrom\fP ] [ \fIto\fP ] Rename the file .I from on the remote machine, to the file .IR to . .TP .BI rmdir " directory-name" Delete a directory on the remote machine. .TP \fBsend\fP \fIlocal-file\fP [ \fIremote-file\fP ] 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 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. .TP .B status Show the current status of .IR ftp . .TP \fBstruct\fP [ \fIstruct-name\fP ] Set the file transfer .I structure to .IR struct-name . By default \*(lqstream\*(rq structure is used. .TP .B tenex Set the file transfer type to that needed to talk to TENEX machines. .TP .B trace Toggle packet tracing. .TP \fBtype\fP [ \fItype-name\fP ] Set the file transfer .I type to .IR type-name . 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 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 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, if verbose is on, when a file transfer completes, statistics regarding the efficiency of the transfer are reported. By default, verbose is on. .TP \fB?\fP [ \fIcommand\fP ] A synonym for help. .PP Command arguments which have embedded spaces may be quoted with quote (") marks. .SH "FILE NAMING CONVENTIONS" Files specified as arguments to .I ftp commands are processed according to the following rules. .TP 1) If the file name \*(lq\-\*(rq is specified, the .B stdin (for reading) or .B stdout (for writing) is used. .TP 2) If the first character of the file name is \*(lq|\*(rq, the remainder of the argument is interpreted as a shell command. .I Ftp then forks a shell, using .IR popen (3) 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, 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" 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, plus local byte size 8 for \fBtenex\fP mode transfers. .PP .I Ftp supports only the default values for the remaining file transfer parameters: .IR mode , .IR form , 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 multiple file transfers. .PP The .B \-d option enables debugging. .PP The .B \-g option disables file name globbing. .SH BUGS 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 .I ftp will likely have to be killed by hand.