The following options can be specified at the command line, or to
the command interpreter:
-a
Uses GSSAPI authentication only. If the
authentication fails, this option closes the connection.
-d
Enables debugging.
-f
Forwards local security credentials to the remote
server.
-g
Disables filename "globbing".
-i
Turns off interactive prompting during multiple file
transfers.
-m
Specifies the
GSS-
API mechanism to use. The
default is to use the kerberos_v5 mechanism. Supported alternatives are
defined in
/etc/gss/mech (see
mech(5)).
-n
Does not attempt "auto-login" upon initial
connection. If auto-login is not disabled, ftp checks the .netrc
file in the user's home directory for an entry describing an account on the
remote machine. If no entry exists, ftp prompts for the login name of
the account on the remote machine (the default is the login name on the local
machine), and, if necessary, prompts for a password and an account with which
to login.
-p
Enables passive mode for data transfers. This command is
useful when connecting to a remote host from behind a connection filtering
firewall.
-s
Skips the
SYST command that is sent by default to
all remote servers upon connection. The system command is what enables the
automatic use of binary mode rather than the protocol default ascii mode.
As some older servers cannot handle the ftp command, this
directive is provided to allow inter-operability with these servers.
-t
Enables packet tracing (unimplemented).
-T timeout
Enables global connection timer, specified in seconds
(decimal). There is a timer for the control connection that is reset when
anything is sent to the server and disabled while the client is prompting for
user input. Another independent timer is used to monitor incoming or outgoing
data connections.
-v
Shows all responses from the remote server, as well as
report on data transfer statistics. This is turned on by default if ftp
is running interactively with its input coming from the user's terminal.
-x
Attempts to use GSSAPI for authentication and
encryption. Data and Command channel protection is set to
"private".
The following commands can be specified to the command
interpreter:
!
[ command ] Runs command as a shell command
on the local machine. If no command is given, invokes an interactive
shell.
$ macro-name [ args ]
Executes the macro macro-name that was defined
with the macdef command. Arguments are passed to the macro
unglobbed.
account [ passwd ]
Supplies 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 is prompted for an account password in a
non-echoing input mode.
append local-file [ remote-file ]
Appends a local file to a file on the remote machine. If
remote-file is not specified, the local file name is used, subject to
alteration by any ntrans or nmap settings. File transfer uses
the current settings for "representation type", "file
structure", and "transfer mode".
ascii
Sets the "representation type" to "network
ASCII". This is the default type.
bell
Sounds a bell after each file transfer command is
completed.
binary
Sets the "representation type" to
"image".
bye
Terminates the FTP session with the remote server
and exit ftp. An EOF also terminates the session and exit.
case
Toggles remote computer file name case mapping during
mget commands. When 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.
cd remote-directory
Changes the working directory on the remote machine to
remote-directory.
cdup
Changes the remote machine working directory to the
parent of the current remote machine working directory.
clear
Sets the protection level on data transfers to
"clear". If no ADAT command succeeded, then this is
the default protection level.
close
Terminates the FTP session with the remote server,
and return to the command interpreter. Any defined macros are erased.
cr
Toggles RETURN stripping during "network
ASCII" type file retrieval. Records are denoted by a
RETURN/LINEFEED sequence during "network ASCII" type
file transfer. When cr is on (the default), RETURN characters are
stripped from this sequence to conform with the UNIX system single
LINEFEED record delimiter. Records on non-UNIX-system remote hosts can
contain single LINEFEED characters; when an "network
ASCII" type transfer is made, these LINEFEED characters can
be distinguished from a record delimiter only when cr is off.
delete remote-file
Deletes the file remote-file on the remote
machine.
debug
Toggles debugging mode. When debugging is on, ftp
prints each command sent to the remote machine, preceded by the string
->.
dir [ remote-directory [ local-file
]]
Prints a listing of the directory contents in the
directory, remote-directory, and, optionally, placing the output in
local-file. If no directory is specified, the current working directory
on the remote machine is used. If no local file is specified, or
local-file is −, output is sent to the terminal.
disconnect
A synonym for close.
form [ format-name ]
Sets the carriage control format subtype of the
"representation type" to format-name. The only valid
format-name is non-print, which corresponds to the default
"non-print" subtype.
get remote-file [ local-file ]
Retrieves the 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, subject to alteration by the current
case, ntrans, and nmap settings. The current settings for
"representation type", "file structure", and
"transfer mode" are used while transferring the file.
glob
Toggles filename expansion, or "globbing", for
mdelete,
mget and
mput. If globbing is turned off,
filenames are taken literally.
Globbing for mput is done as in sh(1). For
mdelete and 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 radically different
from expansion of the name of an ordinary file: the exact result depends on
the remote operating system and FTP server, and can be previewed with
the command, mls remote-files −.
mget and mput are not meant to transfer entire
directory subtrees of files. You can do this by transferring a tar(1)
archive of the subtree (using a "representation type" of
"image" as set by the binary command).
hash
Toggles hash-sign (#) printing for each data block
transferred. The size of a data block is 8192 bytes.
help [ command ]
Prints an informative message about the meaning of
command. If no argument is given, ftp prints a list of the known
commands.
lcd [ directory ]
Changes the working directory on the local machine. If no
directory is specified, the user's home directory is used.
ls [ -al | remote-directory [
local-file ]]
By default, prints an abbreviated listing of the contents
of a directory on the remote machine. This default behavior can be changed to
make
ls a synonym of the
dir command. This change can be
achieved by setting
FTP_LS_SENDS_NLST to '
no' in
/etc/default/ftp or in the environment. See
ftp(5) for details.
The -a option lists all entries, including those that begin
with a dot (.), which are normally not listed. The -l option
lists files in long format, giving mode, number of links, owner, group, size
in bytes, and time of last modification for each file. If the file is a
special file, the size field instead contains the major and minor device
numbers rather than a size. If the file is a symbolic link, the filename is
printed followed by "→" and the pathname of the
referenced file.
If remote-directory is left unspecified, the current
working directory is used.
If no local file is specified, or if local-file is
−, the output is sent to the terminal.
macdef macro-name
Defines a macro. Subsequent lines are stored as the macro
macro-name. A null line (consecutive
NEWLINE characters in a
file or RETURN characters 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
close command is executed.
The macro processor interprets $ and \ 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 \ followed by any
character is replaced by that character. Use the \ to prevent special
treatment of the $.
mdelete remote-files
Deletes the remote-files on the remote
machine.
mdir remote-files local-file
Like dir, except multiple remote files can be
specified. If interactive prompting is on, ftp prompts the user to
verify that the last argument is indeed the target local file for receiving
mdir output.
mget remote-files
Expands the remote-files on the remote machine and
do a get for each file name thus produced. See glob for details
on the filename expansion. Resulting file names are processed according to
case, ntrans, and nmap settings. Files are transferred
into the local working directory, which can be changed with lcd
directory. New local directories can be created with ! mkdir
directory.
mkdir directory-name
Makes a directory on the remote machine.
mls remote-files local-file
Like
ls(1), except multiple remote files can be
specified. If interactive prompting is on,
ftp prompts the user to
verify that the last argument is indeed the target local file for receiving
mls output.
mode [ mode-name ]
Sets the "transfer mode" to mode-name.
The only valid mode-name is stream, which corresponds to the
default "stream" mode. This implementation only supports
stream, and requires that it be specified.
mput local-files
Expands wild cards in the list of local files given as
arguments and do a put for each file in the resulting list. See
glob for details of filename expansion. Resulting file names are
processed according to ntrans and nmap settings.
nlist [ -al | remote-directory [
local-file ]]
Prints an abbreviated listing of the contents of a
directory on the remote machine, listing only those files that can be
retrieved by the
get command, unless the
-a or
-l option
is used. If
remote-directory is left unspecified, the current working
directory is used.
The -a option lists all entries, including those that begin
with a dot (.), which are normally not listed. The -l option
lists files in long format the same way it does when used with the ls
command.
nmap [ inpattern outpattern ]
Sets or unsets the filename mapping mechanism. If no
arguments are specified, the filename mapping mechanism is unset. If arguments
are specified, remote filenames are mapped during
mput commands and
put commands issued without a specified remote target filename. If
arguments are specified, local filenames are mapped during
mget
commands and
get commands issued without a specified local target
filename.
This command is useful when connecting to a non-UNIX-system remote
host with different file naming conventions or practices. The mapping
follows the pattern set by inpattern and outpattern.
inpattern is a template for incoming filenames (which can have
already been processed according to the ntrans and case
settings). Variable templating is accomplished by including the sequences
$1, $2, ..., $9 in inpattern. Use \ to
prevent this special treatment of the $ character. All other
characters are treated literally, and are used to determine the nmap
inpattern variable values.
For example, given inpattern $1.$2 and the remote
file name mydata.data, $1 would have the value mydata,
and $2 would have the value data.
The outpattern determines the resulting mapped filename.
The sequences $1, $2, ..., $9 are replaced by any value
resulting from the inpattern template. The sequence $0 is
replaced by the original filename. Additionally, the sequence
[seq1,seq2] is replaced by seq1 if seq1 is not a
null string; otherwise it is replaced by seq2.
For example, the command nmap $1.$2.$3 [$1,$2].[$2,file]
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. SPACE characters can be included in
outpattern, as in the example nmap $1 | sed "s/
*$//" > $1. Use the \ character to prevent special
treatment of the $, [, ], and ,, characters.
ntrans [ inchars [ outchars ] ]
Sets or unsets 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
mput commands and
put commands issued
without a specified remote target filename, and characters in local filenames
are translated during
mget commands and
get commands issued
without a specified local target filename.
This command is useful when connecting to a non-UNIX-system remote
host with different file naming conventions or practices. Characters in a
filename matching a character in inchars are replaced with the
corresponding character in outchars. If the character's position in
inchars is longer than the length of outchars, the character
is deleted from the file name.
Only 16 characters can be translated when using the ntrans
command under ftp. Use case (described above) if needing to
convert the entire alphabet.
open host [ port ]
Establishes a connection to the specified host
FTP server. An optional port number can be supplied, in which case,
ftp attempts to contact an FTP server at that port. If the
auto-login option is on (default setting), ftp also attempts to
automatically log the user in to the FTP server.
passive
Toggles passive mode. When passive mode is turned on, the
ftp client sends the PASV command requesting that the FTP server
open a port for the data connection and return the address of that port. The
remote server listens on that port and the client connects to it. When passive
mode is turned off, the ftp client sends the PORT command to the server
specifying an address for the remote server to connect back to. Passive mode
is useful when the connections to the ftp client are controlled, for example,
when behind a firewall. When connecting to an IPv6-enabled FTP server,
EPSV can be used in place of PASV and EPRT in place of
PORT.
private
Sets the protection level on data transfers to
"private". Data transmissions are confidentiality— and
integrity—protected by encryption. If no ADAT command succeeded,
then the only possible level is "clear".
prompt
Toggles interactive prompting. Interactive prompting
occurs during multiple file transfers to allow the user to selectively
retrieve or store files. By default, prompting is turned on. If prompting is
turned off, any mget or mput transfers all files, and any
mdelete deletes all files.
protect protection-level
Sets the protection level on data transfers to
protection-level. The valid protection levels are
"clear" for unprotected data transmissions,
"safe" for data transmissions that are integrity-protected by
cryptographic checksum, and "private" for data transmissions
that are confidentiality— and integrity— protected by
encryption. If no ADAT command succeeded, then the only possible level
is "clear". If no level is specified, the current level is
printed. The default protection level is "clear".
proxy ftp-command
Executes 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
proxy command should be an
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
proxy: open does not define new macros during the auto-login
process, close does not erase existing macro definitions, get
and mget transfer files from the host on the primary control
connection to the host on the secondary control connection, and put,
mputd, and 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 PASV
command by the server on the secondary control connection.
put local-file [ remote-file ]
Stores a local file on the remote machine. If
remote-file is left unspecified, the local file name is used after
processing according to any ntrans or nmap settings in naming
the remote file. File transfer uses the current settings for
"representation type", "file structure", and
"transfer mode".
pwd
Prints the name of the current working directory on the
remote machine.
quit
A synonym for bye.
quote arg1 arg2 ...
Sends the arguments specified, verbatim, to the remote
FTP server. A single
FTP reply code is expected in return. (The
remotehelp command displays a list of valid arguments.)
quote should be used only by experienced users who are
familiar with the FTP protocol.
recv remote-file [ local-file ]
A synonym for get.
reget remote-file [ local-file ]
The reget command acts like get, except
that if local-file exists and is smaller than remote-file,
local-file is presumed to be a partially transferred copy of
remote-file and the transfer is continued from the apparent point of
failure. This command is useful when transferring large files over networks
that are prone to dropping connections.
remotehelp [ command-name ]
Requests help from the remote FTP server. If a
command-name is specified it is supplied to the server as well.
rename from to
Renames the file from on the remote machine to
have the name to.
reset
Clears reply queue. This command re-synchronizes
command/reply sequencing with the remote FTP server. Resynchronization
can be necessary following a violation of the FTP protocol by the
remote server.
restart [ marker ]
Restarts the immediately following get or
put at the indicated marker. On UNIX systems, marker is usually
a byte offset into the file. When followed by an mget, the
restart applies to the first get performed. Specifying a
marker of 0 clears the restart marker. If no argument is
specified, the current restart status is displayed.
rmdir directory-name
Deletes a directory on the remote machine.
runique
Toggles 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 get or 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 is reported. runique does not affect local files
generated from a shell command. The default value is off.
safe
Sets the protection level on data transfers to
"safe". Data transmissions are integrity-protected by
cryptographic checksum. If no ADAT command succeeded, then the only
possible level is "clear".
send local-file [ remote-file ]
A synonym for put.
sendport
Toggles the use of PORT commands. By default,
ftp attempts to use a PORT command when establishing a
connection for each data transfer. The use of PORT commands can prevent
delays when performing multiple file transfers. If the PORT command
fails, ftp uses the default data port. When the use of PORT
commands is disabled, no attempt is made to use PORT commands for each
data transfer. This is useful when connected to certain FTP
implementations that ignore PORT commands but incorrectly indicate they
have been accepted.
site arg1 [ arg2 ] ...
Sends the arguments specified, verbatim, to the remote
FTP server as a SITE command.
status
Show the current status of ftp.
struct [ struct-name ]
Sets the file structure to struct-name. The only
valid struct-name is file, which corresponds to the default
"file" structure. The implementation only supports file, and
requires that it be specified.
sunique
Toggles storing of files on remote machine under unique
file names. The remote FTP server must support the STOU command
for successful completion. The remote server reports the unique name. Default
value is off.
tcpwindow [ size ]
Sets the TCP window size to be used for data
connections. Specifying a size of 0 stops the explicit setting of the
TCP window size on data connections. If no argument is specified, the
current setting is displayed.
tenex
Sets the "representation type" to that needed
to talk to TENEX machines.
trace
Toggles packet tracing (unimplemented).
type [ type-name ]
Sets the "representation type" to
type-name. The valid type-names are ascii for
"network ASCII", binary or image for
"image", and tenex for "local byte size" with a
byte size of 8 (used to talk to TENEX machines). If no type is
specified, the current type is printed. The default type is "network
ASCII".
user user-name [ password [
account ]]
Identify yourself to the remote FTP server. If the
password is not specified and the server requires it, ftp prompts the
user for it (after disabling local echo). If an account field is not
specified, and the FTP server requires it, the user is prompted for it.
If an account field is specified, an account command is relayed to the remote
server after the login sequence is completed if the remote server did not
require it for logging in. Unless ftp is invoked with
"auto-login" disabled, this process is done automatically on initial
connection to the FTP server.
verbose
Toggles verbose mode. In verbose mode, all responses from
the FTP server are displayed to the user. In addition, if verbose mode
is on, when a file transfer completes, statistics regarding the efficiency of
the transfer are reported. By default, verbose mode is on if ftp's
commands are coming from a terminal, and off otherwise.
? [ command ]
A synonym for help.
Command arguments which have embedded spaces can be quoted with
quote (") marks.
If any command argument which is not indicated as being optional
is not specified, ftp prompts for that argument.