Abhishek Prakash 发布的文章

这篇初学者文章介绍如何在 Fedora 和 Red Hat Linux 上安装 RPM 软件包。它也随后向你展示如何移除这些 RPM 软件包。

当你开始使用 Red Hat 系的 Fedora Linux 时,你早晚会偶然发现 .rpm 文件。就像在 Windows 中的 .exe 文件,以及在 Ubuntu 和 Debian 中的 .deb 文件一样,一个 rpm 文件能够使你在 Fedora 上快速安装一个软件。

你可以从软件中心中找到并安装大量的软件,特别是 如果你在 Fedora 中启用附加的存储库的话。但是有时你会在它们的网站上找到可用的 RPM 格式的软件包。

就像在 Windows 中的 .exe 文件一样,你可以通过 下载 .rpm 文件并双击它来安装。不用担心,我将向你展示详细的步骤。

在 Fedora 和 Red Hat Linux 上安装 RPM 文件

我将向你展示安装 RPM 文件的三个方法:

方法 1: 使用软件中心

在 Fedora 中使用默认的软件中心是最简单的方法。它真地很简单。转到你下载的 .rpm 文件的文件夹位置。它通常在 “Downloads” 文件夹。

只需要 双击 RPM 文件,它将会在软件中心中打开

或者,你可以在 RPM 文件上右键单击并选择通过软件中心来安装它。

或者双击或者右键并选择软件安装

当它在软件中心打开时,你应该会看到“安装”选项。只需要点击“安装”按钮并在提示时输入你的账号密码。

通过 Fedora 软件中心安装 RPM

它很简单,对吗?

方法 2: 使用 DNF 命令来安装 RPM 文件

这是命令行方法。Fedora 使用新的 dnf 软件包管理器 ,你也可以使用它来安装下载的 RPM 文件。

打开一个终端并切换到你下载 RPM 文件的目录下。你也可以通过到 RPM 文件的路径。像这样使用 dnf 命令:

sudo dnf install rpm_file_name

这是一个我 在 Fedora 上使用 dnf 命令安装 Google Chrome 屏幕截图:

使用 DNF 命令安装 RPM 文件

方法 3: 在 Red Hat 中使用 Yum 命令安装 RPM 文件

不像 Fedora ,Red Hat 仍然使用很好的旧式的 Yum 软件包管理器。在这里你还不能找到 dnf 命令。

这个过程与 dnf 命令相同。转到 RPM 文件所在的目录或提供它的路径。

sudo yum install path_to_RPM_file

就是这样。没有一点异常花哨的东西。

如何移除 RPM 软件包

移除一个 RPM 软件包也不是一个什么大的问题。并且,你不需要原始的用来安装程序的 rpm 文件。

你可以在软件中心中找到已安装的软件包,并从其中移除应用程序。

移除 RPM 软件包

或者,你可以使用带有 remove 选项的 dnfyum 命令。

使用 dnf ,使用这个命令:

sudo dnf remove rpm_package_name

使用 yum ,使用这个命令:

sudo yum remove rpm_package_name

你可能不记得准确的软件包名称,没有关系。你可以做的是输入软件包的前几个字母,然后敲击 tab 按键。这是假设你已经启用 tab 按键补全,通常是这样的。

这就是你需要做的全部。相当简单,对吧?作为一个初学者,你可能会为这样一个简单的任务而挣扎,我希望像这样的快速教程会让你对 Fedora 更自信一些。


via: https://itsfoss.com/install-rpm-files-fedora/

作者:Abhishek Prakash 选题:lujun9972 译者:robsean 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

这篇初学者文章解释了如何在 Ubuntu 中安装 deb 软件包。它稍后也向你展示如何移除这些 deb 软件包。

这是 Ubuntu 初学者系列的另一篇文章。如果你对 Ubuntu 很陌生,你可能会想知道 如何安装应用程序

最简单的方法是使用 Ubuntu 软件中心。在软件中心中搜索应用程序的名称并安装它。如果你能在软件中心中找到所有的应用程序,那么生活就太惬意了。但是,不幸的是,这是不可能的发生的。

一些软件包可以通过 DEB 软件包的形式获得。它们是以 .deb 扩展名为结尾的存档文件。你可以把 .deb 文件看作为 Windows 中的 .exe 文件。在 Windows 中,你双击 .exe 文件,它将开始安装过程。DEB 软件包也是非常类似的。

你可以从软件提供商网站的下载区域找到这些 DEB 软件包。例如,如果你想 在 Ubuntu 上安装 Google Chrome ,你可以从它的网站下载 Chrome 的 DEB 软件包。

现在问题产生了,你将如何安装 deb 文件呢?在 Ubuntu 中有多种安装 DEB 软件包的方法。在这篇教程中,我将向你依次地展示它们。

在 Ubuntu 中安装 deb 文件

在 Ubuntu 和基于 Debian 的 Linux 发行版中安装 .deb 文件

你可以选择一个 GUI 工具或一个命令行工具来安装一个 deb 软件包。你拥有选择权。

让我们继续看看如何安装 deb 文件。

方法 1: 使用默认的软件中心

在 Ubuntu 中,最简单的方法是使用默认的软件中心。在这里你不必要做任何特别的事。只需要转到你所下载的 .deb 文件的文件夹下(它应该是 Downloads 文件夹),并在这个文件上双击。

在 Ubuntu 上的 Google Chrome 的 deb 文件

在已下载的 .deb 文件上双击以开始安装。

它将打开软件中心,并且你将看到安装软件时的选项。你所需要做的全部工作就是:点击安装按钮并输入你的登录密码。

在 Ubuntu 软件中心中安装 Google Chrome

.deb 文件的安装将通过软件中心来执行。

看,它甚至比在 Windows 中安装一个 .exe 文件更简单,不是吗?

方法 2: 使用 Gdebi 应用程序来安装 deb 软件包及其依赖项

再提一次,如果事情总是进展顺利,生活可能会更简单一些。但是生活并不是我们熟知的那样。

现在,你已经知道 .deb 文件可以简单地通过软件中心来安装,接下来,让我告诉你一些软件包可能会遇到的依赖项的错误。

发生错误的原因是,一个程序可能依赖于另外一个软件包(库)。当开发者为你准备 DEB 软件包时,他/她可能会假设你的系统中已经有了所依赖的软件包(库)。

但是如果情况并不是这样的,你的系统没有这些所需要的软件包(库),你将遇到臭名昭著的“依赖项错误”。

软件中心不能处理这样的错误,因此你不得不使用另外一个名称为 gdebi 的工具。

gdebi 是一个轻量级的 GUI 应用程序,它只有安装 deb 软件包的一个用途。

它将识别依赖项,并尝试在安装 .deb 文件的同时安装这些依赖项。

gdebi 在安装 deb 软件包时处理依赖项

就我个人而言,我更喜欢使用 gdebi 而不是使用软件包中心来安装 deb 文件。它是一个轻量级应用程序,因此安装过程看起来更快一点。更多的信息,你可以阅读使用 gDebi ,并使其成为安装 DEB 软件包的默认设置

你可以从软件中心或使用下面的命令来安装 gdebi :

sudo apt install gdebi

方法 3: 在命令行中使用 dpkg 安装 .deb 文件

如果你想在命令行中安装 deb 软件包,你可以使用 apt 命令或者 dpkg 命令。实际上,apt 命令在底层上使用 dpkg 命令,但是 apt 却更流行和易于使用。

如果你想对 deb 文件使用 apt 命令,像这样使用它:

sudo apt install path_to_deb_file

如果你想对将要安装的 deb 软件包使用 dpkg 命令,在这里是如何完成它:

sudo dpkg -i path_to_deb_file

在这两个命令中,你应该使用你已下载的 deb 文件的路径和名称来替换 path_to_deb_file

在 Ubuntu 中使用 dpkg 命令安装 deb 文件

如果你在安装 deb 软件包的过程中得到一个依赖项的错误,你可以使用下面的命令来修复依赖项的问题:

sudo apt install -f

如何移除 deb 软件包

移除一个 deb 软件包也不是一件什么大事。并且,你不需要用于安装程序的原始的 deb 文件。

方法 1: 使用 apt 命令移除 deb 软件包

你所需要的全部东西就是你所已安装程序的名称,接下来你可以使用 aptdpkg 来移除这个程序。

sudo apt remove program_name

现在,问题来了,在移除命令中,你如何找到你所需要使用的准确的程序名称?为此,apt 命令也有一个解决方案。

你可以使用 apt 命令找到所有已安装文件的列表,但是手动完成这一过程将会是一件令人头疼的事。因此,你可以使用 grep 命令来搜索你的软件包。

例如,在先前的部分中,我已安装 AppGrid 应用程序,但是如果我想知道准确的程序名称,我可以像这样使用一些东西:

sudo apt list --installed | grep grid

这将给予我全部的名称中含有 “grid” 的软件包,从这里,我可以得到准确的程序名称。

apt list --installed | grep grid
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
appgrid/now 0.298 all [installed,local]

正如你所看到的,一个名称为 “appgrid” 的软件包已经安装。现在,你可以在 apt remove 命令中使用这个程序名称。

方法2: 使用 dpkg 命令移除 deb 软件包

你可以使用 dpkg 来找到已安装程序的名称:

dpkg -l | grep grid

该输出将给予所有的名称中有 “grid” 的软件包。

dpkg -l | grep grid

ii appgrid 0.298 all Discover and install apps for Ubuntu

在上面的命令输出中的 ii 意味着软件包已经被正确地安装。

现在,你有了程序名称,你可以使用 dpkg 命令来移除它:

dpkg -r program_name

提示:更新 deb 软件包

一些 deb 软件包 (像 Chrome)通过系统更新来提供其更新,但是对于大多数的其它的程序,你将不得不先移除已存在的程序,并在接下来安装更新的版本。

我希望这篇初学者指南能够帮助你在 Ubuntu 上安装 deb 软件包。我添加了移除部分,以便你可以更好地控制你所安装的程序。


via: https://itsfoss.com/install-deb-files-ubuntu

作者:Abhishek Prakash 选题:lujun9972 译者:robsean 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

你是如何在 Linux 上使用 C 编写你的程序的?它确实是非常简单的,由三个简单的步骤组成。

步骤 1: 编写你的 C 程序,并使用一个 .c 的扩展名进行保存。例如,my_program.c

步骤 2: 在一个终端中使用 gcc 编译器来编译程序并生成目标文件,像这样:

gcc -o my_program my_program.c

步骤 3: 在 Linux 中,你可以以运行生成的对象文件的方式来运行你的 C 程序:

./my_program

这只是如何在 Linux 中编译和运行 C 程序的简要总结。假设你是 C 语言或 Linux 系统的新手,我将仔细演示这些步骤,以便你能在 Linux 环境中舒服地编写 C 程序。

事实上,我将讨论如何在 Linux 终端中以及在代码编辑器中运行 C 程序的两种方式。

方法 1: 在 Linux 终端中运行 C 程序

为了在 Linux 中运行一个 C 程序,你需要在你的系统上有一个 C 编译器。最流行的编译器是 gcc GNU 编译器套件 GNU Compiler Collection )。

你可以使用你发行版的软件包管理器来安装 gcc 。在基于 Debian 和 Ubuntu 的 Linux 发行版中,使用 apt 命令:

sudo apt install gcc

切换到保存你的 C 程序的目录(或者提供路径),然后通过编译程序生成对象文件:

gcc -o my_program my_program.c

记住,提供输出对象文件(-o my_program)是可选的。如果你不提供,那么将自动生成一个名称为 a.out 的对象文件。但是这样并不好,因为编译每个 C 程序都会覆盖它,而且你也不知道这个 a.out 对象文件究竟属于哪个程序。

在你的对象文件生成后,运行它来运行 C 程序。它已经能够执行了。像这样简单地使用它:

./my_program

接下来,如果你的程序是正确的,它将显示出你所期望的输出。正如你所看到的,这和 在 Linux 中运行 C++ 程序 没什么不同。

每更改一次你的程序,你都必须先重新编译它,然后再次运行生成的对象文件来运行这个新的 C 程序。

方法 2: 如何在 Linux 中使用一个诸如 VSCode 之类的代码编辑器来运行 C 程序

并不是每一个人都能适应命令行和终端,我完全理解这一点。

你可以使用一个诸如 Eclipse 或 Code Blocks 之类的真正的 C/C++ IDE ,但是它们是很重量级的程序,通常更适合于大型的项目。

我建议使用一个开源的代码编辑器,像 VSCode 或 Atom 。它们基本上是文本编辑器,但是你可以通过安装附加组件来直接在图形化的代码编辑器中编译和运行程序。

在这个示例中,我使用 VSCode 编辑器。它是一个来自微软的 非常流行的开源的代码编辑器

首先,在 Ubuntu 的 软件中心中安装 VSCode 。对于其它发行版来说,请检查你的 Linux 发行版的软件包管理器或软件中心。你可以参看它的官方网站来查看更多的信息。

启动 VSCode ,打开或创建一个工程,在这里创建你的 C 程序。我使用一个简单的 Hello World 程序作为示例。

你必须确保你已经在你的 Linux 系统上安装了 gcc 编译器。

sudo apt install gcc

接下来你要做的事是使用一个允许你运行 C 代码的扩展。微软可能会提示你安装它的 C/C++ 程序扩展,但它的设置很复杂,因此我不推荐。

相反,我建议你使用 Code Runner 扩展。它是一个简单直接的扩展,你可以在不使用额外配置的情况下轻松地运行 C 和 C++ 代码。

转到扩展标签页,在其中搜索和安装 “Code Runner” 。

安装 Code Runner 扩展来运行 C/C++ 程序

重新启动 VSCode 。现在,你能够使用下面方法中的其中一个来运行 C 代码:

  • 使用快捷键 Ctrl+Alt+N
  • 按下 F1 ,接下来选择或输入 “Run Code” 。
  • 在文本编辑器中右键单击,从上下文菜单中单击 “Run code” 。

右键单击程序文件,然后选择 Run Code

当你运行这个 C 程序时,它将会被自动编译和运行。你可以在编辑器底部打开的终端中看到输出。还有比这更好的事情吗?

程序输出显示在编辑器的底部

你更喜欢哪一种方法?

在 Linux 命令行中运行一些 C 程序是没有问题的,但是使用一个代码编辑器会更容易一些,而且会节省时间。你不觉得吗?

你可以自己决定想使用哪一种方法。


via: https://itsfoss.com/run-c-program-linux/

作者:Abhishek Prakash 选题:lujun9972 译者:robsean 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

CentOS 是世界上最流行的服务器发行版之一。它是 红帽企业 Linux Red Hat Enterprise Linux (RHEL)的一个开源分支,提供了 RHEL 的优点,却没有 RHEL 的相关成本。

然而,最近情况发生了变化,红帽正在将稳定的 CentOS 转换为滚动发布模式,即 CentOS Stream的形式。CentOS 8 本来应该支持到 2029 年,但现在到 2021 年底就被迫停止了。

如果你的服务器使用的是 CentOS,这可能会让你不知道该何去何从。

你看,取代 CentOS 8 的首要选择就是 CentOS Stream。将 CentOS 8 升级到 CentOS Stream 的过程很简单,你不用担心需要重新安装任何东西。

不过,由于 CentOS Stream 是滚动发布性质的,你可能要考虑一些对生产服务器来说更稳定的东西。我将在本文中会推荐一些 Linux 系统来帮助你做出这个决定。

基于 RHEL 的服务器 Linux 发行版,你可以考虑用来取代 CentOS

我将从一些正在开发的 RHEL 分支版本开始列举,其唯一目的是取代 CentOS 8。之后,我会列出你可以马上使用的服务器发行版。

Rocky Linux(正在开发中)

就在红帽宣布计划用滚动发布的 CentOS Stream 取代稳定的 CentOS 8 的同一天,CentOS 的原开发者宣布了一个新项目,为 CentOS 用户提供 RHEL 分支。

这个新项目名为 Rocky Linux。它的名字是为了纪念原 CentOS 项目的共同创始人之一。它是从 RHEL 8 分支出来的,目标是“100% 与 RHEL 兼容”。

该项目正在快速开发中,目前可能无法使用。但这是在 2021 年底 CentOS 8 支持结束时取代它的首选之一。

Lenix 项目(开发中)

这是在宣布 CentOS Stream 成为默认版本一天后创建的又一个 RHEL 分支。

Lenix 项目是由 CloudLinux 创建的,CloudLinux 是一家面向企业的服务机构,多年来一直在提供定制化的 CentOS 服务器,鉴于他们在 CentOS 和企业服务器方面的多年经验,Lenix 项目应该是一个很有前途的 RHEL 分支,可以取代 CentOS Stream。

Oracle Linux

这可能是该列表中唯一能以最佳方式使用的 RHEL 分支。不仅可以随时使用,你甚至可以从现有的 CentOS 安装迁移到 Oracle Linux,而无需重新安装。

Oracle Linux 自 2006 年起推出。它的应用二进制 100% 兼容 RHEL,并且它提供了与每个 RHEL 版本相对应的版本。而且,你不需要与 Oracle 签署任何协议来使用 Oracle Linux。

Oracle Linux 有两种 Linux 内核可供选择:Oracle Linux 的 坚不可摧企业级内核 Unbreakable Enterprise Kernel (UEK)或 红帽兼容内核 Red Hat Compatible Kernel (RHCK)。

只是,甲骨文在开源项目上有些黑历史,可能这也是为什么选择 CentOS 这种真正的社区分支形式而不是甲骨文 Linux 的原因。随着 CentOS 被 CentOS Stream 所取代,也许现在正是给 Oracle 一个机会的时候?

ClearOS(来自惠普)

ClearOS 是惠普在其 HPE ProLiant 服务器上提供的。虽然他们的网站上没有明确提到,但 ClearOS 是基于 RHEL 和 CentOS 的。

Clear Center 和 HPE 在这个项目上进行了合作。开源的 ClearOS 免费提供给社区。他们有自己的应用市场,混杂了免费和付费应用。你不需要为操作系统付费,但如果你选择了付费应用,你可能需要为该应用付费。

它可能没有那么流行,但随着 CentOS Stream 成为默认,如果惠普能抓住这个时机,ClearOS 应该能获得一些用户。他们会这么做吗?我不太确定。甲骨文正在努力吸引 CentOS 用户,但我没有看到惠普的这种努力。

Springdale Linux(普林斯顿大学的学术项目)

一个由院士维护的红帽分支?这就是 Scientific Linux 吧?但 Scientific Linux 已经死了一年多了。

Springdale Linux(SDL)是普林斯顿大学的另一个这样的项目。它之前被称为 PUIAS Linux( 普林斯顿大学高级研究所 Princeton University Institute for Advanced Study )。

目前还没有 RHEL 8 对应的 Springdale Linux,我觉得他们的开发速度可以加快一些。

不基于红帽的服务器发行版

好吧,到目前为止,列表中已经提到了基于红帽的发行版。现在是时候看看一些与 RHEL 无关,但仍然是生产服务器的上好选择的服务器发行版了。

YunoHost(专门为 Web 服务器定制的)

YunoHost 是基于 Debian 定制的,目的是为你提供一个托管 Web 服务器的系统。

你可以在树莓派等 ARM 板、旧台式机和计算机上使用它,当然也可以在虚拟专用服务器(VPS)上使用。

YunoHost 还提供了一个基于 Web 的管理界面(灵感来自于 Webmin?),这样你就可以用图形化的方式来管理系统。这对于一个想托管 Web 服务器但又不太会命令行的人来说,是一个很大的安慰。

Debian Linux

这个通用操作系统提供了一个坚如磐石的服务器发行版。对于那些想要一个稳定系统的人来说,是一个理想的选择。

如果你在 CentOS 上投入了太多的时间和技术,你可能会发现 Debian 略有不同,尤其是软件包管理系统。不过,我相信,对于一个经验丰富的 Linux 系统管理员来说,这应该不是什么大问题。

openSUSE

SUSE 是红帽的直接竞争对手之一。他们以 SUSE Linux Enterprise 的形式提供企业级产品。他们的开源产品 openSUSE 也相当受欢迎,无论是在桌面还是服务器领域。

openSUSE 是一个服务器 Linux 发行版的好选择。现在的人不会明白 SUSE 的 YAST 工具在上世纪 90 年代和 2000 年初给用户带来了怎样的解脱。它仍然是管理 SUSE 系统的一个方便的工具。

openSUSE 有两种形式:滚动发布的 Tumbleweed 和稳定的点发布版的 Leap。我猜测你追求的是稳定性,所以 Leap 是你应该追求的目标。

Ubuntu

Ubuntu 是世界上最流行的发行版,在服务器上和台式机上都是如此。这就是为什么没有 Ubuntu 这份清单就不完整的原因。

因为我已经使用 Ubuntu 很长时间了,所以我觉得在 Ubuntu 上托管我的 Web 服务器很舒服。但这只是我个人的想法。如果你是从 RHEL 领域过来的,这里的包管理系统和一些网络和管理组件是不同的。

Ubuntu LTS 版带有五年的支持,这是 CentOS 版本提供的一半长短。如果你不想升级版本,你可以选择为过时的 LTS 版本购买付费的扩展支持。

你的选择是什么?

我已经列出了一些基于 RHEL 的发行版以及通用服务器发行版的顶级推荐。

现在轮到你了,在上面列出的发行版中,你最喜欢哪个?你有什么其他的建议可以添加到这个列表中吗?请在评论区留言。


via: https://itsfoss.com/rhel-based-server-distributions/

作者:Abhishek Prakash 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

当你在 Linux 终端中运行命令或脚本时,它会在终端中打印输出方便你立即查看。

有时你需要将输出保存到文件中以备将来参考。当然你可以在 Linux 终端中复制和粘贴,但是有更好的方法可以在 Linux 命令行中保存 shell 脚本或命令的输出,让我演示给你看。

方法 1:使用重定向将命令输出保存到文件中

你可以在 Linux 中使用重定向来达成目的。使用重定向操作符,它会将输出保存到文件中而不是在屏幕上显示。

  • > 会将命令输出重定向到文件,它会替换文件中的所有内容。
  • >> 会将命令输出添加到文件现有内容的末尾。

使用标准输出重定向运算符 > 将输出重定向到文件:

command > file.txt

如果 file.txt 不存在,它会自动创建。如果你使用 > 再次重定向到相同的文件,文件内容将被替换为新的输出。

下面的示例将更好地演示它。它首先会保存 ls -l 命令的输出,然后,它将用 ls *.c 命令的输出替换文件的内容。

将命令输出重定向到文件

如果你不想在保存脚本或命令的输出时丢失现有文件的内容,可以使用 >>

command >> file.txt

下面这个例子更好地展示了它:

将命令输出重定向到文件

即使文件不存在,它也会自动创建。

温馨提示:将 Linux 命令输出和错误保存到一个文件中。

如果 Linux 命令返回错误,那么错误不会保存在文件中。你可以使用 2>&1 将命令的输出和错误保存到同一个文件中,如下所示:

command > file.txt 2>&1

通常,0 代表标准输入,1 代表标准输出,2 代表标准错误。在这里,你要将标准错误(2) 重定向(&)到与标准输出(1)相同的地址。

方法 2:使用 tee 命令显示输出并将其保存到文件中

顺便说一句,你是否注意到,当你将命令输出发送到一个文件时,你再也无法在终端上看到它了?Linux 的 tee 命令解决了这个问题。

类似于将水流发送到两个方向的三通管,tee 命令将输出发送到终端以及文件(或作为另一个命令的输入)。你可以像这样使用它:

command | tee file.txt

同样,如果该文件不存在,它将自动创建。

你还可以使用 tee 命令 -a 选项进入附加模式:

command | tee -a file.txt

让我用一些简单的例子来演示:

我在例子中使用了简单的 Linux 命令。但是请放心,你也可以使用这些方法来保存 bash 脚本的输出。

注意:将命令输出保存到文件时,避免管道陷阱

你可能对管道重定向很熟悉,可以使用它来组合 Linux 命令,但不能将输出通过管道传输到文件,它显示找不到 output.txt 命令:

这是因为管道将一个命令的输出重定向到另一个命令的输入。在本例中,你向它传递一个了一个文件名而它期望一个命令。

如果你是一个 Linux 命令行新手,我希望这个快速教程对你的 Linux 知识有所帮助。I/O 重定向是一个需要注意的基本概念。

一如既往,欢迎提出问题和建议。


via: https://itsfoss.com/save-command-output-to-file-linux/

作者:Abhishek Prakash 选题:lujun9972 译者:MjSeven 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

JSON 文件非常棒,因为它们以人类可读的格式存储数据集合。然而,如果 JSON 文件被最小化过,那么阅读 JSON 文件可能会很痛苦。

以这个为例:

Minified JSON is difficult to read

计算机可以很容易地读取它。即使是人也能读,但如果 JSON 文件以合适的格式显示,那么阅读就会简单很多。我的意思是 JSON 文件应该是这样读的:

Pretty Printed JSON is easier to read

你可以使用大多数的文本编辑器和一些插件以合适的格式显示它。然而,如果你在终端中,或者你想在你的 shell 脚本中这么做,事情会有所不同。

如果你有一个已最小化过的 JSON 文件,让我来告诉你如何在 Linux 终端中漂亮地输出它。

在 Linux 中用 jq 命令漂亮地打印 JSON 文件

jq 是一个命令行 JSON 处理器。你可以用它来切分、过滤、映射和转换结构化数据。我在这里不打算详细介绍 jq 命令行工具的使用。

要使用 jq,你需要先安装它。你可以使用你的发行版的包管理器来安装它。如果启用了 universe 仓库,你可以使用 apt 命令在 Ubuntu 上安装它:

sudo apt install jq

安装好后,用下面的方法在显示屏上漂亮地打印 JSON 文件:

jq . sample.json

Pretty printed JSON file

你可能也想用 cat,但我认为 cat 在这里没用。

cat sample.json | jq

请记住,上述命令不会影响原始 JSON 文件。不会向它写入任何更改。

你可能已经知道如何在 Linux 中把命令输出重定向到一个文件。你可能也知道不能重定向到同一个文件,而且 tee 命令也不能保证一直有效。

如果你想用漂亮的格式修改原来的 JSON 文件,可以把解析后的输出结果用管道传送到一个新的文件中,然后覆盖原来的 JSON 文件。

jq . sample.json > pretty.json

Pretty printing JSON file in Linux Terminal

额外技巧:用 jq 命令对 JSON 文件最小化。

让我们反过来,对一个格式良好的 JSON 文件进行最小化。要最小化 JSON 文件,你可以使用选项 -c

jq -c < pretty.json

Minified JSON file display

如果你愿意,你也可以使用 cat 和重定向:

cat pretty.json | jq -c

在 Linux 中使用 Python 来漂亮地打印 JSON 文件

你更有可能是在系统中安装了 Python。如果是这样的话,你可以用它在终端漂亮地打印 JSON 文件:

python3 -m json.tool sample.json

Pretty printing JSON with Python

我知道还有其他方法可以解析 JSON 文件并以适当的格式打印出来。你可以自己去探索,但这两种方法足以完成漂亮地打印 JSON 文件的工作。


via: https://itsfoss.com/pretty-print-json-linux/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出