linuxfold命令带来了难以控制的输出。通过控制输出的宽度来读取大量文本、无穷无尽的字符串和未格式化的流。学习如何。
Linux战斗的第一条规则:了解你的敌人。让我们来定义它。一行文字到底是什么?它是由字母、数字、符号和空格组成的一系列字符,以一个表示“开始新行”的特殊字节结尾。在Linux和Unix中,换行符(也称为换行符)用作行尾指示符。这是一个十六进制值为0x0a,十进制值为10的字节。
不同的操作系统使用不同的字节值来表示一行的结束。Windows使用两字节序列。在Windows文本文件中,换行符后面紧跟着回车符,十六进制为0x0d,十进制为十三。
术语“换行”和“回车”可以追溯到打字机。压盘,纸被包裹的圆筒,被安装在一个可移动的托架上。每次你按一个键,马车就会向左移动一个字符的宽度。要开始一条新的生产线,您需要推动一个杠杆,使纸架回到原来的位置,然后旋转滚筒,将纸张向上移动一行的高度。这个动作被称为回车,而滚筒的旋转(以及纸张的前进)被称为换行。
打字机通电后,杠杆被钥匙取代了。钥匙的标签是回车或刚刚回车。一些早期的计算机,如BBC Micro,仍然在我们现在所说的回车键上使用Return这个名字。
通常你看不到换行符。你只能看到它们的效果。换行符强制显示或处理文本的软件开始换行。
没有或很少有换行符的文本太宽,在终端窗口中很难阅读。那很烦人,但却是可以做到的。
一个更有害的问题是必须处理这样长的行,它们给需要处理、传输或接收文本的软件带来了问题。这可能是由于内部缓冲区长度或无法调整的软件其他方面造成的。
但有一个解决办法,叫折叠。
让我们看一下文本中有非常,非常长的行的部分。注意,我们这里不是在讨论句子。(虽然这篇文章来自赫尔曼·梅尔维尔的《白鲸》,但我们已经做到了两全其美。)
一行文本是从最后一个换行字符(或者文件的开头(如果它是文件中的第一行)一直到下一个换行字符,不管中间有什么。这行可能包含许多句子。它可能会在终端窗口中绕上很多次。但它仍然是一行文字。
让我们看看原始形式的文本:
less moby-dick.txt文本以较少的格式显示:
文本从窗口的一个边缘延伸到另一个边缘,并且线包装是丑陋的,并且它们在中间中断单词。
我们有另一个版本的短线文件:
less short-lines-moby-dick.txt这个文件中的行要短得多。每行以换行符结束。
如果我们使用hextump命令,我们可以查看文件中的字节值和换行符。C(canonical)选项对输出进行格式化,以在显示器的主体中显示十六进制值,并在旁边的列中显示等价的文本。我们将把输出分成以下几个部分:
hexdump -C short-lines-moby-dick.txt | less按正斜杠“/”可以进入less的搜索功能。键入“0a”并按Enter键。换行符将在文本中突出显示。您可以滚动文件并查看它们出现的位置。如果需要,可以使用左箭头和右箭头键横向滚动输出。
在每行的末尾有一个换行符本身就是一个限制。无论哪个程序或窗口显示此文本,线条都无法适应宽度大于线条本身的窗口。行长度已被换行符限制。
所以长线和短线都有问题。
fold命令有一个选项-w(width),允许您为一段文字指定一个新的最大宽度。我们将显示最大宽度为50个字符的Moby Dick文本:
fold -w 50 moby-dick.txt文本以新的最大文件长度显示在终端窗口中。原始文件未更改。只有fold的输出被重新格式化。
乍一看,这看起来好多了。但是单词仍然在行尾的中间被分开。这本书显然更容易阅读,但有些难懂的断字很刺耳。
尽管看起来文本的右边边距在来回摆动,但所有的行长度都是相同的。看起来比其他字符短一个字符的行恰好以空格字符结束。
我们可以使用-s(空格)选项来确保只在空格字符上拆分行,并且不在两行之间打断任何单词。
fold -w 50 -s moby-dick.txt现在输出的右边距参差不齐,但更容易阅读。所有的单词都是从开头的那一行开始的。
除了使长线变短之外,我们还可以使用fold来删除较短线的强制线长度。
fold -w 75 short-lines-moby-dick.txt换行符被删除,文本现在换行在分配的最大长度上或之前。
无法修改原始文件。如果要保留更改,则必须将fold的输出重定向到新文件中。我们将把输出重定向到一个名为“modified moby”的文件中-迪克.txt.”
fold -w 75 -s short-lines-moby-dick.txt > modified-moby-dick.txt让我们看看我们的新文件:
less modified-moby-dick.txt我们的新档案怎么样?
文本现在以新的行宽整齐地包装,比原始文件的行长宽。
我们可以使用折叠来重新格式化文本流。它不仅限于处理文件。让我们看看journalctl工具的原始输出是什么样子的。f(follow)选项显示systemd日志中的最新条目,并在新条目到达时更新。
sudo journalctl -f输出环绕在终端窗口的边缘。
它看起来不太糟,但是为了演示,让我们稍微减小它的宽度。我们将把journalctl的输出导入fold。我们将最大宽度设置为65个字符,并且只在空格上断行。
sudo journalctl -f | fold -w 65 -s显示屏看起来没有那么凌驾于众,触感也更加整洁。
纯文本的墙似乎无法穿透。他们很难应付。当你需要从树上看到木头的时候,可以打电话给fold,并强加一点秩序。
... 在本文中,我将向您展示如何在Linux上安装、运行和使用PowerShell! ...
...许您在Android设备上安装诚实善良的Linux应用程序。下面是如何使用Termux应用程序。 ...
... 如何在windows10上安装linux bash shell ...
要在Linux中重命名文件吗?如果您知道如何在Windows、macOS或Chrome操作系统中完成这项工作,那么您就知道如何在这里完成这项工作。在大多数版本的Linux上,您只需右键单击一个文件并选择Rename选项。 ...
想在Linux系统上添加用户但不知道如何添加?在Linux上使用命令行界面管理用户无疑是一项复杂的工作。而对于初学者来说,即使添加新用户也是一场噩梦。 ...
...已配置的系统,与其他计算机共享,或者只保存备份。 如何工作 导入和导出功能是在2019年5月的Windows10版本1903更新中添加的。如果尚未安装,则无法使用这些命令行选项。 您只需要为Windows wsl命令提供两个新选项:--export和--i...
...Linux操作系统中。总的来说,这些变化应该会提高绩效。[如何极客] 三星的巨型壁式电视得到了豪华升级:三星即将推出的MicroLED电视已经是75英寸的巨型电视,并被恰当地称为壁式电视。现在它得到了“豪华升级”选项,使电视...