如何在Ubuntu中使用Figlet从CLI生成ASCII艺术文本?

2021年11月29日23:32:22 发表评论 1,469 次浏览

了解如何使用 Figlet 从 CLI 生成 ASCII 艺术文本。

如何在Ubuntu中使用Figlet从CLI生成ASCII艺术文本?
Figlet生成ASCII文本的方法

有谁记得你用来免费激活那些正版程序的那些密钥生成器吗?他们总是像这样包含带有 ASCII 艺术的组的签名或名称:

.__.         __      .     .  .      .  .  .__       .      | 
|  |. .._.  /  ` _  _| _   |  | _ ._.| _|  [__) _  _.;_/ __ | 
|__|(_|[    \__.(_)(_](/,  |/\|(_)[  |(_]  |  \(_)(_.| \_)  * 

如何使用Figlet生成ASCII文本?通常你会想象他们是手动生成的,但是,有很多工具可以让你从纯文本自动生成 ASCII 艺术。在本文中,我将向你解释如何在你的 Ubuntu 18.04 服务器或桌面上轻松安装和使用 Figlet。

1.安装Figlet

Figlet生成ASCII文本的方法:Figlet 使用由普通屏幕字符(称为“子字符”)组成的大字符(称为“FIGcharacters”)打印其输入。FIGlet 输出通常让人想起许多人喜欢放在电子邮件和 UseNet 消息末尾的那种“签名”。它也让人联想到一些横幅程序的输出,虽然它是正常定向的,而不是横向的。Figlet 包可以直接从 Ubuntu 的 APT 存储库中获得。在终端中运行以下命令:

sudo apt-get install figlet

安装后,figlet 工具将可以从命令行使用。该工具接受以下选项:

  • -f fontfile:选择字体。.flf 后缀可能会从 fontfile 中删除,在这种情况下,FIGlet 会自动附加它。FIGlet 首先在默认字体目录中查找文件,然后在当前目录中查找文件,或者,如果 fontfile 作为完整路径名给出,则在给定目录中查找。如果未指定 -f 选项,FIGlet 将使用编译时指定的字体。要找出这是哪种字体,请使用 -I3 选项。
  • -d fontdirectory: 更改默认字体目录。FIGlet 首先在默认目录中查找字体,然后在当前目录中查找。如果未指定 -d 选项,FIGlet 将使用编译时指定的目录。要找出这是哪个目录,请使用 -I2 选项。
  • -c, -l, -r, -x:这些选项处理 FIGlet 输出的对齐方式。-c 将输出水平居中。-l 使输出向左对齐。-r 使其齐平。-x(默认)根据是选择从左到右还是从右到左文本来设置对齐方式。从左到右的文本将与左齐平,而从右到左的文本将与右齐平。(从左到右与从右到左的文本由 -L、-R 和 -X 控制。)
  • -t, -w outputwidth:这些选项控制输出宽度,或FIGlet 在格式化其输出时假定的屏幕宽度。Figlet 使用输出宽度来确定何时断线以及如何使输出居中。通常,FIGlet 假定为 80 列,因此拥有宽终端的人不会惹恼他们通过电子邮件发送 FIGlet 输出的人。-t 将输出宽度设置为终端宽度。如果无法确定终端宽度,则保留之前的输出宽度。-w 将输出宽度设置为给定的整数。outputwidth 为 1 是一个特殊值,它告诉 FIGlet 将每个非空格 FIG 字符作为整体打印在单独的行上,无论它有多宽。
  • -p, -n:这些选项控制 FIGlet 如何处理换行符。-p 将 FIGlet 置于“段落模式”,这在通过 FIGlet 管道传输多行文件时消除了一些不必要的换行符。在段落模式下,FIGlet 将段落内的换行符视为单词之间的空白。(具体来说,-p 使FIGlet 将任何前面没有换行符且后面没有空格字符的换行符转换为空格。)-n(默认值)使FIGlet 恢复正常,其中FIGlet 读取的每个换行符都会导致它产生换行符。
  • -D -E, -D 切换到德语 (ISO 646-DE) 字符集。将 `['、`\' 和 `]' 分别变成变音字母 A、O 和 U。'{', '|' 和`}' 变成它们各自的小写版本。`~' 变成了 sz。-E 关闭 -D 处理。这些选项已被弃用,这意味着它们可能不会出现在下一个版本的 FIGlet 中。
  • -C controlfile -N:这些选项处理 FIGlet 控制文件。控制文件是一个文件,其中包含 FIGlet 每次读取字符时执行的命令列表。这些命令可以将某些输入字符映射到其他字符,类似于 Unix tr 命令或 FIGlet -D 选项。FIGlet 维护着一个控制文件列表,当FIGlet 启动时该列表为空。-C 将给定的控制文件添加到列表中。-N 清除控制文件列表,取消之前任何 -C 的效果。FIGlet 执行列表中所有控制文件中的命令。有关如何编写控制文件的详细信息,请参阅 FIGlet 随附的文件 figfont.txt。
  • -s -S -k -W -o:这些选项控制FIGlet 如何将它输出的FIGcharacters 隔开。-s(默认)和 -S 导致“模糊”。图字符尽可能靠近显示,并删除重叠的子字符。究竟哪些子字符算作“重叠”取决于字体的布局模式,由字体的作者定义。-k 导致“字距调整”。尽可能多地去除FIGcharacters 之间的空白,使它们相互接触,但FIGcharacters 不会被弄脏。-W 使 FIGlet 以全宽显示所有 FIG 字符,根据字体的不同,可以是固定的或可变的。-s 和 -S 之间的区别在于 -s 不会模糊作者指定字距调整或全宽作为默认布局模式的字体,而 -S 会尝试这样做。如果字体中没有关于如何打乱的信息,或者如果指定了 -o 选项,则FIGcharacters 是“重叠的”。这意味着在字距调整后,每个FIGcharacter 的第一个子字符被删除。(如果一个 FIG 字符只包含一个子字符,则不会这样做。)
  • -m layoutmode: 指定 1 到 63 之间的显式布局模式。 figfont.txt 中解释了 Smushmodes,它还提供了有关 FIGlet 字体格式的完整信息。为了与 2.2 之前的 FIGlet 版本向后兼容,-m0 等价于 -k,-m-1 等价于 -W,-m-2 等价于 -s。-m 开关通常只由字体设计者使用新字体测试各种布局模式时使用。
  • -v -I infocode:这些选项打印有关FIGlet的各种信息,然后退出。如果在命令行上给出了这些选项中的几个,则只执行最后一个,并且只有在处理了所有其他命令行选项之后。-v 打印版本和版权信息,以及“用法:...”行。-I 以一致、可靠(即保证在未来版本中相同)格式打印与给定信息代码对应的信息。-I 主要供使用 FIGlet 的程序使用。infocode 可以是以下任何一种。
    • -1:正常操作(默认)。此信息代码表明 FIGlet 应正常运行,不提供任何信息打印输出,以所选字体打印其输入。
    • 0:版本和版权。这与 -v 相同。
    • 1:版本(整数)。这会将你的 FIGlet 副本的版本打印为十进制整数。主版本号乘以10000,子版本号乘以100,子子版本号乘以1,这些加在一起,打印出结果。例如,FIGlet 2.2 将打印“20200”,2.2.1 版本将打印“20201”。同样,升序,更高版本的数字更高。请注意,FIGlet 的第一个主要版本 2.0 没有 -I 选项。
    • 2:默认字体目录。这将打印默认字体目录。它受 -d 选项的影响。
    • 3:字体:。这将打印FIGlet 将使用的字体的名称。它受 -f 选项的影响。这不是文件名;不打印“.flf”后缀。
    • 4:输出宽度。这将打印 FIGlet 用于输出宽度的值,FIGlet 假定屏幕的列宽。它受 -w 和 -t 选项的影响。
    • 5:支持的字体格式。这将列出 FIGlet 支持的字体格式。可能的格式是“flf2”用于FIGfont 版本2 .flf 文件和“tlf2”用于TOIlet .tlf 文件。如果 infocode 是任何其他正值,FIGlet 将直接退出而不打印任何内容。
  • -L -R -X:这些选项控制FIGlet 是从左到右还是从右到左打印。-L 选择从左到右打印。-R 选择从右到左打印。-X(默认)使FIGlet 使用字体文件中指定的任何一个。读取选项后,如果命令行上还有任何剩余的单词,则将使用它们代替标准输入作为文本源。此功能允许 shell 脚本生成大字母,而无需模拟标准输入文件。由两个连续引号获得的空参数会导致换行。

2. 使用 Figlet

Figlet生成ASCII文本的方法:Figlet 它真的很容易使用,只需将要转换为 ASCII 艺术版本的文本作为位置参数传递,就是这样:

figlet "Our Code World Rocks!"

3. 实现自定义字体

如何使用Figlet生成ASCII文本?你需要使用自定义 figlet 字体 (.flf) 以具有自定义样式的 ASCII 字符打印文本。在这个 Github 存储库中,你可以找到多种可用于 Figlet 的字体。只需在你的服务器/计算机中使用 git 下载存储库:

git clone https://github.com/xero/figlet-fonts.git

然后像往常一样运行 figlet 命令,但是,添加 2 个额外参数来指定字体的新目录和要使用的字体名称:

  • -d: 指定包含 figlet 字体的目录的路径。
  • -f: 指定要使用的字体名称(不带扩展名的文件名)。

命令是这样的:

figlet "text" -f <font-name> -d <path-to-fonts-directory>

在我们的例子中,我们将打印“Our Code World Rocks!” 使用从上述存储库下载的 3D Diagonal.flf 字体:

figlet "Our Code World Rocks!" -f "3D Diagonal" -d ./figlet-fonts/

终端中的命令将输出以下文本:

如何在Ubuntu中使用Figlet从CLI生成ASCII艺术文本?
Figlet生成ASCII文本的方法

4. 将 Figlet 内容打印到文件中

如果不是将其打印到终端,而是要将输出保存到文件中,只需将输出通过管道传输到所需的文件即可。例如,要将内容保存到纯文本文件中:

figlet "Our Code World Rocks!" -f "3D Diagonal" -d ./figlet-fonts/ > ./output-file.txt

快乐编码❤️!

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: