0%

luit命令

一、常用用法

1
luit -encoding '编码方案' program [args]

二、含义与选项

2.1、含义

《终端模拟器中执行命令出现乱码问题解决》可知,在终端模拟器中执行命令,通信过程示意图如图1或者图2所示。

图1

图2

执行命令时,使用终端模拟器配置的编码方案,对原命令字符串进行编码,将得到的字节流传递给“命令执行单元” ;展现命令执行结果时,获取字节流形式的命令执行结果,使用终端模拟器配置的编码方案,对其进行解码,得到字符串形式的命令执行结果。

通过使用luit -encoding '编码方案' program [args]命令,现在在终端模拟器中执行命令,通信过程示意图如图3或者图4所示。

图3

图4

此时执行命令时,使用终端模拟器配置的编码方案,对原命令字符串进行编码,得到字节流,再使用“UTF-8”编码方案进行解码得到字符流,最后使用“luit”命令中指定的编码方案(比如‘luit -encoding GBK program [args]’中的‘GBK’)进行编码,将得到的字节流传递给“命令执行单元” ;展现命令执行结果时,获取字节流形式的命令执行结果,使用“luit”命令中指定的编码方案进行解码得到字符流,再使用“UTF-8”编码方案进行编码得到字节流,最后对得到的字节流使用终端模拟器配置的编码方案进行解码,得到字符串形式的命令执行结果。

2.2、选项

“-encoding 编码方案”:指定与“UTF-8”编码方案互转的编码方案,即从“UTF-8”编码方案转换到“该编码方案”或者从“该编码方案”转换到“UTF-8”编码方案
“program [args]”:执行命令

三、实验

3.1、实验1

现有一个名为“你好吗.txt”的文件,相应于该文件名的存储内容存储的是使用“GBK”编码方案编码得到的字节流。
设置locale系列环境变量配置值为“zh_CN.gbk”,终端模拟器编码方案为“UTF-8”,分别执行lsluit -encoding gbk ls命令,得到如表1所示结果。

表1

locale系列环境变量配置值 终端模拟器(实验了Gnome Terminal)编码方案 ls命令执行结果截图 luit -encoding gbk ls命令执行结果截图
zh_CN.gbk UTF-8 这里写图片描述 这里写图片描述

3.2、实验2

现有一个名为“a.txt”的文件,存储有内容“你好吗?”,使用的编码格式为“UTF-8”。
设置locale系列环境变量配置值为“zh_CN.gbk”,终端模拟器编码方案为“UTF-8”,分别执行vim a.txtluit -encoding gbk vim a.txt(在VIM环境中,需要执行':e ++enc=utf8')命令,得到如表2所示结果。

表2

locale系列环境变量配置值 终端模拟器(实验了Gnome Terminal)编码方案 “vim a.txt”命令执行结果截图 VIM环境中执行“:e ++enc=utf8”结果截图 “luit -encoding gbk vim a.txt”命令&&“:e ++enc=utf8”结果截图
zh_CN.gbk UTF-8 这里写图片描述 这里写图片描述 这里写图片描述

3.3、实验3

现有一个名为“a.txt”的文件,存储有内容“你好吗?”,使用的编码格式为“GBK”。
设置locale系列环境变量配置值为“zh_CN.gbk”,终端模拟器编码方案为“UTF-8”,分别执行vim a.txtluit -encoding gbk vim a.txt命令,得到如表3所示结果。

表3

locale系列环境变量配置值 终端模拟器(实验了Gnome Terminal)编码方案 “vim a.txt”命令执行结果截图 VIM环境中执行“:e ++enc=gbk”结果截图 “luit -encoding gbk vim a.txt”命令结果截图
zh_CN.gbk UTF-8 这里写图片描述 这里写图片描述 这里写图片描述

四、其他

4.1、常见应用形式

“luit命令”较常见的一个应用形式是结合“ssh命令”使用,比如luit -encoding gbk ssh myhost

4.2、用到的脚本

脚本1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash 

cd /home/dsl/tmp/shell

export LC_ALL=$1
export LANG=$1
export LANGUAGE=$1

locale

echo "---------"
echo "---------"
echo "---------"

luit -encoding gbk ls

脚本2:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash 

cd /home/dsl/tmp/shell

export LC_ALL=$1
export LANG=$1
export LANGUAGE=$1

locale

echo "---------"
echo "---------"
echo "---------"

luit -encoding gbk vim a.txt

参考文献

[1]man luit

您的支持将鼓励我继续分享!