Consistently use a single notation to refer to SSH protocol versions, as
[u/mdw/putty] / doc / psftp.but
index 716870e..5cc26f0 100644 (file)
@@ -8,8 +8,8 @@ securely between computers using an SSH connection.
 PSFTP differs from PSCP in the following ways:
 
 \b PSCP should work on virtually every SSH server. PSFTP uses the
-new SFTP protocol, which is a feature of SSH 2 only. (PSCP will also
-use this protocol if it can, but there is an SSH 1 equivalent it can
+new SFTP protocol, which is a feature of SSH-2 only. (PSCP will also
+use this protocol if it can, but there is an SSH-1 equivalent it can
 fall back to if it cannot.)
 
 \b PSFTP allows you to run an interactive file transfer session,
@@ -82,15 +82,16 @@ and then you could run the script by typing
 
 When you run a batch script in this way, PSFTP will abort the script
 if any command fails to complete successfully. To change this
-behaviour, you can use the \c{-be} option (\k{psftp-option-be}).
+behaviour, you can add the \c{-be} option (\k{psftp-option-be}).
 
 \S{psftp-option-bc} \c{-bc}: display batch commands as they are run
 
 The \c{-bc} option alters what PSFTP displays while processing a
-batch script. With the \c{-bc} option, PSFTP will display prompts
-and commands just as if the commands had been typed at the keyboard.
-So instead of seeing this:
+batch script specified with \c{-b}. With the \c{-bc} option, PSFTP
+will display prompts and commands just as if the commands had been
+typed at the keyboard. So instead of seeing this:
 
+\c C:\>psftp fred@hostname -b batchfile
 \c Sent username "fred"
 \c Remote working directory is /home/fred
 \c Listing directory /home/fred/lib
@@ -102,6 +103,7 @@ So instead of seeing this:
 
 you might see this:
 
+\c C:\>psftp fred@hostname -bc -b batchfile
 \c Sent username "fred"
 \c Remote working directory is /home/fred
 \c psftp> dir lib
@@ -115,8 +117,8 @@ you might see this:
 
 \S{psftp-option-be} \c{-be}: continue batch processing on errors
 
-When running a batch file, this option causes PSFTP to continue
-processing even if a command fails to complete successfully.
+When running a batch file, this additional option causes PSFTP to
+continue processing even if a command fails to complete successfully.
 
 You might want this to happen if you wanted to delete a file and
 didn't care if it was already not present, for example.
@@ -173,6 +175,48 @@ file whose name is \c{a file with "quotes" in it}.
 which passes its command line straight to Windows without splitting
 it up into words at all. See \k{psftp-cmd-pling}.)
 
+\S{psftp-wildcards} Wildcards in PSFTP
+
+Several commands in PSFTP support \q{wildcards} to select multiple
+files.
+
+For \e{local} file specifications (such as the first argument to
+\c{put}), wildcard rules for the local operating system are used. For
+instance, PSFTP running on Windows might require the use of \c{*.*}
+where PSFTP on Unix would need \c{*}.
+
+For \e{remote} file specifications (such as the first argument to
+\c{get}), PSFTP uses a standard wildcard syntax (similar to POSIX
+wildcards):
+
+\b \c{*} matches any sequence of characters (including a zero-length
+sequence).
+
+\b \c{?} matches exactly one character.
+
+\b \c{[abc]} matches exactly one character which can be \cw{a},
+\cw{b}, or \cw{c}.
+
+\lcont{
+
+\c{[a-z]} matches any character in the range \cw{a} to \cw{z}.
+
+\c{[^abc]} matches a single character that is \e{not} \cw{a}, \cw{b},
+or \cw{c}.
+
+Special cases: \c{[-a]} matches a literal hyphen (\cw{-}) or \cw{a};
+\c{[^-a]} matches all other characters. \c{[a^]} matches a literal
+caret (\cw{^}) or \cw{a}.
+
+}
+
+\b \c{\\} (backslash) before any of the above characters (or itself)
+removes that character's special meaning.
+
+A leading period (\cw{.}) on a filename is not treated specially,
+unlike in some Unix contexts; \c{get *} will fetch all files, whether
+or not they start with a leading period.
+
 \S{psftp-cmd-open} The \c{open} command: start a session
 
 If you started PSFTP by double-clicking in the GUI, or just by
@@ -191,12 +235,19 @@ not opened successfully, PSFTP will terminate immediately.
 \S{psftp-cmd-quit} The \c{quit} command: end your session
 
 When you have finished your session, type the command \c{quit} to
-terminate PSFTP and return to the command line (or just close the
-PSFTP console window if you started it from the GUI).
+close the connection, terminate PSFTP and return to the command line
+(or just close the PSFTP console window if you started it from the
+GUI).
 
 You can also use the \c{bye} and \c{exit} commands, which have
 exactly the same effect.
 
+\S{psftp-cmd-close} The \c{close} command: close your connection
+
+If you just want to close the network connection but keep PSFTP
+running, you can use the \c{close} command. You can then use the
+\c{open} command to open a new connection.
+
 \S{psftp-cmd-help} The \c{help} command: get quick online help
 
 If you type \c{help}, PSFTP will give a short list of the available
@@ -291,6 +342,29 @@ have to use the \c{--} special argument, which stops \c{put} from
 interpreting anything as a switch after it. For example, \cq{put --
 -silly-name-}.)
 
+\S{psftp-cmd-mgetput} The \c{mget} and \c{mput} commands: fetch or
+send multiple files
+
+\c{mget} works almost exactly like \c{get}, except that it allows
+you to specify more than one file to fetch at once. You can do this
+in two ways:
+
+\b by giving two or more explicit file names (\cq{mget file1.txt
+file2.txt})
+
+\b by using a wildcard (\cq{mget *.txt}).
+
+Every argument to \c{mget} is treated as the name of a file to fetch
+(unlike \c{get}, which will interpret at most one argument like
+that, and a second argument will be treated as an alternative name
+under which to store the retrieved file), or a wildcard expression
+matching more than one file.
+
+The \c{-r} and \c{--} options from \c{get} are also available with
+\c{mget}.
+
+\c{mput} is similar to \c{put}, with the same differences.
+
 \S{psftp-cmd-regetput} The \c{reget} and \c{reput} commands:
 resuming file transfers
 
@@ -306,6 +380,13 @@ syntax of \c{get} and \c{put}:
 
 \c reget myfile.dat
 \c reget myfile.dat newname.dat
+\c reget -r mydir
+
+These commands are intended mainly for resuming interrupted transfers.
+They assume that the remote file or directory structure has not
+changed in any way; if there have been changes, you may end up with
+corrupted files. In particular, the \c{-r} option will not pick up
+changes to files or directories already transferred in full.
 
 \S{psftp-cmd-dir} The \c{dir} command: list remote files
 
@@ -318,22 +399,28 @@ You can also list the contents of a different directory by typing
 \c dir /home/fred
 \c dir sources
 
+And you can list a subset of the contents of a directory by
+providing a wildcard:
+
+\c dir /home/fred/*.txt
+\c dir sources/*.c
+
 The \c{ls} command works exactly the same way as \c{dir}.
 
 \S{psftp-cmd-chmod} The \c{chmod} command: change permissions on
 remote files
 
-PSFTP allows you to modify the file permissions on files on the
-server. You do this using the \c{chmod} command, which works very
-much like the Unix \c{chmod} command.
+PSFTP allows you to modify the file permissions on files and
+directories on the server. You do this using the \c{chmod} command,
+which works very much like the Unix \c{chmod} command.
 
 The basic syntax is \c{chmod modes file}, where \c{modes} represents
 a modification to the file permissions, and \c{file} is the filename
-to modify. For example:
+to modify. You can specify multiple files or wildcards. For example:
 
 \c chmod go-rwx,u+w privatefile
-\c chmod a+r publicfile
-\c chmod 640 groupfile
+\c chmod a+r public*
+\c chmod 640 groupfile1 groupfile2
 
 The \c{modes} parameter can be a set of octal digits in the Unix
 style. (If you don't know what this means, you probably don't want
@@ -360,7 +447,8 @@ permissions for members of the owning group and everybody else (so
 the only permissions left are the ones for the file owner). \c{u+w}
 adds write permission for the file owner.
 
-\b The second example: \c{a+r} adds read permission for everybody.
+\b The second example: \c{a+r} adds read permission for everybody to
+all files and directories starting with \q{public}.
 
 In addition to all this, there are a few extra special cases for
 Unix systems. On non-Unix systems these are unlikely to be useful:
@@ -382,9 +470,18 @@ normally only the owner of the \e{directory} would be allowed to).
 
 \S{psftp-cmd-del} The \c{del} command: delete remote files
 
-To delete a file on the server, type \c{del} and then the filename:
+To delete a file on the server, type \c{del} and then the filename
+or filenames:
 
 \c del oldfile.dat
+\c del file1.txt file2.txt
+\c del *.o
+
+Files will be deleted without further prompting, even if multiple files
+are specified.
+
+\c{del} will only delete files. You cannot use it to delete
+directories; use \c{rmdir} for that.
 
 The \c{rm} command works exactly the same way as \c{del}.
 
@@ -395,26 +492,47 @@ directory name:
 
 \c mkdir newstuff
 
+You can specify multiple directories to create at once:
+
+\c mkdir dir1 dir2 dir3
+
 \S{psftp-cmd-rmdir} The \c{rmdir} command: remove remote directories
 
 To remove a directory on the server, type \c{rmdir} and then the
-directory name:
+directory name or names:
 
 \c rmdir oldstuff
+\c rmdir *.old ancient
+
+Directories will be deleted without further prompting, even if
+multiple directories are specified.
 
 Most SFTP servers will probably refuse to remove a directory if the
 directory has anything in it, so you will need to delete the
 contents first.
 
-\S{psftp-cmd-ren} The \c{ren} command: rename remote files
+\S{psftp-cmd-mv} The \c{mv} command: move and rename remote files
+
+To rename a single file on the server, type \c{mv}, then the current
+file name, and then the new file name:
+
+\c mv oldfile newname
+
+You can also move the file into a different directory and change the
+name:
+
+\c mv oldfile dir/newname
 
-To rename a file on the server, type \c{ren}, then the current file
-name, and then the new file name:
+To move one or more files into an existing subdirectory, specify the
+files (using wildcards if desired), and then the destination
+directory:
 
-\c ren oldfile newname
+\c mv file dir
+\c mv file1 dir1/file2 dir2
+\c mv *.c *.h ..
 
-The \c{rename} and \c{mv} commands work exactly the same way as
-\c{ren}.
+The \c{rename} and \c{ren} commands work exactly the same way as
+\c{mv}.
 
 \S{psftp-cmd-pling} The \c{!} command: run a local Windows command