setmaps 命令
用途
设置终端映射或代码集映射。
语法
要使用 setmaps 而不指定输入或输出映射文件,请输入以下内容:
要从缺省目录中选择一个文件作为代码集映射文件,请输入以下内容:
要选择一个指定文件作为代码集映射文件,请输入以下内容:
要从缺省目录中选择一个文件作为输入或输出终端映射文件,请输入以下内容:
setmaps [ -v ] [ -D ] [ -k KeyName ] [ -d DirectoryPath ] { -i | -o } MapName
要从缺省目录中选择文件作为输入或输出终端映射文件,请输入以下内容:
setmaps [ -v ] [ -D ] [ -d DirectoryPath ] -t MapName
要选择一个指定文件作为输入或输出终端映射文件,请输入以下内容:
setmaps [ -v ] [ -D ] [ -k KeyName ] { -I | -O } File1
要装入缺省终端映射文件以备以后使用,请输入以下内容:
setmaps [ -v ] [ -D ] [ -k KeyName ] [ -r ] -l File2
要装入一个指定的终端映射文件以备以后使用,请输入以下内容:
描述
注: 如果在没有 root 用户权限的情况下运行此命令,那么不会装入代码集映射,只会进行调试。
setmaps 命令处理终端和代码集映射。 -s 标志必须用于代码集映射。 操作系统使用输入和输出终端映射将内部数据表示转换为异步终端支持的 ASCII 字符。 如果您输入没有标志的 setmaps 命令,那么它显示出当前输入和输出终端映射的名称。
终端映射是一个文本文件,它包含将模式字符串和替换字符串关联的规则列表。 这个文件通常存在于 /usr/lib/nls/termmap 目录中。 操作系统使用输入映射文件将键盘输入映射到应用程序,并使用输出文件将应用程序的输出映射到显示器。
终端映射工作流程如下:
- 系统在缓冲区中收集字符,直到映射文件中的规则指定的模式与缓冲区中的子串匹配为止。
- 然后,系统构造并返回由规则指定的替换字符串。
该过程继续处理缓冲区中的剩余字符。
终端映射规则可以测试和更改模式处理器的状态。 由单字节字符,通常是数字(0-9)来识别该状态。 当系统装入一个新的映射、刷新终端输入或输出缓冲区时(比如当它处理 KILL 或 INTR 字符或者当程序发出 ioctl 系统调用时),状态复位为 0,即初始状态。 终端映射可以使用状态以在其他任务中检测多字节转义序列。 您可以通过在模式中指定 @x 来测试状态 x。 您可以通过将 @x 包含在替换字符串中来将设置状态为 x。
当使用 -s 标志时,setmaps 命令将代码映射指定给标准输入设备。 操作系统使用代码集映射确定一个字符所需的内存字节数和所需的显示列数。
标志
| 项 | 描述 |
|---|---|
| -c | 在终端上清除所有的映射。 |
| -d DirectoryPath | 使 DirectoryPath 变量用作包含 MapName 变量的目录的路径。 指定这个标志和变量覆盖 /usr/lib/nls/termmap 目录。 |
| -D | 装入映射前在标准输出设备上生成指定映射的调试程序显示输出。 在新的映射上运行此调试程序时,直到映射被完全调试后才能使用 root 用户权限来运行以防止映射被实际加载。 |
| -h | 显示 setmaps 命令(高级用户将其和 -v 标志一起使用)的使用信息。 |
| -i MapName | 选择 /usr/lib/nls/termmap/MapName.in 文件作为输入映射。 当和 -s 标志一起使用时,该标志会选择 /usr/lib/nls/csmap/MapName 文件作为终端代码集映射文件。 |
| -我 File1 | 选择 File1 变量的内容作为输入映射。 File1 变量指定的文件可以是完整路径名或者是当前工作目录的相对路径名。 当和 -s 标志一起使用时,该标志会选择 File1 变量的内容作为终端代码页面映射文件。 |
| -k KeyName | 将 KeyName 变量的内容和所选映射相关联。 这个密钥名称覆盖缺省密钥,该缺省密钥一般设置为 MapName 变量的值。 |
| -我 File2 | 装入 /usr/lib/nls/termmap/File2 文件以备后用。 File2 变量包含映射文件的完整路径名和后缀(如果有的话)。注:必须具有 root 用户权限才能指定此标志。 |
| -L File1 | 装入指定的映射以备后用。 File1 变量包含映射文件的完整路径名和后缀(如果有的话)。注:必须具有 root 用户权限才能指定此标志。 |
| -o MapName | 选择 /usr/lib/nls/termmap/MapName.out 文件作为终端输出映射。 |
| -O File1 | 选择 File1 变量的内容作为终端输出映射。 File1 变量包含映射文件的完整路径名和后缀(如果有的话)。 |
| -r | 即使指定的映射已经装入,也要强制重新装入。 使用旧映射的终端继续装入直到注销或者其映射已明确复位。 如果未指定这个标志,那么仅当映射以前没有装入到内核时才能装入该映射。注:必须具有 root 用户权限才能指定此标志。 |
| -s | 将任意映射看成是一个代码集映射。 |
| -t MapName | 选择/usr/lib/nls/termmap/MapName.in 文件作为终端输入映射,/usr/lib/nls/termmap/MapName.out 文件作为终端输出映射。 |
| -v | 选择冗长的输出。 |
所有装入的映射必须有唯一的名称。 使用 -k 标志消除命名冲突。 只有 -i、-o 和 -t 标志隐含地添加一个后缀。 如果适当的话,其他指定映射名称的标志应该包括一个后缀。 如果内核中已经装入所请求的映射名称,那么即使命令行中提供的路径信息暗示一个不同的映射,仍然会使用该映射。
为了将代码集映射重新设置成原始状态,应该使用 /usr/lib/nls/csmap/sbcs 代码集映射。
示例
- 要显示此终端的当前地图设置,请输入:
setmaps - 要清除当前终端的所有映射,请输入:
setmaps -c - 要设置映射 (输入和输出映射) ,请执行以下操作:ibm3161-C终端,输入:
setmaps -t ibm3161-C - 要装入vt220输入映射到内核中,作为fred映射,输入:
setmaps -k fred -i vt220 - 要收集调用的新映射的调试输出,请执行以下操作:bob在名为bob.dump,请输入:
setmaps -D -L /tmp/bob > bob.dump - 要为该终端设置一个符合 IBM-943 代码页的代码集映射,请输入:
setmaps -s -i IBM-943 - 要从文件设置代码集映射,请执行以下操作:myEUC对于此终端,请输入:
setmaps -s -I myEUC
文件数
| 项 | 描述 |
|---|---|
| /乌斯尔/仓/设置映射 | 包含 setmaps 命令。 |
| /usr/lib/nls/termmap/*.in | 包含输入映射文件。 |
| /usr/lib/nls/termmap/*.out | 包含输出映射文件。 |
| /usr/lib/nls/csmap/sbcs | 包含单字节代码页的代码集映射。 |
| /usr/lib/nls/csmap/IBM-943 | 包含 IBM-943 代码页的代码集映射。 |
| /usr/lib/nls/csmap/IBM-eucJP | 包含 IBM-eucJP 代码页的代码集映射。 |