分类 技术 下的文章

Bash 有一些方便的自动化功能,可以让我在 Linux 上处理文件时更轻松。

通过 Bash 命令行进行自动化任务是极好的一种方式。不论你使用运行在服务器上的 Linux 进行管理日志文件或其他文件,还是你在个人电脑上整理文件以使桌面保持整洁,使用 Bash 的自动化功能会使你的工作变得更轻松。

自动执行文件任务:for

如果你对一堆文件要同时处理,并且对每个文件进行相同的操作,请使用 for 命令。该命令会遍历文件列表,并执行一个或多个命令。for 命令如下所示:

for 变量 in 列表
do
    命令
done

我在示例中添加了额外的空白和换行,来分开 for 命令中不同的部分。看起来好像无法在命令行中同时运行多个命令,不过你可以使用 ; 将所有命令放在同一行中,就像这样:

for 变量 in 列表 ; do 命令 ; done

让我们看看它的实际效果。我使用 for 命令来重命名一些文件。最近,我有一些截图,想要重命名。这些截图名称为 filemgr.pngterminal.png,我想将 screenshot 放在每个名称前。我可以使用 for 命令一次性将 30 个文件重命名。这是两个文件的示例:

$ ls
filemgr.png  terminal.png
$ for f in *.png ; do mv $f screenshot-$f ; done
$ ls
screenshot-filemgr.png  screenshot-terminal.png

for 命令使得在一系列文件中执行一种或多种操作变得容易。你可以用一些有意义的变量名,比如 imagescreenshot,或者你用示例中“缩写的”变量 f。当我在使用 for 循环写脚本的时候,会选择有意义的变量名。但是当我在命令行中使用 for,我通常会选择缩写变量名,比如 f 代表文件,d 代表目录等。

不论你选择怎样的变量名,请确保在引用变量时添加 $ 符号。这会将变量扩展为你正在处理的文件的名称。在 Bash 提示符下键入 help for 以了解有关 for 命令的更多信息。

按条件执行:if

当你需要对每个文件执行相同操作时,使用 for 循环遍历一些文件很有帮助。但是,如果你需要对某些文件做一些不同的事情怎么办?为此,你需要使用 if 语句进行条件执行。if 语句如下所示:

if 测试
then
    命令
fi

你也可以使用 ifelse 语句进行判断:

if 测试
then
    命令
else
    命令
fi

你可以使用 ifelifelse 语句来实现更复杂的程序。当我一次性需要自动处理很多文件时,我会在脚本中使用:

if 测试1
then
    命令
elif 测试2
then
    命令
elif 测试3
then
    命令
else
    命令
fi

if 命令可以让你进行各种判断,例如判断一个文件是否是一个文件,或者一个文件是否为空文件(零字节)。在命令行中输入 help test,可以立即查看使用 if 语句能够进行的各种测试。

例如,假设我想清理一个包含几十个文件的日志目录。日志管理中的一个常见任务是删除所有空日志文件,并压缩其他日志。解决这个问题的最简单方法是删除空文件。没有可以完全匹配的 if 测试,但是我们有 -s 选项来判断是否是一个文件,并且判断该文件不是空的(大小不为零)。这与我们想要的相反,但我们可以使用 ! 来否定测试,以判断某些内容不是文件或为空。

让我们用一个示例来看看这个过程。我创建了两个测试文件:一个是空的,另一个包含一些数据。我们可以使用 if 判断,如果文件为空打印消息 empty

$ ls
datafile  emptyfile
$ if [ ! -s datafile ] ; then echo "empty" ; fi
$ if [ ! -s emptyfile ] ; then echo "empty" ; fi
empty

我们可以将 iffor 命令结合起来,检查日志文件列表中的空文件并删除:

$ ls -l
total 20
-rw-rw-r--. 1 jhall jhall 2 Jul  1 01:02 log.1
-rw-rw-r--. 1 jhall jhall 2 Jul  2 01:02 log.2
-rw-rw-r--. 1 jhall jhall 2 Jul  3 01:02 log.3
-rw-rw-r--. 1 jhall jhall 0 Jul  4 01:02 log.4
-rw-rw-r--. 1 jhall jhall 2 Jul  5 01:02 log.5
-rw-rw-r--. 1 jhall jhall 0 Jul  6 01:02 log.6
-rw-rw-r--. 1 jhall jhall 2 Jul  7 01:02 log.7
$ for f in log.* ; do if [ ! -s $f ] ; then rm -v $f ; fi ; done
removed 'log.4'
removed 'log.6'
$ ls -l
total 20
-rw-rw-r--. 1 jhall jhall 2 Jul  1 01:02 log.1
-rw-rw-r--. 1 jhall jhall 2 Jul  2 01:02 log.2
-rw-rw-r--. 1 jhall jhall 2 Jul  3 01:02 log.3
-rw-rw-r--. 1 jhall jhall 2 Jul  5 01:02 log.5
-rw-rw-r--. 1 jhall jhall 2 Jul  7 01:02 log.7

使用 if 命令可以在需要时执行一些操作,使脚本变得智能。我经常会在脚本中使用 if,当我需要判断文件在我的系统上存在或不存在时,或者判断脚本正在检查的条目是文件或目录时。使用 if 使得脚本能够根据需要采取不同的操作。


via: https://opensource.com/article/22/7/use-bash-automate-tasks-linux

作者:Jim Hall 选题:lkxed 译者:Donkey-Hao 校对:wxy

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

你如何列出 Linux 中的 USB 设备?

这个问题可以有两种含义。

  • 你的系统上有(检测到)多少个 USB 端口?
  • 系统安装(插入)了多少个 USB 设备/磁盘?

大多数情况下,人们有兴趣了解哪些 USB 设备连接到系统。这可能有助于对 USB 设备进行故障排除。

最可靠的方法是使用这个命令:

lsusb

它显示了网络摄像头、蓝牙和以太网端口以及 USB 端口和挂载的 USB 驱动器。

list usb with lsusb command linux

但是理解 lsusb 的输出并不容易,当你只想查看和访问已挂载的 USB 驱动器时,你可能不需要那么复杂。

我将向你展示可用于列出连接到系统的 USB 设备的各种工具和命令。

除非另有说明,在我的例子中连接了一个 2GB 的 U 盘、1TB 的外置硬盘、通过 MTP 连接的 Android 智能手机,以及 USB 鼠标。

让我从桌面用户最简单的选项开始。

以图形方式检查连接的 USB 设备

你的发行版的文件管理器可以用来查看连接到你的计算机的 USB 存储设备。正如你在下面的 Nautilus(GNOME 文件管理器)的截图中看到的那样。

连接的设备显示在边栏中(此处仅显示 USB 存储设备)。

Nautilus showing connected USB devices

你还可以使用 GNOME “ 磁盘 Disks ” 或 Gparted 等 GUI 应用来查看、格式化和分区连接到计算机的 USB 存储设备。默认情况下,大多数使用 GNOME 桌面环境的发行版都预装了 GNOME “磁盘”。

这个应用也可以用作一个非常好的 分区管理器

Use GNOME Disks to list mounted USB devices

图形工具足够了。让我们讨论可用于列出 USB 设备的命令。

使用 mount 命令列出挂载的 USB 设备

mount 命令用于挂载 Linux 中的分区。你还可以使用相同的命令列出 USB 存储设备。

通常,USB 存储挂载在 media 目录中。因此,在媒体上过滤 mount 命令的输出将为你提供所需的结果。

mount | grep media

使用 df 命令

df 命令 是一个标准的 UNIX 命令,用于了解可用磁盘空间的大小。你还可以使用此命令列出已连接的 USB 存储设备。

df -Th | grep media

Use df command to list mounted USB drives

使用 lsblk 命令

lsblk 命令用于列出终端中的块设备。因此,这里也通过过滤包含 media 关键字的输出,你可以获得所需的结果,如下面的截图所示。

lsblk | grep media

Using lsblk to list connected USb devicesUsing blkid to list connected USb devices

如果你想知道,也可以使用 blkid 命令了解 UUID、标签、块大小等。

此命令提供更多输出,因为你的内部驱动器也被列出。因此,你必须参考上述命令来识别你希望了解的设备。

sudo blkid

Using blkid to list connected USb devices

使用 fdisk

fdisk 是一款不错的老式命令行分区管理器,它还可以列出连接到你计算机的 USB 存储设备。这个命令的输出也很长。因此,通常连接的设备会列在底部,如下所示:

sudo fdisk -l

Use fidsk to list usb devices

检查 /proc/mounts

通过检查 /proc/mounts 文件,你可以列出 USB 存储设备。如你所见,它向你显示了文件系统使用的挂载选项以及挂载点。

cat /proc/mounts | grep media

使用 lsusb 命令显示所有 USB 设备

我们重新审视有名的 lsusb 命令。

Linux 内核开发人员 Greg Kroah-Hartman 开发了这个方便的 usbutils 程序。这为我们提供了两个命令,即 lsusbusb-devices 来列出 Linux 中的 USB 设备。

lsusb 命令列出系统中有关 USB 总线的所有信息。

lsusb

如你所见,此命令还显示了我已连接的鼠标和智能手机,这与其他命令(只能列出 USB 存储设备)不同。

第二个命令 usb-devices 提供了更多详细信息,但未能列出所有设备,如下所示。

usb-devices

Greg 还开发了一个名为 usbview 的小型 GTK 应用。此应用向你显示连接到计算机的所有 USB 设备的列表。

该应用可在大多数 Linux 发行版的官方仓库中找到。你可以使用发行版的 包管理器 轻松安装 usbview 包。

安装后,你可以从应用菜单启动它。你可以选择任何列出的设备以获取详细信息,如下面的截图所示。

总结

这里列出的大多数方法仅限于 USB 存储设备。只有两种方法可以列出其他外围设备; usbview 和 usbutils。 我想我们应该感谢 Linux 内核开发人员 Greg 开发了这些方便的工具。

我知道还有很多方法可以列出连接到系统的 USB 设备。 欢迎你提出建议。


via: https://itsfoss.com/list-usb-devices-linux/

作者:Anuj Sharma 选题:lkxed 译者:geekpi 校对:wxy

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

在 Linux 中安装和应用现代的漂亮的 GRUB 主题。

GRUB ,意即 大统一引导程序 GRand Unified Bootloader ,它是大多数 Linux 操作系统的默认引导加载程序。GRUB 引导加载程序是计算机启动时运行的第一个程序。正如你可能注意到的,GRUB 菜单的默认主题是朴素的。它只有一个黑色的背景和一些白色的字符。你们中的一些人可能不喜欢默认的 GRUB 主题。在这篇教程中,我将演示如何 更改 GRUB 主题 或应用华丽的主题,以使你的 GRUB 菜单在 Linux 中更加精美。

数年前,我们发布了一篇指南,阐释了如何在 Ubuntu 中 配置 GRUB2 引导加载程序设置 。在这篇文章中,我们将向你展示如何更改 GRUB 背景。

但是,只更改背景不是真正的自定义。在这篇指南中,我们不仅会更改壁纸,也会更改 GRUB 的字体、主题和整体的设计。

免责声明: 安装 GRUB 主题可能会破坏你的系统。我强烈建议你在一个虚拟机中尝试和测试一个主题来查看它是否没有正常工作。然后再在实际的系统上安装主题。

介绍

在互联网上可以找到很多社区开发的 GRUB 主题。然而,它们却散落在不同的网站上。因此,找到一个好的 GRUB 主题可能会事倍功半。

GRUB 主题的一个重要的贡献者是 Pling 网站。但是,Pling 中的大部分主题是非常简单的或过时的。

幸运的是,我遇到一个名称为 Gorgeous GRUB 的项目,它是一个可以找到各种精美的 GRUB 主题的地方。相信我,作者付出了巨大的努力来收集这些主题,肯定会你喜欢的主题。

Gorgeous GRUB:一个可以找到很棒的 GRUB 主题的地方

Gorgeous GRUB 是一个由不同用户所创建的质量上乘的 GRUB 社区主题的收藏集合。这个项目的开发者从 Pling/r/unixporn 和其它很多的论坛中手工挑选漂亮的 GRUB 主题,并将它们放置到一起,以便用户可以很容易的浏览它们。

如上所述,在 Pling 中的很多主题都是粗糙和过时的。Gorgeous GRUB 的作者翻遍了 Pling 和其它一些论坛的整个 GRUB 部分,并将所有令人满意的 GRUB 主题放置到一个地方。

它们不是一些粗制滥造的主题。他们付出了大量的努力来将定制的背景、字体和颜色等融合在一起。

请注意,Gorgeous GRUB 并不是一个安装你最喜欢的 GRUB 主题的应用程序。它只是一个良好工作的 GRUB 主题的展览列表。

这个项目托管在 GitHub 中。如果你有一些很酷的 GRUB 主题,你也可以将其添加到 Gorgeous GRUB 主题列表之中。

如何更改 GRUB 主题

应用或更改 GRUB 主题并不难。

转到 Gorgeous GRUB 的 GitHub 网页 ,单击任意你想要应用的主题的标题。接下来,你将会被带到该主题的实际主页。一些主题托管在 Pling 之中,一些主题托管在 GitHub 之中。我将会看看如何安装来自 Pling 或 GitHub 的 GRUB 主题。

首先,让我们看看如何应用 “Descent” 主题,它托管在 Pling 中。

1、从 Pling 安装 GRUB 主题

如果主题托管在 Pling 网站,遵循这些操作说明。

在主题主页,单击 文件 Files 标签页。你将会在图像预览的下方找到这个标签页。单击文件链接来下载它。

Download GRUB Theme From Pling

转到下载位置并提取存档文件:

$ tar xzf 173860-20150926\ descent.tar.gz

存档文件的内容将被提取到当前工作目录中一个名称为 descent 目录中。

使用下面的命令复制 descent 目录到 /boot/grub/themes/ 目录:

$ sudo cp -r descent/ /boot/grub/themes/

如果 themes 目录不存在,只需要创建它:

$ sudo mkdir /boot/grub/themes

并给 themes 目录分配适当的权限:

$ sudo chown $USER /boot/grub/themes/

接下来,如上所述复制 descent 目录中内容到 themes 目录。

现在,你应该在 themes 目录中有一个以主题名称命名的文件夹:

$ ls /boot/grub/themes/
descent

并且,这个主题文件夹(例如 descent)应该包含 theme.txt 和该主题附带的其它一些相关的文件(例如,背景图像、自定义文件)。

$ ls /boot/grub/themes/descent/
background1280x800.png    descent_score_14.pf2  menu_ne.png  menu_s.png         progresshigh_c.png  scrollframe_c.png   scroll_thumb_n.png
background_original.jpg   descent_score_18.pf2  menu_n.png   menu_sw.png        progresshigh_e.png  scrollframe_n.png   scroll_thumb_s.png
copyright                 menu_c.png            menu_nw.png  menu_w.png         progresshigh_w.png  scrollframe_s.png   select_os.png
descent_logo_bold_18.pf2  menu_e.png            menu_se.png  progressbar_c.png  readme              scroll_thumb_c.png  theme.txt

在复制下载的主题到 /boot/grub/themes/ 目录后,编辑 /etc/default/grub 文件:

在进行任意更改前,请备份 grub 文件,以防万一:

$ sudo cp /etc/default/grub /etc/default/grub.bak

现在,使用你喜欢的编辑器编辑文件:

$ sudo nano /etc/default/grub

找到 GRUB_THEME= 代码行,并添加路径到你想要使用的主题的 theme.txt 。并且,也要取消 GRUB_GFXMODE= 代码行的注释,输入背景图像的分辨率。通常,背景图像的文件名称包含其分辨率(例如 background1280x800.png)。

[...]
GRUB_THEME=/boot/grub/themes/descent/theme.txt
GRUB_GFXMODE=1280x800
[...]

Enter Theme Txt File Path And Background Image Resolution

再强调一次,如果这些代码行不存在,简单地添加它们。按下 CTRL+O 组合键 和 CTRL+X 组合键(LCTT 校注:这是 nano 中的快捷键,如果你使用 Vi/Vim,请使用相应的快捷键)来保持更改并关闭文件。

现在,应用更改到 GRUB ,使用命令:

$ sudo update-grub

示例输出:

Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found theme: /boot/grub/themes/descent/theme.txt
Found linux image: /boot/vmlinuz-5.15.0-41-generic
Found initrd image: /boot/initrd.img-5.15.0-41-generic
Found linux image: /boot/vmlinuz-5.15.0-39-generic
Found initrd image: /boot/initrd.img-5.15.0-39-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
done

Update GRUB

如果你是在基于 RPM 的系统上(例如 Fedora),运行下面的命令来更新 GRUB :

$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg instead

重新启动你的系统。你就会看到更新后的 GRUB 主题。如果 GRUB 菜单没有出现。在打开硬件系统的电源时,立即按下 ESC 按键,直到启动菜单出现。

这是我的 Ubuntu 22.04 LTS 桌面的默认 GRUB 菜单。

Ubuntu Default Grub Menu

这是更新后的带有复古主题的 GRUB 菜单。

Updated GRUB Menu With Descent Theme

很酷,是吧?

移除 GRUB 主题

为移除一个主题,简单地删除主题文件夹:

$ sudo rm -fr /boot/grub/themes/descent/

接下来,编辑 /etc/default/grub 文件:

$ sudo nano /etc/default/grub

移除下面的代码行:

[...]
GRUB_THEME=/boot/grub/themes/descent/theme.txt
GRUB_GFXMODE=1280x800
[...]

保存文件并关闭它。

最后,应用更改到 GRUB ,并重新启动你的系统:

$ sudo update-grub
$ sudo reboot

2、从 GitHub 安装 GRUB 主题

如果一个 GRUB 主题托管在 GitHub 中,它很可能有安装程序脚本和卸载程序脚本。让我们以 Modern GRUB Themes 为例。它托管在 GitHub 中。

使用 Git 复刻项目的 GitHub 存储库:

$ git clone https://github.com/vinceliuice/grub2-themes.git

转到项目的文件夹:

$ cd grub2-themes/

运行安装程序脚本:

$ sudo ./install.sh

选择你喜欢的 GRUB 主题背景(例如 tela)。

Choose GRUB Theme Background

选择图标样式:

Choose Icon Style

选择你的显示分辨率。

Choose Display Resolution

现在选择将会安装和应用的 GRUB 主题。

Checking for the existence of themes directory... 
  
 Installing tela color 1080p theme... 
  
 Setting tela as default... 
  
 Updating grub config...
 
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found theme: /usr/share/grub/themes/tela/theme.txt
Found linux image: /boot/vmlinuz-5.15.0-41-generic
Found initrd image: /boot/initrd.img-5.15.0-41-generic
Found linux image: /boot/vmlinuz-5.15.0-39-generic
Found initrd image: /boot/initrd.img-5.15.0-39-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
done
  
 * All done! 
  
 * At the next restart of your computer you will see your new Grub theme: 'tela'

Install Tela Modern Grub Theme

重新启动你的系统来查看更改。

Tela GRUB Theme

这是一个漂亮的 GRUB 主题,前所未见。

你也可以明确地给定主题的名称和屏幕分辨率,像下面一样。

$ sudo ./install.sh -t whitesur -s 1080p

这将应用一个名称为 “Whitesur” 的主题,使用 1080p 屏幕分辨率。你可能会提及到其它的分辨率,例如 2k4k 、超宽(ultrawide)、超宽 2k(ultrawide2k) 。如果你不提及分辨率,将默认采用 1080p

安装 Tela 主题到 /boot/grub/themes 文件夹:

$ sudo ./install.sh -b -t whitesur

重新启动你的系统来查看更改。

Whitesur GRUB Theme

移除 GRUB 主题

为移除已安装的一个主题,转到项目的复刻目录:

$ cd grub2-themes/

随后,运行:

$ sudo ./install.sh -r -t tela

使用你已安装的主题的名称来替换 tela

请注意,每个主题的安装说明可能有所不同。详细地参考每个项目的 GitHub 页面,并相应地安装主题。

总结

有些人喜欢使用艺术化的 Linux 发行版。他们以美化其 Linux 发行版而感到高兴和自豪。如果你是他们中的一员,你可以看看 Gorgeous GRUB 项目来美化你的 GRUB 菜单。

转到 Gorgeous GRUB 主题网站,从列表中选择你最喜欢的主题,并按照每个项目的主页说明来安装和应用 GRUB 主题。

资源

Gorgeous GRUB 的 GitHub 存储库

via: https://ostechnix.com/change-grub-theme-in-linux/

作者:sk 选题:lkxed 译者:robsean 校对:校对者ID

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

这是一个周期性的更新指南,主要用于将现有的 Linux Mint 升级安装到一个新的可用版本。

在这篇文章中有三个部分,分别向你展示 Linux Mint 的不同的主要版本之间的升级步骤:

  • 第 1 部分是关于从 Linux Mint 20.3 升级到 Linux Mint 21(GUI 升级工具)
  • 第 2 部分是关于从 Linux Mint 19.3 升级到 Linux Mint 20(基于命令行的升级程序)
  • 第 3 部分是关于从 Linux Mint 18.3 升级到 Linux Mint 19(假设一些人仍然在使用它)

你可以依据你的当前的 Linux Mint 版本和需要来执行适当的步骤。

这是一个周期性的更新指南,主要用于将现有的 Linux Mint 升级安装到一个新的可用版本。

这篇指南已经更新,追加从 Mint 20.3 升级到 Linux Mint 21 的步骤。Linux Mint 现在有一个 GUI 工具来升级到最新的版本。

在你升级到 Linux Mint 21 之前需要知道的事情

在你继续升级到 Linux Mint 21 之前,你应该考虑下面的事情:

  • 你真的需要升级吗?Linux Mint 20.x 还有好几年的支持期限。
  • 你将需要高速互联网连接来下载大约 14 GB 的升级数据。
  • 它可能将花费几个小时的时间来完成升级过程,当然这主要取决于你的互联网速度。你必须有耐心。
  • 制作一个 Linux Mint 21 的 实况 USB Live USB 并在一次 实况会话 Live session 中尝试它是否与你的硬件系统兼容会是一个好主意。较新的内核可能与较旧的硬件系统有兼容性问题,因此在真正升级或安装之前来对其进行测试可能会为你省去很多麻烦。
  • 全新的安装总是比主要版本升级的更好,但是从零开始安装 Linux Mint 21 可能意味着丢失你的现有的数据。你必须在外部的外部磁盘上进行备份。
  • 尽管大部分的升级是安全的,但是它也不会是 100% 的成功。你必须要有系统快照和真正的备份。
  • 你只能从 Linux Mint 20.3 的 Cinnamon 、Xfce 和 MATE 版本升级到 Linux Mint 21 。首先 检查你的 Linux Mint 版本 。如果你正在使用 Linux Mint 20.2 或 20.1 ,你需要先使用更新管理器来升级到 20.3 。如果你正在使用 Linux Mint 19 ,我建议你选择进行一次的全新安装,而不是选择进行数次的升级 Mint 版本。

在你知道你将要做什么后,让我们看看如何升级到 Linux Mint 21 。

从 Linux Mint 20.3 升级到 Linux Mint 21

检查你的 Linux Mint 版本,并确保你正在使用 Mint 20.3 。你不能从 Linux Mint 20.1 或 20.2 升级到 Linux Mint 21 。

步骤 1: 通过安装任意可用的更新来更新你的系统

使用 菜单 Menu -> 系统管理 Administration -> 更新管理器 Update Manager 来启动更新管理器。查看是否有一些可用的软件包更新。如果有可用的更新,先安装所有的软件包更新。

Check for Pending Software Updates

针对这一步骤,你也可用在终端中使用这一个命令:

sudo apt update && sudo apt upgrade -y

步骤 2: 在外部的磁盘上备份你的文件 [可选,但是建议]

Timeshift 是一个创建系统快照的好工具,但它却不是一个针对文档、图片和其它那些非系统的、个人文件的理想工具。我建议你在一块外部磁盘上进行备份。它只是为了数据安全。

当我说在一块外部磁盘上进行一次备份时,我的意思是将你的图片、文档、下载和视频目录简单地复制和粘贴到一块外部的 USB 磁盘上。

如果你没有那样大的磁盘,至少复制那些你不可丢失的最重要的文件。

步骤 3: 安装升级工具

现在,你的系统已经更新,你已经准备好升级到 Linux Mint 21 。Linux Mint 开发组提供一个名称为 mintupgrade 的 GUI 工具,用于从 Linux Mint 20.3 升级到 Linux Mint 21 。

你可用使用下面的命令来安装这个工具:

sudo apt install mintupgrade

步骤 4: 从终端中运行这个 GUI 工具

你不能在应用程序菜单列表中找到这个新的 GUI 工具。为启动它,你需要在终端中输入下面的命令:

sudo mintupgrade

这个简单且全面工具将带领你完成升级过程。

Mint Upgrade Tool Home Page

在一些初始化的测试后,它将提示进行一次 Timeshift 备份。如果你已经创建了一次备份,你已经准备好下一步了。

Upgrade Tool Prompting No Timeshift Snapshots

否则,你需要在这里 创建一个备份 ,因为这是强制继续的。

Taking Snapshot With Timeshift

一些 PPA 可能已经适用于 Ubuntu 22.04 ,因此也适用于 Mint 21 。但是,如果 PPA 或存储库不适用于新的版本,它可能会因为依赖关系的打断而影响升级过程。在升级工具中也会同样的提示你。

Kazam PPA Does Not Support Jammy

在这里,我将通过 Kazam 其 PPA 来使用其 最新版本 。其 PPA 仅被支持到 Impish ,因为 Linux Mint 21 是基于 Jammy 的,所以它会显示错误。

你可以在升级工具中通过软件源来指定禁用 PPA 的选项。

Disable Unsupported PPAs in Software Sources

在禁用该 PPA 后,该软件包会变成 “ 陌生的 foreign ”,因为来自存储库中可用版本会与来自 Mnit 存储库中可用版本不匹配。因此,你需要将软件包降级到存储库中一个可用的版本。

Downgrade Package to Avoid Conflicts

升级工具现在列出需要执行更改。

List Changes That Need to be Done

在接受后,该工具将开始下载软件包。

Phase 2 – Simulation and Package Download

Package Downloading

Upgrading Phase

它将列出孤立的软件包,这可以被移除。你可以通过按下 修复 Fix 按钮来移除整个建议的软件包,也可以保留某些软件包。

保留某些孤立的软件包

为保留来自孤立的软件包列表中软件包,你需要从左上角的汉堡菜单转到 首选项 Preferences

Selecting Orphan Packages You Want to Keep with Preferences

在首选项对话框中,你需要转到 “ 孤立的软件包 Orphan Packages ” 并使用 “+” 符号来通过名称添加软件包。

Specify Name of the Package to Keep

在完成后,它将继续升级,在一段时间后,将会向你提示一条成功更新的通知。

Upgrade Successful

此时,你需要重新启动你的系统。在重新启动后,你将进入到新的 Linux Mint 21 。

Neofetch Output Linux Mint 21

如何升级到 Linux Mint 20

在你继续升级到 Linux Mint 20 之前,你应该考虑下面的事情:

  • 你真的需要升级吗?Linux Mint 19.x 将会支持到 2023 年。
  • 如果你 有一款 32 位系统,你不能安装或升级到 Mint 20 。
  • 你将需要高速互联网连接来下载大约 1.4 GB 的升级。
  • 它可能将花费几个小时的时间来完成升级过程,当然这主要取决于你的互联网速度。你必须有耐心。
  • 制作一个 Linux Mint 20 的 实况 USB Live USB 并在一次实况会话中查看它是否与你的硬件系统兼容会是一个好主意。较新的内核可能与较旧的硬件系统有兼容性问题,因此在真正升级或安装之前来对其进行测试可能会为你省去很多麻烦。
  • 全新的安装总是比主要版本升级的更好,但是从零开始 安装 Linux Mint 20 可能意味着丢失你的现有的数据。你必须在外部的外部磁盘上进行备份。
  • 尽管大部分的升级是安全的,但是它也不会是 100% 的成功。你必须要有系统快照和真正的备份。
  • 你只能从 Linux Mint 19.3 的 Cinnamon 、Xfce 和 MATE 版本升级到 Linux Mint 20 。首先 检查你的 Linux Mint 版本 。如果你正在使用 Linux Mint 19.2 或 19.1 ,你需要先使用更新管理器来升级到 19.3 。如果你正在使用 Linux Mint 18 ,我建议你选择进行一次的全新安装,而不是选择进行数次的升级 Mint 版本。
  • 升级过程是通过命令行实用程序来完成的。如果你不喜欢使用终端和命令,不要升级,并进行一次全新的安装。

在你知道你将要做什么后,让我们看看如何升级到 Linux Mint 20 。

步骤 1: 确保你有一款 64 位系统

Linux Mint 20 是一款仅提供 64 位的操作系统。如果你安装了一款 32 位的 Linux Mint 19 ,你不能升级到 Linux Mint 20 。

在一个终端中,使用下面的命令来查看你是否正在使用 64 位操作系统。

dpkg --print-architecture

Mint 20 Upgrade Check Architecture

步骤 2: 通过安装一些可用的更新来更新你的系统

使用 菜单 Menu -> 系统管理 Administration -> 更新管理器 Update Manager 来启动更新管理器。查看是否有一些可用的软件包更新。如果有可用的更新,先安装所有的软件包更新。

Check for pending software updates

针对这一步骤,你也可用在终端中使用这一个命令:

sudo apt update && sudo apt upgrade -y

步骤 3: 使用 Timeshift 创建一个系统快照 [可选,但是建议]

如果你遇到升级过程中断或你遇到其它的一些重大问题,使用 Timeshift 创建一个系统快照 将会解救你于水火之中。你甚至可以使用这种方法恢复到 Mint 19.3 。

假设你因为意外断电导致升级失败,或因为其它一些原因,你最终得到一个残缺的不稳定的 Linux Mint 19 。你可以插入一个 Linux Mint 实况 USB ,并从该实况环境中运行 Timeshift 。它将会自动地定位你的备份位置,并将允许你恢复你残缺的 Mint 19 系统。

这也意味着你应该随时携带一个 Linux Mint 19 实况 USB ,以防在极少数升级失败的情况下,你不能用一台工作的计算机创建 Linux Mint 实况 USB 。

Create a system snapshot in Linux Mint

步骤 4: 在一块外部的磁盘上备份你的文件 [可选,但是建议]

Timeshift 是一个创建系统快照的好工具,但它却不是一个针对文档、图片和其它那些非系统、个人文件的理想工具。我建议你在一块外部磁盘上进行备份。它只是为了数据安全。

当我说在一块外部磁盘上进行一次备份时,我的意思是将你的图片、文档、下载和视频目录简单地复制和粘贴到一块外部的 USB 磁盘上。

如果你没有那样大的磁盘,至少复制那些你不可丢失的最重要的文件。

步骤 5: 禁用 PPA 和第三方存储库 [可选,但是建议]

不出意外的话,你可能已经使用一些 PPA 或其它的存储库来安装了一下应用程序。

一些 PPA 可能已经适用于 Ubuntu 20.04 ,因此也适用于 Mint 20 。但是,如果 PPA 或存储库不适用于新的版本,它可能会因为依赖关系的打断而影响升级过程。

对此,建议你禁用 PPA 和第三方存储库。你也可以删除通过这样的外部源安装的应用程序,如果你这样做的话,不会导致配置数据的丢失。

软件源 Software Sources 工具中,禁用附加的存储库、禁用 PPA 。

Disable Ppa Mint Upgrade

你也可以在维护标签页中 降级移除可用的外部的软件包

例如,我使用一个 PPA 来安装 Shutter 。我在禁用它的 PPA 后,现在该软件包会变成 “ 陌生的 foreign ”,因为来自存储库中可用版本会与来自 Mnit 存储库中可用版本不匹配。

Foreign Package Linux Mint

步骤 6: 安装升级工具

现在,你的系统已经更新,你已经准备好升级到 Linux Mint 20 。Linux Mint 开发团队提供一个名称为 mintupgrade 的命令行工具,其唯一的目的是将 Linux Mint 19.3 升级到 Linux Mint 20 。

你可用使用下面的命令来安装这个工具:

sudo apt install mintupgrade

步骤 7: 运行一次升级设备健康检查

mintupgrade 工具将会让你通过模拟升级的初始化部分来运行一次设备健康检查。

你可以运行这次检查来查看对你的系统做出何种更改,哪些软件包将会升级。它也将会显示不能升级和必须移除的软件包。

mintupgrade check

在这里,它不会在你的系统上做出任何真正的更改(即使感觉上它正在进行做一些更改)。

这一步骤是非常重要的,有助于准确评估出你的系统是否可以升级到 Mint 20 。

Mint Upgrade Check

如果这一步骤中途失败,输入 mintupgrade restore-sources 来返回到你原始的 APT 配置。

步骤 8: 下载软件包升级

在你对 mintupgrade` 的检查输出感到满意后,你可以下载 Mint 20 升级软件包。

取决于你的互联网连接速度,它可能会在下载这些升级方面消耗一些时间。确保你的硬件系统接通到强电电源。

在软件包的下载期间,你可以继续使用你的系统进行常规工作。

mintupgrade download

Mint 20 Upgrade Download

注意,这行命令将把你的操作系统指向 Linux Mint 20 存储库。在使用这行命令后,如果你想降级到 Linux Mint 19.3 ,你仍然可以使用命令 mintupgrade restore-sources 来做到。

步骤 9: 安装升级 [不可回退]

现在,万事俱备,你可以使用这行命令来升级到 Linux Mint 20 :

mintupgrade upgrade

给它一些时间来安装新的软件包和升级你的 Mint 到相对较新的版本。在升级过程完成后,它将要求你重新启动。

Linux Mint 20 Upgrade Finish

享受 Linux Mint 20

在你重新启动你的系统后,你将看到 Mint 20 欢迎屏幕。享受新的版本。

Welcome To Linux Mint 20

从 Mint 18 升级到 Mint 19

从 Linux Mint 18.3 升级到 Linux Mint 19 的步骤与你在升级到 Linux Mint 20 中所看到的步骤非常类似。唯一的变化是检查显示管理器。

我将在这里快速地提及这些步骤。如果你想要更多的信息,你可以参考 Mint 20 升级过程。

步骤 1: 使用 Timeshift 创建一个系统快照 [可选,但是建议]

步骤 2: 在一块外部的磁盘上备份你的文件 [可选,但是建议]

步骤 3: 确保你正在使用 LightDM

对于 Mint 19 ,你必须使用 LightDM 显示管理器 。为检查你正在使用哪种显示管理器,输入命令:

cat /etc/X11/default-display-manager

如果结果是 /usr/sbin/lightdm,那么你就有 LightDM ,你就可以继续前进了。

LightDM Display Manager in Linux Mint

在另一个方面,如果结果是 /usr/sbin/mdm,你需要安装 LightDM ,切换到 LightDM 并移除 MDM 。使用这行命令来安装 LightDM :

apt install lightdm lightdm-settings slick-greeter

在安装期间,它将要求你选择显示管理器。你需要选择 LightDM 。

在你设置 LightDM 作为你的显示管理器后,使用下面这些命令来移除 MDM 并重新启动:

apt remove --purge mdm mint-mdm-themes*
sudo dpkg-reconfigure lightdm
sudo reboot

步骤 4: 通过安装一些可用的更新来更新你的系统

sudo apt update && sudo apt upgrade -y

步骤 5: 安装升级工具

sudo apt install mintupgrade

步骤 6: 检查升级

mintupgrade check

步骤 7: 下载软件包升级

mintupgrade download

步骤 8: 应用升级

mintupgrade upgrade

享受 Linux Mint 19 。

你升级到 Linux Mint 21 了吗?

升级到 Linux Mint 20 可能不会是一种友好的体验,但是,使用新的专用 GUI 升级工具来升级到 Mint 21 变得简单多了。

我希望你发现这篇教程有帮助。你是选择升级到 Linux Mint 21 ?还是现在一次全新的安装?

如果你遇到一些重要问题,或者你有一些关于升级过程的问题,请在评论区随时询问。


via: https://itsfoss.com/upgrade-linux-mint-version/

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

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

使用 Composerize 从 docker run 命令创建 Docker Compose 文件

如果你每天在正式或个人系统中使用 Docker,你应该知道有一个有用的应用叫 Composerize。在这个简短的指南中,我们将了解什么是 Composerize,以及如何使用 Composerize 在 Linux 中docker run 命令转换为 Docker Compose 文件格式。

什么是 Composerize?

Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。Docker Compose 只是一个 YAML 文件,我们在其中为 Docker 应用定义服务、网络和卷。

不是每个人都擅长写高效的 Docker Compose 文件。你们中的一些人可能会发现,甚至写一个简单的 Docker Compose 文件都很困难。不用担心! 看下 Composerize,它可以帮助你从 docker run 命令中创建 Docker Compose 文件。

Composerize 是一个命令行和基于网络的工具,可以将 docker run 命令转换成 Docker Compose 文件。

无论 docker run 命令是简单、简短还是冗长、复杂,都没有关系。你所要做的就是把命令传给 Conposerize。Composerize 会立即将 docker run 命令变成 Docker Compose 文件!

在 Linux 中安装 Composerize

Composerize 是作为一个网络服务提供的。所以你不需要在你的系统上安装它。如果你因为任何原因想在本地安装它,请继续阅读。

Composerize 可以用 npm 安装。确保你的系统中已经安装了 Nodejs。如果没有安装,请按照下面的链接来安装 Nodejs。

安装完 Nodejs 后,运行以下命令来安装 Composerize:

$ npm install composerize

该命令将只为当前用户安装 Composerize。

如果你想在全局(全系统)安装它,请运行上述命令并加上 -g 选项,如下所示。

$ npm install composerize -g

用 Composerize 将 Docker 命令转换为 Docker Compose 文件

要将 docker run 命令转换为 Docker Compose 格式,只需用 Composerize 运行它,如下所示:

$ composerize docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer

它将以 Docker Compose 文件格式生成内容。

示例输出:

version: '3.3'
services:
    portainer:
        ports:
            - '9000:9000'
        volumes:
            - '/var/run/docker.sock:/var/run/docker.sock'
        image: portainer/portainer

Convert Docker Run Commands Into Docker-Compose Files With Composerize

现在在你的 docker-compose.yml 文件中复制上面几行。就这么简单!

正如我所说,你也可以使用 Composerize 网络服务将 docker run 命令转换成 Docker Compose 格式。

进入 https://www.composerize.com/,将 docker run 命令粘贴到框中,你就会立即得到 docker-compose.yml 文件!

Turn Docker Run Commands Into Docker-compose Files Using Composerize

将命令转换为 Docker Compose 文件后,到你保存 docker-compose.yml 文件的位置,运行以下命令来启动 Docker 应用:

$ docker-compose up

Composerize 是对 Docker 用户有用的工具之一。你现在可以安全地告别漫无边际的 Docker 命令了。

资源:


via: https://ostechnix.com/convert-docker-run-commands-into-docker-compose-files/

作者:sk 选题:lkxed 译者:geekpi 校对:wxy

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

EPUB 文件是使用开放格式发布内容的好方法。

电子书提供了一种随时随地阅读书籍、杂志和其他内容的好方法。读者可以在长途飞行和乘坐火车时享受电子书打发时间。最流行的电子书文件格式是 EPUB 文件,它是“ 电子出版物 electronic publication ”的缩写。 EPUB 文件受到各种电子阅读器的支持,并且是当今电子书出版的有效标准。

EPUB 文件格式基于 XHTML 内容和 XML 元数据的开放标准,包含在 zip 存档中。由于一切都基于开放标准,我们可以使用通用工具来创建或检查 EPUB 文件。让我们探索一个 EPUB 文件以了解更多信息。《C 编程技巧和窍门指南》,于今年早些时候在 Opensource.com 上发布,提供 PDF 或 EPUB 格式。

因为 EPUB 文件是放在 zip 文件中的 XHTML 内容和 XML 元数据,所以你可以用 unzip 命令在命令行检查 EPUB:

$ unzip -l osdc_Jim-Hall_C-Programming-Tips.epub 
Archive: osdc_Jim-Hall_C-Programming-Tips.epub
Length Date Time Name
--------- ---------- ----- ----
20 06-23-2022 00:20 mimetype
8259 06-23-2022 00:20 OEBPS/styles/stylesheet.css
1659 06-23-2022 00:20 OEBPS/toc.xhtml
4460 06-23-2022 00:20 OEBPS/content.opf
44157 06-23-2022 00:20 OEBPS/sections/section0018.xhtml
1242 06-23-2022 00:20 OEBPS/sections/section0002.xhtml
22429 06-23-2022 00:20 OEBPS/sections/section0008.xhtml
[...]
9628 06-23-2022 00:20 OEBPS/sections/section0016.xhtml
748 06-23-2022 00:20 OEBPS/sections/section0001.xhtml
3370 06-23-2022 00:20 OEBPS/toc.ncx
8308 06-23-2022 00:21 OEBPS/images/image0011.png
6598 06-23-2022 00:21 OEBPS/images/image0009.png
[...]
14492 06-23-2022 00:21 OEBPS/images/image0005.png
239 06-23-2022 00:20 META-INF/container.xml
--------- -------
959201 41 files

这个 EPUB 包含很多文件,但其中大部分是内容。要了解 EPUB 文件是如何组合在一起的,请遵循电子书阅读器的流程:

1、电子书阅读器需要验证 EPUB 文件是否真的是 EPUB 文件。他们通过检查 EPUB 存档根目录中的 mimetype 文件来验证文件。该文件仅包含一行描述 EPUB 文件的 MIME 类型:

application/epub+zip

2、为了定位内容,电子书阅读器从 META-INF/container.xml 文件开始。这是一个简短的 XML 文档,指示在哪里可以找到内容。对于此 EPUB 文件,container.xml 文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
  <container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
    <rootfiles>
      <rootfile full-path="OEBPS/content.opf" media-type="application/oebps-package+xml"/>
  </rootfiles>
</container>

为了使 container.xml 文件更易于阅读,我将单行拆分为多行,并添加了一些间距来缩进每行。XML 文件并不关心新行和空格等额外的空白,因此这种额外的间距不会影响 XML 文件。

3、container.xml 文件表示 EPUB 的根从 OEBPS 目录中的 content.opf 文件开始。OPF 扩展名是因为 EPUB 基于 “ 开放打包格式 Open Packaging Format ”,但 content.opf 文件实际上只是另一个 XML 文件。

4、content.opf 文件包含一个完整的 EPUB 内容清单,以及一个有序的目录,以及查找每一章或每一节的引用。这个 EPUB 的 content.opf 文件很长,因此我将在此仅展示一小部分作为示例。

XML 数据包含在 <package> 块中,该块本身具有 <metadata> 块、<manifest> 数据和包含电子书目录的 <spine> 块:

<?xml version="1.0" encoding="UTF-8"?>
<package unique-identifier="unique-identifier" version="3.0" xmlns="http://www.idpf.org/2007/opf" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:opf="http://www.idpf.org/2007/opf">
  <metadata>
    <dc:identifier id="unique-identifier">osdc002</dc:identifier>
    <dc:title>Tips and Tricks for C Programming</dc:title>
    <dc:creator>Jim Hall</dc:creator>
    <dc:language>English</dc:language>
    <meta property="dcterms:modified">2022-06-23T12:09:13Z</meta>
    <meta content="LibreOffice/7.3.0.3$Linux_X86_64 LibreOffice_project/0f246aa12d0eee4a0f7adcefbf7c878fc2238db3 (libepubgen/0.1.1)" name="generator"/>
  </metadata>
  <manifest>
    ...
    <item href="sections/section0001.xhtml" id="section0001" media-type="application/xhtml+xml"/>
    <item href="images/image0003.png" id="image0003" media-type="image/png"/>
    <item href="styles/stylesheet.css" id="stylesheet.css" media-type="text/css"/>
    <item href="toc.ncx" id="toc.ncx" media-type="application/x-dtbncx+xml"/>
    ...
  </manifest>
  <spine toc="toc.ncx">
    <itemref idref="section0001"/>
    <itemref idref="section0002"/>
    <itemref idref="section0003"/>
    ...
  </spine>
</package>

你可以把数据匹配起来,看看在哪里可以找到每个部分。EPUB 阅读器就是这样做的。例如,目录中的第一项引用了 section0001,它在清单中被定义为位于 sections/section0001.xhtml 文件中。该文件的名称不需要与 idref 条目相同,但 LibreOffice Writer 的自动程序就是这样创建该文件的。(你可以在元数据中看到,这个 EPUB 是在 Linux 上用 LibreOffice 7.3.0.3 版本创建的,它可以将内容导出为 EPUB 文件。)

EPUB 格式

EPUB 文件是一种使用开放格式发布内容的好方法。EPUB 文件格式是 XML 元数据与 XHTML 内容,包含在一个 zip 文件内。虽然大多数技术作家使用工具来创建 EPUB 文件,因为 EPUB 是基于开放标准,意味着你可以使用其他方式创建自己的 EPUB 文件。


via: https://opensource.com/article/22/8/epub-file

作者:Jim Hall 选题:lkxed 译者:geekpi 校对:wxy

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