2020年4月

Fish — A Friendly Interactive Shell

你是否正在寻找 bash 的替代品?你是否在寻找更人性化的东西?不用再看了,因为你刚发现了 fish!

Fish(友好的交互式 shell)是一个智能且用户友好的命令行 shell,可在 Linux、MacOS 和其他操作系统上运行。可以将其用于终端的日常工作和脚本编写。用 fish 编写的脚本比相同的 bash 版本具有更少的神秘性。

Fish 的用户友好功能

  • 建议:Fish 会提示你之前写过的命令。当经常输入相同命令时,这样可以提高生产率。
  • 健全的脚本能力:Fish 避免使用那些隐秘字符。这提供了更清晰和更友好的语法。
  • 基于手册页的补全:Fish 会根据命令的手册页自动补全参数。
  • 语法高亮:Fish 会高亮显示命令语法以使其在视觉上友好。

安装

Fedora 工作站

使用 dnf 命令安装 fish:

$ sudo dnf install fish

安装 util-linux-user 包,然后使用适当的参数运行 chsh(更改 shell 程序)命令,将 fish 设置为默认 shell 程序:

$ sudo dnf install util-linux-user
$ chsh -s /usr/bin/fish

你需要注销然后重新登录,更改才能生效。

Fedora Silverblue

由于它不是 GUI 应用,因此你需要使用 rpm-ostree 将其加到层内。使用以下命令在 Fedora Silverblue 上安装 fish:

$ rpm-ostree install fish

在 Fedora Silverblue 上,你需要重启 PC 才能切换到新的 ostree 镜像。

如果你想在 Fedora Silverblue 用 fish 作为主要 shell,最简单的方法是更新 /etc/passwd 文件。找到你的用户,并将 /bin/bash 更改为 /usr/bin/fish

你需要 root 权限来编辑 /etc/passwd 文件。另外,你需要注销并重新登录才能使更改生效。

配置

fish 的用户配置文件在 ~/.config/fish/config.fish。要更改所有用户的配置,请编辑 /etc/fish/config.fish

用户配置文件必须手动创建。安装脚本不会创建 ~/.config/fish/config.fish

以下是两个个配置示例以及它们的 bash 等效项,以帮助你入门:

创建别名

  • ~/.bashrcalias ll='ls -lh'
  • ~/.config/fish/config.fish: alias ll='ls -lh'

设置环境变量

  • ~/.bashrcexport PATH=$PATH:~/bin
  • ~/.config/fish/config.fishset -gx PATH $PATH ~/bin

使用 fish 工作

将 fish 配置为默认 shell 程序后,命令提示符将类似于下图所示。如果尚未将 fish 配置为默认 shell,只需运行 fish 命令以在当前终端会话中启动。

在你开始输入命令时,你会注意到语法高亮显示:

很酷,不是吗??

你还将在输入时看到建议的命令。例如,再次开始输入上一个命令:

注意输入时出现的灰色文本。灰色文本显示建议之前编写的命令。要自动补全,只需按 CTRL+F

通过输入连接号()然后使用 TAB 键,它会根据前面命令的手册页获取参数建议:

如果你按一次 TAB,它将显示前几个建议(或所有建议,如果只有少量参数可用)。如果再次按 TAB,它将显示所有建议。如果连续三次按 TAB,它将切换到交互模式,你可以使用箭头键选择一个参数。

除此之外,fish 的工作与大多数其他 shell 相似。其他差异已经写在文档中。因此,找到你可能感兴趣的其他功能应该不难。

让 fish 变得更强大

使用 powerline 使 fish 变得更强大。Powerline 可以为 fish 的界面添加命令执行时间、彩色化 git 状态、当前 git 分支等。

在安装 powerline 之前,你必须先安装 Oh My Fish。Oh My Fish 扩展了 fish 的核心基础架构,以支持安装其他插件。安装 Oh My Fish 的最简单方法是使用 curl 命令:

> curl -L https://get.oh-my.fish | fish

如果你不想直接将安装命令管道传给 fish,请参见 Oh My Fish 的 README 的安装部分,以了解其他安装方法。

Fish 的 powerline 插件是 bobthefish。Bobthefish 需要 powerline-fonts 包。

在 Fedora 工作站上:

> sudo dnf install powerline-fonts

在 Fedora Silverblue 上:

> rpm-ostree install powerline-fonts

在 Fedora Silverblue 上,你必须重启以完成字体的安装。

安装 powerline-fonts 之后,安装 bobthefish

> omf install bobthefish

现在你可以通过 powerline 体验 fish 的全部奇妙之处:

更多资源

查看这些网页,了解更多 fish 内容:


via: https://fedoramagazine.org/fish-a-friendly-interactive-shell/

作者:Michal Konečný 选题:lujun9972 译者:geekpi 校对:wxy

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

自 20 世纪 90 年代初以来,Linux 桌面已从一个简单的窗口管理器发展为一个完整的桌面。让我们一起来回顾一下 Linux 桌面的历史。

我第一次安装 Linux 是在 1993 年。那时,安装这种操作系统没有太多的选择。早期,许多人只是从别人那里复制一个运行中的镜像。然后有人有了一个很好的想法,创建一个 Linux 的“发行版”,让你可以自定义要安装的软件。这就是 Softlanding Linux 系统(SLS),也是我首次接触 Linux。

当时我的 386 PC 虽然内存不多,但已经足够了。SLS 1.03 需要 2MB 的内存才能运行,如果要编译程序,则需要 4MB 的内存。如果要运行 X 窗口系统,则需要多达 8MB 的内存!而我的电脑正好有足够的内存来运行 X 窗口系统。

因为我是在命令行中成长的,所以图形化的用户界面对我来说并不重要,但它确实很方便,我可以在不同的窗口中运行应用程序,并在任务间轻松切换。

从我第一次尝试 Linux 开始,我就迷上了它。从那以后,我一直在台式机上使用 Linux。和许多人一样,我也曾有一段时间以双引导配置运行 Linux,这样我就可以跳回到 MS-DOS 和 Windows 来运行某些程序。直到 1998 年,我终于冒了个险,全面投身于 Linux 之中。

在过去的 26 年中,我看着 Linux 桌面逐渐成熟。在这段时间里,我还尝试了各种有趣的桌面环境,下面我来分享一下 Linux 桌面的历史。

X 和窗口管理器

Linux 上的第一个“桌面”还不是桌面。相反,它们是运行在 X 窗口系统上的“ 窗口管理器 window manager ”(WM)。X 提供了图形用户界面的基本构件,比如在屏幕上创建窗口,并提供键盘和鼠标输入。就其本身而言,X 的用处并不大。为了使 X 图形环境变得有用,你需要一种方法来管理会话中的所有窗口。这就出现了 窗口管理器 window manager 。运行 xterm 或 xclock 之类的 X 程序就会在一个窗口中打开该程序。窗口管理器可以跟踪窗口并进行基本的内部管理,例如让你可以来回移动窗口并将其最小化。其余的事情取决于你自己。你可以通过将程序名列在 ~/.xinitrc 文件中以在 X 开始时启动这些程序,但是通常,你会从 xterm 中运行新程序。

在 1993 年,最常见的窗口管理器是 TWM,它的历史可以追溯到 1988 年。TWM 相当简单,仅仅提供了基本的窗口管理功能。

 title=

SLS 1.05 上的 TWM,显示了 xterm、xclock 和 Emacs 编辑器

另一个早期的窗口管理器是 OpenLook 虚拟窗口管理器(OLVWM)。OpenLook 是 Sun 微系统公司在 20世纪 80 年代开发的图形用户界面,后来被移植到其它 Unix 平台。作为一个虚拟窗口管理器,OLVWM 支持多个工作区。

 title=

SLS 1.05 上的 OLVWM,显示了 xterm 和虚拟工作区选择器

当 Linux 开始流行起来的时候,没多久就有人创建出性能更流畅、界面更好的新窗口管理器。这些新的窗口管理器中首先出现的是虚拟窗口管理器 FVWM。FVWM 比 TWM 或 OLVWM 更具现代感。但是,我们仍然没有桌面。

 title=

SLS 1.05 上的 FVWM,显示了 xterm 和文件管理器

以现代的眼光来看,TWM 和 FVWM 可能看起来很朴素。但重要的是要想想当时其它图形环境是什么样子。 Windows 当时的版本看起来也相当简单。Windows 版本 1 到版本 3 使用了一个称为“程序管理器”的普通启动器。

 title=

Windows 3.11,显示程序管理器和记事本编辑器

1995 年 8 月,微软发布了 Windows 95,改变了现代 PC 桌面的格局。当然,我当时对此印象很深刻。我曾觉得 Windows 3.x 笨拙而丑陋,但 Windows 95 却流畅而漂亮。更重要的是,我们现在将 Windows 95 视为“桌面”。新的“桌面”隐喻是一个巨大的进步。你可以在桌面上放置图标——事实上,Windows 95 提供了两个默认的桌面图标,分别是“我的电脑”(用于打开文件管理器)和“回收站”(用于放置以后要删除的文件)。

但是,更重要的是,Windows 95 桌面的意味着整合。程序管理器不见了,取而代之的是屏幕底部的任务栏,可让你使用更简单的“开始”菜单启动新程序。任务栏是多功能的,还通过一系列的按钮显示了你正在运行的程序,而托盘显示了时间、扬声器音量和其它简单的控件。你可以在这个新桌面上右键单击任何对象, Windows 95 会为你提供一个上下文相关的菜单,其中又你可以执行的操作。

 title=

Windows 95,显示了记事本编辑器

与以前版本的 Windows 甚至其它 Linux 窗口管理器相比,Windows 95 的界面更加流畅并且易于使用。值得一提的是,Linux 开发人员创建了一个模仿 Windows 95 界面的 FVWM 的新版本。名为 FVWM95 的新窗口管理器仍然不是桌面,但它看起来非常漂亮。新的任务栏让你可以使用“开始”菜单启动新的 X 程序。任务栏还可以使用类似于 Windows 95 的按钮显示了正在运行的程序。

 title=

在 Red Hat Linux 5.2 上的 FVWM95,显示了 xterm 和一个带有 xterm 图标、文件管理器和其他程序的快速访问程序启动器

虽然 FVWM95 和其他窗口管理器都在改进,但核心问题仍然存在:Linux 并没有真正的桌面。它具有一堆窗口管理器,仅此而已。使用图形用户界面的 Linux 应用程序(基本上意味着它们是 X 应用程序)看起来形态各异且工作方式也不同。除了 X 窗口系统提供的简单的纯文本复制/粘贴功能外,你不能从一个应用程序复制和粘贴到另一个应用程序里。Linux 真正需要的是在其图形用户界面中进行彻底的重新打造,以创建它的第一个桌面。

Linux 桌面之初啼

在 1996 年,Matthias Ettrich 有感于 X 之下 Linux 应用程序体验不一致的困扰。他想使找个更易于使用的图形环境,而且更重要的是,他想让所有东西都“集成”在一起,就像真正的桌面一样。

Matthias 开始了 K 桌面环境 K Desktop Environment (KDE)的工作。那个 K 代表着 “Kool”(LCTT 译注:即 Cool)。但是 KDE 这个名字也意味着可以类似 通用桌面环境 Common Desktop Environment (CDE)的做法,而 CDE 是“大 Unix”世界的标准。尽管到了 1996 年,CDE 看起来已经有点过时了。CDE 基于 Motif 部件集,这也是 FVWM 所模仿的设计。KDE 1.0 于 1998 年 7 月完成,与 FVWM95 等普通窗口管理器相比,它有了明显改进。

 title=

K 桌面环境(KDE)版本 1.0。图片来源:Paul Brown / KDE

KDE 是 Linux 向前迈出的一大步。最终,Linux 有了一个真正的桌面,集成了应用程序和更多现代的桌面图标。KDE 的设计与 Windows 95 并无不同。屏幕底部有一个任务栏,它提供了相当于 Windows 95 的“开始”菜单以及一些应用程序的快捷键。KDE 还支持虚拟桌面,这些桌面被巧妙地标记为 “One”、“ Two”、“Three” 和 “Four”。正在运行的应用程序通过位于屏幕顶部单独的任务栏的按钮表示。

但并不是每个人都对 KDE 感到满意。为了将 GUI 从系统中抽象出来,KDE 使用了 Trolltech 的 Qt 工具套件库。不幸的是,Qt 并不是以自由软件的许可证进行分发的。Trolltech 允许 Qt 在自由软件应用程序中免费使用,但在商业或专有应用程序中要收取使用费。而且这种二分法与自由软件不符。这给 Linux 发行版带来了问题:它们应该包括 KDE 吗?还是默认使用 FVWM 这样老式但属于自由软件的图形用户界面?

面对这种情况,Miguel de Icaza 和 Federico Mena 于 1997 年开始开发新的 Linux 桌面上。这个新项目被称为 GNOME,即 GNU 网络对象模型环境 GNU Network Object Model Environment 的缩写。GNOME 旨在成为一个完全自由的软件,并使用了一个不同的工具套件库 —— 来自 GIMP 图像编辑器的 GTK。GTK 从字面上的意思 GIMP 工具套件 GIMP Tool Kit 。当 GNOME 1.0 终于在 1999 年发布时,Linux 又多了一个现代化的桌面环境。

 title=

GNOME 1.0 版。图片来源:GNOME 文档项目

有两个 Linux 桌面环境固然很棒,但“KDE 与 GNOME”之争仍持续了一段时间。到了 1999 年,Trolltech 以新的公共许可证 Q 公共许可证 Q Public License (QPL)重新发布了 Qt 库。但是,新许可证有其自身的包袱—-QPL 仅适用于 Qt 在开源软件项目中的使用,而不适用于商业项目。因此, 自由软件基金会 Free Software Foundation (FSF)认为 QPL 与 GNU 通用公共许可证 GNU General Public License (GNU GPL)不兼容。这个许可证问题一直持续到 2000 年 Trolltech 在 GNU GPL v2 下重新发布 Qt 库。

随着时间的发展

Linux 桌面继续走向成熟。KDE 和 GNOME 进行了一场友好的竞争,促使双方都在增加了新的功能,还互相交流了思想和观念。到了 2004 年,GNOME 和 KDE 都取得了长足的进步,但只是给用户界面带来了渐进式的变化。

KDE 2 和 3 继续依赖屏幕底部的任务栏概念,但并入了用于运行应用程序的按钮。KDE 最明显的变化之一是添加了 Konqueror 浏览器,该浏览器首次出现在 KDE 2 中。

 title= showing the Konqueror browser")

KDE 2.2.2(2001),显示了 Konqueror 浏览器。图片来源:Paul Brown / KDE

 title=

Fedora Core 2 上的 KDE 3.2.2(2004),显示了 Konqueror 文件管理器(使用 Fedora Core 2 主题)

GNOME 2 也使用了任务栏概念,但将任务栏一分为二:屏幕顶部的任务栏用于启动应用程序并响应桌面提示,屏幕底部的任务栏用于显示正在运行的应用程序。我把这两个任务栏称之为“你可以做的事情”(顶部)和“你正在做的事情”(底部)。除了精简的用户界面外,GNOME 还添加了由 Eazel 开发的更新过的文件管理器,名为 Nautilus。

 title=

Fedora Core 2 上的 GNOME 2.6.0(2004),显示了 Nautilus 文件管理器(使用 Fedora Core 2 主题)

随着时间的流逝,KDE 和 GNOME 走了不同的道路。两者都提供了功能丰富、健壮且现代化的桌面环境,但是却具有不同的用户界面目标。2011 年,GNOME 和 KDE 在桌面界面上出现了很大的偏差。KDE 4.6(2011 年 1 月)和 KDE 4.7(2011 年 7 月)提供了更传统的桌面感受,同时继续根植于许多用户熟悉的任务栏概念。当然,KDE 的底层发生很多变化,但是它仍然保留了熟悉的外观。

 title=

KDE 4.6,显示 Gwenview 图像查看器。图片来源:KDE

2011 年,GNOME 以一个新的桌面概念彻底改变了走向。GNOME 3 旨在创建一个更简单、更精简的桌面体验,使用户能够专注于自己的工作。任务栏消失了,取而代之的是屏幕顶部的黑色状态栏,其中包括音量和网络控件,显示了时间和电池状态,并允许用户通过重新设计过的菜单启动新程序。

菜单的变化最具最戏剧性。单击“活动”菜单或将鼠标移到“活动”的“热角”,所有打开的应用程序会显示为单独的窗口。用户还可以从“概述”中单击“应用程序”选项卡以启动新程序。“概述”还提供了一个内部集成的搜索功能。

 title=

GNOME 3.0,显示 GNOME 图片应用程序。图片来源:GNOME

 title=

GNOME 3.0,显示活动概述。图片来源:GNOME

你的桌面之选

拥有两个 Linux 桌面意味着用户有很大的选择余地。有些人喜欢 KDE,而另一些人喜欢 GNOME。没关系,选择最适合你的桌面就行。

可以肯定的是,KDE 和 GNOME 都有拥护者和批评者。例如,GNOME 因为放弃任务栏而改成“活动概述”而受到了不少批评。也许最著名的批评者是 Linus Torvalds,他在 2011 年大声斥责并抛弃了新的 GNOME,将其视为“邪恶的烂摊子”,然后在两年后又回到了 GNOME。

其他人也对 GNOME 3 提出了类似的批评,以至于一些开发人员复刻 GNOME 2 的源代码创建了 MATE 桌面。MATE(是 MATE 高级传统环境 MATE Advanced Traditional Environment 的递归缩写)延续了 GNOME 2 的传统任务栏界面。

无论如何,毫无疑问当今两个最受欢迎的 Linux 桌面是 KDE 和 GNOME。它们的当前版本非常成熟,功能也很丰富。KDE 5.16(2019)和 GNOME 3.32(2019)都试图简化和精简 Linux 桌面体验,但是方式有所不同。GNOME 3.32 继续致力于极简外观,删除所有分散用户注意力的用户界面元素,以便用户可以专注于其应用程序和工作。KDE 5.16 采用了更为熟悉的任务栏方法,但也增加了其他视觉上的改进和亮点,尤其是改进的小部件处理和图标。

 title=

KDE 5.16 Plasma。图片来源:KDE

 title=

GNOME 3.32。图片来源:GNOME

同时,你也不会完全失去它们之间的兼容性。每个主要的 Linux 发行版都提供了兼容性库,因此你可以在运行 GNOME 的同时来运行 KDE 应用程序。当你真正想使用的应用程序是为其他桌面环境编写的,这一点非常有用。你可以在 GNOME 上运行 KDE 应用程序,反之亦然。

我认为这种态势不会很快改变,这是一件好事。KDE 和 GNOME 之间的良性竞争使这两个阵营的开发人员可以避免故步自封。无论你使用 KDE 还是 GNOME,你都将拥有一个集成度很高的现代化桌面。而最重要的是,这意味着 Linux 拥有自由软件最好的特点:选择。


via: https://opensource.com/article/19/8/how-linux-desktop-grown

作者:Jim Hall 选题:lujun9972 译者:wxy 校对:wxy

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

Meld 是一个可视化 diff 工具,它可让你轻松比较和合并文件、目录、Git 仓库等的更改。

Meld 是我处理代码和数据文件的基本工具之一。它是一个图形化的 diff 工具,因此,如果你曾经使用过 diff 命令并难以理解输出,那么 Meld 可以为你提供帮助。

这是该项目网站的精彩描述:

“Meld 是面向开发人员的可视化 diff 和合并工具。Meld 可以帮助你比较文件、目录和版本控制的项目。它提供文件和目录的双向和三向比较,并支持许多流行的版本控制系统。”

“Meld 可以帮助你检查代码更改并了解补丁。它甚至可以帮助你弄清你一直在避免的合并中发生了什么。”

你可以使用以下命令在 Debian/Ubuntu 系统(包括 Raspbian)上安装 Meld:

$ sudo apt install meld

在 Fedora 或类似产品上:

$ sudo dnf install meld

Meld 是跨平台的,它有一个使用 Chocolately 包管理器的 Windows 安装包。尽管它在 macOS 上不受官方支持,但有可用于 Mac 的版本,你可以使用 Homebrew 安装:

$ brew cask install meld

有关其他系统,请参见 Meld 的主页。

Meld 对比 diff 命令

如果你有两个相似的文件(也许一个是另一个的修改版本),并想要查看它们之间的更改,那么可以在终端中运行 diff 命令查看它们的区别:

 title=

此例显示了 conway1.pyconway2.py 之间的区别。表明我:

  • 删除了释伴)和第二行
  • 从类声明中删除了 (object)
  • 为类添加了 docstring
  • 在方法中交换了 aliveneighbours == 2 的顺序

这是使用 meld 命令的相同例子。你可以在命令行中运行以下命令进行相同的比较:

$ meld conway1.py conway2.py

 title=

Meld 更清晰!

你可以轻松查看并单击箭头(左右都行)合并文件之间的更改。你甚至可以实时编辑文件(在输入时,Meld 可以用作具有实时比较功能的简单文本编辑器)—只是要记得在关闭窗口之前保存。

你甚至可以比较和编辑三个不同的文件:

 title=

Meld 的 Git 感知

希望你正在使用 Git 之类的版本控制系统。如果是这样,那么你的比较就不是在两个不同文件之间进行,而是要查找当前文件与 Git 历史文件之间的差异。Meld 理解这一点,因此,如果你运行 meld conway.pyconway.py 在 Git 中),它将显示自上次 Git 提交以来所做的更改:

 title=

你可以看到当前版本(右侧)和仓库版本(左侧)之间的更改。你可以看到,自上次提交以来,我删除了一个方法,并添加了一个参数和一个循环。

如果你运行 meld .,你将看到当前目录(如果位于仓库的根目录,就是整个仓库)中的所有更改:

 title=

你会看到一个文件被修改了,另一个文件未加入版本控制(这意味着它对 Git 是新的,因此在比较之前,我需要 git add 添加该文件),以及许多其他未修改的文件。顶部的图标提供了各种显示选项。

你还可以比较两个目录,这有时很方便:

 title=

结论

即使是普通用户也会觉得 diff 的比较难以理解。我发现 Meld 提供的可视化在找出文件之间的更改方面有很大的不同。最重要的是,Meld 有一些有用的版本控制认知,可以帮助你在不考虑太多内容的情况下对 Git 提交进行比较。快来试试 Meld,并轻松解决问题。


本文最初发表在 Ben Nuttall 的 Tooling blog 上,并经允许重新使用。


via: https://opensource.com/article/20/3/meld

作者:Ben Nuttall 选题:lujun9972 译者:geekpi 校对:wxy

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

使用 Pelican 创建博客,这是一个基于 Python 的平台,与 GitHub 配合的不错。

GitHub 是一个非常流行的用于源代码控制的 Web 服务,它使用 Git 同步本地文件和 GitHub 服务器上保留的副本,这样你就可以轻松地共享和备份你的工作。

除了为代码仓库提供用户界面之外,GitHub 还运允许用户直接从仓库发布网页。GitHub 推荐的网站生成软件包是 Jekll,是使用 Ruby 编写的。因为我是 Python 的忠实粉丝,所以我更喜欢 Pelican,这是一个基于 Python 的博客平台,可与 GitHub 很好地协同工作。

Pelican 和 Jekll 都可以将 MarkdownreStructuredText 中编写的内容转换为 HTML 以生成静态网站,并且两个生成器都支持定制的主题。

在本文中,我将介绍如何安装 Pelican、设置 GitHub 仓库、运行快速入门帮助、编写一些 Markdown 文件以及发布第一篇博客。我假设你有一个 GitHub 账户,熟悉基础的 Git 命令,并且想使用 Pelican 发布博客。

安装 Pelican 并创建仓库

首先,你必须在本地计算机上安装 Pelican 和 ghp-import。使用 Python 软件包安装工具 pip(你有,对吧?),这非常容易:

$ pip install pelican ghp-import Markdown

然后,打开浏览器并在 GitHub 上为你新鲜出炉的博客创建一个新仓库,命名如下(在此处以及整个教程中,用 GitHub 用户名替换 username):

https://GitHub.com/username/username.github.io

让它保持为空,稍后我们用引人注目的博客内容来填充它。

使用命令行(确保正确),将这个空 Git 仓库克隆到本地计算机:

$ git clone <https://GitHub.com/username/username.github.io> blog
$ cd blog

奇怪的把戏…

在 GitHub 上发布 Web 内容有一个不太引入注意的技巧,对于托管在名为 username.github.io 的仓库的用户页面,其内容由 master 分支提供服务。

我强烈建议所有的 Pelican 配置文件和原始的 Markdown 文件都不要保留在 master 中,master 中只保留 Web 内容。因此,我将 Pelican 配置和原始内容保留在一个我喜欢称为 content 的单独分支中。(你可以随意创建一个分支,但以下内容沿用 content。)我喜欢这种结构,因为我可以放弃掉 master 中的所有文件,然后用 content 分支重新填充它。

$ git checkout -b content
Switched to a new branch 'content'

配置 Pelican

现在该进行内容配置了。Pelican 提供了一个很棒的初始化工具 pelican-quickstart,它会询问你有关博客的一系列问题。

$ pelican-quickstart
Welcome to pelican-quickstart v3.7.1.

This script will help you create a new Pelican-based website.

Please answer the following questions so this script can generate the files
needed by Pelican.

> Where do you want to create your new web site? [.]  
> What will be the title of this web site? Super blog
> Who will be the author of this web site? username
> What will be the default language of this web site? [en]
> Do you want to specify a URL prefix? e.g., http://example.com   (Y/n) n
> Do you want to enable article pagination? (Y/n)
> How many articles per page do you want? [10]
> What is your time zone? [Europe/Paris] US/Central
> Do you want to generate a Fabfile/Makefile to automate generation and publishing? (Y/n) y
> Do you want an auto-reload & simpleHTTP script to assist with theme and site development? (Y/n) y
> Do you want to upload your website using FTP? (y/N) n
> Do you want to upload your website using SSH? (y/N) n
> Do you want to upload your website using Dropbox? (y/N) n
> Do you want to upload your website using S3? (y/N) n
> Do you want to upload your website using Rackspace Cloud Files? (y/N) n
> Do you want to upload your website using GitHub Pages? (y/N) y
> Is this your personal page (username.github.io)? (y/N) y
Done. Your new project is available at /Users/username/blog

你可以对每个问题都采用默认值,但除了以下这些问题:

  • 网站标题,应该唯一且特殊
  • 网站作者,可以是个人用户名或你的全名
  • 时区,可能你不在巴黎
  • 上传到 GitHub 页面,我们选择 y

回答完所有问题后,Pelican 会在当前目录中留下以下内容:

$ ls
Makefile      content/     develop_server.sh*
fabfile.py    output/      pelicanconf.py
publishconf.py

你可以查看 Pelican 文档来了解如何使用这些文件,但现在我们要做的是完成手头的工作。说实话,我也没有阅读文档。

继续

将所有 Pelican 生成的文件添加到本地 Git 仓库的 content 分支,提交更改,然后将本地更改推送到 Github 上托管的远程仓库:

$ git add .
$ git commit -m 'initial pelican commit to content'
$ git push origin content

这件事情并不是特别令人兴奋,但是如果我们需要撤销这些文件之一的修改时,这将非常方便。

终于

终于,现在你得到一个博客了!你所有的博客文章、照片、图像、PDF 等都将位于 content 目录中,它最初是空的。要开始创建第一篇博客和关于页面,输入:

$ cd content
$ mkdir pages images
$ cp /Users/username/SecretStash/HotPhotoOfMe.jpg images
$ touch first-post.md
$ touch pages/about.md

接下来,在你喜欢的文本编辑器中打开 first-post.md,并添加以下内容:

title: First Post on My Sweet New Blog
date: <today's date>
author: Your Name Here

# I am On My Way To Internet Fame and Fortune!

This is my first post on my new blog. While not super informative it
should convey my sense of excitement and eagerness to engage with you,
the reader!

前三行是 Pelican 用于组织内容的元数据。有很多不同的元数据可供你选择。再说一次,文档是你了解更多选项的最佳选择。

现在,打开空白文件 pages/about.md 并添加以下文本:

title: About
date: <today's date>

![So Schmexy][my_sweet_photo]

Hi, I am <username> and I wrote this epic collection of Interweb
wisdom. In days of yore, much of this would have been deemed sorcery
and I would probably have been burned at the stake.

?

现在,content 目录中将包含三个新的 Web 内容,在 content 分支中还有很多内容。

发布

不要急,马上要见到成果了!

剩下要做的就是:

  • 运行 Pelican 以在 output 中生成静态 HTML 文件:
$ pelican content -o output -s publishconf.py
  • 使用 ghp-importoutput 目录的内容添加到 master 分支中:
$ ghp-import -m "Generate Pelican site" --no-jekyll -b master output
  • 将本地 master 分支推送到远程仓库:
$ git push origin master
  • 提交新内容并将其推送到 content 分支
$ git add content
$ git commit -m 'added a first post, a photo and an about page'
$ git push origin content

OMG,我成功了

现在最激动的时候到了,当你想要看到你发布给大家的博客内容时,打开浏览器输入:

https://username.github.io

恭喜你可以在 GitHub 上发布自己的博客了!当你想添加更多页面或文章时,都可以按照上面的步骤来。希望你可以愉快地发布博客。


via: https://opensource.com/article/19/5/run-your-blog-github-pages-python

作者:Erik O'Shaughnessy 选题:lujun9972 译者:MjSeven 校对:wxy

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

KDE 即将推出的“等离子大屏幕”项目可让你使用开源技术将普通电视变成智能电视。

如今,智能电视已成为新的常态。这些智能电视主要基于 Android,可让你播放 YouTube、Netflix、Spotify 和其他流媒体服务。你甚至可以使用语音命令来控制你的智能电视。

这些所谓的“智能电视”的一个主要问题是它们可能正在监视你。你的数据在你或许知道或许不知道的情况下被收集。

这就是 KDE 的“等离子大屏幕项目”旨在解决的问题。(LCTT 译注: 等离子 Plasma 恰是 KDE 桌面环境的名称,和 大屏幕 Bigscreen 很搭,因此这个惯常不翻译的名称这里翻译出来。)

“等离子大屏幕”:通过开源技术使电视更智能

你可能了解 KDE 项目。它开始是一个 Linux 桌面环境项目,而在发展了 20 多年后,KDE 项目变得越来越大,这就是为什么他们创建了 Plasma 桌面环境的原因,以明确表明 KDE 不再仅仅是“ K 桌面环境 K Desktop Environment (KDE)”了。

Plasma 项目本身具有多种用途,当然,你可以在台式机 Linux 计算机上使用它,而 Plasma 也具有移动版本,你可以在基于 Linux 的智能手机上运行它,例如 Librem5PinePhone

等离子大屏幕 Plasma Bigscreen ”是 KDE 的一个新项目,旨在提供类似于智能电视所提供的界面和功能。

你需要的是一台树莓派之类的单板计算机和一台带 HDMI 端口的电视,然后在你的树莓派设备上安装“等离子大屏幕”,将其连接到电视就行。

“等离子大屏幕”的功能:不仅仅是媒体服务器

YouTube In Plasma Bigscreen

乍一看,它看起来很像是一个媒体服务器,但“等离子大屏幕”却和 Kodi 及其它 Linux 媒体服务器 不同,它不止于此。

使用常规遥控器进行控制

你不需要新的专用遥控器。多亏了 CEC,你可以使用常规的电视遥控器。

带有开源 Mycroft AI 的语音控制

“等离子大屏幕”利用了开源 Mycroft AI 项目。借助“等离子大屏幕”内置的 Mycroft AI,你可以使用语音命令播放内容、检查天气并控制智能电视的其他方面。你可以通过教它新技能来进一步训练它。

传统的桌面应用程序

“等离子大屏幕”不仅提供丰富的媒体应用程序,还提供经过重新设计,适合它的体验的传统桌面应用程序。

自由开源软件

最重要的是它是一个开源项目,它使用其他开源技术为你提供对数据和智能电视的完全控制。

由于它是开源的,我相信一旦发布,就会有一些供应商将其作为即插即用设备提供。

如何获取“等离子大屏幕”?

“等离子大屏幕”仍处于测试阶段,没有确定稳定版发布的时间表。

但是,测试版已经可以在树莓派 4 等设备上正常运行。下面是一个从事此项目的开发人员的视频。

如果你有树莓派 4,则可以从其官方下载页面上下载“等离子大屏幕”的测试版,然后按照此处的步骤进行安装。

就个人而言,我对此感到非常兴奋。我要花一些时间在树莓派 4上尝试一下。你呢?你认为该项目具有潜力吗?你想试试看吗?


via: https://itsfoss.com/kde-plasma-bigscreen/

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

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

如果你在 Linux 上启用了密码策略。密码必须在到期前进行更改,并且登录到系统时会收到通知。

如果你很少使用自己的帐户,那么可能由于密码过期而被锁定。在许多情况下,这可能会在无需密码登录的服务帐户中发生,因为没人会注意到它。

这将导致停止服务器上配置的 cronjob/crontab

如果如此,该如何缓解这种情况。

你可以写一个 shell 脚本来获得有关它的通知,我们前一段时间为此写了一篇文章。

它将给出天数,但是本文旨在在终端中给你实际日期。

这可以使用 chage 命令来实现。

什么是 chage 命令?

chage 代表 更改时效 change age 。它更改用户密码到期信息。

chage 命令可以修改两次密码更改之间的天数,以及最后一次更改密码的日期。

系统使用此信息来确定用户何时应更改密码。

它还允许用户执行其他功能,例如设置帐户到期日期、在到期后将密码设置为无效、显示帐户时效信息、设置密码更改之前的最小和最大天数以及设置到期警告天数。

1)如何在 Linux 上检查特定用户的密码到期日期

如果要检查 Linux 上特定用户的密码到期日期,请使用以下命令。

# chage -l daygeek

Last password change                                    : Feb 13, 2020
Password expires                                        : May 13, 2020
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 7
Maximum number of days between password change          : 90
Number of days of warning before password expires       : 7

2)如何在 Linux 上检查所有用户的密码到期日期

你可以直接对单个用户使用 chage 命令,不过可能你对多个用户使用时可能无效。

为此,你需要编写一个小的 shell 脚本。下面的 shell 脚本可以列出添加到系统中的所有用户,包括系统用户。

# for user in $(cat /etc/passwd |cut -d: -f1); do echo $user; chage -l $user | grep "Password expires"; done | paste -d " "  - - | sed 's/Password expires//g'

你将得到类似以下的输出,但是用户名可能不同。

root                : never
bin                 : never
daemon              : never
adm                 : never
lp                  : never
sync                : never
shutdown            : never
u1               : Nov 12, 2018
u2               : Jun 17, 2019
u3               : Jun 17, 2019
u4               : Jun 17, 2019
u5               : Jun 17, 2019

3)如何检查 Linux 上除系统用户外的所有用户的密码有效期

下面的 shell 脚本将显示有到期日期的用户列表。

# for user in $(cat /etc/passwd |cut -d: -f1); do echo $user; chage -l $user | grep "Password expires"; done | paste -d " "  - - | sed 's/Password expires//g' | grep -v "never"

你将得到类似以下的输出,但是用户名可能不同。

u1               : Nov 12, 2018
u2               : Jun 17, 2019
u3               : Jun 17, 2019
u4               : Jun 17, 2019
u5               : Jun 17, 2019

via: https://www.2daygeek.com/linux-check-user-password-expiration-date/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:geekpi 校对:wxy

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