📜  转换为 asci 代码的命令 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:57:50.249000             🧑  作者: Mango

转换为 ASCII 代码的命令 - Shell/Bash

在 Shell/Bash 中,我们可以使用工具来将文本转换为 ASCII 代码。这些代码可以用于表示非常规字符,在不支持该字符编码的系统上显示文本。

tr 命令

tr 命令可以用于将字符串中的字符转换为其他字符。例如,以下命令将字符串中的所有小写字母转换为大写字母:

$ echo hello world | tr '[:lower:]' '[:upper:]'
HELLO WORLD

为了将字符串转换为 ASCII 代码,我们可以使用 octal 选项。该选项允许我们使用八进制表示转换后的字符,而不是直接使用字符本身。

$ echo "Hello world" | tr -c '[:print:]' '\n' | while read -n 1 c; do printf '%03o ' "'$c"; done
104 101 108 108 111 040 119 111 114 108 100 

上述命令的解释:

  1. tr -c '[:print:]' '\n' 删除字符串中所有非可打印字符,每个字符占用一行。
  2. while read -n 1 c 逐行读取字符。
  3. printf '%03o ' "'$c" 打印字符的 ASCII 代码,并在代码前加上单引号以区分代码和字符本身。
echo 命令

echo 命令可以用于将字符串转换为 ASCII 代码。该命令的 -n 选项允许我们禁止在输出后添加换行符。

$ echo -n "Hello world" | od -An -t o1 | tr -d ' \n'
110 145 154 154 157 040 167 157 162 154 144

上述命令的解释:

  1. echo -n "Hello world" 输出字符串,禁止在最后添加换行符。
  2. od -An -t o1 将字符串转换为八进制代码。
  3. tr -d ' \n' 删除空格和换行符。
xxd 命令

xxd 命令可以将二进制文件或十六进制字符串转换为 ASCII 代码。该命令的 -p 选项允许我们输出仅包含代码的纯文本。

$ echo "Hello world" | xxd -p | tr -d '\n' | sed 's/\(..\)/\1 /g' | awk '{ print $0 }'
48 65 6c 6c 6f 20 77 6f 72 6c 64 

上述命令的解释:

  1. echo "Hello world" 输出字符串。
  2. xxd -p 将字符串转换为十六进制字符串。
  3. tr -d '\n' 删除换行符。
  4. sed 's/\(..\)/\1 /g' 将每两个字符之间添加一个空格。
  5. awk '{ print $0 }' 输出结果。
总结

在 Shell/Bash 中,我们可以使用 trechoxxd 命令将字符串转换为 ASCII 代码。这些命令通常用于表示非常规字符,在不支持该字符编码的系统上显示文本。