2018年9月

Scrot 是一个简单、灵活,并且提供了许多选项的 Linux 命令行截屏工具。

Original photo by Rikki Endsley. CC BY-SA 4.0

Linux 桌面上有许多用于截屏的优秀工具,比如 KsnapshotShutter 。甚至 GNOME 桌面自带的简易截屏工具也能够很好的工作。但是,如果你很少截屏,或者你使用的 Linux 发行版没有内建截屏工具,或者你使用的是一台资源有限的老电脑,那么你该怎么办呢?

或许你可以转向命令行,使用一个叫做 Scrot 的实用工具。它能够完成简单的截屏工作,同时它所具有的一些特性也许会让你感到非常惊喜。

走近 Scrot

许多 Linux 发行版都会预先安装上 Scrot ,可以输入 which scrot 命令来查看系统中是否安装有 Scrot 。如果没有,那么可以使用你的 Linux 发行版的包管理器来安装。如果你想从源代码编译安装,那么也可以从 GitHub 上下载源代码。

如果要进行截屏,首先打开一个终端窗口,然后输入 scrot [filename][filename] 是你想要保存的图片文件的名字(比如 desktop.png)。如果缺省了该参数,那么 scrot 会自动创建一个名字,比如 2017-09-24-185009_1687x938_scrot.png 。(这个名字缺乏了对图片内容的描述,这就是为什么最好在命令中指定一个名字作为参数。)

如果不带任何参数运行 Scrot,那么它将会对整个桌面进行截屏。如果不想这样,那么你也可以对屏幕中的一个小区域进行截图。

对单一窗口进行截屏

可以通过输入 scrot -u [filename] 命令来对一个窗口进行截屏。

-u 选项告诉 Scrot 对当前窗口进行截屏,这通常是我们正在工作的终端窗口,也许不是你想要的。

如果要对桌面上的另一个窗口进行截屏,需要输入 scrot -s [filename]

-s 选项可以让你做下面两件事的其中一件:

  • 选择一个打开着的窗口
  • 在一个窗口的周围或一片区域画一个矩形进行捕获

你也可以设置一个时延,这样让你能够有时间来选择你想要捕获的窗口。可以通过 scrot -u -d [num] [filename] 来设置时延。

-d 选项告诉 Scrot 在捕获窗口前先等待一段时间,[num] 是需要等待的秒数。指定为 -d 5 (等待 5 秒)应该能够让你有足够的时间来选择窗口。

更多有用的选项

Scrot 还提供了许多额外的特性(绝大多数我从来没有使用过)。下面是我发现的一些有用的选项:

  • -b 捕获窗口的边界
  • -t 捕获窗口并创建一个缩略图。当你需要把截图张贴到网上的时候,这会非常有用
  • -c 当你同时使用了 -d 选项的时候,在终端中创建倒计时

如果你想了解 Scrot 的其他选项,可以在终端中输入 man scrot 来查看它的手册,或者在线阅读。然后开始使用 Scrot 进行截屏。

虽然 Scrot 很简单,但它的确能够工作得很好。


via: https://opensource.com/article/17/11/taking-screen-captures-linux-command-line-scrot

作者:Scott Nesbitt 译者:ucasFL 校对:wxy

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

换一个新的身份,并用这些开源的角色扮演游戏探索新世界。

游戏是 Linux 的传统弱项之一,感谢 Steam、GOG 和其他的游戏开发商将商业游戏移植到了多个操作系统,Linux 的这个弱项在近几年有所改观,但是这些游戏通常都不是开源的。当然,这些游戏可以在开源系统上运行,但是对于开源的纯粹主义者来说这还不够好。

那么,有没有一款能让只使用自由开源软件的人在不影响他们开源理念的情况下也能享受到可靠游戏体验的精致游戏呢?

当然有啦!虽然开源游戏不太可能和拥有大量开发预算的 3A 级大作相媲美,但有许多类型的开源游戏也很有趣,而且它们可以直接从大多数主要的 Linux 发行版的仓库中进行安装。即使某个游戏没有被某些仓库打包,你也可以很简单地从这个游戏的官网下载它,并进行安装和运行。

这篇文章着眼于角色扮演游戏,我已经写过关于街机游戏棋牌游戏益智游戏,以及赛车和飞行游戏。在本系列的最后一篇文章中,我打算覆盖战略游戏和模拟游戏这两方面。

Endless Sky

Endless Sky 是 Ambrosia Software 的 Escape Velocity) 系列的开源克隆品。玩家乘坐一艘宇宙飞船,在不同的世界之间旅行来运送货物和乘客,并在沿途中承接其他任务,或者玩家也可以变成海盗,并从其他货船中偷取货物。这个游戏让玩家自己决定要如何去体验这个游戏,以太阳系为背景的超大地图是非常具有探索性的。Endless Sky 是那些违背正常游戏类别分类的游戏之一。但这个兼具动作、角色扮演、太空模拟和交易这四种类型的游戏非常值得一试。

如果要安装 Endless Sky ,请运行下面的命令。

在 Fedora 上:

dnf install endless-sky

在 Debian/Ubuntu 上:

apt install endless-sky

FreeDink

FreeDinkDink Smallwood 的开源版本,Dink Smallwood 是一个由 RTSoft 在 1997 年发售的动作角色扮演游戏。Dink Smallwood 在 1999 年时变为了免费游戏,并在 2003 年时公布了源代码。在 2008 年时,游戏的数据除了少部分的声音文件,都在开源协议下进行了开源。FreeDink 用一些替代的声音文件替换了缺少的那部分文件,来提供了一个完整的游戏。游戏的玩法类似于任天堂的塞尔达传说系列。玩家控制的角色和 Dink Smallwood 同名,他在从一个任务地点移动到下一个任务地点的时候,探索这个充满隐藏物品和隐藏洞穴的世界地图。由于这个游戏的年龄,FreeDink 不能和现代的商业游戏相抗衡,但它仍然是一个拥有着有趣故事的有趣的游戏。游戏可以通过 D-Mods 进行扩展,D-Mods 是提供额外任务的附加模块,但是 D-Mods 在复杂性、质量,和年龄适应性上确实有很大的差异。游戏主要适合青少年,但也有部分额外组件适用于成年玩家。

要安装 FreeDink ,请运行下面的命令。

在 Fedora 上:

dnf install freedink

在 Debian/Ubuntu 上:

apt install freedink

ManaPlus

从技术上讲,ManaPlus 本身并不是一个游戏,它是一个访问各种大型多人在线角色扮演游戏的客户端。The Mana WorldEvol Online 是两款可以通过 ManaPlus 访问的开源游戏,但是游戏的服务器不在那里。这个游戏的 2D 精灵图像让人想起超级任天堂游戏,虽然 ManaPlus 支持的游戏没有一款能像商业游戏那样受欢迎的,但它们都有一个有趣的世界,并且在绝大部分时间里都有至少一小部分玩家在线。一个玩家不太可能遇到很多的其他玩家,但通常都能有足够的人一起在这个 MMORPG 游戏里进行冒险,而不是一个需要连接到服务器的单机游戏。Mana World 和 Evol Online 的开发者联合起来进行未来的开发,但是对于目前而言,Mana World 的历史服务器和 Evol Online 提供了不同的游戏体验。

要安装 ManaPlus,请运行下面的命令。

在 Fedora 上:

dnf install manaplus

在 Debian/Ubuntu 上:

apt install manaplus

Minetest

使用 Minetest 来在一个开放式世界里进行探索和创造,Minetest 是 Minecraft 的克隆品。就像它所基于的 Minecraft 一样,Minetest 提供了一个开放的世界,玩家可以在这个世界里探索和创造他们想要的一切。Minetest 提供了各种各样的方块和工具,对于想要一个比 Minecraft 更加开放的游戏的人来说,Minetest 是一个很好的替代品。除了基本的游戏之外,Minetest 还可以通过额外的模块进行可扩展,增加更多的选项。

如果要安装 Minetest ,请运行下面的命令。

在 Fedora 上:

dnf install minetest

在 Debian/Ubuntu 上:

apt install minetest

NetHack

NetHack 是一款经典的 Roguelike 类型的角色扮演游戏,玩家可以从不同的角色种族、分类和阵营中进行选择,来探索这个多层次的地下城。这个游戏的目的就是找回 Yendor 的护身符,玩家从地下层的第一层开始探索,并尝试向下一层移动,每一层都是随机生成的,这样每次都能获得不同的游戏体验。虽然这个游戏只具有 ASCII 图形和基本图形,但是游戏玩法的深度能够弥补画面的不足。玩家如果想要更好一些的画面的话,可能就需要去查看 NetHack 的 Vulture 了,这个方式可以提供更好的图像、声音和背景音乐。

如果要安装 NetHack ,请运行下面的命令。

在 Fedora 上:

dnf install nethack

在 Debian/Ubuntu 上:

apt install nethack-x11 or apt install nethack-console

我有错过了你最喜欢的角色扮演游戏吗?请在下面的评论区分享出来。


via: https://opensource.com/article/18/8/role-playing-games-linux

作者:Joshua Allen Holm 选题:lujun9972 译者:hopefully2333 校对:wxy

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

回顾过去,2018 年是 Linux 社区的好年景。许多仅在 Windows 和/或 Mac上 有的程序可在 Linux 平台上使用了,而且不用麻烦。向 SnapFlatpak 技术致敬,这些技术已经为 Linux 用户带来了许多“受限制”的程序。

另请阅读很酷的 Linux 程序和工具大全

今天,我们为你提供了一个有名的 Windows 程序列表,你不需要寻找它们的替代品,因为它们已经在 Linux 上可用。

1、Skype

它可以说是世界上最受欢迎的 VoIP 程序,Skype 提供出色的视频和语音通话质量,以及其他功能,如拨打本地和国际电话、固定电话、即时消息、表情符号等功能。

$ sudo snap install skype --classic

2、Spotify

Spotify 是最流行的音乐流媒体平台,在很长一段时间里,Linux 用户需要使用脚本和一些手段才能在他们的机器上设置该程序,感谢 snap,安装和使用 Spotify 就像点击一个按钮那样简单。

$ sudo snap install spotify

3、Minecraft

Minecraft 被证明是一款年度好游戏。更酷的是,它持续地得到维护。如果你不了解 Minecraft,它是一款冒险游戏,它可以让你在一个无限无边的虚拟世界中使用积木创建任何你想创建的虚拟事物。

$ sudo snap install minecraft

4、JetBrains Dev Suite

JetBrains 以其高级的开发 IDE 套件而闻名,他们这个最受欢迎的程序声称可在 Linux 上使用而不会有任何麻烦。

安装 IDEA Community – Java IDE

$ sudo snap install intellij-idea-community --classic

安装 PyCharm EDU – Python IDE

$ sudo snap install pycharm-educational --classic

安装 PhpStorm – PHP IDE

$ sudo snap install phpstorm --classic

安装 WebStorm – JavaScript IDE

$ sudo snap install webstorm --classic

安装 RubyMine – Ruby and Rails IDE

$ sudo snap install rubymine --classic

5、PowerShell

PowerShell 是一个用于管理 PC 自动化和配置的平台,它提供了一个带有相关脚本语言的命令行 shell。如果你认为它仅在 Windows 上可用,那么请再想一想。

$ sudo snap install powershell --classic

6、Ghost

Ghost 是一款现代桌面程序,可让用户在无干扰的环境中管理多个 Ghost 博客、杂志、在线出版物等。

$ sudo snap install ghost-desktop

7、MySQL Workbench

MySQL Workbench 是一个 GUI 程序,用于设计和管理集成 SQL 功能的数据库。

8、PlayOnLinux 中的 Adobe App Suite

你可能错过了我们在 PlayOnLinux 上发表的文章,所以这是另一个了解的机会。

PlayOnLinux 基本上是 wine 的改进版本,允许用户更轻松地安装 Adobe 的创意云程序。请注意,试用和订阅限制仍然适用。

9、Slack

这据说是开发人员和项目经理之间最常用的团队沟通软件,Slack 提供了每个人似乎无法满足的有各种文档和消息管理功能的工作空间。

$ sudo snap install slack --classic

10、Blender

Blender 是最受欢迎的 3D 创作程序之一。它是免费的、开源的,并且支持完整 3D 管道。

$ sudo snap install blender --classic

就是这些了!我们知道列表还有很多,但我们只能列出这么多。我们是否省略了你认为应该将其列入清单的任何程序?在下面的评论栏添加你的建议。


via: https://www.fossmint.com/install-popular-windows-apps-on-linux/

作者:Martins D. Okoi 选题:lujun9972 译者:geekpi 校对:wxy

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

学习一种不同的包管理器和怎么使用它。

如果你在一直在使用 Linux,你很快就会发现做同样的事情有很多不同的方法。这包括通过命令行在 Linux 上安装应用。我已经是大约 25 年的 Linux 用户,我一次又一次地回到命令行来安装我的应用。

从命令行安装应用程序最常用的方法是使用称为包管理器通过软件库(存储软件的地方)安装。所有 Linux 应用都作为软件包分发,这些软件包只不过是与软件包管理系统相关的文件。每个 Linux 发行版都附带一个包管理系统,但它们并不完全相同。

什么是包管理系统?

包管理系统由一组工具和文件格式组成,它们一起用于安装、更新和卸载 Linux 应用。两种最常见的包管理系统来自 Red Hat 和 Debian。 Red Hat、CentOS 和 Fedora 都使用 rpm 系统(.rpm 文件),而 Debian、Ubuntu、Mint 和 Ubuntu 都使用 dpkg(.deb 文件)。Gentoo Linux 使用名为 Portage 的系统,Arch Linux 只使用 tarball(.tar 文件)。这些系统之间的主要区别在于它们如何安装和维护应用。

你可能想知道 .rpm.deb.tar 文件中的内容。你可能会惊讶地发现,所有这些都只是普通的老式归档文件(如 .zip),其中包含应用的代码,如何安装它的说明,依赖项(它可能依赖的其他应用),以及配置文件的位置。读取和执行所有这些指令的软件称为包管理器。

Debian、Ubuntu、Mint 等

Debian、Ubuntu、Mint 和其它基于 Debian 的发行版都使用 .deb 文件和 dpkg 包管理系统。有两种方法可以通过此系统安装应用。你可以使用 apt 程序从仓库进行安装,也可以使用 dpkg 程序从 .deb 文件安装应用。我们来看看如何做到这两点。

使用 apt 安装应用非常简单:

$ sudo apt install app_name

通过 apt 卸载应用也非常简单:

$ sudo apt remove app_name

要升级已安装的应用,首先需要更新应用仓库:

$ sudo apt update

完成后,你可以使用以下命令更新任何程序:

$ sudo apt upgrade

如果你只想更新一个应用,该怎么办?没问题。

$ sudo apt update app_name

最后,假设你要安装的应用不存在于 Debian 仓库中,但有 .deb 下载。

$ sudo dpkg -i app_name.deb

Red Hat、CentOS 和 Fedora

默认情况下,Red Hat 使用多个包管理系统。这些系统在使用自己的命令时,互相仍然非常相似,而且与 Debian 中使用的也相似。例如,我们可以使用 yumdnf 管理器来安装应用。

$ sudo yum install app_name
$ sudo dnf install app_name

.rpm 格式的应用也可以使用 rpm 命令安装。

$ sudo rpm -i app_name.rpm

删除不需要的应用同样容易。

$ sudo yum remove app_name
$ sudo dnf remove app_name

更新应用同样容易。

$ yum update
$ sudo dnf upgrade --refresh

如你所见,从命令行安装、卸载和更新 Linux 应用并不难。事实上,一旦你习惯它,你会发现它比使用基于桌面 GUI 的管理工具更快!

有关从命令行安装应用程序的更多信息,请访问 Debian Apt wikiYum 速查表DNF wiki


via: https://opensource.com/article/18/8/how-install-software-linux-command-line

作者:Patrick H.Mullins 选题:lujun9972 译者:geekpi 校对:wxy

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

通过 GitLab 或 GitHub Pages 来提供一个 WordPress 镜像站点, 从而最小化安全问题。

很久以前,我为一个家庭成员建立了一个 WordPress 博客。如今有很多选择,但是当时如果你需要一个带有所见即所得的编辑器的基于 Web 的 CMS,那么就没什么像样的的选择了。而一切运行良好的不幸的副作用是随着时间的推移该博客产生了很多内容。这意味着我要经常更新 WordPress 以防止不断出现的漏洞。

因此,当我决定劝说家人切换到 Hugo 会相对容易,然后可以在 GitLab 上托管博客。但是尝试提取所有内容并将其转换为 Markdown 变成了一个巨大的麻烦。有自动脚本完成了 95% 的工作,但并不完美。手动更新所有帖子不是我想做的事情,所以最终,我放弃了试图移动博客。

最近,我又开始考虑这个问题,并意识到有一个我没有考虑过的解决方案:我可以继续维护 WordPress 服务器,但将其设置为发布静态镜像,并使用 GitLab Pages(或 GitHub Pages ,如果你喜欢的话)提供服务。这能让我自动化 Let’s Encrypt 证书续订并消除与托管 WordPress 站点相关的安全问题。然而,这意味着评论将无法使用,但在这种情况下感觉就像是一个小损失,因为博客没有收到很多评论。

这是我提出的解决方案,到目前为止似乎运作良好:

  • 托管 WordPress 站点中的 URL 没有链接到或来自其他任何地方,以减少它被利用的几率。在此例中,我们将使用 http://private.localconspiracy.com(即使此站点实际上是使用 Pelican 构建的)。
  • 将公共 URL https://www.localconspiracy.com 托管到 GitLab Pages 上
  • 添加 cron 任务,确定两个 URL 之间的最后构建日期何时不同。如果构建日期不同,则镜像 WordPress 版本。
  • 使用 wget 镜像后,将所有链接从“私有”更新成“公共”。
  • 运行 git push 来发布新内容。

这是我使用的两个脚本:

check-diff.sh (cron 每 15 分钟调用一次):

#!/bin/bash

ORIGINDATE="$(curl -v --silent http://private.localconspiracy.com/feed/ 2>&1|grep lastBuildDate)"
PUBDATE="$(curl -v --silent https://www.localconspiracy.com/feed/ 2>&1|grep lastBuildDate)"

if [ "$ORIGINDATE" !=  "$PUBDATE" ]
then
  /home/doc/repos/localconspiracy/mirror.sh
fi

mirror.sh

#!/bin/sh

cd /home/doc/repos/localconspiracy

wget \
--mirror \
--convert-links  \
--adjust-extension \
--page-requisites  \
--retry-connrefused  \
--exclude-directories=comments \
--execute robots=off \
http://private.localconspiracy.com

git rm -rf public/*
mv private.localconspiracy.com/* public/.
rmdir private.localconspiracy.com
find ./public/ -type f -exec sed -i -e 's|http://private.localconspiracy|https://www.localconspiracy|g' {} \;
find ./public/ -type f -exec sed -i -e 's|http://www.localconspiracy|https://www.localconspiracy|g' {} \;
git add public/*
git commit -m "new snapshot"
git push origin master

就是这些了!现在,当博客发生变化时,在 15 分钟内将网站镜像到静态版本并推送到仓库,这将在 GitLab Pages 中反映出来。

如果你想在本地运行 WordPress,这个概念可以进一步扩展。在这种情况下,你不需要服务器来托管你的 WordPress 博客。你可以在本机运行它。在这种情况下,你的博客不可能被攻击利用。只要你可以在本地运行 wget,就可以使用上面的方法在 GitLab Pages 上托管 WordPress 站点。

这篇文章最初发表于 Local Conspiracy。允许转载。


via: https://opensource.com/article/18/8/publish-wordpress-static-gitlab-pages-site

作者:Christopher Aedo 选题:lujun9972 译者:geekpi 校对:wxy

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

要在命令间移动数据?使用管道可使此过程便捷。

在 Linux 中,pipe 能让你将一个命令的输出发送给另一个命令。管道,如它的名称那样,能重定向一个进程的标准输出、输入和错误到另一个进程,以便于进一步处理。

“管道”(或称“未命名管道”)命令的语法是在两个命令之间加上 | 字符:

Command-1 | Command-2 | ...| Command-N

这里,该管道不能通过另一个会话访问;它被临时创建用于接收 Command-1 的执行并重定向标准输出。它在成功执行之后删除。

在上面的示例中,contents.txt 包含特定目录中所有文件的列表 —— 具体来说,就是 ls -al 命令的输出。我们首先通过管道(如图所示)使用 “file” 关键字从 contents.txtgrep 文件名,因此 cat 命令的输出作为 grep 命令的输入提供。接下来,我们添加管道来执行 awk 命令,该命令显示 grep 命令的过滤输出中的第 9 列。我们还可以使用 wc -l 命令计算 contents.txt 中的行数。

只要系统启动并运行或直到它被删除,命名管道就可以持续使用。它是一个遵循 FIFO)(先进先出)机制的特殊文件。它可以像普通文件一样使用。也就是,你可以写入,从中读取,然后打开或关闭它。要创建命名管道,命令为:

mkfifo <pipe-name>

这将创建一个命名管道文件,它甚至可以在多个 shell 会话中使用。

创建 FIFO 命名管道的另一种方法是使用此命令:

mknod p <pipe-name>

要重定向任何命令的标准输出到其它命令,请使用 > 符号。要重定向任何命令的标准输入,请使用 < 符号。

如上所示,ls -al 命令的输出被重定向到 contents.txt 并插入到文件中。类似地,tail 命令的输入通过 < 符号从 contents.txt 读取。

这里,我们创建了一个命名管道 my-named-pipe,并将 ls -al 命令的输出重定向到命名管道。我们可以打开一个新的 shell 会话并 cat 命名管道的内容,如前所述,它显示了 ls -al 命令的输出。请注意,命名管道的大小为零,并有一个标志 “p”。

因此,下次你在 Linux 终端上使用命令并在命令之间移动数据时,希望管道使这个过程快速简便。


via: https://opensource.com/article/18/8/introduction-pipes-linux

作者:Archit Modi 选题:lujun9972 译者:geekpi 校对:wxy

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