📄 ckcbwr.txt
字号:
C-Kermit 8.0 General Hints and Tips Frank da Cruz [1]The Kermit Project, [2]Columbia University As of: C-Kermit 8.0.211, 17 March 2003 This page last updated: Sat Apr 10 16:37:37 2004 (New York USA Time) IF YOU ARE READING A PLAIN-TEXT version of this document, it is a plain-text dump of a Web page. You can visit the original (and possibly more up-to-date) Web page here: [3]http://www.columbia.edu/kermit/ckcbwr.html This document contains platform-independent C-Kermit hints and tips. Also see the platform-specific C-Kermit hints and tips document for your platform, for example: [4]http://www.columbia.edu/kermit/ckubwr.html for Unix. This document also applies to [5]Kermit 95 for Windows, which is based on C-Kermit. [ [6]C-Kermit ] [ [7]TUTORIAL ] ________________________________________________________________________ CONTENTS 0. [8]PATCHES 1. [9]INCOMPATIBLE CHANGES 2. [10]THE C-KERMIT COMMAND PARSER 3. [11]MULTIPLE SESSIONS 4. [12]NETWORK CONNECTIONS 5. [13]MODEMS AND DIALING 6. [14]DIALING HINTS AND TIPS 7. [15]TERMINAL SERVERS 8. [16]TERMINAL EMULATION 9. [17]KEY MAPPING 10. [18]FILE TRANSFER 11. [19]SCRIPT PROGRAMMING ________________________________________________________________________ 0. PATCHES [ [20]Top ] [ [21]Contents ] [ [22]Next ] Source-level patches for C-Kermit 8.0.211: (None) ________________________________________________________________________ 1. INCOMPATIBLE CHANGES [ [23]Top ] [ [24]Contents ] [ [25]Next ] These are not necessarily exhaustive lists. 1.1. C-Kermit 6.0 C-Kermit 6.0 was released 6 September 1996 and is completely documented in [26]Using C-Kermit, 2nd Edition. The following incompatible changes were made in C-Kermit 6.0: * Unless you tell C-Kermit otherwise, if a serial or network connection seems to be open, and you attempt to EXIT or to open a new connection, C-Kermit warns you that an active connection appears to be open and asks you if you really want to close it. If you do not want these warnings, add SET EXIT WARNING OFF to your customization file or script, or give this command at the prompt. * The default for SET { SEND, RECEIVE } PATHNAMES was changed from ON to OFF, to prevent unexpected creation of directories and depositing of incoming files in places you might not know to look. * The default for SET FILE INCOMPLETE was changed from DISCARD to KEEP to allow for file transfer recovery. * The default file-transfer block-check is now 3, rather than 1. If the other Kermit does not support this, the two will drop back to type 1 automatically unless the other Kermit fails to follow the protocol specification. * The default flow-control is now "auto" ("do the right thing for each type of connection"), not Xon/Xoff. * Backslash (\) is no longer a command continuation character. Only - (hyphen, dash) may be used for this in C-Kermit 6.0 and later. * Negative INPUT timeout now results in infinite wait, rather than 1 second. 1.2. C-Kermit 7.0 C-Kermit 7.0 was released 1 January 2000. Its new features are documented in the C-Kermit 7.0 Supplement, [27]http://www.columbia.edu/kermit/ckermit2.html. The following incompatible changes were made in C-Kermit 7.0: * The "multiline GET" command is gone. Now use either of the following forms instead: get remote-name local-name get /as-name:local-name remote-name If either name contains spaces, enclose it in braces (or, in C-Kermit 8.0, doublequotes). * To include multiple file specifications in a GET command, you must now use MGET rather than GET: mget file1 file2 file3 ... * C-Kermit 7.0 and later use FAST Kermit protocol settings by default. This includes "unprefixing" of certain control characters. Because of this, file transfers that worked with previous releases might not work in the new release especially against a non-Kermit-Project Kermit protocol implementation (but it is more likely that they will work, and much faster). If a transfer fails, you'll get a context-sensitive hint suggesting possible causes and cures. Usually SET PREFIXING ALL does the trick. * By default C-Kermit 7.0 and later send files in text or binary mode by looking at each file to see which is the appropriate mode. To restore the previous behavior, put SET TRANSFER MODE MANUAL and the desired SET FILE TYPE (TEXT or BINARY) in your C-Kermit initialization file. * The RESEND and REGET commands automatically switch to binary mode; previously if RESEND or REGET were attempted when FILE TYPE was TEXT, these commands would fail immediately, with a message telling you they work only when the FILE TYPE is BINARY. Now they simply do this for you. * SET PREFIXING CAUTIOUS and MINIMAL now both prefix linefeed (10 and 138) in case rlogin, ssh, or cu are "in the middle", since otherwise <LF>~ might appear in Kermit packets, and this would cause rlogin, ssh, or cu to disconnect, suspend,escape back, or otherwise wreck the file transfer. Xon and Xoff are now always prefixed too, even when Xon/Xoff flow control is not in effect, since unprefixing them has proven dangerous on TCP/IP connections. * In UNIX, VMS, Windows, and OS/2, the DIRECTORY command is built into C-Kermit itself rather than implemented by running an external command or program. The built-in command might not behave the way the platform-specific external one did, but many options are available for customization. Of course the underlying platform-specific command can still be accessed with "!", "@", or "RUN" wherever the installation does not forbid. In UNIX, the "ls" command can be accessed directly as "ls" in C-Kermit. * SEND ? prints a list of switches rather than a list of filenames. If you want to see a list of filenames, use a (system-dependent) construction such as SEND ./? (for UNIX, Windows, or OS/2), SEND []? (VMS), etc. * In UNIX, OS-9, and Kermit 95, the wildcard characters in previous versions were * and ?. In C-Kermit 7.0 they are *, ?, [, ], {, and }, with dash used inside []'s to denote ranges and comma used inside {} to separate list elements. If you need to include any of these characters literally in a filename, precede each one with backslash (\). * SET QUIET { ON, OFF } is now on the command stack, just like SET INPUT CASE, SET COUNT, SET MACRO ERROR, etc, as described on p.458 of [28]Using C-Kermit, 2nd Edition. This allows any macro or command file to SET QUIET ON or OFF without worrying about saving and restoring the global QUIET value. For example, this lets you write a script that tries SET LINE on lots of devices until it finds one free without spewing out loads of error messages, and also without disturbing the global QUIET setting, whatever it was. * Because of the new "." operator (which introduces assignments), macros whose names begin with "." can not be invoked "by name". However, they still can be invoked with DO or \fexecute(). * The syntax of the EVALUATE command has changed. To restore the previous syntax, use SET EVALUATE OLD. * The \v(directory) variable now includes the trailing directory separator; in previous releases it did not. This is to allow constructions such as: cd \v(dir)data.tmp to work across platforms that might have different directory notation, such as UNIX, Windows, and VMS. * Prior to C-Kermit 7.0, the FLOW-CONTROL setting was global and sticky. In C-Kermit 7.0, there is an array of default flow-control values for each kind of connection, that are applied automatically at SET LINE/PORT/HOST time. Thus a SET FLOW command given before SET LINE/PORT/HOST is likely to be undone. Therefore SET FLOW can be guaranteed to have the desired effect only if given after the SET LINE/PORT/HOST command. * Character-set translation works differently in the TRANSMIT command when (a) the file character-set is not the same as the local end of the terminal character-set, or (b) when the terminal character-set is TRANSPARENT. 1.3. C-Kermit 8.0 The following incompatible changes were made in C-Kermit 8.0: * C-Kermit now accepts doublequotes in most contexts where you previously had to use braces to group multiple words into a single field, or to force inclusion of leading or trailing blanks. This might cause problems in contexts where you wanted the doublequote characters to be taken literally. Consult [29]Section 5 of the [30]C-Kermit 8.0 Update Notes for further information. * Using the SET HOST command to make HTTP connections is no longer supported. Instead, use the new [31]HTTP OPEN command. ________________________________________________________________________ 2. THE C-KERMIT COMMAND PARSER [ [32]Top ] [ [33]Contents ] [ [34]Next ] [ [35]Previous ] Various command-related limits are shown in the following table, in which the sample values are for a "large memory model" build of C-Kermit, typical for modern platforms (Linux, Solaris, AIX, VMS, etc). You can see the values for your version of Kermit by giving the SHOW FEATURES command. The maximum length for a Kermit command (CMDBL) also determines the maximum length for a macro definition, since DEFINE is itself a command. The maximum length for a variable name is between 256 and 4096 characters, depending on the platform; for array declarations and references, that includes the subscript. ______________________________________________________________ Item Symbol Sample Value Definition Number of characters in a command CMDBL 32763 ckucmd.h Number of chars in a field of a command ATMBL 10238 ckucmd.h Nesting level for command files MAXTAKE 54 ckuusr.h Nesting level for macros MACLEVEL 128 ckuusr.h Nesting level for FOR / WHILE loops FORDEPTH 32 ckuusr.h Number of macros MAC_MAX 16384 ckuusr.h Size of INPUT buffer INPBUFSIZ 4096 ckuusr.h Maximum files to match a wildcard MAXWLD 102400 ckcdeb.h Filespecs in MSEND command MSENDMAX 1024 ckuusr.h Length for GOTO target label LBLSIZ 50 ckuusr.h \fexecute() recursion depth limit CMDDEP 64 ckucmd.h ______________________________________________________________ If you need to define a macro that is longer than CMDBL, you can break the macro up into sub-macros or rewrite the macro as a command file. In a pinch you can also redefine CMDBL and recompile C-Kermit. All of these numbers represent tradeoffs: the bigger the number, the more "powerful" Kermit in the corresponding area, but also the bigger the program image and possibly disk footprint, and the longer it takes to load and initialize. In the interactive command parser: * EMACS- or VI-style command line editing is not supported. * Editing keys are hardwired (Ctrl-U, Ctrl-W, etc). If you interrupt C-Kermit before it has issued its first prompt, it will exit. This means that you cannot interrupt execution of the initialization file, or of an "application file" (file whose name is given as the first command-line argument), or of an alternative initialization file ("-y filename"), and get to the prompt. There is, however, one exception to this rule: you *can* interrupt commands -- including TAKE commands -- given in the '-C "command list"' command-line argument and -- if there were no action commands among the command-line arguments -- you will be returned to the C-Kermit prompt. So, for example, if you want to start C-Kermit in such a way that it executes a command file before issuing its first prompt, and you also want to be able to interrupt the command file and get to the prompt, include a TAKE command for the desired command in the -C argument, for example: kermit -C "take dial.scr" At the command prompt, if you use the backslash (\) prefix to enter a control character, space, or question mark into a command literally, the backslash disappears and is replaced by the quoted character. If it was a control character, it is shown as a circumflex (^). This allows editing (backspace, delete, Ctrl-W) to work correctly even for control characters. Priot to C-Kermit 8.0, the only way to include a comma literally in a macro definition -- as opposed to having it separate commands within the definition -- is to enter its ASCII value (44) in backslash notation, e.g.: DEFINE ROWS RUN MODE CO80\{44}\%1 In C-Kermit 8.0 you can use constructions like this: DEFINE ROWS RUN MODE "CO80,\%1" If you quote special characters in a filename (e.g. in the SEND command), filename completion may seem to work incorrectly. For example, if you have a file whose name is a*b (the name really contains an asterisk), and you type "send a\\*<ESC>", the "b" does not appear, nor will Ctrl-R redisplay the completed name correctly. But internally the file name is recognized anyway.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -