Sync with cat.c from netbsd-8
[minix3.git] / usr.bin / ftp / ftp.1
blobb76a338cca390ae9a59b19f15a68e061012fa33a
1 .\"     $NetBSD: ftp.1,v 1.135 2015/04/23 23:31:23 lukem Exp $
2 .\"
3 .\" Copyright (c) 1996-2015 The NetBSD Foundation, Inc.
4 .\" All rights reserved.
5 .\"
6 .\" This code is derived from software contributed to The NetBSD Foundation
7 .\" by Luke Mewburn.
8 .\"
9 .\" Redistribution and use in source and binary forms, with or without
10 .\" modification, are permitted provided that the following conditions
11 .\" are met:
12 .\" 1. Redistributions of source code must retain the above copyright
13 .\"    notice, this list of conditions and the following disclaimer.
14 .\" 2. Redistributions in binary form must reproduce the above copyright
15 .\"    notice, this list of conditions and the following disclaimer in the
16 .\"    documentation and/or other materials provided with the distribution.
17 .\"
18 .\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
19 .\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
20 .\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21 .\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
22 .\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23 .\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24 .\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25 .\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26 .\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 .\" POSSIBILITY OF SUCH DAMAGE.
29 .\"
30 .\"
31 .\" Copyright (c) 1985, 1989, 1990, 1993
32 .\"     The Regents of the University of California.  All rights reserved.
33 .\"
34 .\" Redistribution and use in source and binary forms, with or without
35 .\" modification, are permitted provided that the following conditions
36 .\" are met:
37 .\" 1. Redistributions of source code must retain the above copyright
38 .\"    notice, this list of conditions and the following disclaimer.
39 .\" 2. Redistributions in binary form must reproduce the above copyright
40 .\"    notice, this list of conditions and the following disclaimer in the
41 .\"    documentation and/or other materials provided with the distribution.
42 .\" 3. Neither the name of the University nor the names of its contributors
43 .\"    may be used to endorse or promote products derived from this software
44 .\"    without specific prior written permission.
45 .\"
46 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
47 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
48 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
49 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
50 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
51 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
52 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
53 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
54 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
55 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
56 .\" SUCH DAMAGE.
57 .\"
58 .\"     @(#)ftp.1       8.3 (Berkeley) 10/9/94
59 .\"
60 .Dd April 24, 2015
61 .Dt FTP 1
62 .Os
63 .Sh NAME
64 .Nm ftp
65 .Nd Internet file transfer program
66 .Sh SYNOPSIS
67 .Nm
68 .Op Fl 46AadefginpRtVv
69 .Op Fl N Ar netrc
70 .Op Fl o Ar output
71 .Op Fl P Ar port
72 .Op Fl q Ar quittime
73 .Op Fl r Ar retry
74 .Op Fl s Ar srcaddr
75 .Bk -words
76 .\" [-T dir,max[,inc]]
77 .Oo
78 .Fl T Xo
79 .Sm off
80 .Ar dir ,
81 .Ar max
82 .Op , Ar inc
83 .Sm on
84 .Xc
85 .Oc
86 .Ek
87 .Op Fl x Ar xferbufsize
88 .Bk -words
89 .\" [[user@]host [port]]
90 .Oo
91 .Oo Ar user Ns Li \&@ Oc Ns Ar host
92 .Op Ar port
93 .Oc
94 .Ek
95 .Bk -words
96 .\" [[user@]host:[path][/]]
97 .Sm off
98 .Oo
99 .Op Ar user Li \&@
100 .Ar host Li \&:
101 .Op Ar path
102 .Op Li /
104 .Sm on
106 .Bk -words
107 .\" [file:///path]
108 .Sm off
110 .Li file:/// Ar path
112 .Sm on
114 .Bk -words
115 .\" [ftp://[user[:password]@]host[:port]/path[/]]
116 .Sm off
118 .Li ftp://
119 .Oo Ar user
120 .Op Li \&: Ar password
121 .Li \&@ Oc
122 .Ar host Oo Li \&: Ar port Oc
123 .Li / Ar path
124 .Op Li /
125 .Op Li ;type= Ar X
127 .Sm on
129 .Bk -words
130 .\" [http://[user[:password]@]host[:port]/path]
131 .Sm off
133 .Li http://
134 .Oo Ar user
135 .Op Li \&: Ar password
136 .Li \&@ Oc
137 .Ar host Oo Li \&: Ar port Oc
138 .Li / Ar path
140 .Sm on
142 .Op Ar \&.\&.\&.
144 .Bk -words
145 .Fl u Ar URL Ar file
147 .Op Ar \&.\&.\&.
148 .Sh DESCRIPTION
150 is the user interface to the Internet standard File Transfer Protocol.
151 The program allows a user to transfer files to and from a
152 remote network site.
154 The last five arguments will fetch a file using the
155 .Tn FTP
157 .Tn HTTP
158 protocols, or by direct copying, into the current directory.
159 This is ideal for scripts.
160 Refer to
161 .Sx AUTO-FETCHING FILES
162 below for more information.
164 Options may be specified at the command line, or to the
165 command interpreter.
166 .Bl -tag -width Fl
167 .It Fl 4
168 Forces
170 to only use IPv4 addresses.
171 .It Fl 6
172 Forces
174 to only use IPv6 addresses.
175 .It Fl A
176 Force active mode ftp.
177 By default,
179 will try to use passive mode ftp and fall back to active mode
180 if passive is not supported by the server.
181 This option causes
183 to always use an active connection.
184 It is only useful for connecting to very old servers that do not
185 implement passive mode properly.
186 .It Fl a
187 Causes
189 to bypass normal login procedure, and use an anonymous login instead.
190 .It Fl d
191 Enables debugging.
192 .It Fl e
193 Disables command line editing.
194 This is useful for Emacs ange-ftp mode.
195 .It Fl f
196 Forces a cache reload for transfers that go through the
197 .Tn FTP
199 .Tn HTTP
200 proxies.
201 .It Fl g
202 Disables file name globbing.
203 .It Fl i
204 Turns off interactive prompting during
205 multiple file transfers.
206 .It Fl N Ar netrc
208 .Ar netrc
209 instead of
210 .Pa ~/.netrc .
211 Refer to
212 .Sx THE .netrc FILE
213 for more information.
214 .It Fl n
215 Restrains
217 from attempting
218 .Dq auto-login
219 upon initial connection for non auto-fetch transfers.
220 If auto-login is enabled,
222 will check the
223 .Pa .netrc
224 (see below) file in the user's home directory for an entry describing
225 an account on the remote machine.
226 If no entry exists,
228 will prompt for the remote machine login name (default is the user
229 identity on the local machine), and, if necessary, prompt for a password
230 and an account with which to login.
231 To override the auto-login for auto-fetch transfers, specify the
232 username (and optionally, password) as appropriate.
233 .It Fl o Ar output
234 When auto-fetching files, save the contents in
235 .Ar output .
236 .Ar output
237 is parsed according to the
238 .Sx FILE NAMING CONVENTIONS
239 below.
241 .Ar output
242 is not
243 .Sq -
244 or doesn't start with
245 .Sq \&| ,
246 then only the first file specified will be retrieved into
247 .Ar output ;
248 all other files will be retrieved into the basename of their
249 remote name.
250 .It Fl P Ar port
251 Sets the port number to
252 .Ar port .
253 .It Fl p
254 Enable passive mode operation for use behind connection filtering firewalls.
255 This option has been deprecated as
257 now tries to use passive mode by default, falling back to active mode
258 if the server does not support passive connections.
259 .It Fl q Ar quittime
260 Quit if the connection has stalled for
261 .Ar quittime
262 seconds.
263 .It Fl R
264 Restart all non-proxied auto-fetches.
265 .It Fl r Ar wait
266 Retry the connection attempt if it failed, pausing for
267 .Ar wait
268 seconds.
269 .It Fl s Ar srcaddr
270 Uses
271 .Ar srcaddr
272 as the local IP address for all connections.
273 .It Fl t
274 Enables packet tracing.
275 .It Fl T Ar direction Ns , Ns Ar maximum Ns Oo , Ns Ar increment Oc
276 Set the maximum transfer rate for
277 .Ar direction
279 .Ar maximum
280 bytes/second,
281 and if specified, the increment to
282 .Ar increment
283 bytes/second.
284 Refer to
285 .Ic rate
286 for more information.
287 .It Fl u Ar URL file Op \&.\&.\&.
288 Upload files on the command line to
289 .Ar URL
290 where
291 .Ar URL
292 is one of the ftp URL types as supported by auto-fetch
293 (with an optional target filename for single file uploads), and
294 .Ar file
295 is one or more local files to be uploaded.
296 .It Fl V
297 Disable
298 .Ic verbose
300 .Ic progress ,
301 overriding the default of enabled when output is to a terminal.
302 .It Fl v
303 Enable
304 .Ic verbose
306 .Ic progress .
307 This is the default if output is to a terminal (and in the case of
308 .Ic progress ,
310 is the foreground process).
311 Forces
313 to show all responses from the remote server, as well
314 as report on data transfer statistics.
315 .It Fl x Ar xferbufsize
316 Set the size of the socket send and receive buffers to
317 .Ar xferbufsize .
318 Refer to
319 .Ic xferbuf
320 for more information.
323 The client host with which
325 is to communicate may be specified on the command line.
326 If this is done,
328 will immediately attempt to establish a connection to an
329 .Tn FTP
330 server on that host; otherwise,
332 will enter its command interpreter and await instructions
333 from the user.
334 When
336 is awaiting commands from the user the prompt
337 .Ql ftp\*[Gt]
338 is provided to the user.
339 The following commands are recognized
341 .Nm ftp :
342 .Bl -tag -width Ic
343 .It Ic \&! Op Ar command Op Ar args
344 Invoke an interactive shell on the local machine.
345 If there are arguments, the first is taken to be a command to execute
346 directly, with the rest of the arguments as its arguments.
347 .It Ic \&$ Ar macro-name Op Ar args
348 Execute the macro
349 .Ar macro-name
350 that was defined with the
351 .Ic macdef
352 command.
353 Arguments are passed to the macro unglobbed.
354 .It Ic account Op Ar passwd
355 Supply a supplemental password required by a remote system for access
356 to resources once a login has been successfully completed.
357 If no argument is included, the user will be prompted for an account
358 password in a non-echoing input mode.
359 .It Ic append Ar local-file Op Ar remote-file
360 Append a local file to a file on the remote machine.
362 .Ar remote-file
363 is left unspecified, the local file name is used in naming the
364 remote file after being altered by any
365 .Ic ntrans
367 .Ic nmap
368 setting.
369 File transfer uses the current settings for
370 .Ic type  ,
371 .Ic format ,
372 .Ic mode  ,
374 .Ic structure .
375 .It Ic ascii
376 Set the file transfer
377 .Ic type
378 to network
379 .Tn ASCII .
380 This is the default type.
381 .It Ic bell
382 Arrange that a bell be sounded after each file transfer
383 command is completed.
384 .It Ic binary
385 Set the file transfer
386 .Ic type
387 to support binary image transfer.
388 .It Ic bye
389 Terminate the
390 .Tn FTP
391 session with the remote server
392 and exit
393 .Nm ftp .
394 An end of file will also terminate the session and exit.
395 .It Ic case
396 Toggle remote computer file name case mapping during
397 .Ic get ,
398 .Ic mget
400 .Ic mput
401 commands.
402 When
403 .Ic case
404 is on (default is off), remote computer file names with all letters in
405 upper case are written in the local directory with the letters mapped
406 to lower case.
407 .It Ic \&cd Ar remote-directory
408 Change the working directory on the remote machine
410 .Ar remote-directory .
411 .It Ic cdup
412 Change the remote machine working directory to the parent of the
413 current remote machine working directory.
414 .It Ic chmod Ar mode remote-file
415 Change the permission modes of the file
416 .Ar remote-file
417 on the remote
418 system to
419 .Ar mode .
420 .It Ic close
421 Terminate the
422 .Tn FTP
423 session with the remote server, and
424 return to the command interpreter.
425 Any defined macros are erased.
426 .It Ic \&cr
427 Toggle carriage return stripping during
428 ascii type file retrieval.
429 Records are denoted by a carriage return/linefeed sequence
430 during ascii type file transfer.
431 When
432 .Ic \&cr
433 is on (the default), carriage returns are stripped from this
434 sequence to conform with the
436 single linefeed record
437 delimiter.
438 Records on
439 .Pf non\- Ns Ux
440 remote systems may contain single linefeeds;
441 when an ascii type transfer is made, these linefeeds may be
442 distinguished from a record delimiter only when
443 .Ic \&cr
444 is off.
445 .It Ic delete Ar remote-file
446 Delete the file
447 .Ar remote-file
448 on the remote machine.
449 .It Ic dir Op Ar remote-path Op Ar local-file
450 Print a listing of the contents of a
451 directory on the remote machine.
452 The listing includes any system-dependent information that the server
453 chooses to include; for example, most
455 systems will produce
456 output from the command
457 .Ql ls \-l .
459 .Ar remote-path
460 is left unspecified, the current working directory is used.
461 If interactive prompting is on,
463 will prompt the user to verify that the last argument is indeed the
464 target local file for receiving
465 .Ic dir
466 output.
467 If no local file is specified, or if
468 .Ar local-file
470 .Sq Fl ,
471 the output is sent to the terminal.
472 .It Ic disconnect
473 A synonym for
474 .Ic close .
475 .It Ic edit
476 Toggle command line editing, and context sensitive command and file
477 completion.
478 This is automatically enabled if input is from a terminal, and
479 disabled otherwise.
480 .It Ic epsv epsv4 epsv6
481 Toggle the use of the extended
482 .Dv EPSV
484 .Dv EPRT
485 commands on all IP, IPv4, and IPv6 connections respectively.
486 First try
487 .Dv EPSV /
488 .Dv EPRT ,
489 and then
490 .Dv PASV /
491 .Dv PORT .
492 This is enabled by default.
493 If an extended command fails then this option will be temporarily
494 disabled for the duration of the current connection, or until
495 .Ic epsv ,
496 .Ic epsv4 ,
498 .Ic epsv6
499 is executed again.
500 .It Ic exit
501 A synonym for
502 .Ic bye .
503 .It Ic features
504 Display what features the remote server supports (using the
505 .Dv FEAT
506 command).
507 .It Ic fget Ar localfile
508 Retrieve the files listed in
509 .Ar localfile ,
510 which has one line per filename.
511 .It Ic form Ar format
512 Set the file transfer
513 .Ic form
515 .Ar format .
516 The default (and only supported)
517 format is
518 .Dq non-print .
519 .It Ic ftp Ar host Op Ar port
520 A synonym for
521 .Ic open .
522 .It Ic ftp_debug Op Ar ftp_debug-value
523 Toggle debugging mode.
524 If an optional
525 .Ar ftp_debug-value
526 is specified it is used to set the debugging level.
527 When debugging is on,
529 prints each command sent to the remote machine, preceded
530 by the string
531 .Ql \-\-\*[Gt] .
532 .It Ic gate Op Ar host Op Ar port
533 Toggle gate-ftp mode, which used to connect through the
534 TIS FWTK and Gauntlet ftp proxies.
535 This will not be permitted if the gate-ftp server hasn't been set
536 (either explicitly by the user, or from the
537 .Ev FTPSERVER
538 environment variable).
540 .Ar host
541 is given,
542 then gate-ftp mode will be enabled, and the gate-ftp server will be set to
543 .Ar host .
545 .Ar port
546 is also given, that will be used as the port to connect to on the
547 gate-ftp server.
548 .It Ic get Ar remote-file Op Ar local-file
549 Retrieve the
550 .Ar remote-file
551 and store it on the local machine.
552 If the local
553 file name is not specified, it is given the same
554 name it has on the remote machine, subject to
555 alteration by the current
556 .Ic case  ,
557 .Ic ntrans ,
559 .Ic nmap
560 settings.
561 The current settings for
562 .Ic type  ,
563 .Ic form ,
564 .Ic mode  ,
566 .Ic structure
567 are used while transferring the file.
568 .It Ic glob
569 Toggle filename expansion for
570 .Ic mdelete  ,
571 .Ic mget ,
572 .Ic mput ,
574 .Ic mreget .
575 If globbing is turned off with
576 .Ic glob  ,
577 the file name arguments
578 are taken literally and not expanded.
579 Globbing for
580 .Ic mput
581 is done as in
582 .Xr csh 1 .
584 .Ic mdelete ,
585 .Ic mget ,
587 .Ic mreget ,
588 each remote file name is expanded
589 separately on the remote machine and the lists are not merged.
590 Expansion of a directory name is likely to be
591 different from expansion of the name of an ordinary file:
592 the exact result depends on the foreign operating system and ftp server,
593 and can be previewed by doing
594 .Ql mls remote-files \-
595 Note:
596 .Ic mget ,
597 .Ic mput
599 .Ic mreget
600 are not meant to transfer
601 entire directory subtrees of files.
602 That can be done by
603 transferring a
604 .Xr tar 1
605 archive of the subtree (in binary mode).
606 .It Ic hash Op Ar size
607 Toggle hash-sign
608 .Pq Sq #
609 printing for each data block transferred.
610 The size of a data block defaults to 1024 bytes.
611 This can be changed by specifying
612 .Ar size
613 in bytes.
614 Enabling
615 .Ic hash
616 disables
617 .Ic progress .
618 .It Ic help Op Ar command
619 Print an informative message about the meaning of
620 .Ar command .
621 If no argument is given,
623 prints a list of the known commands.
624 .It Ic idle Op Ar seconds
625 Set the inactivity timer on the remote server to
626 .Ar seconds
627 seconds.
629 .Ar seconds
630 is omitted, the current inactivity timer is printed.
631 .It Ic image
632 A synonym for
633 .Ic binary .
634 .It Ic lcd Op Ar directory
635 Change the working directory on the local machine.
638 .Ar directory
639 is specified, the user's home directory is used.
640 .It Ic less Ar file
641 A synonym for
642 .Ic page .
643 .It Ic lpage Ar local-file
644 Display
645 .Ar local-file
646 with the program specified by the
647 .Ic "set pager"
648 option.
649 .It Ic lpwd
650 Print the working directory on the local machine.
651 .It Ic \&ls Op Ar remote-path Op Ar local-file
652 A synonym for
653 .Ic dir .
654 .It Ic macdef Ar macro-name
655 Define a macro.
656 Subsequent lines are stored as the macro
657 .Ar macro-name  ;
658 a null line (consecutive newline characters in a file or carriage
659 returns from the terminal) terminates macro input mode.
660 There is a limit of 16 macros and 4096 total characters in all
661 defined macros.
662 Macro names can be a maximum of 8 characters.
663 Macros are only applicable to the current session they are
664 defined within (or if defined outside a session, to the session
665 invoked with the next
666 .Ic open
667 command), and remain defined until a
668 .Ic close
669 command is executed.
670 To invoke a macro, use the
671 .Ic $
672 command (see above).
674 The macro processor interprets
675 .Sq $
677 .Sq \e
678 as special characters.
680 .Sq $
681 followed by a number (or numbers) is replaced by the
682 corresponding argument on the macro invocation command line.
684 .Sq $
685 followed by an
686 .Sq i
687 signals the macro processor that the executing macro is to be
688 looped.
689 On the first pass
690 .Dq $i
691 is replaced by the first argument on the macro invocation command
692 line, on the second pass it is replaced by the second argument,
693 and so on.
695 .Sq \e
696 followed by any character is replaced by that character.
697 Use the
698 .Sq \e
699 to prevent special treatment of the
700 .Sq $ .
701 .It Ic mdelete Op Ar remote-files
702 Delete the
703 .Ar remote-files
704 on the remote machine.
705 .It Ic mdir Ar remote-files local-file
706 Like
707 .Ic dir  ,
708 except multiple remote files may be specified.
709 If interactive prompting is on,
711 will prompt the user to verify that the last argument is indeed the
712 target local file for receiving
713 .Ic mdir
714 output.
715 .It Ic mget Ar remote-files
716 Expand the
717 .Ar remote-files
718 on the remote machine
719 and do a
720 .Ic get
721 for each file name thus produced.
723 .Ic glob
724 for details on the filename expansion.
725 Resulting file names will then be processed according to
726 .Ic case  ,
727 .Ic ntrans ,
729 .Ic nmap
730 settings.
731 Files are transferred into the local working directory,
732 which can be changed with
733 .Ql lcd directory ;
734 new local directories can be created with
735 .Ql "\&! mkdir directory" .
736 .It Ic mkdir Ar directory-name
737 Make a directory on the remote machine.
738 .It Ic mls Ar remote-files local-file
739 Like
740 .Ic ls  ,
741 except multiple remote files may be specified,
742 and the
743 .Ar local-file
744 must be specified.
745 If interactive prompting is on,
747 will prompt the user to verify that the last argument is indeed the
748 target local file for receiving
749 .Ic mls
750 output.
751 .It Ic mlsd Op Ar remote-path
752 Display the contents of
753 .Ar remote-path
754 (which should default to the current directory if not given)
755 in a machine-parsable form, using
756 .Dv MLSD .
757 The format of display can be changed with
758 .Sq "remopts mlst ..." .
759 .It Ic mlst Op Ar remote-path
760 Display the details about
761 .Ar remote-path
762 (which should default to the current directory if not given)
763 in a machine-parsable form, using
764 .Dv MLST .
765 The format of display can be changed with
766 .Sq "remopts mlst ..." .
767 .It Ic mode Ar mode-name
768 Set the file transfer
769 .Ic mode
771 .Ar mode-name .
772 The default (and only supported)
773 mode is
774 .Dq stream .
775 .It Ic modtime Ar remote-file
776 Show the last modification time of the file on the remote machine, in
777 .Li RFC 2822
778 format.
779 .It Ic more Ar file
780 A synonym for
781 .Ic page .
782 .It Ic mput Ar local-files
783 Expand wild cards in the list of local files given as arguments
784 and do a
785 .Ic put
786 for each file in the resulting list.
788 .Ic glob
789 for details of filename expansion.
790 Resulting file names will then be processed according to
791 .Ic ntrans
793 .Ic nmap
794 settings.
795 .It Ic mreget Ar remote-files
796 As per
797 .Ic mget ,
798 but performs a
799 .Ic reget
800 instead of
801 .Ic get .
802 .It Ic msend Ar local-files
803 A synonym for
804 .Ic mput .
805 .It Ic newer Ar remote-file Op Ar local-file
806 Get the file only if the modification time of the remote file is more
807 recent that the file on the current system.
808 If the file does not
809 exist on the current system, the remote file is considered
810 .Ic newer .
811 Otherwise, this command is identical to
812 .Ar get .
813 .It Ic nlist Op Ar remote-path Op Ar local-file
814 A synonym for
815 .Ic ls .
816 .It Ic nmap Op Ar inpattern outpattern
817 Set or unset the filename mapping mechanism.
818 If no arguments are specified, the filename mapping mechanism is unset.
819 If arguments are specified, remote filenames are mapped during
820 .Ic mput
821 commands and
822 .Ic put
823 commands issued without a specified remote target filename.
824 If arguments are specified, local filenames are mapped during
825 .Ic mget
826 commands and
827 .Ic get
828 commands issued without a specified local target filename.
829 This command is useful when connecting to a
830 .No non\- Ns Ux
831 remote computer
832 with different file naming conventions or practices.
833 The mapping follows the pattern set by
834 .Ar inpattern
836 .Ar outpattern .
837 .Op Ar Inpattern
838 is a template for incoming filenames (which may have already been
839 processed according to the
840 .Ic ntrans
842 .Ic case
843 settings).
844 Variable templating is accomplished by including the
845 sequences
846 .Dq $1 ,
847 .Dq $2 ,
848 \&...
849 .Dq $9
851 .Ar inpattern .
853 .Sq \e
854 to prevent this special treatment of the
855 .Sq $
856 character.
857 All other characters are treated literally, and are used to determine the
858 .Ic nmap
859 .Op Ar inpattern
860 variable values.
861 For example, given
862 .Ar inpattern
863 $1.$2 and the remote file name "mydata.data", $1 would have the value
864 "mydata", and $2 would have the value "data".
866 .Ar outpattern
867 determines the resulting mapped filename.
868 The sequences
869 .Dq $1 ,
870 .Dq $2 ,
871 \&...
872 .Dq $9
873 are replaced by any value resulting from the
874 .Ar inpattern
875 template.
876 The sequence
877 .Dq $0
878 is replaced by the original filename.
879 Additionally, the sequence
880 .Dq Op Ar seq1 , Ar seq2
881 is replaced by
882 .Op Ar seq1
884 .Ar seq1
885 is not a null string; otherwise it is replaced by
886 .Ar seq2 .
887 For example, the command
889 .Bd -literal -offset indent -compact
890 nmap $1.$2.$3 [$1,$2].[$2,file]
893 would yield
894 the output filename "myfile.data" for input filenames "myfile.data" and
895 "myfile.data.old", "myfile.file" for the input filename "myfile", and
896 "myfile.myfile" for the input filename ".myfile".
897 Spaces may be included in
898 .Ar outpattern  ,
899 as in the example:
900 .Dl nmap $1 sed "s/  *$//" \*[Gt] $1
901 Use the
902 .Sq \e
903 character to prevent special treatment
904 of the
905 .Sq $ ,
906 .Sq \&[ ,
907 .Sq \&] ,
909 .Sq \&,
910 characters.
911 .It Ic ntrans Op Ar inchars Op Ar outchars
912 Set or unset the filename character translation mechanism.
913 If no arguments are specified, the filename character
914 translation mechanism is unset.
915 If arguments are specified, characters in
916 remote filenames are translated during
917 .Ic mput
918 commands and
919 .Ic put
920 commands issued without a specified remote target filename.
921 If arguments are specified, characters in
922 local filenames are translated during
923 .Ic mget
924 commands and
925 .Ic get
926 commands issued without a specified local target filename.
927 This command is useful when connecting to a
928 .No non\- Ns Ux
929 remote computer
930 with different file naming conventions or practices.
931 Characters in a filename matching a character in
932 .Ar inchars
933 are replaced with the corresponding character in
934 .Ar outchars .
935 If the character's position in
936 .Ar inchars
937 is longer than the length of
938 .Ar outchars  ,
939 the character is deleted from the file name.
940 .It Ic open Ar host Op Ar port
941 Establish a connection to the specified
942 .Ar host
943 .Tn FTP
944 server.
945 An optional port number may be supplied,
946 in which case,
948 will attempt to contact an
949 .Tn FTP
950 server at that port.
951 If the
952 .Ic "set auto-login"
953 option is on (default),
955 will also attempt to automatically log the user in to
957 .Tn FTP
958 server (see below).
959 .It Ic page Ar file
960 Retrieve
961 .Ic file
962 and display with the program specified by the
963 .Ic "set pager"
964 option.
965 .It Ic passive Op Cm auto
966 Toggle passive mode (if no arguments are given).
968 .Cm auto
969 is given, act as if
970 .Ev FTPMODE
971 is set to
972 .Sq auto .
973 If passive mode is turned on (default),
975 will send a
976 .Dv PASV
977 command for all data connections instead of a
978 .Dv PORT
979 command.
981 .Dv PASV
982 command requests that the remote server open a port for the data connection
983 and return the address of that port.
984 The remote server listens on that port and the client connects to it.
985 When using the more traditional
986 .Dv PORT
987 command, the client listens on a port and sends that address to the remote
988 server, who connects back to it.
989 Passive mode is useful when using
991 through a gateway router or host that controls the directionality of
992 traffic.
993 (Note that though
994 .Tn FTP
995 servers are required to support the
996 .Dv PASV
997 command by
998 .Li RFC 1123 ,
999 some do not.)
1000 .It Ic pdir Op Ar remote-path
1001 Perform
1002 .Ic dir
1003 .Op Ar remote-path ,
1004 and display the result with the program specified by the
1005 .Ic "set pager"
1006 option.
1007 .It Ic pls Op Ar remote-path
1008 Perform
1009 .Ic ls
1010 .Op Ar remote-path ,
1011 and display the result with the program specified by the
1012 .Ic "set pager"
1013 option.
1014 .It Ic pmlsd Op Ar remote-path
1015 Perform
1016 .Ic mlsd
1017 .Op Ar remote-path ,
1018 and display the result with the program specified by the
1019 .Ic "set pager"
1020 option.
1021 .It Ic preserve
1022 Toggle preservation of modification times on retrieved files.
1023 .It Ic progress
1024 Toggle display of transfer progress bar.
1025 The progress bar will be disabled for a transfer that has
1026 .Ar local-file
1028 .Sq Fl
1029 or a command that starts with
1030 .Sq \&| .
1031 Refer to
1032 .Sx FILE NAMING CONVENTIONS
1033 for more information.
1034 Enabling
1035 .Ic progress
1036 disables
1037 .Ic hash .
1038 .It Ic prompt
1039 Toggle interactive prompting.
1040 Interactive prompting
1041 occurs during multiple file transfers to allow the
1042 user to selectively retrieve or store files.
1043 If prompting is turned off (default is on), any
1044 .Ic mget
1046 .Ic mput
1047 will transfer all files, and any
1048 .Ic mdelete
1049 will delete all files.
1051 When prompting is on, the following commands are available at a prompt:
1052 .Bl -tag -width 2n -offset indent
1053 .It Cm a
1054 Answer
1055 .Sq yes
1056 to the current file, and automatically answer
1057 .Sq yes
1058 to any remaining files for the current command.
1059 .It Cm n
1060 Answer
1061 .Sq no ,
1062 and do not transfer the file.
1063 .It Cm p
1064 Answer
1065 .Sq yes
1066 to the current file, and turn off prompt mode
1067 (as is
1068 .Dq prompt off
1069 had been given).
1070 .It Cm q
1071 Terminate the current operation.
1072 .It Cm y
1073 Answer
1074 .Sq yes ,
1075 and transfer the file.
1076 .It Cm \&?
1077 Display a help message.
1080 Any other response will answer
1081 .Sq yes
1082 to the current file.
1083 .It Ic proxy Ar ftp-command
1084 Execute an ftp command on a secondary control connection.
1085 This command allows simultaneous connection to two remote
1086 .Tn FTP
1087 servers for transferring files between the two servers.
1088 The first
1089 .Ic proxy
1090 command should be an
1091 .Ic open  ,
1092 to establish the secondary control connection.
1093 Enter the command "proxy ?" to see other
1094 .Tn FTP
1095 commands executable on the secondary connection.
1096 The following commands behave differently when prefaced by
1097 .Ic proxy  :
1098 .Ic open
1099 will not define new macros during the auto-login process,
1100 .Ic close
1101 will not erase existing macro definitions,
1102 .Ic get
1104 .Ic mget
1105 transfer files from the host on the primary control connection
1106 to the host on the secondary control connection, and
1107 .Ic put  ,
1108 .Ic mput ,
1110 .Ic append
1111 transfer files from the host on the secondary control connection
1112 to the host on the primary control connection.
1113 Third party file transfers depend upon support of the
1114 .Tn FTP
1115 protocol
1116 .Dv PASV
1117 command by the server on the secondary control connection.
1118 .It Ic put Ar local-file Op Ar remote-file
1119 Store a local file on the remote machine.
1121 .Ar remote-file
1122 is left unspecified, the local file name is used
1123 after processing according to any
1124 .Ic ntrans
1126 .Ic nmap
1127 settings
1128 in naming the remote file.
1129 File transfer uses the
1130 current settings for
1131 .Ic type  ,
1132 .Ic format ,
1133 .Ic mode  ,
1135 .Ic structure .
1136 .It Ic pwd
1137 Print the name of the current working directory on the remote
1138 machine.
1139 .It Ic quit
1140 A synonym for
1141 .Ic bye .
1142 .It Ic quote Ar arg1 arg2 ...
1143 The arguments specified are sent, verbatim, to the remote
1144 .Tn FTP
1145 server.
1146 .It Ic rate Ar direction Oo Ar maximum Oo Ar increment Oc Oc
1147 Throttle the maximum transfer rate to
1148 .Ar maximum
1149 bytes/second.
1151 .Ar maximum
1152 is 0, disable the throttle.
1154 .Ar direction
1155 may be one of:
1156 .Bl -tag -width "all" -offset indent -compact
1157 .It Cm all
1158 Both directions.
1159 .It Cm get
1160 Incoming transfers.
1161 .It Cm put
1162 Outgoing transfers.
1165 .Ar maximum
1166 can be modified on the fly by
1167 .Ar increment
1168 bytes (default: 1024) each time a given signal is received:
1169 .Bl -tag -width "SIGUSR1" -offset indent
1170 .It Dv SIGUSR1
1171 Increment
1172 .Ar maximum
1174 .Ar increment
1175 bytes.
1176 .It Dv SIGUSR2
1177 Decrement
1178 .Ar maximum
1180 .Ar increment
1181 bytes.
1182 The result must be a positive number.
1186 .Ar maximum
1187 is not supplied, the current throttle rates are displayed.
1189 Note:
1190 .Ic rate
1191 is not yet implemented for ascii mode transfers.
1192 .It Ic rcvbuf Ar size
1193 Set the size of the socket receive buffer to
1194 .Ar size .
1195 .It Ic recv Ar remote-file Op Ar local-file
1196 A synonym for
1197 .Ic get .
1198 .It Ic reget Ar remote-file Op Ar local-file
1199 .Ic reget
1200 acts like
1201 .Ic get ,
1202 except that if
1203 .Ar local-file
1204 exists and is
1205 smaller than
1206 .Ar remote-file  ,
1207 .Ar local-file
1208 is presumed to be
1209 a partially transferred copy of
1210 .Ar remote-file
1211 and the transfer
1212 is continued from the apparent point of failure.
1213 This command
1214 is useful when transferring very large files over networks that
1215 are prone to dropping connections.
1216 .It Ic remopts Ar command Op Ar command-options
1217 Set options on the remote
1218 .Tn FTP
1219 server for
1220 .Ar command
1222 .Ar command-options
1223 (whose absence is handled on a command-specific basis).
1224 Remote
1225 .Tn FTP
1226 commands known to support options include:
1227 .Sq MLST
1228 (used for
1229 .Dv MLSD
1231 .Dv MLST ) .
1232 .It Ic rename Op Ar from Op Ar to
1233 Rename the file
1234 .Ar from
1235 on the remote machine, to the file
1236 .Ar to .
1237 .It Ic reset
1238 Clear reply queue.
1239 This command re-synchronizes command/reply sequencing with the remote
1240 .Tn FTP
1241 server.
1242 Resynchronization may be necessary following a violation of the
1243 .Tn FTP
1244 protocol by the remote server.
1245 .It Ic restart Ar marker
1246 Restart the immediately following
1247 .Ic get
1249 .Ic put
1250 at the
1251 indicated
1252 .Ar marker .
1255 systems, marker is usually a byte
1256 offset into the file.
1257 .It Ic rhelp Op Ar command-name
1258 Request help from the remote
1259 .Tn FTP
1260 server.
1261 If a
1262 .Ar command-name
1263 is specified it is supplied to the server as well.
1264 .It Ic rmdir Ar directory-name
1265 Delete a directory on the remote machine.
1266 .It Ic rstatus Op Ar remote-file
1267 With no arguments, show status of remote machine.
1269 .Ar remote-file
1270 is specified, show status of
1271 .Ar remote-file
1272 on remote machine.
1273 .It Ic runique
1274 Toggle storing of files on the local system with unique filenames.
1275 If a file already exists with a name equal to the target
1276 local filename for a
1277 .Ic get
1279 .Ic mget
1280 command, a ".1" is appended to the name.
1281 If the resulting name matches another existing file,
1282 a ".2" is appended to the original name.
1283 If this process continues up to ".99", an error
1284 message is printed, and the transfer does not take place.
1285 The generated unique filename will be reported.
1286 Note that
1287 .Ic runique
1288 will not affect local files generated from a shell command
1289 (see below).
1290 The default value is off.
1291 .It Ic send Ar local-file Op Ar remote-file
1292 A synonym for
1293 .Ic put .
1294 .It Ic sendport
1295 Toggle the use of
1296 .Dv PORT
1297 commands.
1298 By default,
1300 will attempt to use a
1301 .Dv PORT
1302 command when establishing
1303 a connection for each data transfer.
1304 The use of
1305 .Dv PORT
1306 commands can prevent delays
1307 when performing multiple file transfers.
1308 If the
1309 .Dv PORT
1310 command fails,
1312 will use the default data port.
1313 When the use of
1314 .Dv PORT
1315 commands is disabled, no attempt will be made to use
1316 .Dv PORT
1317 commands for each data transfer.
1318 This is useful
1319 for certain
1320 .Tn FTP
1321 implementations which do ignore
1322 .Dv PORT
1323 commands but, incorrectly, indicate they've been accepted.
1324 .It Ic set Op Ar option Ar value
1326 .Ar option
1328 .Ar value .
1330 .Ar option
1332 .Ar value
1333 are not given, display all of the options and their values.
1334 The currently supported options are:
1335 .Bl -tag -width "https_proxy" -offset indent
1336 .It Cm anonpass
1337 Defaults to
1338 .Ev $FTPANONPASS
1339 .It Cm ftp_proxy
1340 Defaults to
1341 .Ev $ftp_proxy .
1342 .It Cm http_proxy
1343 Defaults to
1344 .Ev $http_proxy .
1345 .It Cm https_proxy
1346 Defaults to
1347 .Ev $https_proxy .
1348 .It Cm no_proxy
1349 Defaults to
1350 .Ev $no_proxy .
1351 .It Cm pager
1352 Defaults to
1353 .Ev $PAGER .
1354 .It Cm prompt
1355 Defaults to
1356 .Ev $FTPPROMPT .
1357 .It Cm rprompt
1358 Defaults to
1359 .Ev $FTPRPROMPT .
1361 .It Ic site Ar arg1 arg2 ...
1362 The arguments specified are sent, verbatim, to the remote
1363 .Tn FTP
1364 server as a
1365 .Dv SITE
1366 command.
1367 .It Ic size Ar remote-file
1368 Return size of
1369 .Ar remote-file
1370 on remote machine.
1371 .It Ic sndbuf Ar size
1372 Set the size of the socket send buffer to
1373 .Ar size .
1374 .It Ic status
1375 Show the current status of
1376 .Nm ftp .
1377 .It Ic struct Ar struct-name
1378 Set the file transfer
1379 .Ar structure
1381 .Ar struct-name .
1382 The default (and only supported)
1383 structure is
1384 .Dq file .
1385 .It Ic sunique
1386 Toggle storing of files on remote machine under unique file names.
1387 The remote
1388 .Tn FTP
1389 server must support
1390 .Tn FTP
1391 protocol
1392 .Dv STOU
1393 command for
1394 successful completion.
1395 The remote server will report unique name.
1396 Default value is off.
1397 .It Ic system
1398 Show the type of operating system running on the remote machine.
1399 .It Ic tenex
1400 Set the file transfer type to that needed to
1401 talk to
1402 .Tn TENEX
1403 machines.
1404 .It Ic throttle
1405 A synonym for
1406 .Ic rate .
1407 .It Ic trace
1408 Toggle packet tracing.
1409 .It Ic type Op Ar type-name
1410 Set the file transfer
1411 .Ic type
1413 .Ar type-name .
1414 If no type is specified, the current type
1415 is printed.
1416 The default type is network
1417 .Tn ASCII .
1418 .It Ic umask Op Ar newmask
1419 Set the default umask on the remote server to
1420 .Ar newmask .
1422 .Ar newmask
1423 is omitted, the current umask is printed.
1424 .It Ic unset Ar option
1425 Unset
1426 .Ar option .
1427 Refer to
1428 .Ic set
1429 for more information.
1430 .It Ic usage Ar command
1431 Print the usage message for
1432 .Ar command .
1433 .It Ic user Ar user-name Oo Ar password Oo Ar account Oc Oc
1434 Identify yourself to the remote
1435 .Tn FTP
1436 server.
1437 If the
1438 .Ar password
1439 is not specified and the server requires it,
1441 will prompt the user for it (after disabling local echo).
1442 If an
1443 .Ar account
1444 field is not specified, and the
1445 .Tn FTP
1446 server
1447 requires it, the user will be prompted for it.
1448 If an
1449 .Ar account
1450 field is specified, an account command will
1451 be relayed to the remote server after the login sequence
1452 is completed if the remote server did not require it
1453 for logging in.
1454 Unless
1456 is invoked with
1457 .Dq auto-login
1458 disabled, this process is done automatically on initial connection to the
1459 .Tn FTP
1460 server.
1461 .It Ic verbose
1462 Toggle verbose mode.
1463 In verbose mode, all responses from
1465 .Tn FTP
1466 server are displayed to the user.
1467 In addition,
1468 if verbose is on, when a file transfer completes, statistics
1469 regarding the efficiency of the transfer are reported.
1470 By default,
1471 verbose is on.
1472 .It Ic xferbuf Ar size
1473 Set the size of the socket send and receive buffers to
1474 .Ar size .
1475 .It Ic \&? Op Ar command
1476 A synonym for
1477 .Ic help .
1480 Command arguments which have embedded spaces may be quoted with
1481 quote
1482 .Sq \&"
1483 marks.
1485 Commands which toggle settings can take an explicit
1486 .Ic on
1488 .Ic off
1489 argument to force the setting appropriately.
1491 Commands which take a byte count as an argument
1492 (e.g.,
1493 .Ic hash ,
1494 .Ic rate ,
1496 .Ic xferbuf )
1497 support an optional suffix on the argument which changes the
1498 interpretation of the argument.
1499 Supported suffixes are:
1500 .Bl -tag -width 3n -offset indent -compact
1501 .It Li b
1502 Causes no modification.
1503 (Optional)
1504 .It Li k
1505 Kilo; multiply the argument by 1024
1506 .It Li m
1507 Mega; multiply the argument by 1048576
1508 .It Li g
1509 Giga; multiply the argument by 1073741824
1514 receives a
1515 .Dv SIGINFO
1516 (see the
1517 .Dq status
1518 argument of
1519 .Xr stty 1 )
1521 .Dv SIGQUIT
1522 signal whilst a transfer is in progress, the current transfer rate
1523 statistics will be written to the standard error output, in the
1524 same format as the standard completion message.
1525 .Sh AUTO-FETCHING FILES
1526 In addition to standard commands, this version of
1528 supports an auto-fetch feature.
1529 To enable auto-fetch, simply pass the list of hostnames/files
1530 on the command line.
1532 The following formats are valid syntax for an auto-fetch element:
1533 .Bl -tag -width "FOO "
1534 .\" [user@]host:[path][/]
1535 .It Oo Ar user Ns Li \&@ Oc Ns Ar host Ns Li \&: Ns Oo Ar path Oc \
1536 Ns Oo Li / Oc
1537 .Dq Classic
1538 .Tn FTP
1539 format.
1542 .Ar path
1543 contains a glob character and globbing is enabled,
1544 (see
1545 .Ic glob ) ,
1546 then the equivalent of
1547 .Ql mget path
1548 is performed.
1550 If the directory component of
1551 .Ar path
1552 contains no globbing characters,
1553 it is stored locally with the name basename (see
1554 .Xr basename 1 )
1556 .Ic path ,
1557 in the current directory.
1558 Otherwise, the full remote name is used as the local name,
1559 relative to the local root directory.
1560 .\" ftp://[user[:password]@]host[:port]/path[/][;type=X]
1561 .It Li ftp:// Ns Oo Ar user Ns Oo Ns Li \&: Ns Ar password Oc Ns Li \&@ Oc \
1562 Ns Ar host Ns Oo Li \&: Ns Ar port Oc Ns Li / Ns Ar path Ns Oo Li / Oc \
1563 Ns Oo Li ;type= Ns Ar X Oc
1565 .Tn FTP
1566 URL, retrieved using the
1567 .Tn FTP
1568 protocol if
1569 .Ic "set ftp_proxy"
1570 isn't defined.
1571 Otherwise, transfer the URL using
1572 .Tn HTTP
1573 via the proxy defined in
1574 .Ic "set ftp_proxy" .
1576 .Ic "set ftp_proxy"
1577 isn't defined and
1578 .Ar user
1579 is given, login as
1580 .Ar user .
1581 In this case, use
1582 .Ar password
1583 if supplied, otherwise prompt the user for one.
1585 If a suffix of
1586 .Sq ;type=A
1588 .Sq ;type=I
1589 is supplied, then the transfer type will take place as
1590 ascii or binary (respectively).
1591 The default transfer type is binary.
1593 In order to be compliant with
1594 .Li RFC 3986 ,
1596 interprets the
1597 .Ar path
1598 part of an
1599 .Dq ftp://
1600 auto-fetch URL as follows:
1601 .Bl -bullet
1604 .Sq Li /
1605 immediately after the
1606 .Ar host Ns Oo Li \&: Ns Ar port Oc
1607 is interpreted as a separator before the
1608 .Ar path ,
1609 and not as part of the
1610 .Ar path
1611 itself.
1614 .Ar path
1615 is interpreted as a
1616 .So Li / Sc Ns -separated
1617 list of name components.
1618 For all but the last such component,
1620 performs the equivalent of a
1621 .Ic cd
1622 command.
1623 For the last path component,
1625 performs the equivalent of a
1626 .Ic get
1627 command.
1629 Empty name components,
1630 which result from
1631 .Sq Li //
1632 within the
1633 .Ar path ,
1634 or from an extra
1635 .Sq Li /
1636 at the beginning of the
1637 .Ar path ,
1638 will cause the equivalent of a
1639 .Ic cd
1640 command without a directory name.
1641 This is unlikely to be useful.
1644 .Sq Li \&% Ns Ar XX
1645 codes
1646 (per
1647 .Li RFC 3986 )
1648 within the path components are decoded, with
1649 .Ar XX
1650 representing a character code in hexadecimal.
1651 This decoding takes place after the
1652 .Ar path
1653 has been split into components,
1654 but before each component is used in the equivalent of a
1655 .Ic cd
1657 .Ic get
1658 command.
1659 Some often-used codes are
1660 .Sq Li \&%2F
1661 (which represents
1662 .Sq Li / )
1664 .Sq Li \&%7E
1665 (which represents
1666 .Sq Li ~ ) .
1669 The above interpretation has the following consequences:
1670 .Bl -bullet
1672 The path is interpreted relative to the
1673 default login directory of the specified user or of the
1674 .Sq anonymous
1675 user.
1676 If the
1677 .Pa /
1678 directory is required, use a leading path of
1679 .Dq %2F .
1680 If a user's home directory is required (and the remote server supports
1681 the syntax), use a leading path of
1682 .Dq %7Euser/ .
1683 For example, to retrieve
1684 .Pa /etc/motd
1685 from
1686 .Sq localhost
1687 as the user
1688 .Sq myname
1689 with the password
1690 .Sq mypass ,
1692 .Dq ftp://myname:mypass@localhost/%2fetc/motd
1694 The exact
1695 .Ic cd
1697 .Ic get
1698 commands can be controlled by careful choice of
1699 where to use
1700 .Sq /
1701 and where to use
1702 .Sq %2F
1704 .Sq %2f ) .
1705 For example, the following URLs correspond to the
1706 equivalents of the indicated commands:
1707 .Bl -tag -width "ftp://host/%2Fdir1%2Fdir2%2Ffile"
1708 .It ftp://host/dir1/dir2/file
1709 .Dq "cd dir1" ,
1710 .Dq "cd dir2" ,
1711 .Dq "get file" .
1712 .It ftp://host/%2Fdir1/dir2/file
1713 .Dq "cd /dir1" ,
1714 .Dq "cd dir2" ,
1715 .Dq "get file" .
1716 .It ftp://host/dir1%2Fdir2/file
1717 .Dq "cd dir1/dir2" ,
1718 .Dq "get file" .
1719 .It ftp://host/%2Fdir1%2Fdir2/file
1720 .Dq "cd /dir1/dir2" ,
1721 .Dq "get file" .
1722 .It ftp://host/dir1%2Fdir2%2Ffile
1723 .Dq "get dir1/dir2/file" .
1724 .It ftp://host/%2Fdir1%2Fdir2%2Ffile
1725 .Dq "get /dir1/dir2/file" .
1728 You must have appropriate access permission for each of the
1729 intermediate directories that is used in the equivalent of a
1730 .Ic cd
1731 command.
1733 .\" http://[user[:password]@]host[:port]/path
1734 .It Li http:// Ns Oo Ar user Ns Oo Li \&: Ns Ar password Oc Ns Li \&@ Oc \
1735 Ns Ar host Ns Oo Li \&: Ns Ar port Oc Ns Li / Ns Ar path
1737 .Tn HTTP
1738 URL, retrieved using the
1739 .Tn HTTP
1740 protocol.
1742 .Ic "set http_proxy"
1743 is defined, it is used as a URL to an
1744 .Tn HTTP
1745 proxy server.
1747 .Tn HTTP
1748 authorization is required to retrieve
1749 .Ar path ,
1751 .Sq user
1752 (and optionally
1753 .Sq password )
1754 is in the URL, use them for the first attempt to authenticate.
1755 .\" https://[user[:password]@]host[:port]/path
1756 .It Li https:// Ns Oo Ar user Ns Oo Li \&: Ns Ar password Oc Ns Li \&@ Oc \
1757 Ns Ar host Ns Oo Li \&: Ns Ar port Oc Ns Li / Ns Ar path
1759 .Tn HTTPS
1760 URL, retrieved using the
1761 .Tn HTTPS
1762 protocol.
1764 .Ic "set https_proxy"
1765 is defined, it is used as a URL to an
1766 .Tn HTTPS
1767 proxy server.
1769 .Tn HTTPS
1770 authorization is required to retrieve
1771 .Ar path ,
1773 .Sq user
1774 (and optionally
1775 .Sq password )
1776 is in the URL, use them for the first attempt to authenticate.
1777 There is currently no certificate validation and verification.
1778 .\" file:///path
1779 .It Li file:/// Ns Ar path
1780 A local URL, copied from
1781 .Pa / Ns Ar path
1782 on the local host.
1783 .\" about:
1784 .It Li about: Ns Ar topic
1785 Display information regarding
1786 .Ar topic ;
1787 no file is retrieved for this auto-fetched element.
1788 Supported values include:
1789 .Bl -tag -width "about:version"
1790 .It Li about:ftp
1791 Information about
1792 .Nm ftp .
1793 .It Li about:version
1794 The version of
1795 .Nm ftp .
1796 Useful to provide when reporting problems.
1800 Unless noted otherwise above, and
1801 .Fl o Ar output
1802 is not given, the file is stored in the current directory as the
1803 .Xr basename 1
1805 .Ar path .
1806 Note that if a
1807 .Tn HTTP
1808 redirect is received, the fetch is retried using the new target URL
1809 supplied by the server, with a corresponding new
1810 .Ar path .
1811 Using an explicit
1812 .Fl o Ar output
1813 is recommended, to avoid writing to unexpected file names.
1815 If a classic format or an
1816 .Tn FTP
1817 URL format has a trailing
1818 .Sq /
1819 or an empty
1820 .Ar path
1821 component, then
1823 will connect to the site and
1824 .Ic cd
1825 to the directory given as the path, and leave the user in interactive
1826 mode ready for further input.
1827 This will not work if
1828 .Ic "set ftp_proxy"
1829 is being used.
1831 Direct
1832 .Tn HTTP
1833 transfers use HTTP 1.1.
1834 Proxied
1835 .Tn FTP
1837 .Tn HTTP
1838 transfers use HTTP 1.0.
1841 .Fl R
1842 is given, all auto-fetches that don't go via the
1843 .Tn FTP
1845 .Tn HTTP
1846 proxies will be restarted.
1848 .Tn FTP ,
1849 this is implemented by using
1850 .Nm reget
1851 instead of
1852 .Nm get .
1854 .Tn HTTP ,
1855 this is implemented by using the
1856 .Sq "Range: bytes="
1857 .Tn "HTTP/1.1"
1858 directive.
1860 If WWW or proxy WWW authentication is required, you will be prompted
1861 to enter a username and password to authenticate with.
1863 When specifying IPv6 numeric addresses in a URL, you need to
1864 surround the address in square brackets.
1865 E.g.:
1866 .Dq ftp://[::1]:21/ .
1867 This is because colons are used in IPv6 numeric address as well as
1868 being the separator for the port number.
1869 .Sh ABORTING A FILE TRANSFER
1870 To abort a file transfer, use the terminal interrupt key
1871 (usually Ctrl-C).
1872 Sending transfers will be immediately halted.
1873 Receiving transfers will be halted by sending an
1874 .Tn FTP
1875 protocol
1876 .Dv ABOR
1877 command to the remote server, and discarding any further data received.
1878 The speed at which this is accomplished depends upon the remote
1879 server's support for
1880 .Dv ABOR
1881 processing.
1882 If the remote server does not support the
1883 .Dv ABOR
1884 command, the prompt will not appear until the remote server has completed
1885 sending the requested file.
1887 If the terminal interrupt key sequence is used whilst
1889 is awaiting a reply from the remote server for the ABOR processing,
1890 then the connection will be closed.
1891 This is different from the traditional behaviour (which ignores the
1892 terminal interrupt during this phase), but is considered more useful.
1893 .Sh FILE NAMING CONVENTIONS
1894 Files specified as arguments to
1896 commands are processed according to the following rules.
1897 .Bl -enum
1899 If the file name
1900 .Sq Fl
1901 is specified, the
1902 .Ar stdin
1903 (for reading) or
1904 .Ar stdout
1905 (for writing) is used.
1907 If the first character of the file name is
1908 .Sq \&| ,
1910 remainder of the argument is interpreted as a shell command.
1912 then forks a shell, using
1913 .Xr popen 3
1914 with the argument supplied, and reads (writes) from the stdout
1915 (stdin).
1916 If the shell command includes spaces, the argument
1917 must be quoted; e.g.
1918 .Dq Qq Li \&| ls\ \-lt .
1919 A particularly
1920 useful example of this mechanism is:
1921 .Dq Li dir \&"\&" \&|more .
1923 Failing the above checks, if
1924 .Dq globbing
1925 is enabled, local file names are expanded according to the rules
1926 used in the
1927 .Xr csh 1 ;
1928 see the
1929 .Ic glob
1930 command.
1931 If the
1933 command expects a single local file (e.g.
1934 .Ic put  ) ,
1935 only the first filename generated by the "globbing" operation is used.
1938 .Ic mget
1939 commands and
1940 .Ic get
1941 commands with unspecified local file names, the local filename is
1942 the remote filename, which may be altered by a
1943 .Ic case  ,
1944 .Ic ntrans ,
1946 .Ic nmap
1947 setting.
1948 The resulting filename may then be altered if
1949 .Ic runique
1950 is on.
1953 .Ic mput
1954 commands and
1955 .Ic put
1956 commands with unspecified remote file names, the remote filename is
1957 the local filename, which may be altered by a
1958 .Ic ntrans
1960 .Ic nmap
1961 setting.
1962 The resulting filename may then be altered by the remote server if
1963 .Ic sunique
1964 is on.
1966 .Sh FILE TRANSFER PARAMETERS
1968 .Tn FTP
1969 specification specifies many parameters which may affect a file transfer.
1971 .Ic type
1972 may be one of
1973 .Dq ascii ,
1974 .Dq image
1975 (binary),
1976 .Dq ebcdic ,
1978 .Dq local byte size
1979 (for
1980 .Tn PDP Ns -10's
1982 .Tn PDP Ns -20's
1983 mostly).
1985 supports the ascii and image types of file transfer,
1986 plus local byte size 8 for
1987 .Ic tenex
1988 mode transfers.
1991 supports only the default values for the remaining
1992 file transfer parameters:
1993 .Ic mode ,
1994 .Ic form ,
1996 .Ic struct .
1997 .Sh THE .netrc FILE
1999 .Pa .netrc
2000 file contains login and initialization information
2001 used by the auto-login process.
2002 It resides in the user's home directory,
2003 unless overridden with the
2004 .Fl N Ar netrc
2005 option, or specified in the
2006 .Ev NETRC
2007 environment variable.
2008 The following tokens are recognized; they may be separated by spaces,
2009 tabs, or new-lines:
2010 .Bl -tag -width password
2011 .It Ic machine Ar name
2012 Identify a remote machine
2013 .Ar name .
2014 The auto-login process searches the
2015 .Pa .netrc
2016 file for a
2017 .Ic machine
2018 token that matches the remote machine specified on the
2020 command line or as an
2021 .Ic open
2022 command argument.
2023 Once a match is made, the subsequent
2024 .Pa .netrc
2025 tokens are processed,
2026 stopping when the end of file is reached or another
2027 .Ic machine
2028 or a
2029 .Ic default
2030 token is encountered.
2031 .It Ic default
2032 This is the same as
2033 .Ic machine
2034 .Ar name
2035 except that
2036 .Ic default
2037 matches any name.
2038 There can be only one
2039 .Ic default
2040 token, and it must be after all
2041 .Ic machine
2042 tokens.
2043 This is normally used as:
2045 .Dl default login anonymous password user@site
2047 thereby giving the user an automatic anonymous
2048 .Tn FTP
2049 login to
2050 machines not specified in
2051 .Pa .netrc .
2052 This can be overridden
2053 by using the
2054 .Fl n
2055 flag to disable auto-login.
2056 .It Ic login Ar name
2057 Identify a user on the remote machine.
2058 If this token is present, the auto-login process will initiate
2059 a login using the specified
2060 .Ar name .
2061 .It Ic password Ar string
2062 Supply a password.
2063 If this token is present, the auto-login process will supply the
2064 specified string if the remote server requires a password as part
2065 of the login process.
2066 Note that if this token is present in the
2067 .Pa .netrc
2068 file for any user other
2069 than
2070 .Ar anonymous  ,
2072 will abort the auto-login process if the
2073 .Pa .netrc
2074 is readable by
2075 anyone besides the user.
2076 .It Ic account Ar string
2077 Supply an additional account password.
2078 If this token is present, the auto-login process will supply the
2079 specified string if the remote server requires an additional
2080 account password, or the auto-login process will initiate an
2081 .Dv ACCT
2082 command if it does not.
2083 .It Ic macdef Ar name
2084 Define a macro.
2085 This token functions like the
2087 .Ic macdef
2088 command functions.
2089 A macro is defined with the specified name; its contents begin with the
2090 next
2091 .Pa .netrc
2092 line and continue until a blank line (consecutive new-line
2093 characters) is encountered.
2094 Like the other tokens in the
2095 .Pa .netrc
2096 file, a
2097 .Ic macdef
2098 is applicable only to the
2099 .Ic machine
2100 definition preceding it.
2102 .Ic macdef
2103 entry cannot be used by multiple
2104 .Ic machine
2105 definitions; rather, it must be defined following each
2106 .Ic machine
2107 it is intended to be used with.
2108 If a macro named
2109 .Ic init
2110 is defined, it is automatically executed as the last step in the
2111 auto-login process.
2112 For example,
2113 .Bd -literal -offset indent
2114 default
2115 macdef init
2116 epsv4 off
2119 followed by a blank line.
2121 .Sh COMMAND LINE EDITING
2123 supports interactive command line editing, via the
2124 .Xr editline 3
2125 library.
2126 It is enabled with the
2127 .Ic edit
2128 command, and is enabled by default if input is from a tty.
2129 Previous lines can be recalled and edited with the arrow keys,
2130 and other GNU Emacs-style editing keys may be used as well.
2133 .Xr editline 3
2134 library is configured with a
2135 .Pa .editrc
2136 file - refer to
2137 .Xr editrc 5
2138 for more information.
2140 An extra key binding is available to
2142 to provide context sensitive command and filename completion
2143 (including remote file completion).
2144 To use this, bind a key to the
2145 .Xr editline 3
2146 command
2147 .Ic ftp-complete .
2148 By default, this is bound to the TAB key.
2149 .Sh COMMAND LINE PROMPT
2150 By default,
2152 displays a command line prompt of
2153 .Dq "ftp\*[Gt] "
2154 to the user.
2155 This can be changed with the
2156 .Ic "set prompt"
2157 command.
2159 A prompt can be displayed on the right side of the screen (after the
2160 command input) with the
2161 .Ic "set rprompt"
2162 command.
2164 The following formatting sequences are replaced by the given
2165 information:
2166 .Bl -tag -width "%% " -offset indent
2167 .It Li \&%/
2168 The current remote working directory.
2169 .\" %c[[0]n], %.[[0]n]
2170 .It \&%c Ns Oo Oo Li 0 Oc Ns Ar n Oc , Ns Li \&%. Ns Oo Oo Li 0 Oc Ns Ar n Oc
2171 The trailing component of the current remote working directory, or
2172 .Em n
2173 trailing components if a digit
2174 .Em n
2175 is given.
2177 .Em n
2178 begins with
2179 .Sq 0 ,
2180 the number of skipped components precede the trailing component(s) in
2181 the format
2182 .\" ``/<number>trailing''
2184 .Sm off
2185 .Li / Li \*[Lt] Va number Li \*[Gt]
2186 .Va trailing
2187 .Sm on
2189 (for
2190 .Sq \&%c )
2192 .\" ``...trailing''
2193 .Dq Li \&... Ns Va trailing
2194 (for
2195 .Sq \&%. ) .
2196 .It Li \&%M
2197 The remote host name.
2198 .It Li \&%m
2199 The remote host name, up to the first
2200 .Sq \&. .
2201 .It Li \&%n
2202 The remote user name.
2203 .It Li \&%%
2204 A single
2205 .Sq % .
2207 .Sh ENVIRONMENT
2209 uses the following environment variables.
2210 .Bl -tag -width "FTPSERVERPORT"
2211 .It Ev FTPANONPASS
2212 Password to send in an anonymous
2213 .Tn FTP
2214 transfer.
2215 Defaults to
2216 .Dq Li `whoami`@ .
2217 .It Ev FTPMODE
2218 Overrides the default operation mode.
2219 Support values are:
2220 .Bl -tag -width "passive"
2221 .It Cm active
2222 active mode
2223 .Tn FTP
2224 only
2225 .It Cm auto
2226 automatic determination of passive or active (this is the default)
2227 .It Cm gate
2228 gate-ftp mode
2229 .It Cm passive
2230 passive mode
2231 .Tn FTP
2232 only
2234 .It Ev FTPPROMPT
2235 Command-line prompt to use.
2236 Defaults to
2237 .Dq "ftp\*[Gt] " .
2238 Refer to
2239 .Sx COMMAND LINE PROMPT
2240 for more information.
2241 .It Ev FTPRPROMPT
2242 Command-line right side prompt to use.
2243 Defaults to
2244 .Dq "" .
2245 Refer to
2246 .Sx COMMAND LINE PROMPT
2247 for more information.
2248 .It Ev FTPSERVER
2249 Host to use as gate-ftp server when
2250 .Ic gate
2251 is enabled.
2252 .It Ev FTPSERVERPORT
2253 Port to use when connecting to gate-ftp server when
2254 .Ic gate
2255 is enabled.
2256 Default is port returned by a
2257 .Fn getservbyname
2258 lookup of
2259 .Dq ftpgate/tcp .
2260 .It Ev FTPUSERAGENT
2261 The value to send for the
2262 .Tn HTTP
2263 User-Agent
2264 header.
2265 .It Ev HOME
2266 For default location of a
2267 .Pa .netrc
2268 file, if one exists.
2269 .It Ev NETRC
2270 An alternate location of the
2271 .Pa .netrc
2272 file.
2273 .It Ev PAGER
2274 Used by various commands to display files.
2275 Defaults to
2276 .Xr more 1
2277 if empty or not set.
2278 .It Ev SHELL
2279 For default shell.
2280 .It Ev ftp_proxy
2281 URL of
2282 .Tn FTP
2283 proxy to use when making
2284 .Tn FTP
2285 URL requests
2286 (if not defined, use the standard
2287 .Tn FTP
2288 protocol).
2291 .Ev http_proxy
2292 for further notes about proxy use.
2293 .It Ev http_proxy
2294 URL of
2295 .Tn HTTP
2296 proxy to use when making
2297 .Tn HTTP
2298 URL requests.
2299 If proxy authentication is required and there is a username and
2300 password in this URL, they will automatically be used in the first
2301 attempt to authenticate to the proxy.
2304 .Dq unsafe
2305 URL characters are required in the username or password
2306 (for example
2307 .Sq @
2309 .Sq / ) ,
2310 encode them with
2311 .Li RFC 3986
2312 .Sq Li \&% Ns Ar XX
2313 encoding.
2315 Note that the use of a username and password in
2316 .Ev ftp_proxy
2318 .Ev http_proxy
2319 may be incompatible with other programs that use it
2320 (such as
2321 .Xr lynx 1 ) .
2323 .Em NOTE :
2324 this is not used for interactive sessions, only for command-line
2325 fetches.
2326 .It Ev no_proxy
2327 A space or comma separated list of hosts (or domains) for which
2328 proxying is not to be used.
2329 Each entry may have an optional trailing ":port", which restricts
2330 the matching to connections to that port.
2332 .Sh EXTENDED PASSIVE MODE AND FIREWALLS
2333 Some firewall configurations do not allow
2335 to use extended passive mode.
2336 If you find that even a simple
2337 .Ic ls
2338 appears to hang after printing a message such as this:
2340 .Dl 229 Entering Extended Passive Mode (|||58551|)
2342 then you will need to disable extended passive mode with
2343 .Ic epsv4 off .
2344 See the above section
2345 .Sx The .netrc File
2346 for an example of how to make this automatic.
2347 .Sh SEE ALSO
2348 .Xr getservbyname 3 ,
2349 .Xr editrc 5 ,
2350 .Xr services 5 ,
2351 .Xr ftpd 8
2352 .Sh STANDARDS
2354 attempts to be compliant with:
2355 .Bl -tag -offset indent -width 8n
2356 .It Li RFC 959
2357 .Em File Transfer Protocol
2358 .It Li RFC 1123
2359 .Em Requirements for Internet Hosts - Application and Support
2360 .It Li RFC 1635
2361 .Em How to Use Anonymous FTP
2362 .It Li RFC 2389
2363 .Em Feature negotiation mechanism for the File Transfer Protocol
2364 .It Li RFC 2428
2365 .Em FTP Extensions for IPv6 and NATs
2366 .It Li RFC 2616
2367 .Em Hypertext Transfer Protocol -- HTTP/1.1
2368 .It Li RFC 2822
2369 .Em Internet Message Format
2370 .It Li RFC 3659
2371 .Em Extensions to FTP
2372 .It Li RFC 3986
2373 .Em Uniform Resource Identifier (URI)
2375 .Sh HISTORY
2378 command appeared in
2379 .Bx 4.2 .
2381 Various features such as command line editing, context sensitive
2382 command and file completion, dynamic progress bar, automatic
2383 fetching of files and URLs, modification time preservation,
2384 transfer rate throttling, configurable command line prompt,
2385 and other enhancements over the standard
2388 were implemented in
2389 .Nx 1.3
2390 and later releases
2392 .An Luke Mewburn
2393 .Aq lukem@NetBSD.org .
2395 IPv6 support was added by the WIDE/KAME project
2396 (but may not be present in all non-NetBSD versions of this program, depending
2397 if the operating system supports IPv6 in a similar manner to KAME).
2398 .Sh BUGS
2399 Correct execution of many commands depends upon proper behavior
2400 by the remote server.
2402 An error in the treatment of carriage returns
2403 in the
2404 .Bx 4.2
2405 ascii-mode transfer code
2406 has been corrected.
2407 This correction may result in incorrect transfers of binary files
2408 to and from
2409 .Bx 4.2
2410 servers using the ascii type.
2411 Avoid this problem by using the binary image type.
2414 assumes that all IPv4 mapped addresses
2416 IPv6 addresses with a form like
2417 .Li ::ffff:10.1.1.1
2419 indicate IPv4 destinations which can be handled by
2420 .Dv AF_INET
2421 sockets.
2422 However, in certain IPv6 network configurations, this assumption is not true.
2423 In such an environment, IPv4 mapped addresses must be passed to
2424 .Dv AF_INET6
2425 sockets directly.
2426 For example, if your site uses a SIIT translator for IPv6-to-IPv4 translation,
2428 is unable to support your configuration.