删除一个目录下部分类型之外的所有文件的三种方法

Summary: 我们将会向你展现如何通过 rm、 find 和 globignore 命令删除一个目录下除了指定文件扩展名或者类型的之外的文件。

顶起

xargs (1)            - build and execute command lines from standard input

# 删除一个目录下部分类型之外的所有文件的三种方法

有的时候，你可能会遇到这种情况，你需要删除一个目录下的所有文件，或者只是简单的通过删除除了一些指定类型（以指定扩展名结尾）之外的文件来清理一个目录。

在这篇文章，我们将会向你展现如何通过 `rm`、 `find` 和 `globignore` 命令删除一个目录下除了指定文件扩展名或者类型的之外的文件。

在我们进一步深入之前，让我们开始简要的了解一下 Linux 中的一个重要的概念 —— 文件名模式匹配，它可以让我们解决眼前的问题。

在 Linux 下，一个 shell 模式是一个包含以下特殊字符的字符串，称为通配符或者元字符：

1. `*` – 匹配 0 个或者多个字符
2. `?` – 匹配任意单个字符
3. `[序列]` – 匹配序列中的任意一个字符
4. `[!序列]` – 匹配任意一个不在序列中的字符

我们将在这儿探索三种可能的办法，包括：

### 使用扩展模式匹配操作符删除文件

下来列出了不同的扩展模式匹配操作符，这些模式列表是一个用 `|` 分割包含一个或者多个文件名的列表：

1. `*(模式列表)` – 匹配 0 个或者多个出现的指定模式
2. `?(模式列表)` – 匹配 0 个或者 1 个出现的指定模式
3. `@(模式列表)` – 匹配 1 个或者多个出现的指定模式
4. `!(模式列表)` – 匹配除了一个指定模式之外的任何内容

为了使用它们，需要像下面一样打开 extglob shell 选项：

```
# shopt -s extglob

```

**1. 输入以下命令，删除一个目录下除了 filename 之外的所有文件**

```
$ rm -v !("filename")

```

*删除 Linux 下除了一个文件之外的所有文件*

**2. 删除除了 filename1 和 filename2 之外的所有文件**

```
$ rm -v !("filename1"|"filename2")

```

*在 Linux 下删除除了一些文件之外的所有文件*

**3. 下面的例子显示如何通过交互模式删除除了 `.zip` 之外的所有文件**

```
$ rm -i !(*.zip)

```

*在 Linux 下删除除了 Zip 文件之外的所有文件*

**4. 接下来，通过如下的方式你可以删除一个目录下除了所有的`.zip` 和 `.odt` 文件的所有文件，并且在删除的时候，显示正在删除的文件：**

```
$ rm -v !(*.zip|*.odt)

```

*删除除了指定文件扩展的所有文件*

一旦你已经执行了所有需要的命令，你还可以使用如下的方式关闭 extglob shell 选项。

```
$ shopt -u extglob

```

### 使用 Linux 下的 find 命令删除文件

在这种方法下，我们可以[只使用 find 命令](http://www.tecmint.com/35-practical-examples-of-linux-find-command/)的适当的选项或者采用管道配合 `xargs` 命令，如下所示：

```
$ find /directory/ -type f -not -name 'PATTERN' -delete
$ find /directory/ -type f -not -name 'PATTERN' -print0 | xargs -0 -I {} rm {}
$ find /directory/ -type f -not -name 'PATTERN' -print0 | xargs -0 -I {} rm [options] {}

```

**5. 下面的命令将会删除当前目录下除了 `.gz` 之外的所有文件**

```
$ find . -type f -not -name '*.gz' -delete

```

*find 命令 —— 删除 .gz 之外的所有文件*

**6. 使用管道和 xargs，你可以通过如下的方式修改上面的例子：**

```
$ find . -type f -not -name '*gz' -print0 | xargs -0  -I {} rm -v {}

```

*使用 find 和 xargs 命令删除文件*

**7. 让我们看一个额外的例子，下面的命令行将会删除掉当前目录下除了 `.gz`、 `.odt` 和 `.jpg` 之外的所有文件：**

```
$ find . -type f -not \(-name '*gz' -or -name '*odt' -or -name '*.jpg' \) -delete

```

*删除除了指定扩展文件的所有文件*

### 通过 bash 中的 GLOBIGNORE 变量删除文件

然而，最后的方法，只适用于 bash。 `GLOBIGNORE` 变量存储了一个<ruby> 路径名展开 <rp>  （ </rp> <rt>  pathname expansion </rt> <rp>  ） </rp></ruby>功能的忽略模式（或文件名）列表，以冒号分隔。

为了使用这种方法，切换到要删除文件的目录，像下面这样设置 `GLOBIGNORE` 变量：

```
$ cd test
$ GLOBIGNORE=*.odt:*.iso:*.txt

```

在这种情况下，除了 `.odt`、 `.iso` 和 `.txt` 之外的所有文件，都将从当前目录删除。

现在，运行如下的命令清空这个目录：

```
$ rm -v *

```

之后，关闭 `GLOBIGNORE` 变量：

```
$ unset GLOBIGNORE

```

*使用 bash 变量 GLOBIGNORE 删除文件*

注：为了理解上面的命令行采用的标识的意思，请参考我们在每一个插图中使用的命令对应的 man 手册。

就这些了！如果你知道有实现相同目录的其他命令行技术，不要忘了通过下面的反馈部分分享给我们。

---

via: <http://www.tecmint.com/delete-all-files-in-directory-except-one-few-file-extensions/>

作者：[Aaron Kili](http://www.tecmint.com/author/aaronkili/) 译者：[yangmingming](https://github.com/yangmingming) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


2016 年 Linux 下五个最佳视频编辑软件

Summary: 如果你需要一个简单的视频编辑器，OpenShot、Kdenlive 和 Flowblade 是一个不错的选择。这些软件是适合初学者的，并且带有标准规范的系统。如果你有一个高性能的计算机，并且需要高级功能，你可以使用 Lightworks。如果你正在寻找更高级的功能， Blender 可以帮助你。

作者居然混淆了非线软件和3D软件,,,,

一声叹息....

还有Lightworks  真心不好用.......

还有shotcut也还不错~

还是Lightworks 好

Blender当然可以编辑视频，功能强大得很 。

Blender拿来处理视频很专业，我在Xubuntu中用的就是Blender

我个人感觉，相对Blender而言，Kdenlive、OpenShot、Shotcut、Flowblade Movie Editor就是玩具而已。

Lightworks我没用过，免费版功能很有限；付费升级成Lightworks Pro价格不菲。

喉，不才请教下大虾关于Blender的视频编辑

1.怎么在Blender视频编辑器的时间线上添加音频轨道或者视频轨道？是要转到序列编辑器？

2.怎么把一段视频的音频和视频分开？

3.怎么在两端视频之间做淡入淡出？

4.怎么裁切一段视频？比如把1280x720裁成1000x720，而不是缩放？

5.怎么导出webm？

6.怎么导入flv或f4v?

7.怎么在视频一角做动态马赛克效果？

本人小白，还望不吝赐教～拜谢

何必在这问这么多问题<br />
网上铺天盖地的教程你可以去看看

正是因为找不到教程，软件设置成了中文也还是不会用才请教高手的阿

# 2016 年 Linux 下五个最佳视频编辑软件

概要: 在这篇文章中，Tiwo 讨论了 Linux 下最佳视频编辑器的优缺点和在基于 Ubuntu 的发行版中的安装方法。

在过去，我们已经在类似的文章中讨论了 [Linux 下最佳图像管理应用软件](/article-7462-1.html)，[Linux 上四个最佳的现代开源代码编辑器](/article-7468-1.html)。今天，我们来看看 Linux 下的最佳视频编辑软件。

当谈及免费的视频编辑软件，Windows Movie Maker 和 iMovie 是大多数人经常推荐的。

不幸的是，它们在 GNU/Linux 下都是不可用的。但是你不必担心这个，因为我们已经为你收集了一系列最佳的视频编辑器。

### Linux下最佳的视频编辑应用程序

接下来，让我们来看看 Linux 下排名前五的最佳视频编辑软件：

#### 1. Kdenlive

[Kdenlive](https://kdenlive.org/) 是一款来自于 KDE 的自由而开源的视频编辑软件，它提供双视频监视器、多轨时间轴、剪辑列表、可自定义的布局支持、基本效果和基本转换的功能。

它支持各种文件格式和各种摄像机和相机，包括低分辨率摄像机（Raw 和 AVI DV 编辑）：mpeg2、mpeg4 和 h264 AVCHD（小型摄像机和摄像机）；高分辨率摄像机文件，包括 HDV 和 AVCHD 摄像机；专业摄像机，包括 XDCAM-HD TM 流、IMX TM （D10）流、DVCAM（D10）、DVCAM、DVCPRO TM 、DVCPRO50 TM 流和 DNxHD TM 流等等。

你可以在命令行下运行下面的命令安装 :

```
sudo apt-get install kdenlive

```

或者，打开 Ubuntu 软件中心，然后搜索 Kdenlive。

#### 2. OpenShot

[OpenShot](http://www.openshot.org/) 是我们这个 Linux 视频编辑软件列表中的第二选择。 OpenShot 可以帮助您创建支持过渡、效果、调整音频电平的电影，当然，它也支持大多数格式和编解码器。

您还可以将电影导出到 DVD，上传到 YouTube、Vimeo、Xbox 360 和许多其他常见的格式。 OpenShot 比 Kdenlive 更简单。 所以如果你需要一个简单界面的视频编辑器，OpenShot 会是一个不错的选择。

最新的版本是 2.0.7。您可以从终端窗口运行以下命令安装 OpenShot 视频编辑器：

```
sudo apt-get install openshot

```

它需要下载 25 MB，安装后需要 70 MB 硬盘空间。

#### 3. Flowblade Movie Editor

[Flowblade Movie Editor](http://jliljebl.github.io/flowblade/) 是一个用于 Linux 的多轨非线性视频编辑器。它是自由而开源的。 它配备了一个时尚而现代的用户界面。

它是用 Python 编写的，旨在提供一个快速、精确的功能。 Flowblade 致力于在 Linux 和其他自由平台上提供最好的体验。 所以现在没有 Windows 和 OS X 版本。

要在 Ubuntu 和其他基于 Ubuntu 的系统上安装 Flowblade，请使用以下命令：

```
sudo apt-get install flowblade

```

#### 4. Lightworks

如果你要寻找一个有更多功能的视频编辑软件，这会是答案。 [Lightworks](https://www.lwks.com/) 是一个跨平台的专业的视频编辑器，在 Linux、Mac OS X 和 Windows 系统下都可用。

它是一个获奖的专业的[非线性编辑](https://en.wikipedia.org/wiki/Non-linear_editing_system)（NLE）软件，支持高达 4K 的分辨率以及标清和高清格式的视频。

该应用程序有两个版本：Lightworks 免费版和 Lightworks 专业版。不过免费版本不支持 Vimeo（H.264 / MPEG-4）和 YouTube（H.264 / MPEG-4） - 高达 2160p（4K UHD）、蓝光和 H.264 / MP4 导出选项，以及可配置的位速率设置，但是专业版本支持。

* Lightworks 免费版
* Lightworks 专业版

专业版本有更多的功能，例如更高的分辨率支持，4K 和蓝光支持等。

##### 怎么安装Lightworks？

不同于其他的视频编辑器，安装 Lightwork 不像运行单个命令那么直接。别担心，这不会很复杂。

* 第1步 – 你可以从 [Lightworks 下载页面](https://www.lwks.com/index.php?option=com_lwks&view=download&Itemid=206)下载安装包。这个安装包大约 79.5MB。*请注意：这里没有32 位 Linux 的支持。*
* 第2步 – 一旦下载，你可以使用 [Gdebi 软件包安装器](https://itsfoss.com/gdebi-default-ubuntu-software-center/)来安装。Gdebi 会自动下载依赖关系 :
* 第3步 – 现在你可以从 Ubuntu 仪表板或您的 Linux 发行版菜单中打开它。
* 第4步 – 当你第一次使用它时，需要一个账号。点击 “Not Registerd?” 按钮来注册。别担心，它是免费的。
* 第5步 – 在你的账号通过验证后，就可以登录了。

现在，Lightworks 可以使用了。

需要 Lightworks 的视频教程？ 在 [Lightworks 视频教程页](https://www.lwks.com/videotutorials)得到它们。

#### 5. Blender

Blender 是一个专业的，工业级的开源、跨平台的视频编辑器。在 3D 作品的制作中，是非常受欢迎的。 Blender 已被用于几部好莱坞电影的制作，包括蜘蛛侠系列。

虽然最初是设计用于制作 3D 模型，但它也可以用于各种格式的视频编辑和输入能力。 该视频编辑器包括：

* 实时预览、亮度波形、色度矢量示波器和直方图显示
* 音频混合、同步、擦除和波形可视化
* 多达 32 个插槽用于添加视频、图像、音频、场景、面具和效果
* 速度控制、调整图层、过渡、关键帧、过滤器等

最新的版本可以从 [Blender 下载页](https://www.blender.org/download/)下载.

### 哪一个是最好的视频编辑软件？

如果你需要一个简单的视频编辑器，OpenShot、Kdenlive 和 Flowblade 是一个不错的选择。这些软件是适合初学者的，并且带有标准规范的系统。

如果你有一个高性能的计算机，并且需要高级功能，你可以使用 Lightworks。如果你正在寻找更高级的功能， Blender 可以帮助你。

这就是我写的 5 个最佳的视频编辑软件，它们可以在 Ubuntu、Linux Mint、Elementary 和其他 Linux 发行版下使用。 请与我们分享您最喜欢的视频编辑器。

---

via: <https://itsfoss.com/best-video-editing-software-linux/>

作者：[Tiwo Satriatama](https://itsfoss.com/author/tiwo/) 译者：[DockerChen](https://github.com/DockerChen) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出


为满足当今和未来 IT 需求，培训员工还是雇佣新人？

# 为满足当今和未来 IT 需求，培训员工还是雇佣新人？

在数字化时代，由于 IT 工具不断更新，技术公司紧随其后，对 IT 技能的需求也不断变化。对于企业来说，寻找和雇佣那些拥有令人垂涎能力的创新人才，是非常不容易的。同时，培训内部员工来使他们接受新的技能和挑战，需要一定的时间，而时间要求常常是紧迫的。

[Sandy Hill](https://enterprisersproject.com/user/sandy-hill) 对 IT 涉及到的多项技术都很熟悉。她作为 [Pegasystems](https://www.pega.com/pega-can?&utm_source=google&utm_medium=cpc&utm_campaign=900.US.Evaluate&utm_term=pegasystems&gloc=9009726&utm_content=smAXuLA4U%7Cpcrid%7C102822102849%7Cpkw%7Cpegasystems%7Cpmt%7Ce%7Cpdv%7Cc%7C) 项目的 IT 总监，负责多个 IT 团队，从应用的部署到数据中心的运营都要涉及。更重要的是，Pegasystems 开发帮助销售、市场、服务以及运营团队流水化操作，以及客户联络的应用。这意味着她需要掌握使用 IT 内部资源的最佳方法，面对公司客户遇到的 IT 挑战。

**TEP（企业家项目）：这些年你是如何调整培训重心的？**

**Hill**：在过去的几年中，我们经历了爆炸式的发展，现在我们要实现更多的全球化进程。因此，培训目标是确保每个人都在同一起跑线上。

我们主要的关注点在培养员工使用新产品和工具上，这些新产品和工具能够推动创新，提高工作效率。例如，我们使用了之前没有的资产管理系统。因此我们需要为全部员工做培训，而不是雇佣那些已经知道该产品的人。当我们正在发展的时候，我们也试图保持紧张的预算和稳定的职员总数。所以，我们更愿意在内部培训而不是雇佣新人。

**TEP：说说培训方法吧，怎样帮助你的员工发展他们的技能？**

**Hill**：我要求每一位员工制定一个技术性的和非技术性的训练目标。这作为他们绩效评估的一部分。他们的技术性目标需要与他们的工作职能相符，非技术岗目标则随意，比如着重发展一项软技能，或是学一些专业领域之外的东西。我每年对职员进行一次评估，看看差距和不足之处，以使团队保持全面发展。

**TEP：你的训练计划能够在多大程度上减轻招聘工作量, 保持职员的稳定性？**

**Hill**：使我们的职员保持学习新技术的兴趣，可以让他们不断提高技能。让职员知道我们重视他们并且让他们在擅长的领域成长和发展，以此激励他们。

**TEP：你们发现哪些培训是最有效的？**

**HILL**：我们使用几种不同的培训方法，认为效果很好。对新的或特殊的项目，我们会由供应商提供培训课程，作为项目的一部分。要是这个方法不能实现，我们将进行脱产培训。我们也会购买一些在线的培训课程。我也鼓励职员每年参加至少一次会议，以了解行业的动向。

**TEP：哪些技能需求，更适合雇佣新人而不是培训现有员工？**

**Hill**：这和项目有关。最近有一个项目，需要使用 OpenStack，而我们根本没有这方面的专家。所以我们与一家从事这一领域的咨询公司合作。我们利用他们的专业人员运行该项目，并现场培训我们的内部团队成员。让内部员工学习他们需要的技能，同时还要完成他们的日常工作，是一项艰巨的任务。

顾问帮助我们确定我们需要的员工人数。这样我们就可以对员工进行评估，看是否存在缺口。如果存在人员上的缺口，我们还需要额外的培训或是员工招聘。我们也确实雇佣了一些合同工。另一个选择是对一些全职员工进行为期六至八周的培训，但我们的项目模式不容许这么做。

**TEP：最近雇佣的员工，他们的那些技能特别能够吸引到你？**

**Hill**：在最近的招聘中，我更看重软技能。除了扎实的技术能力外，他们需要能够在团队中进行有效的沟通和工作，要有说服他人，谈判和解决冲突的能力。

IT 人常常独来独往，不擅社交。然而如今IT 与整个组织结合越来越紧密，为其他业务部门提供有用的更新和状态报告的能力至关重要，可展示 IT 部门存在的重要性。

---

via: <https://enterprisersproject.com/article/2016/6/training-vs-hiring-meet-it-needs-today-and-tomorrow>

作者：[Paul Desmond](https://enterprisersproject.com/user/paul-desmond) 译者：[Cathon](https://github.com/Cathon) 校对：[jasminepeng](https://github.com/jasminepeng)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


宽松开源许可证的崛起意味着什么

Summary: 为什么像 GNU GPL 这样的限制性许可证越来越不受青睐。

GPL可以用隔离层隔离开来，就不用开源了

好东西为什么一定要开源： 第一：你的创造很可能被别人剽窃，而你却被埋没了。 第二，发布记录就是自己的成长记录。 第三，帮助自己找到更好的协作者和团队，而且是无成本的。 第四，你的发布将像生命一样进化

(⊙o⊙)…

不行的,除非你所谓的隔离层是单独的一个应用程序.

但99%可能用到的的GPL协议的库,这个有违你使用它的初衷.

你用到GPL的还得单独打包.

是可以用隔离层，将 GPL 代码封装起来，然后隔离层和你的程序采用 RPC、WS 等 API 方式来通讯。分发的时候，单独分发。<br />
Android 的 HAL 就是类似解决了 GPL 的传染性。

为什么像 GNU GPL 这样的限制性许可证越来越不受青睐。

# 宽松开源许可证的崛起意味着什么

为什么像 GNU GPL 这样的限制性许可证越来越不受青睐。

“如果你用了任何开源软件， 那么你软件的其他部分也必须开源。” 这是微软前 CEO 巴尔默 2001 年说的， 尽管他说的不对， 还是引发了人们对自由软件的 FUD （<ruby> 恐惧， 不确定和怀疑 <rp>  （ </rp> <rt>  fear, uncertainty and doubt </rt> <rp>  ） </rp></ruby>）。 大概这才是他的意图。

对开源软件的这些 FUD 主要与开源许可有关。 现在有许多不同的许可证， 当中有些限制比其他的更严格（也有人称“更具保护性”）。 诸如 GNU 通用公共许可证 （GPL） 这样的限制性许可证使用了 copyleft 的概念。 copyleft 赋予人们自由发布软件副本和修改版的权力， 只要衍生工作保留同样的权力。 bash 和 GIMP 等开源项目就是使用了 GPL(v3)。 还有一个 AGPL（ Affero GPL） 许可证， 它为网络上的软件（如 web service）提供了 copyleft 许可。

这意味着， 如果你使用了这种许可的代码， 然后加入了你自己的专有代码， 那么在一些情况下， 整个代码， 包括你的代码也就遵从这种限制性开源许可证。 Ballmer 说的大概就是这类的许可证。

但宽松许可证不同。 比如， 只要保留版权声明和许可声明且不要求开发者承担责任， MIT 许可证允许任何人任意使用开源代码， 包括修改和出售。 另一个比较流行的宽松开源许可证是 Apache 许可证 2.0，它还包含了贡献者向用户提供专利授权相关的条款。 使用 MIT 许可证的有 JQuery、.NET Core 和 Rails ， 使用 Apache 许可证 2.0 的软件包括安卓， Apache 和 Swift。

两种许可证类型最终都是为了让软件更有用。 限制性许可证促进了参与和分享的开源理念， 使每一个人都能从软件中得到最大化的利益。 而宽松许可证通过允许人们任意使用软件来确保人们能从软件中得到最多的利益， 即使这意味着他们可以使用代码， 修改它， 据为己有，甚至以专有软件出售，而不做任何回报。

开源许可证管理公司黑鸭子软件的数据显示， 去年使用最多的开源许可证是限制性许可证 GPL 2.0，份额大约 25%。 宽松许可证 MIT 和 Apache 2.0 次之， 份额分别为 18% 和 16%， 再后面是 GPL 3.0, 份额大约 10%。 这样来看， 限制性许可证占 35%， 宽松许可证占 34%， 几乎是平手。

但这份当下的数据没有揭示发展趋势。黑鸭子软件的数据显示， 从 2009 年到 2015 年的六年间， MIT 许可证的份额上升了 15.7%， Apache 的份额上升了 12.4%。 在这段时期， GPL v2 和 v3 的份额惊人地下降了 21.4%。 换言之， 在这段时期里， 大量软件从限制性许可证转到宽松许可证。

这个趋势还在继续。 黑鸭子软件的[最新数据](https://www.blackducksoftware.com/top-open-source-licenses)显示， MIT 现在的份额为 26%， GPL v2 为 21%， Apache 2 为 16%， GPL v3 为 9%。 即 30% 的限制性许可证和 42% 的宽松许可证－－与前一年的 35% 的限制许可证和 34% 的宽松许可证相比， 发生了重大的转变。 对 GitHub 上使用许可证的[调查研究](https://github.com/blog/1964-open-source-license-usage-on-github-com)证实了这种转变。 它显示 MIT 以压倒性的 45% 占有率成为最流行的许可证， 与之相比， GPL v2 只有 13%， Apache 11%。

### 引领趋势

从限制性许可证到宽松许可证，这么大的转变背后是什么呢？ 是公司害怕如果使用了限制性许可证的软件，他们就会像巴尔默说的那样，失去自己私有软件的控制权了吗？ 事实上， 可能就是如此。 比如， Google 就[禁用了 Affero GPL 软件](http://www.theregister.co.uk/2011/03/31/google_on_open_source_licenses/)。

[Instructional Media + Magic](http://immagic.com/) 的主席 Jim Farmer， 是一个教育开源技术的开发者。 他认为很多公司为避免法律问题而不使用限制性许可证。 “问题就在于复杂性。 许可证的复杂性越高， 被他人因为某行为而告上法庭的可能性越高。 高复杂性更可能带来诉讼”， 他说。

他补充说， 这种对限制性许可证的恐惧正被律师们驱动着， 许多律师建议自己的客户使用 MIT 或 Apache 2.0 许可证的软件， 并明确反对使用 Affero 许可证的软件。

他说， 这会对软件开发者产生影响， 因为如果公司都避开限制性许可证软件的使用，开发者想要自己的软件被使用， 就更会把新的软件使用宽松许可证。

但 SalesAgility（开源 SuiteCRM 背后的公司）的 CEO Greg Soper 认为这种到宽松许可证的转变也是由一些开发者驱动的。 “看看像 Rocket.Chat 这样的应用。 开发者本可以选择 GPL 2.0 或 Affero 许可证， 但他们选择了宽松许可证，” 他说。 “这样可以给这个应用最大的机会， 因为专有软件厂商可以使用它， 不会伤害到他们的产品， 且不需要把他们的产品也使用开源许可证。 这样如果开发者想要让第三方应用使用他的应用的话， 他有理由选择宽松许可证。”

Soper 指出， 限制性许可证致力于帮助开源项目获得成功，方式是阻止开发者拿了别人的代码、做了修改，但不把结果回报给社区。 “Affero 许可证对我们的产品健康发展很重要， 因为如果有人利用了我们的代码开发，做得比我们好， 却又不把代码回报回来， 就会扼杀掉我们的产品，” 他说。 “ 对 Rocket.Chat 则不同， 因为如果它使用 Affero， 那么它会污染公司的知识产权， 所以公司不会使用它。 不同的许可证有不同的使用案例。”

曾在 Gnome、OpenOffice 工作过，现在是 LibreOffice 的开源开发者的 Michael Meeks 同意 Jim Farmer 的观点，认为许多公司确实出于对法律的担心，而选择使用宽松许可证的软件。 “copyleft 许可证有风险， 但同样也有巨大的益处。 遗憾的是人们都听从律师的， 而律师只是讲风险， 却从不告诉你有些事是安全的。”

巴尔默发表他的错误言论已经过去 15 年了， 但它产生的 FUD 还是有影响－－即使从限制性许可证到宽松许可证的转变并不是他的目的。

---

via: <http://www.cio.com/article/3120235/open-source-tools/what-the-rise-of-permissive-open-source-licenses-means.html>

作者：[Paul Rubens](http://www.cio.com/author/Paul-Rubens/) 译者：[willcoderwang](https://github.com/willcoderwang) 校对：[jasminepeng](https://github.com/jasminepeng)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


如何在 Linux 中将文件编码转换为 UTF-8

经测试，windows notepad 保存的中文文件 (默认的ASCII码保存)，

在linux下使用 file -i 检测到为ISO-8859-1的编码，

但是如果直接使用 iconv -f ISO-8859-1 -t UTF-8 转换后仍然是乱码，

而指定为 -f GBK 或者 -f GB18030 或者 -f cp936 则都是可以成功转换的为中文显示；

那是因为这篇文章是外国人写的，他们的windows编码是8859-1

# 如何在 Linux 中将文件编码转换为 UTF-8

在这篇教程中，我们将解释字符编码的含义，然后给出一些使用命令行工具将使用某种字符编码的文件转化为另一种编码的例子。最后，我们将一起看一看如何在 Linux 下将使用各种字符编码的文件转化为 UTF-8 编码。

你可能已经知道，计算机除了二进制数据，是不会理解和存储字符、数字或者任何人类能够理解的东西的。一个二进制位只有两种可能的值，也就是 `0` 或 `1`，`真`或`假`，`是`或`否`。其它的任何事物，比如字符、数据和图片，必须要以二进制的形式来表现，以供计算机处理。

简单来说，字符编码是一种可以指示电脑来将原始的 0 和 1 解释成实际字符的方式，在这些字符编码中，字符都以一串数字来表示。

字符编码方案有很多种，比如 ASCII、ANCI、Unicode 等等。下面是 ASCII 编码的一个例子。

```
字符            二进制
A               01000001
B               01000010

```

在 Linux 中，命令行工具 `iconv` 用来将使用一种编码的文本转化为另一种编码。

你可以使用 `file` 命令，并添加 `-i` 或 `--mime` 参数来查看一个文件的字符编码，这个参数可以让程序像下面的例子一样输出字符串的 mime (Multipurpose Internet Mail Extensions) 数据：

```
$ file -i Car.java
$ file -i CarDriver.java

```

*在 Linux 中查看文件的编码*

iconv 工具的使用方法如下：

```
$ iconv option
$ iconv options -f from-encoding -t to-encoding inputfile(s) -o outputfile

```

在这里，`-f` 或 `--from-code` 表明了输入编码，而 `-t` 或 `--to-encoding` 指定了输出编码。

为了列出所有已有编码的字符集，你可以使用以下命令：

```
$ iconv -l

```

*列出所有已有编码字符集*

### 将文件从 ISO-8859-1 编码转换为 UTF-8 编码

下面，我们将学习如何将一种编码方案转换为另一种编码方案。下面的命令将会将 ISO-8859-1 编码转换为 UTF-8 编码。

考虑如下文件 `input.file`，其中包含这几个字符：

```
� � � �

```

我们从查看这个文件的编码开始，然后来查看文件内容。最后，我们可以把所有字符转换为 UTF-8 编码。

在运行 `iconv` 命令之后，我们可以像下面这样检查输出文件的内容，和它使用的字符编码。

```
$ file -i input.file
$ cat input.file
$ iconv -f ISO-8859-1 -t UTF-8//TRANSLIT input.file -o out.file
$ cat out.file
$ file -i out.file

```

*在 Linux 中将 ISO-8859-1 转化为 UTF-8*

注意：如果输出编码后面添加了 `//IGNORE` 字符串，那些不能被转换的字符将不会被转换，并且在转换后，程序会显示一条错误信息。

好，如果字符串 `//TRANSLIT` 被添加到了上面例子中的输出编码之后 (`UTF-8//TRANSLIT`)，待转换的字符会尽量采用形译原则。也就是说，如果某个字符在输出编码方案中不能被表示的话，它将会被替换为一个形状比较相似的字符。

而且，如果一个字符不在输出编码中，而且不能被形译，它将会在输出文件中被一个问号标记 `?` 代替。

### 将多个文件转换为 UTF-8 编码

回到我们的主题。如果你想将多个文件甚至某目录下所有文件转化为 UTF-8 编码，你可以像下面一样，编写一个简单的 shell 脚本，并将其命名为 `encoding.sh`：

```
#!/bin/bash
### 将 values_here 替换为输入编码
FROM_ENCODING="value_here"
### 输出编码 (UTF-8)
TO_ENCODING="UTF-8"
### 转换命令
CONVERT=" iconv  -f   $FROM_ENCODING  -t   $TO_ENCODING"
### 使用循环转换多个文件
for  file  in  *.txt; do
$CONVERT   "$file"   -o  "${file%.txt}.utf8.converted"
done
exit 0

```

保存文件，然后为它添加可执行权限。在待转换文件 (\*.txt) 所在的目录中运行这个脚本。

```
$ chmod  +x  encoding.sh
$ ./encoding.sh

```

重要事项：你也可以使这个脚本变得更通用，比如转换任意特定的字符编码到另一种编码。为了达到这个目的，你只需要改变 `FROM_ENCODING` 及 `TO_ENCODING` 变量的值。别忘了改一下输出文件的文件名 `"${file%.txt}.utf8.converted"`.

若要了解更多信息，可以查看 `iconv` 的<ruby> 手册页 <rp>  （ </rp> <rt>  man page </rt> <rp>  ） </rp></ruby>。

```
$ man iconv

```

将这篇指南总结一下，理解字符编码的概念、了解如何将一种编码方案转换为另一种，是一个电脑用户处理文本时必须要掌握的知识，程序员更甚。

最后，你可以在下面的评论部分中与我们联系，提出问题或反馈。

---

via: <http://www.tecmint.com/convert-files-to-utf-8-encoding-in-linux/>

作者：[Aaron Kili](http://www.tecmint.com/author/aaronkili/) 译者：[StdioA](https://github.com/StdioA) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


在 Kali Linux 下实战 Nmap（网络安全扫描器）

挺好的，有zmap的吗？

有的。 https://linux.cn/article-5860-1.html

不错，收藏了

挺好，分享了

good test weiba

学习一下

# 在 Kali Linux 下实战 Nmap（网络安全扫描器）

在这第二篇 Kali Linux 文章中, 将讨论称为 ‘[nmap](http://www.tecmint.com/nmap-command-examples/)‘ 的网络工具。虽然 nmap 不是 Kali 下唯一的一个工具，但它是最[有用的网络映射工具](http://www.tecmint.com/bcc-best-linux-performance-monitoring-tools/)之一。

* [第一部分-为初学者准备的 Kali Linux 安装指南](/article-7986-1.html)

Nmap， 是 Network Mapper 的缩写，由 Gordon Lyon 维护(更多关于 Mr. Lyon 的信息在这里: <http://insecure.org/fyodor/>) ，并被世界各地许多的安全专业人员使用。

这个工具在 Linux 和 Windows 下都能使用，并且是用命令行驱动的。相对于那些令人害怕的命令行，对于 nmap，在这里有一个美妙的图形化前端叫做 zenmap。

强烈建议个人去学习 nmap 的命令行版本，因为与图形化版本 zenmap 相比，它提供了更多的灵活性。

对服务器进行 nmap 扫描的目的是什么？很好的问题。Nmap 允许管理员快速彻底地了解网络上的系统，因此，它的名字叫 Network MAPper 或者 nmap。

Nmap 能够快速找到活动的主机和与该主机相关联的服务。Nmap 的功能还可以通过结合 Nmap 脚本引擎（通常缩写为 NSE）进一步被扩展。

这个脚本引擎允许管理员快速创建可用于确定其网络上是否存在新发现的漏洞的脚本。已经有许多脚本被开发出来并且包含在大多数的 nmap 安装中。

提醒一句 - 使用 nmap 的人既可能是善意的，也可能是恶意的。应该非常小心，确保你不要使用 nmap 对没有明确得到书面许可的系统进行扫描。请在使用 nmap 工具的时候注意！

#### 系统要求

1. [Kali Linux](/article-7986-1.html) (nmap 可以用于其他操作系统，并且功能也和这个指南里面讲的类似)。
2. 另一台计算机，并且装有 nmap 的计算机有权限扫描它 - 这通常很容易通过软件来实现，例如通过 [VirtualBox](http://www.tecmint.com/install-virtualbox-on-redhat-centos-fedora/) 创建虚拟机。
	1. 想要有一个好的机器来练习一下，可以了解一下 Metasploitable 2。
	2. 下载 MS2 ：[Metasploitable2](https://sourceforge.net/projects/metasploitable/files/Metasploitable2/)。
3. 一个可以工作的网络连接，或者是使用虚拟机就可以为这两台计算机建立有效的内部网络连接。

### Kali Linux – 使用 Nmap

使用 nmap 的第一步是登录 Kali Linux，如果需要，就启动一个图形会话（本系列的第一篇文章安装了 [Kali Linux 的 Enlightenment 桌面环境](/article-7986-1.html)）。

在安装过程中，安装程序将提示用户输入用来登录的“root”用户和密码。 一旦登录到 Kali Linux 机器，使用命令`startx`就可以启动 Enlightenment 桌面环境 - 值得注意的是 nmap 不需要运行桌面环境。

```
# startx

```

*在 Kali Linux 中启动桌面环境*

一旦登录到 Enlightenment，将需要打开终端窗口。通过点击桌面背景，将会出现一个菜单。导航到终端可以进行如下操作：应用程序 -> 系统 -> 'Xterm' 或 'UXterm' 或 '根终端'。

作者是名为 '[Terminator](http://www.tecmint.com/terminator-a-linux-terminal-emulator-to-manage-multiple-terminal-windows/)' 的 shell 程序的粉丝，但是这可能不会显示在 Kali Linux 的默认安装中。这里列出的所有 shell 程序都可用于使用 nmap 。

*在 Kali Linux 下启动终端*

一旦终端启动，nmap 的乐趣就开始了。 对于这个特定的教程，将会创建一个 Kali 机器和 Metasploitable机器之间的私有网络。

这会使事情变得更容易和更安全，因为私有的网络范围将确保扫描保持在安全的机器上，防止易受攻击的 Metasploitable 机器被其他人攻击。

### 怎样在我的网络上找到活动主机

在此示例中，这两台计算机都位于专用的 192.168.56.0/24 网络上。 Kali 机器的 IP 地址为 192.168.56.101，要扫描的 Metasploitable 机器的 IP 地址为 192.168.56.102。

假如我们不知道 IP 地址信息，但是可以通过快速 nmap 扫描来帮助确定在特定网络上哪些是活动主机。这种扫描称为 “简单列表” 扫描，将 `-sL`参数传递给 nmap 命令。

```
# nmap -sL 192.168.56.0/24
```

*Nmap – 扫描网络上的活动主机*

悲伤的是，这个初始扫描没有返回任何活动主机。 有时，这是某些操作系统处理[端口扫描网络流量](http://www.tecmint.com/audit-network-performance-security-and-troubleshooting-in-linux/)的一个方法。

### 在我的网络中找到并 ping 所有活动主机

不用担心，在这里有一些技巧可以使 nmap 尝试找到这些机器。 下一个技巧会告诉 nmap 尝试去 ping 192.168.56.0/24 网络中的所有地址。

```
# nmap -sn 192.168.56.0/24

```

*Nmap – Ping 所有已连接的活动网络主机*

这次 nmap 会返回一些潜在的主机来进行扫描！ 在此命令中，`-sn` 禁用 nmap 的尝试对主机端口扫描的默认行为，只是让 nmap 尝试 ping 主机。

### 找到主机上的开放端口

让我们尝试让 nmap 端口扫描这些特定的主机，看看会出现什么。

```
# nmap 192.168.56.1,100-102

```

*Nmap – 在主机上扫描网络端口*

哇! 这一次 nmap 挖到了一个金矿。 这个特定的主机有相当多的[开放网络端口](http://www.tecmint.com/find-open-ports-in-linux/)。

这些端口全都代表着在此特定机器上的某种监听服务。 我们前面说过，192.168.56.102 的 IP 地址会分配给一台易受攻击的机器，这就是为什么在这个主机上会有这么多[开放端口](http://www.tecmint.com/find-open-ports-in-linux/)。

在大多数机器上打开这么多端口是非常不正常的，所以赶快调查这台机器是个明智的想法。管理员可以检查下网络上的物理机器，并在本地查看这些机器，但这不会很有趣，特别是当 nmap 可以为我们更快地做到时！

### 找到主机上监听端口的服务

下一个扫描是服务扫描，通常用于尝试确定机器上什么[服务监听在特定的端口](http://www.tecmint.com/find-linux-processes-memory-ram-cpu-usage/)。

Nmap 将探测所有打开的端口，并尝试从每个端口上运行的服务中获取信息。

```
# nmap -sV 192.168.56.102

```

*Nmap – 扫描网络服务监听端口*

请注意这次 nmap 提供了一些关于 nmap 在特定端口运行的建议（在白框中突出显示），而且 nmap 也试图确认运行在这台机器上的[这个操作系统的信息](http://www.tecmint.com/commands-to-collect-system-and-hardware-information-in-linux/)和它的主机名（也非常成功！）。

查看这个输出，应该引起网络管理员相当多的关注。 第一行声称 VSftpd 版本 2.3.4 正在这台机器上运行！ 这是一个真正的旧版本的 VSftpd。

通过查找 ExploitDB，对于这个版本早在 2001 年就发现了一个非常严重的漏洞（ExploitDB ID – 17491）。

### 发现主机上上匿名 ftp 登录

让我们使用 nmap 更加清楚的查看这个端口，并且看看可以确认什么。

```
# nmap -sC 192.168.56.102 -p 21
```

*Nmap – 扫描机器上的特定端口*

使用此命令，让 nmap 在主机上的 FTP 端口（`-p 21`）上运行其默认脚本（`-sC`）。 虽然它可能是、也可能不是一个问题，但是 nmap 确实发现在这个特定的服务器[是允许匿名 FTP 登录的](http://www.tecmint.com/setup-ftp-anonymous-logins-in-linux/)。

### 检查主机上的漏洞

这与我们早先知道 VSftd 有旧漏洞的知识相匹配，应该引起一些关注。 让我们看看 nmap有没有脚本来尝试检查 VSftpd 漏洞。

```
# locate .nse | grep ftp
```

*Nmap – 扫描 VSftpd 漏洞*

注意 nmap 已有一个 NSE 脚本已经用来处理 VSftpd 后门问题！让我们尝试对这个主机运行这个脚本，看看会发生什么，但首先知道如何使用脚本可能是很重要的。

```
# nmap --script-help=ftp-vsftd-backdoor.nse
```

*了解 Nmap NSE 脚本使用*

通过这个描述，很明显，这个脚本可以用来试图查看这个特定的机器是否容易受到先前识别的 ExploitDB 问题的影响。

让我们运行这个脚本，看看会发生什么。

```
# nmap --script=ftp-vsftpd-backdoor.nse 192.168.56.102 -p 21
```

*Nmap – 扫描易受攻击的主机*

耶！Nmap 的脚本返回了一些危险的消息。 这台机器可能面临风险，之后可以进行更加详细的调查。虽然这并不意味着机器缺乏对风险的抵抗力和可以被用于做一些可怕/糟糕的事情，但它应该给网络/安全团队带来一些关注。

Nmap 具有极高的选择性，非常平稳。 到目前为止已经做的大多数扫描， nmap 的网络流量都保持适度平稳，然而以这种方式扫描对个人拥有的网络可能是非常耗时的。

Nmap 有能力做一个更积极的扫描，往往一个命令就会产生之前几个命令一样的信息。 让我们来看看积极的扫描的输出（注意 - 积极的扫描会触发[入侵检测/预防系统](http://www.tecmint.com/protect-apache-using-mod_security-and-mod_evasive-on-rhel-centos-fedora/)!）。

```
# nmap -A 192.168.56.102

```

*Nmap – 在主机上完成网络扫描*

注意这一次，使用一个命令，nmap 返回了很多关于在这台特定机器上运行的开放端口、服务和配置的信息。 这些信息中的大部分可用于帮助确定[如何保护本机](http://www.tecmint.com/security-and-hardening-centos-7-guide/)以及评估网络上可能运行的软件。

这只是 nmap 可用于在主机或网段上找到的许多有用信息的很短的一个列表。强烈敦促个人在个人拥有的网络上继续[以nmap](http://www.tecmint.com/nmap-command-examples/) 进行实验。（不要通过扫描其他主机来练习！）。

有一个关于 Nmap 网络扫描的官方指南，作者 Gordon Lyon，可从[亚马逊](http://amzn.to/2eFNYrD)上获得。

方便的话可以留下你的评论和问题（或者使用 nmap 扫描器的技巧）。

---

via: <http://www.tecmint.com/nmap-network-security-scanner-in-kali-linux/>

作者：[Rob Turner](http://www.tecmint.com/author/robturner/) 译者：[DockerChen](https://github.com/DockerChen) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


在 Linux 上检测硬盘上的坏道和坏块

Summary: 我们通过几个必要的步骤，使用特定的磁盘扫描工具让你能够判断 Linux 磁盘或闪存是否存在坏道。

学习学习

又是一项系统管理技能。

good !!

非常赞，收藏了。

GOOD

# 在 Linux 上检测硬盘上的坏道和坏块

让我们从坏道和坏块的定义开始说起，它们是一块磁盘或闪存上不再能够被读写的部分，一般是由于磁盘表面特定的[物理损坏](http://www.tecmint.com/defragment-linux-system-partitions-and-directories/)或闪存晶体管失效导致的。

随着坏道的继续积累，它们会对你的磁盘或闪存容量产生令人不快或破坏性的影响，甚至可能会导致硬件失效。

同时还需要注意的是坏块的存在警示你应该开始考虑买块新磁盘了，或者简单地将坏块标记为不可用。

因此，在这篇文章中，我们通过几个必要的步骤，使用特定的[磁盘扫描工具](http://www.tecmint.com/ncdu-a-ncurses-based-disk-usage-analyzer-and-tracker/)让你能够判断 Linux 磁盘或闪存是否存在坏道。

以下就是步骤：

### 在 Linux 上使用坏块工具检查坏道

坏块工具可以让用户扫描设备检查坏道或坏块。设备可以是一个磁盘或外置磁盘，由一个如 `/dev/sdc` 这样的文件代表。

首先，通过超级用户权限执行 [fdisk 命令](http://www.tecmint.com/fdisk-commands-to-manage-linux-disk-partitions/)来显示你的所有磁盘或闪存的信息以及它们的分区信息：

```
$ sudo fdisk -l<br>
```

*列出 Linux 文件系统分区*

然后用如下命令检查你的 Linux 硬盘上的坏道/坏块：

```
$ sudo badblocks -v /dev/sda10 > badsectors.txt

```

*在 Linux 上扫描硬盘坏道*

上面的命令中，badblocks 扫描设备 `/dev/sda10`（记得指定你的实际设备），`-v` 选项让它显示操作的详情。另外，这里使用了输出重定向将操作结果重定向到了文件 `badsectors.txt`。

如果你在你的磁盘上发现任何坏道，卸载磁盘并像下面这样让系统不要将数据写入回报的扇区中。

你需要执行 `e2fsck`（针对 ext2/ext3/ext4 文件系统）或 `fsck` 命令，命令中还需要用到 `badsectors.txt` 文件和设备文件。

`-l` 选项告诉命令将在指定的文件 `badsectors.txt` 中列出的扇区号码加入坏块列表。

```
------------ 针对 for ext2/ext3/ext4 文件系统 ------------
$ sudo e2fsck -l badsectors.txt /dev/sda10

或

------------ 针对其它文件系统 ------------
$ sudo fsck -l badsectors.txt /dev/sda10

```

### 在 Linux 上使用 Smartmontools 工具扫描坏道

这个方法对带有 S.M.A.R.T（<ruby> 自我监控分析报告技术 <rp>  （ </rp> <rt>  Self-Monitoring, Analysis and Reporting Technology </rt> <rp>  ） </rp></ruby>）系统的现代磁盘（ATA/SATA 和 SCSI/SAS 硬盘以及固态硬盘）更加的可靠和高效。S.M.A.R.T 系统能够帮助检测，报告，以及可能记录它们的健康状况，这样你就可以找出任何可能出现的硬件失效。

你可以使用以下命令安装 `smartmontools`：

```
------------ 在基于 Debian/Ubuntu 的系统上 ------------
$ sudo apt-get install smartmontools

------------ 在基于 RHEL/CentOS 的系统上 ------------
$ sudo yum install smartmontools

```

安装完成之后，使用 `smartctl` 控制磁盘集成的 S.M.A.R.T 系统。你可以这样查看它的手册或帮助：

```
$ man smartctl
$ smartctl -h

```

然后执行 `smartctrl` 命令并在命令中指定你的设备作为参数，以下命令包含了参数 `-H` 或 `--health` 以显示 SMART 整体健康自我评估测试结果。

```
$ sudo smartctl -H /dev/sda10

```

*检查 Linux 硬盘健康*

上面的结果指出你的硬盘很健康，近期内不大可能发生硬件失效。

要获取磁盘信息总览，使用 `-a` 或 `--all` 选项来显示关于磁盘所有的 SMART 信息，`-x` 或 `--xall` 来显示所有关于磁盘的 SMART 信息以及非 SMART 信息。

在这个教程中，我们涉及了有关[磁盘健康诊断](http://www.tecmint.com/defragment-linux-system-partitions-and-directories/)的重要话题，你可以下面的反馈区来分享你的想法或提问，并且记得多回来看看。

---

via: <http://www.tecmint.com/check-linux-hard-disk-bad-sectors-bad-blocks/>

作者：[Aaron Kili](http://www.tecmint.com/author/aaronkili/) 译者：[alim0x](https://github.com/alim0x) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


如何在 Linux 中压缩及解压缩 .bz2 文件

不知道这种文章有什么价值所在？

tar就好了,   高那么多麻烦的东西干嘛!

最基础的也是最重要的!

tar -j 也是调用的 bzip2，多了解点没坏处

对于你这类大神来说没啥用，但是对于刚使用gun／linux系统的用户来说帮助很大。

请多些理解多些关爱小白用户。

有的人不要懂得些皮毛就自以为是(请勿对号入坐）

没事，我们这里从小白到大神，都是我们的读者。我们选题广泛，永远不会高高在上不发面对初学者的内容。

# 如何在 Linux 中压缩及解压缩 .bz2 文件

对文件进行压缩，可以通过使用较少的字节对文件中的数据进行编码来显著地减小文件的大小，并且在跨网络的[文件的备份和传送](/article-4503-1.html)时很有用。 另一方面，解压文件意味着将文件中的数据恢复到初始状态。

Linux 中有几个[文件压缩和解压缩工具](http://www.tecmint.com/command-line-archive-tools-for-linux/)，比如gzip、7-zip、Lrzip、[PeaZip](http://www.tecmint.com/peazip-linux-file-manager-and-file-archive-tool/) 等等。

本篇教程中，我们将介绍如何在 Linux 中使用 bzip2 工具压缩及解压缩`.bz2`文件。

bzip2 是一个非常有名的压缩工具，并且在大多数主流 Linux 发行版上都有，你可以在你的发行版上用合适的命令来安装它。

```
$ sudo apt install bzip2     [On Debian/Ubuntu]
$ sudo yum install  bzip2    [On CentOS/RHEL]
$ sudo dnf install bzip2     [On Fedora 22+]

```

使用 bzip2 的常规语法是：

```
$ bzip2 option(s) filenames

```

### 如何在 Linux 中使用“bzip2”压缩文件

你可以如下压缩一个文件，使用`-z`标志启用压缩：

```
$ bzip2 filename
或者
$ bzip2 -z filename

```

要压缩一个`.tar`文件，使用的命令为：

```
$ bzip2 -z backup.tar

```

重要：bzip2 默认会在压缩及解压缩文件时删除输入文件（原文件），要保留输入文件，使用`-k`或者`--keep`选项。

此外，`-f`或者`--force`标志会强制让 bzip2 覆盖已有的输出文件。

```
------ 要保留输入文件  ------
$ bzip2 -zk filename
$ bzip2 -zk backup.tar

```

你也可以设置块的大小，从 100k 到 900k，分别使用`-1`或者`--fast`到`-9`或者`--best`：

```
$ bzip2 -k1  Etcher-linux-x64.AppImage
$ ls -lh  Etcher-linux-x64.AppImage.bz2
$ bzip2 -k9  Etcher-linux-x64.AppImage
$ bzip2 -kf9  Etcher-linux-x64.AppImage
$ ls -lh Etcher-linux-x64.AppImage.bz2

```

下面的截屏展示了如何使用选项来保留输入文件，强制 bzip2 覆盖输出文件，并且在压缩中设置块的大小。

*在 Linux 中使用 bzip2 压缩文件*

### 如何在 Linux 中使用“bzip2”解压缩文件

要解压缩`.bz2`文件，确保使用`-d`或者`--decompress`选项：

```
$ bzip2 -d filename.bz2

```

注意：这个文件必须是`.bz2`的扩展名，上面的命令才能使用。

```
$ bzip2 -vd Etcher-linux-x64.AppImage.bz2
$ bzip2 -vfd Etcher-linux-x64.AppImage.bz2
$ ls -l Etcher-linux-x64.AppImage

```

*在 Linux 中解压 bzip2 文件*

要浏览 bzip2 的帮助及 man 页面，输入下面的命令：

```
$ bzip2  -h
$ man bzip2

```

最后，通过上面简单的阐述，我相信你现在已经可以在 Linux 中压缩及解压缩`bz2`文件了。然而，有任何的问题和反馈，可以在评论区中留言。

重要的是，你可能想在 Linux 中查看一些重要的 [tar 命令示例](/article-7802-1.html)，以便学习使用 tar 命令来[创建压缩归档文件](http://www.tecmint.com/compress-files-and-finding-files-in-linux/)。

---

via: <http://www.tecmint.com/linux-compress-decompress-bz2-files-using-bzip2>

作者：[Aaron Kili](http://www.tecmint.com/author/aaronkili/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


JavaScript 小模块的开销

Summary: 一个大的 JavaScript 包比一百个小 JavaScript 模块要快。尽管这是事实，我依旧希望我们社区能最终发现我们所处的困境————提倡小模块的原则对开发者有利，但是对用户不利。同时希望能优化我们的工具，使得我们可以对两方面都有利。

# JavaScript 小模块的开销

**更新（2016/10/30）**：我写完这篇文章之后，我在[这个基准测试中发了一个错误](https://github.com/nolanlawson/cost-of-small-modules/pull/8)，会导致 Rollup 比它预期的看起来要好一些。不过，整体结果并没有明显的不同（Rollup 仍然击败了 Browserify 和 Webpack，虽然它并没有像 Closure 十分好），所以我只是更新了图表。该基准测试包括了 [RequireJS 和 RequireJS Almond 打包器](https://github.com/nolanlawson/cost-of-small-modules/pull/5)，所以文章中现在也包括了它们。要看原始帖子，可以查看[历史版本](https://web.archive.org/web/20160822181421/https://nolanlawson.com/2016/08/15/the-cost-of-small-modules/)。

大约一年之前，我在将一个大型 JavaScript 代码库重构为更小的模块时发现了 Browserify 和 Webpack 中一个令人沮丧的事实：

>
> “代码越模块化，代码体积就越大。:< ”
>
>
> - Nolan Lawson
>
>
>

过了一段时间，Sam Saccone 发布了一些关于 [Tumblr](https://docs.google.com/document/d/1E2w0UQ4RhId5cMYsDcdcNwsgL0gP_S6SDv27yi1mCEY/edit) 和 [Imgur](https://github.com/perfs/audits/issues/1) 页面加载性能的出色的研究。其中指出：

>
> “超过 400 ms 的时间单纯的花费在了遍历 Browserify 树上。”
>
>
> - Sam Saccone
>
>
>

在本篇文章中，我将演示小模块可能会根据你选择的<ruby> 打包器 <rp>  （ </rp> <rt>  bundler </rt> <rp>  ） </rp></ruby>和<ruby> 模块系统 <rp>  （ </rp> <rt>  module system </rt> <rp>  ） </rp></ruby>而出现高得惊人的性能开销。此外，我还将解释为什么这种方法不但影响你自己代码的模块，也会影响依赖项中的模块，这也正是第三方代码在性能开销上很少提及的方面。

### 网页性能

一个页面中包含的 JavaScript 脚本越多，页面加载也将越慢。庞大的 JavaScript 包会导致浏览器花费更多的时间去下载、解析和执行，这些都将加长载入时间。

即使当你使用如 Webpack [code splitting](https://webpack.github.io/docs/code-splitting.html)、Browserify [factor bundles](https://github.com/substack/factor-bundle) 等工具将代码分解为多个包，该开销也仅仅是被延迟到页面生命周期的晚些时候。JavaScript 迟早都将有一笔开销。

此外，由于 JavaScript 是一门动态语言，同时流行的 [CommonJS](http://www.commonjs.org/) 模块也是动态的，所以这就使得在最终分发给用户的代码中剔除无用的代码变得异常困难。譬如你可能只使用到 jQuery 中的 $.ajax，但是通过载入 jQuery 包，你将付出整个包的代价。

JavaScript 社区对这个问题提出的解决办法是提倡 [小模块](http://substack.net/how_I_write_modules) 的使用。小模块不仅有许多 [美好且实用的好处](http://dailyjs.com/2015/07/02/small-modules-complexity-over-size/) 如易于维护，易于理解，易于集成等，而且还可以通过鼓励包含小巧的功能而不是庞大的库来解决之前提到的 jQuery 的问题。

所以在小模块下，你将不需要这样：

```
var _ = require('lodash')
_.uniq([1,2,2,3])

```

而是可以如此：

```
var uniq = require('lodash.uniq')
uniq([1,2,2,3])

```

### 包与模块

需要强调的是这里我提到的“模块”并不同于 npm 中的“包”的概念。当你从 npm 安装一个包时，它会将该模块通过公用 API 展现出来，但是在这之下其实是一个许多模块的聚合物。

例如，我们来看一个包 [is-array](https://www.npmjs.com/package/is-array)，它没有别的依赖，并且只包含 [一个 JavaScript 文件](https://github.com/retrofox/is-array/blob/d79f1c90c824416b60517c04f0568b5cd3f8271d/index.js#L6-L33)，所以它只有一个模块。这算是足够简单的。

现在来看一个稍微复杂一点的包，如 [once](https://www.npmjs.com/package/once)。它有一个依赖的包 [wrappy](https://www.npmjs.com/package/wrappy)。[两](https://github.com/isaacs/once/blob/2ad558657e17fafd24803217ba854762842e4178/once.js#L1-L21) [个](https://github.com/npm/wrappy/blob/71d91b6dc5bdeac37e218c2cf03f9ab55b60d214/wrappy.js#L6-L33) 包都各自包含一个模块，所以总模块数为 2。至此，也还算好。

现在来一起看一个更为令人迷惑的例子：[qs](https://www.npmjs.com/package/qs)。因为它没有依赖的包，所以你可能就认为它只有一个模块，然而事实上，它有四个模块！

你可以用一个我写的工具 [browserify-count-modules](https://www.npmjs.com/package/browserify-count-modules) 来统计一个 Browserify 包的总模块数：

```
$ npm install qs
$ browserify node_modules/qs | browserify-count-modules
4

```

这说明了一个包可以包含一个或者多个模块。这些模块也可以依赖于其他的包，而这些包又将附带其自己所依赖的包与模块。由此可以确定的事就是任何一个包将包含至少一个模块。

### 模块膨胀

一个典型的网页应用中会包含多少个模块呢？我在一些流行的使用 Browserify 的网站上运行 browserify-count-moduleson 并且得到了以下结果：

* [requirebin.com](http://requirebin.com/): 91 个模块
* [keybase.io](https://keybase.io/): 365 个模块
* [m.reddit.com](http://m.reddit.com/): 1050 个模块
* [Apple.com](http://images.apple.com/ipad-air-2/): 1060 个模块 (新增。 [感谢 Max！](https://twitter.com/denormalize/status/765300194078437376))

顺带一提，我写过的最大的开源站点 [Pokedex.org](https://pokedex.org/) 包含了 4 个包，共 311 个模块。

让我们先暂时忽略这些 JavaScript 包的实际大小，我认为去探索一下一定数量的模块本身开销会是一件有意思的事。虽然 Sam Saccone 的文章 [“2016 年 ES2015 转译的开销”](https://github.com/samccone/The-cost-of-transpiling-es2015-in-2016#the-cost-of-transpiling-es2015-in-2016) 已经广为流传，但是我认为他的结论还未到达足够深度，所以让我们挖掘的稍微再深一点吧。

### 测试环节！

我构造了一个能导入 100、1000 和 5000 个其他小模块的测试模块，其中每个小模块仅仅导出一个数字。而父模块则将这些数字求和并记录结果：

```
// index.js
var total = 0
total += require('./module_0')
total += require('./module_1')
total += require('./module_2')
// etc.
console.log(total)

// module_1.js
module.exports = 1

```

我测试了五种打包方法：Browserify、带 [bundle-collapser](https://www.npmjs.com/package/bundle-collapser) 插件的 Browserify、Webpack、Rollup 和 Closure Compiler。对于 Rollup 和 Closure Compiler 我使用了 ES6 模块，而对于 Browserify 和 Webpack 则用的是 CommonJS，目的是为了不涉及其各自缺点而导致测试的不公平（由于它们可能需要做一些转译工作，如 Babel 一样，而这些工作将会增加其自身的运行时间）。

为了更好地模拟一个生产环境，我对所有的包采用带 `-mangle` 和 `-compress` 参数的 `Uglify` ，并且使用 gzip 压缩后通过 GitHub Pages 用 HTTPS 协议进行传输。对于每个包，我一共下载并执行 15 次，然后取其平均值，并使用 `performance.now()` 函数来记录载入时间（未使用缓存）与执行时间。

### 包大小

在我们查看测试结果之前，我们有必要先来看一眼我们要测试的包文件。以下是每个包最小处理后但并未使用 gzip 压缩时的体积大小（单位：Byte）：

|  | 100 个模块 | 1000 个模块 | 5000 个模块 |
| --- | --- | --- | --- |
| browserify | 7982 | 79987 | 419985 |
| browserify-collapsed | 5786 | 57991 | 309982 |
| webpack | 3954 | 39055 | 203052 |
| rollup | 671 | 6971 | 38968 |
| closure | 758 | 7958 | 43955 |

|  | 100 个模块 | 1000 个模块 | 5000 个模块 |
| --- | --- | --- | --- |
| browserify | 1649 | 13800 | 64513 |
| browserify-collapsed | 1464 | 11903 | 56335 |
| webpack | 693 | 5027 | 26363 |
| rollup | 300 | 2145 | 11510 |
| closure | 302 | 2140 | 11789 |

Browserify 和 Webpack 的工作方式是隔离各个模块到各自的函数空间，然后声明一个全局载入器，并在每次 `require()` 函数调用时定位到正确的模块处。下面是我们的 Browserify 包的样子：

```
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o

```

而 Rollup 和 Closure 包看上去则更像你亲手写的一个大模块。这是 Rollup 打包的包：

```
(function () {
        'use strict';
        var total = 0
        total += 0
        total += 1
        total += 2
// etc.

```

如果你清楚在 JavaScript 中使用嵌套函数与在关联数组查找一个值的固有开销， 那么你将很容易理解出现以下测试的结果的原因。

### 测试结果

我选择在搭载 Android 5.1.1 与 Chrome 52 的 Nexus 5（代表中低端设备）和运行 iOS 9 的第 6 代 iPod Touch（代表高端设备）上进行测试。

这是 Nexus 5 下的测试结果（[查看表格](https://gist.github.com/nolanlawson/e84ad060a20f0cb7a7c32308b6b46abe)）：

这是 iPod Touch 下的测试结果（[查看表格](https://gist.github.com/nolanlawson/45ed2c7fa53da035dfc1e153763b9f93)）：

在 100 个模块时，各包的差异是微不足道的，但是一旦模块数量达到 1000 个甚至 5000 个时，差异将会变得非常巨大。iPod Touch 在不同包上的差异并不明显，而对于具有一定年代的 Nexus 5 来说，Browserify 和 Webpack 明显耗时更多。

与此同时，我发现有意思的是 Rollup 和 Closure 的运行开销对于 iPod 而言几乎可以忽略，并且与模块的数量关系也不大。而对于 Nexus 5 来说，运行的开销并非完全可以忽略，但 Rollup/Closure 仍比 Browserify/Webpack 低很多。后者若未在几百毫秒内完成加载则将会占用主线程的好几帧的时间，这就意味着用户界面将冻结并且等待直到模块载入完成。

值得注意的是前面这些测试都是在千兆网速下进行的，所以在网络情况来看，这只是一个最理想的状况。借助 Chrome 开发者工具，我们可以认为地将 Nexus 5 的网速限制到 3G 水平，然后来看一眼这对测试产生的影响（[查看表格](https://gist.github.com/nolanlawson/6269d304c970174c21164288808392ea)）：

一旦我们将网速考虑进来，Browserify/Webpack 和 Rollup/Closure 的差异将变得更为显著。在 1000 个模块规模（接近于 Reddit 1050 个模块的规模）时，Browserify 花费的时间比 Rollup 长大约 400 毫秒。然而 400 毫秒已经不是一个小数目了，正如 Google 和 Bing 指出的，亚秒级的延迟都会 [对用户的参与产生明显的影响](http://radar.oreilly.com/2009/06/bing-and-google-agree-slow-pag.html) 。

还有一件事需要指出，那就是这个测试并非测量 100 个、1000 个或者 5000 个模块的每个模块的精确运行时间。因为这还与你对 `require()` 函数的使用有关。在这些包中，我采用的是对每个模块调用一次 `require()` 函数。但如果你每个模块调用了多次 `require()` 函数（这在代码库中非常常见）或者你多次动态调用 `require()` 函数（例如在子函数中调用 `require()` 函数），那么你将发现明显的性能退化。

Reddit 的移动站点就是一个很好的例子。虽然该站点有 1050 个模块，但是我测量了它们使用 Browserify 的实际执行时间后发现比“1000 个模块”的测试结果差好多。当使用那台运行 Chrome 的 Nexus 5 时，我测出 Reddit 的 Browserify require() 函数耗时 2.14 秒。而那个“1000 个模块”脚本中的等效函数只需要 197 毫秒（在搭载 i7 处理器的 Surface Book 上的桌面版 Chrome，我测出的结果分别为 559 毫秒与 37 毫秒，虽然给出桌面平台的结果有些令人惊讶）。

这结果提示我们有必要对每个模块使用多个 `require()` 函数的情况再进行一次测试。不过，我并不认为这对 Browserify 和 Webpack 会是一个公平的测试，因为 Rollup 和 Closure 都会将重复的 ES6 库导入处理为一个的顶级变量声明，同时也阻止了顶层空间以外的其他区域的导入。所以根本上来说，Rollup 和 Closure 中一个导入和多个导入的开销是相同的，而对于 Browserify 和 Webpack，运行开销随 `require()` 函数的数量线性增长。

为了我们这个分析的目的，我认为最好假设模块的数量是性能的短板。而事实上，“5000 个模块”也是一个比“5000 个 `require()` 函数调用”更好的度量标准。

### 结论

首先，bundle-collapser 对 Browserify 来说是一个非常有用的插件。如果你在产品中还没使用它，那么你的包将相对来说会略大且运行略慢（虽然我得承认这之间的差异非常小）。另一方面，你还可以转换到 Webpack 以获得更快的包而不需要额外的配置（其实我非常不愿意这么说，因为我是个顽固的 Browserify 粉）。

不管怎样，这些结果都明确地指出 Webpack 和 Browserify 相较 Rollup 和 Closure Compiler 而言表现都稍差，并且性能差异随着模块大小的增大而增大。不幸的是，我并不确定 [Webpack 2](https://gist.github.com/sokra/27b24881210b56bbaff7) 是否能解决这些问题，因为尽管他们将 [从 Rollup 中借鉴一些想法](http://www.2ality.com/2015/12/webpack-tree-shaking.html)，但是看起来他们的关注点更多在于 [tree-shaking 方面](http://www.2ality.com/2015/12/bundling-modules-future.html) 而不是在于 scope-hoisting 方面。（更新：一个更好的名字称为<ruby> 内联 <rp>  （ </rp> <rt>  inlining </rt> <rp>  ） </rp></ruby>，并且 Webpack 团队 [正在做这方面的工作](https://github.com/webpack/webpack/issues/2873#issuecomment-240067865)。）

给出这些结果之后，我对 Closure Compiler 和 Rollup 在 JavaScript 社区并没有得到过多关注而感到惊讶。我猜测或许是因为（前者）需要依赖 Java，而（后者）仍然相当不成熟并且未能做到开箱即用（详见 [Calvin’s Metcalf 的评论](https://github.com/rollup/rollup/issues/552) 中作的不错的总结）。

即使没有足够数量的 JavaScript 开发者加入到 Rollup 或 Closure 的队伍中，我认为 npm 包作者们也已准备好了去帮助解决这些问题。如果你使用 npm 安装 lodash，你将会发其现主要的导入是一个巨大的 JavaScript 模块，而不是你期望的 Lodash 的<ruby> 超模块 <rp>  （ </rp> <rt>  hyper-modular </rt> <rp>  ） </rp></ruby>特性（`require('lodash/uniq')`，`require('lodash.uniq')` 等等）。对于 PouchDB，我们做了一个类似的声明以 [使用 Rollup 作为预发布步骤](http://pouchdb.com/2016/01/13/pouchdb-5.2.0-a-better-build-system-with-rollup.html)，这将产生对于用户而言尽可能小的包。

同时，我创建了 [rollupify](https://github.com/nolanlawson/rollupify) 来尝试将这过程变得更为简单一些，只需拖动到已存在的 Browserify 工程中即可。其基本思想是在你自己的项目中使用<ruby> 导入 <rp>  （ </rp> <rt>  import </rt> <rp>  ） </rp></ruby>和<ruby> 导出 <rp>  （ </rp> <rt>  export </rt> <rp>  ） </rp></ruby>（可以使用 [cjs-to-es6](https://github.com/nolanlawson/cjs-to-es6) 来帮助迁移），然后使用 `require()` 函数来载入第三方包。这样一来，你依旧可以在你自己的代码库中享受所有模块化的优点，同时能导出一个适当大小的大模块来发布给你的用户。不幸的是，你依旧得为第三方库付出一些代价，但是我发现这是对于当前 npm 生态系统的一个很好的折中方案。

所以结论如下：**一个大的 JavaScript 包比一百个小 JavaScript 模块要快**。尽管这是事实，我依旧希望我们社区能最终发现我们所处的困境————提倡小模块的原则对开发者有利，但是对用户不利。同时希望能优化我们的工具，使得我们可以对两方面都有利。

### 福利时间！三款桌面浏览器

通常来说我喜欢在移动设备上运行性能测试，因为在这里我们能更清楚的看到差异。但是出于好奇，我也分别在一台搭载 i7 的 Surface Book 上的 Chrome 52、Edge 14 和 Firefox 48 上运行了测试。这分别是它们的测试结果：

Chrome 52 ([查看表格](https://gist.github.com/nolanlawson/4f79258dc05bbd2c14b85cf2196c6ef0))

Edge 14 ([查看表格](https://gist.github.com/nolanlawson/726fa47e0723b45e4ee9ecf0cf2fcddb))

Firefox 48 ([查看表格](https://gist.github.com/nolanlawson/7eed17e6ffa18752bf99a9d4bff2941f))

我在这些结果中发现的有趣的地方如下：

1. bundle-collapser 总是与 slam-dunk 完全不同。
2. Rollup 和 Closure 的下载时间与运行时间之比总是非常高，它们的运行时间基本上微不足道。ChakraCore 和 SpiderMonkey 运行最快，V8 紧随其后。

如果你的 JavaScript 非常大并且是延迟加载，那么第二点将非常重要。因为如果你可以接受等待网络下载的时间，那么使用 Rollup 和 Closure 将会有避免界面线程冻结的优点。也就是说，它们将比 Browserify 和 Webpack 更少出现界面阻塞。

更新：在这篇文章的回应中，JDD 已经 [给 Webpack 提交了一个 issue](https://github.com/webpack/webpack/issues/2873)。还有 [一个是给 Browserify 的](https://github.com/substack/node-browserify/issues/1379)。

更新 2：[Ryan Fitzer](https://github.com/nolanlawson/cost-of-small-modules/pull/5) 慷慨地增加了 RequireJS 和包含 [Almond](https://github.com/requirejs/almond) 的 RequireJS 的测试结果，两者都是使用 AMD 而不是 CommonJS 或者 ES6。

测试结果表明 RequireJS 具有 [最大的包大小](https://gist.github.com/nolanlawson/511e0ce09fed29fed040bb8673777ec5) 但是令人惊讶的是它的运行开销 [与 Rollup 和 Closure 非常接近](https://gist.github.com/nolanlawson/4e725df00cd1bc9673b25ef72b831c8b)。这是在运行 Chrome 52 的 Nexus 5 下限制网速为 3G 的测试结果：

更新 3: 我写了一个 [optimize-js](http://github.com/nolanlawson/optimize-js) ，它会减少一些函数内的函数的解析成本。

---

via: <https://nolanlawson.com/2016/08/15/the-cost-of-small-modules/>

作者：[Nolan](https://nolanlawson.com/) 译者：[Yinr](https://github.com/Yinr) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


将真爱贯彻到底，微软加入 Linux 基金会

世界在变,战略也在变

另外 SQL Server for Linux 版也出來了。

packages.microsoft.com 同時支持 http 和 https

放在 Linux 上 httpD 是 nginx

curl --head packages.microsoft.com

HTTP/1.1 200 OK

Server: nginx/1.10.0 (Ubuntu)

Date: Thu, 17 Nov 2016 09:23:42 GMT

Content-Type: text/html

Connection: keep-alive

hahah

自由软件运动的最终胜利又近了一步

我可不认为 RMS 或者说 FSF 那帮人对这个事情会感到高兴。

自由软件又取得了胜利

简约是一种时尚 [Chrome Mobile 54.0|Android 5.1]

没有商业化就没有发展。。。Linux一样需要商业化的

# 将真爱贯彻到底，微软加入 Linux 基金会

是的，你没看错，这不是洋葱新闻，也不是愚人节笑话。

微软自从其新 CEO 萨提亚·纳德拉上台后，逐渐增加了对 Linux 和开源的投入，而现在，更是以白金会员的身份加入到了 Linux 基金会。

Linux 基金会官员表示欢迎微软的加入。“成为 Linux 基金会白金成员后，微软可以更好的与开源社区合作，为更多人提供变革性的移动及云的体验，”Linux 基金会执行董事 Jim Zemlin 说。“微软是很多项目的关键贡献者，而且我们看到该公司在开放开发方面一直在加强其投入和深化承诺。”

你应该记得，十几年前，微软前 CEO 巴尔默将开源称之为“癌症”，而且，微软到现在还[要求 Android 厂商向其缴纳专利费](/article-3207-1.html)，以及，微软一直想夺回慕尼黑的桌面市场，但是，那又怎么样呢？

现在，微软逐渐加大了对开源和 Linux 方面的关注和投入，诸如 [PowerShell](/article-7699-1.html)、[Visual Studio Code](/article-6604-1.html) 以及 [Edge JavaScript 引擎](/article-6698-1.html)这样的项目，已经逐个开源化，将微软推近这个它曾经憎恨过的开源世界。而且，通过 Windows 10，[微软开始走进 Linux](/article-7177-1.html)，因为该操作系统内置了 Ubuntu。 在收购了 Xamarin 之后，还[开源了其软件开发工具包](/article-7181-1.html)。以及，和 [Red Hat](/article-7020-1.html) 和 [SUSE](/article-1593-1.html) 合作在它的 Azure 云上推出了 Linux 镜像。而今年初，微软还发布了 [Linux 上的 SQL Server](/article-7082-1.html)，甚至得到了[巴尔默的赞誉](/article-7095-1.html)。

这并不是微软加入的第一个行业领袖级的 Linux 团体，微软已经参与贡献了几个 Linux 基金会项目，包括 Node.js 基金会、 OpenDaylight、<ruby> 开放容器促进联盟 <rp>  （ </rp> <rt>  Open Container Initiative </rt> <rp>  ） </rp></ruby>、<ruby> R 社团 <rp>  （ </rp> <rt>  R Consortium </rt> <rp>  ） </rp></ruby>和<ruby> 开放 API 促进联盟 <rp>  （ </rp> <rt>  Open API Initiative </rt> <rp>  ） </rp></ruby>。

为什么微软会这样呢？因为，Linux 赢了。

微软只在桌面端继续保持着优势，Windows 已经不是最流行的终端用户操作系统了，你知道的，那是 Android。而其它的，比如云、超算，以及服务器，那也都是 Linux 的天下。微软只有两条路，要么死战到底，要么转身拥抱——显然，微软选择了后者。

说来你可能不信，比如说 Azure 云上，有 1/3 的服务器运行着 Linux，而且越来越多。

另外，还有一条与之相呼应的消息也相当的令人意外。

同样是今天，Google 在 Connect()’ 开发者大会上宣布它将加入 .NET 基金会的领导团队。

“周三，Google 加入到 .NET 基金会的技术领导团队，加强了 .NET 开发者社区的生机， 以及 Google 对支持 .NET 业务和开发者的开放平台的责任，” Microsoft 总结到。

是不是感觉这个世界变得快呢？


微软发布 Linux 下的 SQL Server 公众预览版

Summary: SQL Server for Linux 的公众预览版支持 Ubuntu、Red Hat 的 RHEL、SUSE 的 SLES，也将很快出现在 Azure 虚拟机中和 Docker Hub 上。不过，微软依旧说，支持 Linux 和 Windows 的 SQL Server 的正式版仍然会要到明年中期才能发布。

SQL Server for Linux安装包138M，安装完之后656M，比oracle小很多。安装配置很简单，这个给一个赞。

最近站里微软的新闻比较多啊

什么时候，发布个 LINUX MS OFFICE 呢？

使用linux桌面的用户能达到10%的话，估计就有戏了！

发了office<br />
win的份额就真的危险了

从商业角度， SQL Server 还是比较厉害的

你想多了，打铁还需自身硬，Linux先把图形界面的体验做了再说。

主要是微软动静大啊！

真正比较喜欢的，是微软的数据库图形管理软件，真心赞

测试表明，windows里面的数据可以直接附加到linux版的里面，这 是要跨平台的节奏？

# 微软发布 Linux 下的 SQL Server 公众预览版

微软发布了它的下一个版本的 SQL Server 数据库的公众预览版，同时支持 Linux 和 Windows。

<img src="content_image/album_201611_17_213226blpr367yaaafzaaw.jpg" alt="" title="">

在今年 3 月，微软发布过 SQL Server for Linux 的一个[内部预览版](/article-7082-1.html)。同时，微软官方说 SQL Server for Linux 是 SQL Server for Windows 版本的一个子集，将可以运行在 Ubuntu 上或作为 Docker 镜像运行（后来补充说内部预览也支持 Red Hat 的 RHEL）。该公司官方称用户购买的 SQL Server 将可以用在 Windows 服务器或 Linux 上，此后不久还说该版本的 SQL Server for Linux 和 for Windows 实际上是同一个。

不过，就在今天（美国时间 11 月 16 日），微软将 SQL Server Next 定位为既可以运行在 Linux ，也可以运行在 Windows 上的一个产品。

微软官方称，运行在 Linux 上和运行在 Windows 上的 SQL Server Next 基于同一份代码基，“有些功能存在平台差异，比如说 Linux 上的文件路径不同于 Windows”，但是这不是两个完全不同的产品。运行在 Linux 上的 SQL Server Next 拥有“关系型数据库引擎的所有主要功能”，这包括堆内在线事务处理（OLTP）、堆内列存储、透明数据加密、全程加密、行级安全等等。

SQL Server for Linux 的公众预览版支持 Ubuntu、Red Hat 的 RHEL、SUSE 的 SLES，也将很快出现在 Azure 虚拟机中和 [Docker Hub](http://hub.docker.com/r/microsoft/mssql-server-linux) 上。不过，微软依旧说，支持 Linux 和 Windows 的 SQL Server 的正式版仍然会要到明年中期才能发布。

Linux 下的 SQL Server 公众预览版可以从微软的 [SQL Server on Linux 网站](https://www.microsoft.com/en-us/sql-server/sql-server-vnext-including-Linux)上下载到。

众所周知，使用开源软件的公司不会将其自由而强大的 MariaDB 或 MySQL 数据库方案用 SQL Server 来替代，但是微软的 SQL Server 承诺支持 Docker 容器，并允许选择数据类型和开发语言，对于某些场景来说，使用 SQL Server 可以节省成本，提升性能，并增强灵活性。在今年 3 月份发布内部预览版之后，微软宣布有超过 8000 家公司已经在第一周内注册尝试了 SQL Server for Linux，其中位列财富 500 强里的公司超过一半都参与了试用。


Summary:
更多：
- X.Org Server 1.19.0 官方发布，Linux 版本不久后来到

真正让我感觉到意外的是X.Org Server 新版~

# 一周开源新闻：微软的大动作、Ubuntu 17.04 的消息和 Firefox 50

### Ubuntu 17.04 将提供增强的 Unity 8 会话，以及越来越多的 snaps 应用

Canonical 于 11 月 15 日至 16 日举办 Ubuntu 线上峰会 (UOS) ，期间 Ubuntu 社区成员可以了解到更 Ubuntu 17.04 Linux的进展。

线上峰会期间，Canonical 透露，Ubuntu 17.04 将带来一个大大增强的 Unity 8 会话。Ubuntu 17.04 （Zesty Zapus）计划于 2017 年 4 月发布，Canonical 将为用户提供增强的Unity 8 Session，并通过 snaps 方式支持移动和桌面平台。此外， Snappy Store 将完全配置为运行 snaps，因为 Snappy 正在成为 Ubuntu 的操作系统的默认选择。

### 微软作为白金会员加入 Linux 基金会

微软公司 16 日宣布，它正在以白金会员身份加入 Linux 基金会，这距离其前 CEO 巴尔默将开源平台称为“癌症”还不到 15 年。

同一天，Google 在 Connect()’ 开发者大会上宣布它将加入 .NET 基金会的领导团队。

具体请参加我们的[报道](/article-7966-1.html)。

### Canonical 宣布推出 Ubuntu Linux 上的 Microsoft SQL Server 公众预览版

11 月 16 日， Canonical 宣布 Ubuntu 系统上 Microsoft's SQL server的公众预览版推出。

如果想试用 Microsoft SQL Server on Ubuntu，可以在 Microsoft's SQL Server on Linux 网站以及 Microsoft Azure 和 [Docker Hub](http://hub.docker.com/r/microsoft/mssql-server-linux) 下载公众预览版镜像。 请访问 [www.sqlserveronlinux.com](https://www.microsoft.com/en-us/sql-server/sql-server-vnext-including-Linux) 开始了解 Microsoft SQL Server on Ubuntu。在那里，有很多有用的资料和文档帮助用户更好的了解 SQL Server on Ubuntu 的优势。

具体信息,请参见我们的[报道](/article-7967-1.html)。

### X.Org Server 1.19.0 官方发布，Linux 版本不久后来到

xorg-server 1.19 显示服务器有巨大改进。

2016 年 11 月 15 日，X Window 系统开发者 Keith Packard 宣布 X.Org Server 1.19.0 发布，不久可以下载 X.Org Server 1.19.0 显示服务器的 GNU/Linux 版本。

要了解 X.Org Server 1.19.0 的改动的具体技术细节，建议阅读 [xorg-server 1.18.99.2](https://lists.x.org/archives/xorg-announce/2016-September/002709.html)、[xorg-server 1.18.99.901](https://lists.x.org/archives/xorg-announce/2016-September/002711.html) 和 [xorg-server 1.18.99.902](https://lists.x.org/archives/xorg-announce/2016-October/002734.html) 的改动日志，了解开发里程碑。

### Firefox 50.0 for Linux、Mac 和 Windows 版本发布

不是一个大改版，但有很多有趣的变化。

2016 年 11 月 15 日，Mozilla 发布 Firefox 50.0 浏览器，支持 GNU/Linux、macOS 以及 Microsoft Windows 系统。Mozilla 发布的[发行版公告](https://www.mozilla.org/en-US/firefox/50.0/releasenotes/)包含在此版本中所有大的变化。


我成为软件工程师的原因和经历

如果白人把我们叫有色人种，那我们就叫他们无色人种好了。

# 我成为软件工程师的原因和经历

<img src="content_image/album_201611_19_095104xi5tghdsdxea0mad.png" alt="" title="">

1989 年乌干达首都，坎帕拉。

我明智的父母决定与其将我留在家里添麻烦，不如把我送到叔叔的办公室学学电脑。几天后，我和另外六、七个小孩，还有一台放置在课桌上的崭新电脑，一起置身于 21 层楼的一间狭小房屋中。很明显我们还不够格去碰那家伙。在长达三周无趣的 DOS 命令学习后，美好时光来到，终于轮到我来输 **copy doc.txt d:** 啦。

那将文件写入五英寸软盘的奇怪的声音，听起来却像音乐般美妙。那段时间，这块软盘简直成为了我的至宝。我把所有可以拷贝的东西都放在上面了。然而，1989 年的乌干达，人们的生活十分“正统”，相比较而言，捣鼓电脑、拷贝文件还有格式化磁盘就称不上“正统”。于是我不得不专注于自己接受的教育，远离计算机科学，走入建筑工程学。

之后几年里，我和同龄人一样，干过很多份工作也学到了许多技能。我教过幼儿园的小朋友，也教过大人如何使用软件，在服装店工作过，还在教堂中担任过引座员。在我获取堪萨斯大学的学位时，我正在技术管理员的手下做技术助理，听上去比较神气，其实也就是搞搞学生数据库而已。

当我 2007 年毕业时，计算机技术已经变得不可或缺。建筑工程学的方方面面都与计算机科学深深的交织在一起，所以我们不经意间学了些简单的编程知识。我对于这方面一直很着迷，但我不得不成为一位“正统”的工程师，由此我发展了一项秘密的私人爱好：写科幻小说。

在我的故事中，我以我笔下的女主角的形式存在。她们都是编程能力出众的科学家，总是卷入冒险，并用自己的技术发明战胜那些渣渣们，有时甚至要在现场发明新方法。我提到的这些“新技术”，有的是基于真实世界中的发明，也有些是从科幻小说中读到的。这就意味着我需要了解这些技术的原理，而且我的研究使我关注了许多有趣的 reddit 版块和电子杂志。

### 开源：巨大的宝库

那几周在 DOS 命令上花费的经历对我影响巨大，我在一些非专业的项目上耗费心血，并占据了宝贵的学习时间。Geocities 刚向所有 Yahoo! 用户开放时，我就创建了一个网站，用于发布一些用小型数码相机拍摄的个人图片。我建立多个免费网站，帮助家人和朋友解决一些他们所遇到的电脑问题，还为教堂搭建了一个图书馆数据库。

这意味着，我需要一直研究并尝试获取更多的信息，使它们变得更棒。互联网上帝保佑我，让开源进入我的视野。突然之间，30 天试用期和 license 限制对我而言就变成了过去式。我可以完全不受这些限制，继续使用 GIMP、Inkscape 和 OpenOffice。

### 是正经做些事情的时候了

我很幸运，有商业伙伴喜欢我的经历。她也是个想象力丰富的人，期待更高效、更便捷的互联世界。我们根据我们以往成功道路中经历的弱点制定了解决方案，但执行却成了一个问题。我们都缺乏给产品带来活力的能力，每当我们试图将想法带到投资人面前时，这表现的尤为突出。

我们需要学习编程。于是 2015 年夏末，我们来到 Holberton 学校。那是一所座落于旧金山，由社区推进，基于项目教学的学校。

一天早晨我的商业伙伴来找我，以她独有的方式（每当她有疯狂想法想要拉我入伙时），进行一场对话。

**Zee**: Gloria，我想和你说点事，在你说“不”前能先听我说完吗？

**Me**: 不行。

**Zee**: 为做全栈工程师，咱们申请上一所学校吧。

**Me**: 什么？

**Zee**: 就是这，看！就是这所学校，我们要申请这所学校来学习编程。

**Me**: 我不明白。我们不是正在网上学 Python 和…

**Zee**: 这不一样。相信我。

**Me**: 那…

**Zee**: 这就是不信任我了。

**Me**: 好吧 … 给我看看。

### 抛开偏见

我读到的和我们在网上看的的似乎很相似。这简直太棒了，以至于让人觉得不太真实，但我们还是决定尝试一下，全力以赴，看看结果如何。

要成为学生，我们需要经历四步选择，不过选择的依据仅仅是天赋和动机，而不是学历和编程经历。筛选便是课程的开始，通过它我们开始学习与合作。

根据我和我伙伴的经验， Holberton 学校的申请流程比其他的申请流程有趣太多了，就像场游戏。如果你完成了一项挑战，就能通往下一关，在那里有别的有趣的挑战正等着你。我们创建了 Twitter 账号，在 Medium 上写博客，为创建网站而学习 HTML 和 CSS， 打造了一个充满活力的在线社区，虽然在此之前我们并不知晓有谁会来。

在线社区最吸引人的就是大家有多种多样的使用电脑的经验，而背景和性别不是社区创始人（我们私下里称他们为“The Trinity”）做出选择的因素。大家只是喜欢聚在一块儿交流。我们都行进在通过学习编程来提升自己计算机技术的旅途上。

相较于其他的的申请流程，我们不需要泄露很多的身份信息。就像我的伙伴，她的名字里看不出她的性别和种族。直到最后一个步骤，在视频聊天的时候， The Trinity 才知道她是一位有色人种女性。迄今为止，促使她达到这个级别的只是她的热情和才华。肤色和性别并没有妨碍或者帮助到她。还有比这更酷的吗？

获得录取通知书的晚上，我们知道生活将向我们的梦想转变。2016 年 1 月 22 日，我们来到巴特瑞大街 98 号，去见我们的同学们 [Hippokampoiers](https://twitter.com/hippokampoiers)，这是我们的初次见面。很明显，在见面之前，“The Trinity”已经做了很多工作，聚集了一批形形色色的人，他们充满激情与热情，致力于成长为全栈工程师。

这所学校有种与众不同的体验。每天都是向某一方面编程的一次竭力的冲锋。交给我们的工程，并不会有很多指导，我们需要使用一切可以使用的资源找出解决方案。[Holberton 学校](https://www.holbertonschool.com/) 认为信息来源相较于以前已经大大丰富了。MOOC（大型开放式课程）、教程、可用的开源软件和项目，以及线上社区等等，为我们完成项目提供了足够的知识。加之宝贵的导师团队来指导我们制定解决方案，这所学校变得并不仅仅是一所学校；我们已经成为了求学者的团体。任何对软件工程感兴趣并对这种学习方法感兴趣的人，我都强烈推荐这所学校。在这里的经历会让人有些悲喜交加，但是绝对值得。

### 开源问题

我最早使用的开源系统是 [Fedora](https://en.wikipedia.org/wiki/Fedora_(operating_system))，一个 [Red Hat](https://www.redhat.com/) 赞助的项目。与 一名IRC 成员交流时，她推荐了这款免费的操作系统。 虽然在此之前，我还未独自安装过操作系统，但是这激起了我对开源的兴趣和日常使用计算机时对开源软件的依赖性。我们提倡为开源贡献代码，创造并使用开源的项目。我们的项目就在 Github 上，任何人都可以使用或是向它贡献出自己的力量。我们也会使用或以自己的方式为一些既存的开源项目做出贡献。在学校里，我们使用的大部分工具是开源的，例如 Fedora、[Vagrant](https://www.vagrantup.com/)、[VirtualBox](https://www.virtualbox.org/)、[GCC](https://gcc.gnu.org/) 和 [Discourse](https://www.discourse.org/)，仅举几例。

在向软件工程师行进的路上，我始终憧憬着有朝一日能为开源社区做出一份贡献，能与他人分享我所掌握的知识。

### 多样性问题

站在教室里，和 29 位求学者交流心得，真是令人陶醉。学员中 40% 是女性， 44% 是有色人种。当你是一位有色人种且为女性，并身处于这个以缺乏多样性而著名的领域时，这些数字就变得非常重要了。这是高科技圣地麦加上的绿洲，我到达了。

想要成为一个全栈工程师是十分困难的，你甚至很难了解这意味着什么。这是一条充满挑战但又有丰富回报的旅途。科技推动着未来飞速发展，而你也是美好未来很重要的一部分。虽然媒体在持续的关注解决科技公司的多样化的问题，但是如果能认清自己，清楚自己的背景，知道自己为什么想成为一名全栈工程师，你便能在某一方面迅速成长。

不过可能最重要的是，告诉大家，女性在计算机的发展史上扮演过多么重要的角色，以帮助更多的女性回归到科技界，而且在给予就业机会时，不会因性别等因素而感到犹豫。女性的才能将会共同影响科技的未来，以及整个世界的未来。

---

via: <https://opensource.com/life/16/4/my-open-source-story-gloria-bwandungi>

作者：[Gloria Bwandungi](https://opensource.com/users/nappybrain) 译者：[martin2011qi](https://github.com/martin2011qi) 校对：[jasminepeng](https://github.com/jasminepeng)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出


在 Linux 中查看你的时区

cat /etc/timezone timezone这个文件已经不存在了。。现在应该是localtime这个文件吧

# 在 Linux 中查看你的时区

在这篇短文中，我们将向你简单介绍几种 Linux 下查看系统时区的简单方法。在 Linux 机器中，尤其是生产服务器上的时间管理技能，是在系统管理中一个极其重要的方面。

Linux 包含多种可用的时间管理工具，比如 `date` 或 `timedatectlcommands`，你可以用它们来获取当前系统时区，也可以[将系统时间与 NTP 服务器同步](http://www.tecmint.com/install-ntp-server-in-centos/)，来自动地、更精确地进行时间管理。

好，我们一起来看几种查看我们的 Linux 系统时区的不同方法。

### 1、我们从使用传统的 `date` 命令开始

使用下面的命令，来看一看我们的当前时区：

```
$ date

```

或者，你也可以使用下面的命令。其中 `%Z` 格式可以输出字符形式的时区，而 `%z` 输出数字形式的时区：

```
$ date +”%Z %z”

```

*查看 Linux 时区*

注意：`date` 的手册页中包含很多输出格式，你可以利用它们，来替换你的 `date` 命令的输出内容：

```
$ man date

```

### 2、接下来，你同样可以用 `timedatectl` 命令

当你不带任何参数运行它时，这条命令可以像下图一样，输出系统时间概览，其中包含当前时区：

```
$ timedatectl

```

然后，你可以在命令中提供一条管道，然后用 [grep 命令](http://www.tecmint.com/12-practical-examples-of-linux-grep-command/) 来像下面一样，只过滤出时区信息：

```
$ timedatectl | grep “Time zone”

```

*查看当前 Linux 时区*

同样，我们可以学习如何使用 timedatectl 来[设置 Linux 时区](http://www.tecmint.com/set-time-timezone-and-synchronize-time-using-timedatectl-command/)。

### 3、进一步，显示文件 /etc/timezone 的内容

使用 [cat 工具](http://www.tecmint.com/13-basic-cat-command-examples-in-linux/)显示文件 `/etc/timezone` 的内容，来查看你的时区：

```
$ cat /etc/timezone

```

*在 Linux 中查看时区*

对于 RHEL/CentOS/Fedora 用户，这里还有一条可以起到同样效果的命令：

```
$ grep ZONE /etc/sysconfig/clock

```

就这些了！别忘了在下面的反馈栏中分享你对于这篇文章中的看法。重要的是：你应该通过这篇 Linux 时区管理指南来学习更多系统时间管理的知识，因为它含有很多易于操作的实例。

---

via: <http://www.tecmint.com/check-linux-timezone>

作者：[Aaron Kili](http://www.tecmint.com/author/aaronkili/) 译者：[StdioA](https://github.com/StdioA) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


Linux 基金会主席说，微软还弄不死 Linux

Summary: Linux 基金会主席 Jim Zemlin 在一次“计算机世界”的采访解释说，微软现在是一家完全不同的公司，它对摧毁 Linux 根本不感兴趣。

Windows和Linux不是竞争的关系，是互补的关系。

桌面一点长进也没有，问题多多，还是比不上xp

有点道理!

win用户，你有用过吗？有点想骂你的感觉～～～

虽然linux桌面软件不少，但是大多很粗糙，体验不佳，限制了它在桌面方面的发展；当然精品也有，只是不多。

废话，当然用过，我公司客户天天骂linux的桌面环境。

我觉得就是竞争关系，现在微软已经在“呼吁所有的Linux开发者转到Windows10平台”了。这就说明微软想要慢慢吞掉Linux。因为Windows10中已经集成了Linux子系统，所以只要安装了Windows10，就不用安装Linux了（对一般的用户来说是一举两得），无论Linux以后发展的多出色，都会被微软吸收（它可以直接拿来集成到win10子系统中），而Linux却得不到多大好处，最后Windows10会越来越壮大，Linux会因为Windows10的排挤死掉很多发行版（包括Ubuntu）。

# Linux 基金会主席说，微软还弄不死 Linux

本周，[微软宣布它成为了 Linux 基金会的白金成员](/article-7966-1.html)，这距其前 CEO 巴尔默将 Linux 称之为“癌症”才 15 年。

虽然此举对微软来说意义重大，但是并不是开源界的每个人都认为这对于 Linux 来说是好的变化，特别是这家位于雷德蒙的软件巨头向来被视作开源和 Linux 的敌人。

对于微软在开源领域的扩张中，业界有各种不同的观点，但就反对者而言，其最终的看法可以归结为微软试图减慢 Linux 的发展速度并最终扼杀它。

<img src="content_image/album_201611_19_105137el3g3dah2asaag6r.jpg" alt="" title="">

### Jim 说，没啥阴谋

虽然这看起来像是一个巨大的阴谋，但是 Linux 基金会主席 Jim Zemlin 在“[计算机世界](http://www.computerworld.com/article/3142453/open-source-tools/microsoft-really-has-changed-linux-foundation-chief-says.html#tk.rss_all)”的采访中解释说，微软现在是一家完全不同的公司，它对摧毁 Linux 根本不感兴趣。

“首先，当你加入到 Linux 基金会当中，你就负有支持我们的组织的使命的责任，也就是说支持 Linux 和开源的发展”，他说道，“微软不仅致力于成为我们的组织成员，而且我可以告诉你，他们已经在做很多事情了。”

“现在一切都在云上，每个人都有计算机，有太多的软件，即使是微软这样的巨头也不可能以一己之力全部搞定。这不可能。”

以白金会员加入 Linux 基金会并不是微软唯一做的事情，该软件巨头之前就一直通过开源其产品来尝试接近 Linux，比如 .NET、PowerShell 和新的 Edge 浏览器的引擎部分。

甚至，连微软的拳头产品 Windows 10 都带有 Ubuntu 子系统，这被视作该公司努力将两个世界融合在一起的举措。

当然，如果微软继续在 Linux 世界继续扩展，这将是一个大的机遇，所以让我们期待将来有更多的新的变化。


用Linux为什么就非要仿win10呢？很是不懂你们年轻人

这么丑。。

来自广东广州广东工贸职业技术学院的 Firefox 50.0|GNU/Linux 用户

风格没统一，看起来就是变扭。<br />
不要只为模仿。我觉得有自己的特色不是很好吗

来自江苏南京的 Internet Explorer 11.0|Windows 7 用户

KDE这点不好，看起来总不协调，不统一

KDE Plasma 5 风格还是很统一的，默认有亮色和暗色主题，并且对 GTK 程序风格的支持也很好。反倒是 Xfce 的风格不是很统一。

都用Linux了为什么还要仿win10啊

。

。

。

。

。

。

。

。

要仿也是仿mac啊

萝卜白菜各有所爱

萝卜白菜各有所爱

Linux的宗旨是什么？自由<br />
那么我高兴把系统弄成Win10的样子，就弄成Win10；我高兴把系统弄成Mac的样子，就弄成Mac的样子；我高兴把系统弄成什么样子是我的自由。这才是自由啊！

自由软件不是自由

KDE本身就挺好看的

没觉得win10界面有多好看。。

KDE本身就挺好看的。没必要搞成windows的式样。

# 通过安装扩展让 KDE Plasma 5 桌面看起来感觉就像 Windows 10 桌面

通过一些步骤，我将告诉你如何把 KDE Plasma 5 桌面变成 Windows 10 桌面。

除了菜单， KDE Plasma 桌面的许多地方已经和 Win 10 桌面非常像了。因此，只需要一点点改动就可以使二者看起来几乎是一样。

### 开始菜单

让 KDE Plasma 桌面看起来像 Win 10 桌面的首要以及可能最有标志性的环节是实现 Win 10 的 ‘开始’ 菜单。

通过安装 [Zren's Tiled Menu](https://github.com/Zren/plasma-applets/tree/master/tiledmenu)，这很容易实现。

#### 安装

1、 在 KDE Plasma 桌面上单击右键 -><ruby> 解锁窗口部件 <rp>  （ </rp> <rt>  Unlock Widgets </rt> <rp>  ） </rp></ruby>

2、 在 KDE Plasma 桌面上单击右键 -> <ruby> 增添窗口部件 <rp>  （ </rp> <rt>  Add Widgets </rt> <rp>  ） </rp></ruby>

3、 获取新窗口部件 -> <ruby> 下载新的 Plasma 窗口部件 <rp>  （ </rp> <rt>  Download New Plasma Widgets </rt> <rp>  ） </rp></ruby>

4、 搜索“Tiled Menu” -> <ruby> 安装 <rp>  （ </rp> <rt>  Install </rt> <rp>  ） </rp></ruby>

#### 激活

1、 在你当前的菜单按钮上单击右键 -> <ruby> 替代…… <rp>  （ </rp> <rt>  Alternatives… </rt> <rp>  ） </rp></ruby>

2、 选择 "TIled Mune" ->点击<ruby> 切换 <rp>  （ </rp> <rt>  Switch </rt> <rp>  ） </rp></ruby>

*KDE Tiled 菜单扩展*

### 主题

弄好菜单以后，下一个你可能需要的就是主题。幸运的是， [K10ne](https://store.kde.org/p/1153465/) 提供了一个 WIn 10 主题体验。

#### 安装：

1、 从 Plasma 桌面菜单打开“<ruby> 系统设置 <rp>  （ </rp> <rt>  System Settings </rt> <rp>  ） </rp></ruby>” -> <ruby> 工作空间主题 <rp>  （ </rp> <rt>  Workspace Theme </rt> <rp>  ） </rp></ruby>

2、 从侧边栏选择“<ruby> 桌面主题 <rp>  （ </rp> <rt>  Desktop Theme </rt> <rp>  ） </rp></ruby>” -> <ruby> 获取新主题 <rp>  （ </rp> <rt>  Get new Theme </rt> <rp>  ） </rp></ruby>

3、 搜索“K10ne” -> <ruby> 安装 <rp>  （ </rp> <rt>  Install </rt> <rp>  ） </rp></ruby>

#### 激活

1、 从 Plasma 桌面菜单选择“<ruby> 系统设置 <rp>  （ </rp> <rt>  System Settings </rt> <rp>  ） </rp></ruby>” -> <ruby> 工作空间主题 <rp>  （ </rp> <rt>  Workspace Theme </rt> <rp>  ） </rp></ruby>

2、 从侧边栏选择“<ruby> 桌面主题 <rp>  （ </rp> <rt>  Desktop Theme </rt> <rp>  ） </rp></ruby>” -> “K10ne”

3、 <ruby> 应用 <rp>  （ </rp> <rt>  Apply </rt> <rp>  ） </rp></ruby>

### 任务栏

最后，为了有一个更加完整的体验，你可能也想拥有一个更加 Win 10 风格的任务栏，

这次，你需要的安装包，叫做“Icons-only Task Manager”， 在大多数 Linux 发行版中，通常会默认安装。如果没有安装，需要通过你的系统的合适通道来获取它。

#### 激活

1、在 Plasma 桌面上单击右键 -> <ruby> 打开窗口部件 <rp>  （ </rp> <rt>  Unlock Widgets </rt> <rp>  ） </rp></ruby>

2、在 Plasma 桌面上单击右键 -> <ruby> 增添部件 <rp>  （ </rp> <rt>  Add Widgets </rt> <rp>  ） </rp></ruby>

3、把“Icons-only Task Manager”拖放到你的桌面面板的合适位置。

---

via: <https://iwf1.com/make-kde-plasma-5-desktop-look-feel-like-windows-10-using-these-extensions/>

作者：[Liron](https://iwf1.com/tag/linux) 译者：[ucasFL](https://github.com/ucasFL) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


如果能在WIN10上用所有UB的软件，可真是件天大的好事~

该文章分页了，所以rss没有全文输出。阅读器里看不到下文，很是遗憾。

可以通过 w3m 加载其打印链接(就是带有 ?pr 字样的 QueryString)。这样可以实现全文显示。当然只是图片显示稍微有些麻烦。

所有 UB 的软件，这种说法可能不是很恰当，应该是面向 Ubuntu 打包的软件。

文章分页……<br />
时代已经过去了

分页的原因是，这个文章图片太多，有时候会严重影响阅读速度，否则不会特例。

很多用户不肯尝试linux是因为其应用少，比如该死的QQ，win本来就慢，再把linux作为子系统，我认为这纯是微软的阴谋。因此，如果linux能完全使用win应用的话，那win就离死不远了，呵呵

最新的我不知道，我只知道几个月前用WSL发送socket消息时好时坏，这玩意别当真了

那么要不要来一打win10玩玩呢

测试其实说明了Windows的磁盘读写速度较Ubuntu慢，可能是Windows磁盘读写中校验方法的不同造成的，在保证安全的基础上还有改进的空间；另外在内存读写上Windows则较Ubuntu有更快的速度，可能在于Windows的系统内核比Ubuntu更为精炼，未来从X子系统过渡到wayland后可能会得到进一步的提升。

为此装了win10玩了下，只能说只能玩玩。。。想拿这个做事还是省省吧，效率太低了，各种卡逼

然而我只用XP

嚯

我想转载到我的csdn博客，会标明转载，请问可以吗

当然可以，标明原文、译文地址、作者、译者即可。

# Ubuntu 14.04/16.04 与 Windows 10 周年版 Ubuntu Bash 性能对比

今年初，当 Microsoft 和 Canonical 发布 [Windows 10 Bash 和 Ubuntu 用户空间](http://www.phoronix.com/scan.php?page=news_item&px=Ubuntu-User-Space-On-Win10)，我尝试做了一些初步性能测试 [Ubuntu on Windows 10 对比 原生 Ubuntu](http://www.phoronix.com/scan.php?page=article&item=windows-10-lxcore&num=1)，这次我发布更多的，关于原生纯净的 Ubuntu 和基于 Windows 10 的基准对比。

Windows 的 Linux 子系统测试完成了所有测试，并随着 Windows 10周年更新放出。 默认的 Ubuntu 用户空间还是 Ubuntu 14.04，但是已经可以升级到 16.04。所以测试首先在 14.04 测试，完成后将系统升级升级到 16.04 版本并重复所有测试。完成所有基于 Windows 的 Ubuntu 子系统测试后，我在同样的系统上干净地安装了 Ubuntu 14.04.5 和 Ubuntu 16.04 LTS 来做性能对比。

配置为 Intel i5 6600K Skylake，16G 内存和 256G 东芝 ssd，测试过程中每个操作系统都采用其原生默认配置和软件包。

*http://openbenchmarking.org/embed.php?i=1608096-LO-BASHWINDO87&sha=09989b3&p=2*

这次 Ubuntu/Bash on Windows 和原生 Ubuntu 对比测试，采用开源软件 [Phoronix 测试套件](http://www.phoronix-test-suite.com/)，完全自动化并可重复测试。

首先是 SQLite 嵌入式数据库基准测试。这方面开箱即用的 Ubuntu/Bash on Windows 性能是相当的慢，但是如果将环境从 14.04 升级到 16.04 LTS，性能会快很多。然而，对于繁重磁盘操作的任务，原生 Ubuntu Linux 几乎比 Windows 的子系统 Linux 快了近 2 倍。

编译测试作为额外的繁重磁盘操作测试显示，定制的 Windows 子系统真的成倍的限制了 Ubuntu 性能。

接下来，是一些使用 Stream 的基本的系统内存速度测试：

奇怪的是，这些 Stream 内存的基准测试显示 Ubuntu on Windows 的性能比原生的 Ubuntu 好！这个现象同时发生在基于同样的 Windows 却环境不同的 14.04 和 16.04 LTS 上。

接下来，是一些繁重 CPU 操作测试。

通过 Dolfyn 科学测试，Ubuntu On Windows 和原生 Ubuntu 之间的性能其实是相当接近的。 对于 Ubuntu 16.04，由于较新的 GCC 编译器性能衰减，两个平台上的性能都较慢。

透过 Fhourstones 测试和 John The Ripper 测试表明，通过在 Windows 的 Linux 子系统运行的 Ubuntu 的性能可以非常接近裸机 Ubuntu Linux 性能！

类似于 Stream 测试，x264 结果是另一个奇怪的情况，其中最好的性能实际上是使用 Linux 子系统的 Ubuntu On Windows！

计时编译基准测试非常利于裸机 Ubuntu Linux。这是应该是由于大型程序编译需要大量读写磁盘，在先前测试已经发现了，这是基于 Windows 的 Linux 子系统缓慢的一大领域。

许多其他的通用开源基准测试表明，严格的针对 CPU 的测试，Windows 子系统的 Ubuntu 的性能是很接近的，甚至是与原生安装在实际硬件中的 Ubuntu Linux 相等。

最新的 Windows 的 Linux 子系统，测试结果实际上相当令人印象深刻。让人沮丧的仅仅只是持续缓慢的磁盘/文件系统性能，但是对于受 CPU 限制的工作负载，结果是非常引人注目的。还有很罕见的情况， x264 和 Stream 测试，Ubuntu On Windows 上的性能看起来明显优于运行在实际硬件上 的Ubuntu Linux。

总的来说，体验是十分愉快的，并且在 Ubuntu/Bash on Windows 也没有遇到任何其他的 bug。如果你有还兴趣了解更多关于 Windows 和 Linux 的基准测试，欢迎留言讨论。

---

via: <https://www.phoronix.com/scan.php?page=article&item=windows10-anv-wsl&num=1>

作者：[Michael Larabel](http://www.michaellarabel.com/) 译者：[VicYu/Vic020](http://vicyu.net) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


如何在 Linux 中恢复一个删除了的文件

從其他地方看來的

# 如果要恢復文件, 可以在通過

lsof

# 獲得刪除文件信息後, 進入到

# 該進程的

/proc/PID/fd

# 然後用

cp src dst

# 或

cat src > dst

# 進行恢復.

这是一个方法。

这个软件用来恢复图片，其它的文件类型行吗？

我是在.bashrc里面添加

alias rm='mv -f --target-directory=/home/levin/.local/share/Trash/files/

删除时就是把文件移动到了目标文件夹 目标文件夹是我的文件管理器的垃圾桶的目标位置。

不错！

可以使用 gvfs-trash 来代替rm, 可以在 ~/.bashrc 文件里添加如下语句:

alias rm="gvfs-trash"

要恢复删除的文件，可以使用 restore-trash 命令, 该工具在 Ubuntu 中默认没有安装，可以执行下面的命令安装:

$ sudo apt-get install trash-cli

# 如何在 Linux 中恢复一个删除了的文件

你曾经是否遇到这样的事？当你发现的时候，你已经通过删除键，或者在命令行中使用 `rm` 命令，错误的删除了一个不该删除的文件。

在第一种情况下，你可以到垃圾箱，[搜索那个文件](http://www.tecmint.com/linux-find-command-to-search-multiple-filenames-extensions/)，然后把它复原到原始位置。但是第二种情况又该怎么办呢？你可能知道，Linux 命令行不会把删除的文件转移到任何位置，而是直接把它们移除了，biu~，它们就不复存在了。

在这篇文章里，将分享一个很有用的技巧来避免此事发生。同时，也会分享一个工具，不小心删除了某些不该删除的文件时，也许用得上。

### 把删除创建为 `rm -i` 的别名

当 `-i` 选项配合 `rm` 命令（也包括其他[文件处理命令比如 cp 或者 mv](http://www.tecmint.com/progress-monitor-check-progress-of-linux-commands/)）使用时，在删除文件前会出现一个提示。

这同样也可以运用到当[复制，移动或重命名一个文件](http://www.tecmint.com/rename-multiple-files-in-linux/)，当所在位置已经存在一个和目标文件同名的文件时。

这个提示会给你第二次机会来考虑是否真的要删除该文件 - 如果你在这个提示上选择确定，那么文件就被删除了。这种情况下，很抱歉，这个技巧并不能防止你的粗心大意。

为了 `rm -i` 别名替代 `rm` ，这样做：

```
alias rm='rm -i'

```

运行 `alias` 命令可以确定 `rm` 现在已经被别名了：

*为 rm 增加别名*

然而，这只能在当前用户的当前 shell 上有效。为了永久改变，你必须像下面展示的这样把它保存到　`~/.bashrc`　中（一些版本的　Linux 系统可能是　`~/.profile`）。

*在 Linux 中永久增添别名*

为了让 `~/.bashrc`（或 `~/.profile`）中所做的改变立即生效，从当前 shell 中运行文件：

```
. ~/.bashrc

```

*在 Linux 中激活别名*

### 取证工具－Foremost

但愿你对于你的文件足够小心，当你要从外部磁盘或 USB 设备中恢复丢失的文件时，你只需使用这个工具即可。

然而，当你意识到你意外的删除了系统中的一个文件并感到恐慌时－不用担心。让我们来看一看 `foremost`，一个用来处理这种状况的取证工具。

要在 CentOS/RHEL 7　中安装　Foremost，需要首先启用 Repoforge：

```
# rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
# yum install foremost

```

然而在 Debian 及其衍生系统中，需这样做：

```
# aptitude install foremost

```

安装完成后，我们做一个简单的测试吧。首先删除 `/boot/images` 目录下一个名为 `nosdos.jpg` 的图像文件：

```
# cd images
# rm nosdos.jpg

```

要恢复这个文件，如下所示使用 `foremost`（要先确认所在分区 - 本例中， `/boot` 位于 `/dev/sda1` 分区中）。

```
# foremost -t jpg -i /dev/sda1 -o /home/gacanepa/rescued

```

其中，`/home/gacanepa/rescued` 是另外一个磁盘中的目录 － 请记住，把文件恢复到被删除文件所在的磁盘中不是一个明智的做法。

如果在恢复过程中，占用了被删除文件之前所在的磁盘分区，就可能无法恢复文件。另外，进行文件恢复操作前不要做任何其他操作。

当 `foremost` 执行完成以后，恢复的文件（如果可以恢复）将能够在目录 ·/home/gacanepa/rescue/jpg` 中找到。

### 总结

在这篇文章中，我们阐述了如何避免意外删除一个不该删除的文件，以及万一这类事情发生，如何恢复文件。还要警告一下， `foremost` 可能运行很长时间，时间长短取决于分区的大小。

如果您有什么问题或想法，和往常一样，不要犹豫，告诉我们。可以给我们留言。

---

via: <http://www.tecmint.com/recover-deleted-file-in-linux/>

作者：[Gabriel Cánepa](http://www.tecmint.com/author/gacanepa/) 译者：[ucasFL](https://github.com/ucasFL) 校对：[jasminepeng](https://github.com/jasminepeng)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


如何使用 Apache 控制命令检查它的模块是否已经启用或加载

值得学习

谢谢分享

# 如何使用 Apache 控制命令检查它的模块是否已经启用或加载

本篇中，我们会简要地讨论 Apache 服务器前端以及如何列出或查看已经启用的 Apache 模块。

<img src="content_image/album_201611_21_181649vvviv9ctcu9vwfi9.jpg" alt="" title="">

Apache 基于模块化的理念而构建，这样就可以让 web 管理员添加不同的模块来扩展主要的功能及[增强性能](http://www.tecmint.com/apache-performance-tuning/)。

常见的 Apache 模块有：

1. mod\_ssl – 提供了 [HTTPS 功能](http://www.tecmint.com/install-lets-encrypt-ssl-certificate-to-secure-apache-on-rhel-centos/)。
2. mod\_rewrite – 可以用正则表达式匹配 url 样式，并且使用 [.htaccess 技巧](http://www.tecmint.com/apache-htaccess-tricks/)来进行透明转发，或者提供 HTTP 状态码回应。
3. mod\_security – 用于[保护 Apache 免于暴力破解或者 DDoS 攻击](http://www.tecmint.com/protect-apache-using-mod_security-and-mod_evasive-on-rhel-centos-fedora/)。
4. mod\_status - 用于[监测 Apache 的负载及页面统计](http://www.tecmint.com/monitor-apache-web-server-load-and-page-statistics/)。

在 Linux 中 `apachectl` 或者 `apache2ctl`用于控制 Apache 服务器，是 Apache 的前端。

你可以用下面的命令显示 `apache2ctl` 的使用信息：

```
$ apache2ctl help
或者
$ apachectl help

```

```
Usage: /usr/sbin/httpd [-D name] [-d directory] [-f file]
                       [-C "directive"] [-c "directive"]
                       [-k start|restart|graceful|graceful-stop|stop]
                       [-v] [-V] [-h] [-l] [-L] [-t] [-S]
Options:
  -D name            : define a name for use in  directives
  -d directory       : specify an alternate initial ServerRoot
  -f file            : specify an alternate ServerConfigFile
  -C "directive"     : process directive before reading config files
  -c "directive"     : process directive after reading config files
  -e level           : show startup errors of level (see LogLevel)
  -E file            : log startup errors to file
  -v                 : show version number
  -V                 : show compile settings
  -h                 : list available command line options (this page)
  -l                 : list compiled in modules
  -L                 : list available configuration directives
  -t -D DUMP_VHOSTS  : show parsed settings (currently only vhost settings)
  -S                 : a synonym for -t -D DUMP_VHOSTS
  -t -D DUMP_MODULES : show all loaded modules
  -M                 : a synonym for -t -D DUMP_MODULES
  -t                 : run syntax check for config files

```

`apache2ctl` 可以工作在两种模式下，SysV init 模式和直通模式。在 SysV init 模式下，`apache2ctl` 用如下的简单的单命令形式：

```
$ apachectl command
或者
$ apache2ctl command

```

比如要启动并检查它的状态，运行这两个命令。如果你是普通用户，使用 [sudo 命令](http://www.tecmint.com/su-vs-sudo-and-how-to-configure-sudo-in-linux/)来以 root 用户权限来运行：

```
$ sudo apache2ctl start
$ sudo apache2ctl status

```

```
tecmint@TecMint ~ $ sudo apache2ctl start
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1\. Set the 'ServerName' directive globally to suppress this message
httpd (pid 1456) already running
tecmint@TecMint ~ $ sudo apache2ctl status
Apache Server Status for localhost (via 127.0.0.1)

Server Version: Apache/2.4.18 (Ubuntu)
Server MPM: prefork
Server Built: 2016-07-14T12:32:26

-------------------------------------------------------------------------------

Current Time: Tuesday, 15-Nov-2016 11:47:28 IST
Restart Time: Tuesday, 15-Nov-2016 10:21:46 IST
Parent Server Config. Generation: 2
Parent Server MPM Generation: 1
Server uptime: 1 hour 25 minutes 41 seconds
Server load: 0.97 0.94 0.77
Total accesses: 2 - Total Traffic: 3 kB
CPU Usage: u0 s0 cu0 cs0
.000389 requests/sec - 0 B/second - 1536 B/request
1 requests currently being processed, 4 idle workers

__W__...........................................................
................................................................
......................

Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"C" Closing connection, "L" Logging, "G" Gracefully finishing,
"I" Idle cleanup of worker, "." Open slot with no current process

```

当在直通模式下，`apache2ctl` 可以用下面的语法带上所有 Apache 的参数：

```
$ apachectl [apache-argument]
$ apache2ctl [apache-argument]

```

可以用下面的命令列出所有的 Apache 参数：

```
$ apache2 help    [在基于Debian的系统中]
$ httpd help      [在RHEL的系统中]

```

### 检查启用的 Apache 模块

因此，为了检测你的 Apache 服务器启动了哪些模块，在你的发行版中运行适当的命令，`-t -D DUMP_MODULES` 是一个用于显示所有启用的模块的 Apache 参数：

```
---------------  在基于 Debian 的系统中 ---------------
$ apache2ctl -t -D DUMP_MODULES
或者
$ apache2ctl -M

```

```
---------------  在 RHEL 的系统中 ---------------
$ apachectl -t -D DUMP_MODULES
或者
$ httpd -M
$ apache2ctl -M

```

```
[root@tecmint httpd]# apachectl -M
Loaded Modules:
 core_module (static)
 mpm_prefork_module (static)
 http_module (static)
 so_module (static)
 auth_basic_module (shared)
 auth_digest_module (shared)
 authn_file_module (shared)
 authn_alias_module (shared)
 authn_anon_module (shared)
 authn_dbm_module (shared)
 authn_default_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
 authz_owner_module (shared)
 authz_groupfile_module (shared)
 authz_dbm_module (shared)
 authz_default_module (shared)
 ldap_module (shared)
 authnz_ldap_module (shared)
 include_module (shared)
....

```

就是这样！在这篇简单的教程中，我们解释了如何使用 Apache 前端工具来列出启动的 Apache 模块。记住你可以在下面的反馈表中给我们留下你的问题或者留言。

---

via: <http://www.tecmint.com/check-apache-modules-enabled>

作者：[Aaron Kili](http://www.tecmint.com/author/aaronkili/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


完整指南：在 Linux 上使用 Calibre 创建电子书

如果你使用googleplay图书而某些epub上传后被报告无法处理，可以用calibre重新制作一个epub再上传

# 完整指南：在 Linux 上使用 Calibre 创建电子书

摘要：这份初学者指南是告诉你如何在 Linux 上用 Calibre 工具快速创建一本电子书。

自从亚马逊在多年前开始销售电子书，电子书已经有了质的飞跃发展并且变得越来越流行。好消息是电子书非常容易使用自由开源的工具来被创建。

在这个教程中，我会告诉你如何在 Linux 上创建一本电子书。

### 在 Linux 上创建一本电子书

要创建一本电子书，你可能需要两个软件：一个文本处理器（当然，我使用的是 [LibreOffice](https://www.libreoffice.org/)）和 Calibre 。[Calibre](http://calibre-ebook.com/) 是一个非常优秀的电子书阅读器，也是一个电子书库的程序。你可以使用它来[在 Linux 上打开 ePub 文件](https://itsfoss.com/open-epub-books-ubuntu-linux/)或者管理你收集的电子书。（LCTT 译注：LibreOffice 是 Linux 上用来处理文本的软件，类似于 Windows 的 Office 软件)

除了这些软件之外，你还需要准备一个电子书封面（1410×2250）和你的原稿。

### 第一步

首先，你需要用你的文本处理器程序打开你的原稿。 Calibre 可以自动的为你创建一个书籍目录。要使用到这个功能，你需要在你的原稿中设置每一章的标题样式为 “Heading 1”，在 LibreOffice 中要做到这个只需要高亮标题并且在段落样式下拉框中选择“Heading 1”即可。

如果你想要有子章节，并且希望他们也被加入到目录中，只需要设置这些子章节的标题为 Heading 2。

做完这些之后，保存你的文档为 HTML 格式文件。

### 第二步

在 Calibre 程序里面，点击“<ruby> 添加书籍 <rp>  （ </rp> <rt>  Add books </rt> <rp>  ） </rp></ruby>”按钮。在对话框出现后，你可以打开你刚刚存储的 HTML 格式文件，将它加入到 Calibre 中。

### 第三步

一旦这个 HTML 文件加入到 Calibre 库中，选择这个新文件并且点击“<ruby> 编辑元数据 <rp>  （ </rp> <rt>  Edit Metadata </rt> <rp>  ） </rp></ruby>”按钮。在这里，你可以添加下面的这些信息：<ruby> 标题 <rp>  （ </rp> <rt>  Title </rt> <rp>  ） </rp></ruby>、 <ruby> 作者 <rp>  （ </rp> <rt>  Author </rt> <rp>  ） </rp></ruby>、<ruby> 封面图片 <rp>  （ </rp> <rt>  cover image </rt> <rp>  ） </rp></ruby>、 <ruby> 描述 <rp>  （ </rp> <rt>  description </rt> <rp>  ） </rp></ruby>和其它的一些信息。当你填完之后，点击“Ok”。

### 第四步

现在点击“<ruby> 转换书籍 <rp>  （ </rp> <rt>  Covert books </rt> <rp>  ） </rp></ruby>”按钮。

在新的窗口中，这里会有一些可选项，但是你不会需要使用它们。

在新窗口的右上部选择框中，选择 epub 文件格式。Calibre 也有创建 mobi 文件格式的其它选项，但是我发现创建那些文件之后经常出现我意料之外的事情。

### 第五步

在左边新的对话框中，点击“<ruby> 外观 <rp>  （ </rp> <rt>  Look & Feel </rt> <rp>  ） </rp></ruby>”。然后勾选中“<ruby> 移除段落间空白 <rp>  （ </rp> <rt>  Remove spacing between paragraphs </rt> <rp>  ） </rp></ruby>”。

接下来，我们会创建一个内容目录。如果不打算在你的书中使用目录，你可以跳过这个步骤。选中“<ruby> 内容目录 <rp>  （ </rp> <rt>  Table of Contents </rt> <rp>  ） </rp></ruby>” 标签。接下来，点击“<ruby> 一级目录 <rp>  （ </rp> <rt>  Level 1 TOC (XPath expression) </rt> <rp>  ） </rp></ruby>”右边的魔术棒图标。

在这个新的窗口中，在“<ruby> 匹配 HTML 标签 <rp>  （ </rp> <rt>  Match HTML tags with tag name </rt> <rp>  ） </rp></ruby>”下的下拉菜单中选择“h1”。点击“OK” 来关闭这个窗口。如果你有子章节，在“<ruby> 二级目录 <rp>  （ </rp> <rt>  （Level 2 TOC XPath expression） </rt> <rp>  ） </rp></ruby>”下选择“h2”。

在我们开始生成电子书前，选择输出 EPUB 文件。在这个新的页面，选择“<ruby> 插入目录 <rp>  （ </rp> <rt>  Insert inline Table of Contents </rt> <rp>  ） </rp></ruby>”选项。

现在你需要做的是点击“OK”来开始生成电子书。除非你的是一个大文件，否则生成电子书的过程一般都完成的很快。

到此为止，你就已经创建一本电子书了。

对一些特别的用户比如他们知道如何写 CSS 样式文件（LCTT 译注：CSS 文件可以用来美化 HTML 页面)，Calibre 给了这类用户一个选项来为文章增加 CSS 样式。只需要回到“<ruby> 外观 <rp>  （ </rp> <rt>  Look & Feel </rt> <rp>  ） </rp></ruby>”部分，选择“<ruby> 风格 <rp>  （ </rp> <rt>  styling </rt> <rp>  ） </rp></ruby>”标签选项。但如果你想创建一个 mobi 格式的文件，因为一些原因，它是不能接受 CSS 样式文件的。

好了，是不是感到非常容易？我希望这个教程可以帮助你在 Linux 上创建电子书。

---

via: <https://itsfoss.com/create-ebook-calibre-linux/>

作者：[John Paul](https://itsfoss.com/author/john/)  译者：[chenzhijun](https://github.com/chenzhijun) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


现在 Linux 运行在 99.6% 的 TOP500 超级计算机上

Summary: Linux 之外，仅有的两台运行非 Linux 的超级计算机来自中国的两台 Unix。

强！看巨硬还得瑟不？

在速度前十的超级计算机中，美国占据了 5 台，日本和中国各有 4 台，瑞士有 1 台。想说的是日本和中国一共有4台吧

在速度前十的超级计算机中，美国占据了 5 台，日本和中国各有 4 台，瑞士有 1 台。

搞不明白

我想说的是 w3m 对于 AJAX 支持有问题，至少默认参数下是。

晕，发错地方了。

这个要看从什么角度看，如果把云服务器视为超级计算机的话，那 Microsoft Azure 排名肯定靠前。

抱歉是我们翻译笔误·~

Linux可扩展性很强，用在超算上很合适！

ee

巨硬不在乎，它拥有绝大多数的普通PC的用户足够了~~  能赚钱才是硬道理

然而我只用XP

用超算运行windows完全是浪费资源吧

云服务器和超级计算机是两个概念吧。

# 现在 Linux 运行在 99.6% 的 TOP500 超级计算机上

*简介：虽然 Linux 在桌面操作系统只有 2% 的市场占有率，但是对于超级计算机来说，Linux 用 99% 的市场占有率轻松地获取了统治地位。*

**Linux 运行在超过 99% 的 TOP500 超级计算机上**，这并不会让人感到惊讶。2015 年我们报道过[“Linux 正运行在超过 97% 的 TOP500 超级计算机上”](https://itsfoss.com/linux-runs-97-percent-worlds-top-500-supercomputers/)，今年 Linux 表现得更好。

这些信息是由独立组织 [Top500](https://twitter.com/share?text=%23Linux+now+runs+on+more+than+99%25+of+top+500+%23supercomputers+in+the+world&via=itsfoss&related=itsfoss&url=https://itsfoss.com/linux-99-percent-top-500-supercomputers/) 收集的，每两年他们会公布已知的最快的 500 台超级计算机的细节。你可以[打开这个网站，用以下条件筛选所需要的信息](https://www.top500.org/statistics/sublist/)：国家、使用的操作系统类型、所有者等。别担心，我将会从这份表格中筛选整理出今年几个有趣的事实。

### Linux 运行在 500 台超级计算机中的 498 台

如果要将上面的百分比细化到具体数量的话，500 台超级计算机中的 498 台运行着 Linux。剩余的两台超级计算机运行着基于 Unix 的操作系统。直到去年，还有一台超级计算机上在运行 Windows，今年的列表中没有出现 Windows 的身影。或许，这些超级计算机没一台能运行 Windows 10（一语双关）。

总结一下今年表单上 TOP500 超级计算机所运行操作系统情况：

* Linux: 498
* Unix: 2
* Windows: 0

还有一份总结，它清晰展现了每年 Linux 在 TOP500 超级计算机的份额的变化情况。

* 2012 年: 94%
* [2013](https://itsfoss.com/95-percent-worlds-top-500-supercomputers-run-linux/) 年: 95%
* [2014](https://itsfoss.com/97-percent-worlds-top-500-supercomputers-run-linux/) 年: 97%
* [2015](https://itsfoss.com/linux-runs-97-percent-worlds-top-500-supercomputers/) 年: 97.2%
* 2016 年: 99.6%
* 2017 年: ???

另外，最快的前380台超级计算机运行着 Linux，包括在中国的那台最快的超级计算机。排名第 386 和第 387 的超级计算机运行着 Unix，它们同样来自中国。（←\_←）

### 其他关于最快的超级计算机的有趣数据

除去 Linux，我在表单中还找到了几个有趣的数据想跟你分享。

* 全球最快的超级计算机是[神威太湖之光](https://en.wikipedia.org/wiki/Sunway_TaihuLight). 它位于中国的[国家超级计算无锡中心](https://www.top500.org/site/50623)。它有着 93PFlops 的速度。
* 全球第二快的超级计算机是中国的[天河二号](https://en.wikipedia.org/wiki/Tianhe-2)，第三的位置则属于美国的 Titan。
* 在速度前十的超级计算机中，美国占据了 5 台，日本和中国各有 2 台，瑞士有 1 台。
* 美国和中国都各有 171 台超级计算机进入了 TOP500 的榜单中。
* 日本有 27 台，法国有 20 台，印度、俄罗斯和沙特阿拉伯各有 5 台进入了榜单中。

有趣的事实，不是吗？你能点击[这里](https://www.top500.org/statistics/sublist/)筛选出属于自己的榜单来获得更多信息。现在我很开心来宣传 Linux 运行在 99% 的 TOP500 超级计算机上，期待下一年能有 100% 的更好成绩。

当你在阅读这篇文章时，请在社交平台上分享这篇文章，这是 Linux 的一个成就，我们引以为豪~ :P

---

via: <https://itsfoss.com/linux-99-percent-top-500-supercomputers>

作者：[Abhishek Prakash](https://itsfoss.com/author/abhishek/)  译者：[ypingcn](https://github.com/ypingcn) 校对：[jasminepeng](https://github.com/jasminepeng)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


谁需要 GUI？—— Linux 终端生存之道

Summary: 我最近尝试完全在 Linux shell 中生存30天。下边提到的就是我最喜欢用的 shell 应用，可以用来处理大部分的常用电脑功能（网页浏览、文字处理等）。这些显然有些不足，因为纯文本操作实在是有些艰难。

文章不错。<br />
这个网站为什么不增加一个邮件订阅的功能呢？

不t知道对中文的支持性如何？

极具逼格的mplayer ascii art竟然没有提到呢。

装B

GUI+shell可以很好的配合使用, 有必要这么装B吗

好好地图形界面不用，非得用一个shell。就好像有个别墅，你非得说在茅草屋就可以生存。

非要跟自己过不去吗？

不觉得这种装逼方式有点幼稚了吗

装逼赞一个

我想说的是 w3m 对于 AJAX 支持有问题，至少默认参数下是。

linux终端装逼之道

哈哈哈哈，那个确实够 B 格

邮件订阅我们之前在 QQ 邮件里面提供过——不过他们的邮件订阅功能太监了。<br />
至于说创建一个邮件列表服务器，并发送，主要是订阅者寥寥，所以就仅提供了 RSS。当然，微信和微博也是有的。

可不可以在终端里看电影??[(*^__^*) 嘻嘻……]

当然可以。

主要问题是终端不支持多语言环境

这个作者挺酷的，赞一个

个人喜欢就好。。。

一看作者就不是大中国的，不然肯定会提怎么在终端里输入中文

这个问题很致命

无聊，能简单的时候就不要复杂。要不是工作需要，他妈的我才懒得各种命令行。这很吊，这是傻逼。

之前在QQ邮箱订阅中心可以看全文呢，后来某一天之后就不推送了，也不知道是哪方的问题，大侠你知道麽。

QQ 邮箱订阅这个功能他们好几年就没人管了。然后终于有一天，开始不更新了，慢慢的，所有的订阅都不更新了，哎，我们有10W 订阅啊。

现在只有一少部分能收到更新了。<br />
觉得邮箱订阅方式比较方便，虽然感觉用户少。

为什么不是 Emacs？有了 Emacs 这些就都可以干了，闲暇时还可以用 Stockfish 引擎下几盘西洋棋。

何苦为难自己

来自湖北武汉的 Chrome Mobile 40.0|Android 5.1 用户

emacs将一个好好的文本编辑器搞成了IDE，已经是邪道了。

EMACS哈哈哈，“厨房水槽”

# 谁需要 GUI？—— Linux 终端生存之道

>
> 完全在 Linux 终端中生存并不容易，但这绝对是可行的。
>
>
>

### 处理常见功能的最佳 Linux shell 应用

你是否曾想像过完完全全在 Linux 终端里生存？没有图形桌面，没有现代的 GUI 软件，只有文本 —— 在 Linux shell 中，除了文本还是文本。这可能并不容易，但这是绝对可行的。[我最近尝试完全在 Linux shell 中生存30天](http://www.networkworld.com/article/3083268/linux/30-days-in-a-terminal-day-0-the-adventure-begins.html)。下边提到的就是我最喜欢用的 shell 应用，可以用来处理大部分的常用电脑功能（网页浏览、文字处理等）。这些显然有些不足，因为纯文本操作实在是有些艰难。

### 在 Linux 终端里发邮件

要在终端里发邮件，选择有很多。很多人会推荐 mutt 和 notmuch，这两个软件都功能强大并且表现非凡，但是我却更喜欢 alpine。为何？不仅是因为它的高效性，还因为如果你习惯了像 Thunderbird 之类的 GUI 邮件客户端，你会发现 alpine 的界面与它们非常相似。

### 在 Linux 终端里浏览网页

我有一个词要告诉你：[w3m](https://en.wikipedia.org/wiki/W3m)。好吧，我承认这并不是一个真实的词。但 w3m 的确是我在 Linux 终端的 web 浏览器选择。它能够很好的呈现网页，并且它也足够强大，可以用来在像 Google+ 之类的网站上发布消息（尽管方法并不有趣）。 Lynx 可能是基于文本的 Web 浏览器的事实标准，但 w3m 还是我的最爱。

### 在 Linux 终端里编辑文本

对于编辑简单的文本文件，有一个应用是我最的最爱。不！不！不是 emacs，同样，也绝对不是 vim。对于编辑文本文件或者简要记下笔记，我喜欢使用 nano。对！就是 nano。它非常简单，易于学习并且使用方便。当然还有更多的软件具有更多功能，但 nano 的使用是最令人愉快的。

### 在 Linux 终端里处理文字

在一个只有文本的 shell 之中，“文本编辑器” 和 “文字处理程序” 实在没有什么大的区别。但是像我这样需要大量写作的，有一个专门用于长期写作的软件是非常必要的。而我最爱的就是 wordgrinder。它由足够的工具让我愉快工作——一个菜单驱动的界面（使用快捷键控制）并且支持 OpenDocument、HTML 或其他等多种文件格式。

### 在 Linux 终端里听音乐

当谈到在 shell 中播放音乐（比如 mp3，ogg 等），有一个软件绝对是卫冕之王：[cmus](https://en.wikipedia.org/wiki/Cmus)。它支持所有你想得到的文件格式。它的使用超级简单，运行速度超级快，并且只使用系统少量的资源。如此清洁，如此流畅。这才是一个好的音乐播放器的样子。

### 在 Linux 终端里发送即时消息

当我在想如果可以在终端里发送即时消息会是什么样子的时候，我的思绪瞬间爆发了。你可能知道 Pidgin——一个支持多种协议的 IM 客户端，它也有一个终端版，叫做“[finch](https://developer.pidgin.im/wiki/Using%20Finch)”，你可以使用它来同时链接多个网络、同时和几个人聊天。而且，它的界面也和 Pidgin 极为相似。多么令人惊叹啊！想要使用 Google 环聊（Google Hangouts）就试试 [hangups](https://github.com/tdryer/hangups)。它有一个非常漂亮的分页式界面，并且效果非常好。认真来说，除了一些可能需要的 emoji 表情和嵌入式图片外，在终端里发送即时消息真的是一个很好的体验。

### 在 Linux 终端里发布推文

这不是开玩笑！由于 [rainbowstream](http://www.rainbowstream.org/) 的存在，我们已经可以在终端里发布推文了。尽管我时不时遇到一些 bug，但整体上，它工作得很好。虽然没有网页版 Twitter 或官方移动客户端那么好用，但这是一个终端版的 Twitter，来试一试吧。尽管它的功能还未完善，但是用起来还是很酷，不是吗？

### 在 Linux 终端里看 Reddit 新闻

不管如何，在命令行中享受 Reddit 新闻时间真的感觉很棒。使用 rtv 真是一个相当愉快的体验。不管是阅读、评论，还是投票表决，它都可以。其体验和在网页版有一定相似。

### 在 Linux 终端里管理进程

可以使用 [htop](http://hisham.hm/htop/)。与 top 相似，但更好用、更美观。有时候，我打开 htop 之后就让它一直运行。没有原因，就是喜欢！从某方面说，它就像将音乐可视化——当然，这里显示的是 RAM 和 CPU 的使用情况。

### 在 Linux 终端里管理文件

在一个纯文本终端里并不意味着你不能享受生活之美好。比方说一个出色的文件浏览和管理器。这方面，[Midnight Commander](https://en.wikipedia.org/wiki/Midnight_Commander) 是很好用的。

### 在 Linux 终端里管理终端窗口

如果要在终端里工作很长时间，就需要一个多窗口终端了。它是这样一个软件 —— 可以将用户终端会话分割成一个自定义网格，从而可以同时使用和查看多个终端应用。对于 shell，它相当于一个平铺式窗口管理器。我最喜欢用的是 [tmux](https://tmux.github.io/)。不过 [GNU Screen](https://en.wikipedia.org/wiki/GNU_Screen) 也很好用。学习怎么使用它们可能要花点时间，但一旦会用，就会很方便。

### 在 Linux 终端里进行讲稿演示

这类软件有 LibreOffice、Google slides、gasp 或者 PowerPoint。我在讲稿演示软件花费很多时间，很高兴有一个终端版的软件。它称做“[文本演示程序（tpp）](http://www.ngolde.de/tpp.html)”。很显然，没有图片，只是一个使用简单标记语言将放在一起的幻灯片展示出来的简单程序。它不可能让你在其中插入猫的图片，但可以让你在终端里进行完整的演示。

---

via: <http://www.networkworld.com/article/3091139/linux/who-needs-a-gui-how-to-live-in-a-linux-terminal.html#slide1>

作者：[Bryan Lunduke](http://www.networkworld.com/author/Bryan-Lunduke/) 译者：[GHLandy](https://github.com/GHLandy) 校对：[jasminepeng](https://github.com/jasminepeng)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出


何时 NGINX 将取代 Apache？

看Sun

iis 为什么会走到今天这个地步呢

卡

选择闭源的结果。

所以今天巨硬开始拥抱开源了。

测试了下。

# 何时 NGINX 将取代 Apache？

>
> NGINX 和 Apache 两者都是主流的开源 web 服务器，但是据 NGINX 的首席执行官 Gus Robertson 所言，他们有不同的使用场景。此外还有微软，其 web 服务器 IIS 在活跃网站的份额在 20 年间首次跌破 10%。
>
>
>

*Apache 是最受欢迎的 web 服务器，不过 NGINX 正逐渐增长，而微软的 IIS 几十年来首次跌破 10%。*

[NGINX](https://www.nginx.com/) 已经成为第二大 web 服务器。它在很久以前就已经超越了[微软 IIS](https://www.iis.net/)，并且一直在老大 [Apache](https://httpd.apache.org/) 的身后穷追不舍。但是，NGINX 的首席执行官Gus Roberston 在接受采访时表示，Apache 和 NGINX 的用户群体不一样。

“我认为 Apache 是很好的 web 服务器。NGINX 和它的使用场景不同，”Robertson 说。“我们没有把 Apache 当成竞争对手。我们的用户使用 NGINX 来取代硬件负载均衡器和构建微服务，这两个都不是 Apache 的长处。”

事实上，Robertson 发现许多用户同时使用了这两种开源的 web 服务。“用户会在 Apache 的上层使用 NGINX 来实现负载均衡。我们的架构差异很大，我们可以提供更好的并发 web 服务。”他还表示 NGINX 在云环境中表现更优秀。

他总结说，“我们是唯一一个仍然在持续增长的 web 服务器，其它的 web 服务器都在慢慢缩小份额。”

这不太准确。根据 [Netcraft 十月份的网络服务器调查](https://news.netcraft.com/archives/2016/10/21/october-2016-web-server-survey.html)，Apache 当月的活跃网站增加得最多，获得了 180 万个新站点，而 NGINX 增加了 40 万个新站点，排在第二位。

这些增长，加上微软损失的 120 万个活跃站点，导致微软的活跃网站份额下降到 9.27%，这是他们第一次跌破 10%。Apache 的市场份额提高了 0.19%，并继续领跑市场，现在坐拥 46.3% 的活跃站点。尽管如此，多年来 Apache 一直在缓慢下降，而 NGINX 现在上升到了 19%。

NGINX 的开发者正在努力创造他们的核心开放（open-core ）的商业 web 服务器 —— [NGINX Plus](https://www.nginx.com/products/)，通过不断的改进使其变得更有竞争力。NGINX Plus 最新的版本是 [NGINX Plus 11 版（R11）](https://www.nginx.com/blog/nginx-plus-r11-released/)，该服务器易于扩展和自定义，并支持更广泛的部署。

这次最大的补充是 [动态模块](https://www.nginx.com/blog/nginx-plus-r11-released/?utm_source=nginx-plus-r11-released&utm_medium=blog#r11-dynamic-modules) 的二进制兼容性。也就是说为 [开源 NGINX 软件](https://www.nginx.com/products/download-oss/) 编译的动态模块也可以加载到 NGINX Plus。

这意味着你可以利用大量的[第三方 NGINX 模块](https://www.nginx.com/resources/wiki/modules/index.html?utm_source=nginx-plus-r11-released&utm_medium=blog) 来扩展 NGINX Plus 的功能，借鉴一系列开源和商业化生产的模块。开发者可以基于支持 NGINX Plus 的内核创建自定义扩展、附加组件和新产品。

NGINX Plus R11 还增强了其它功能：

* [提升 TCP/UDP 负载均衡](https://www.nginx.com/blog/nginx-plus-r11-released/?utm_source=nginx-plus-r11-released&utm_medium=blog#r11-tcp-udp-lb) —— 新功能包括 SSL 服务器路由、新的日志功能、附加变量以及改进的代理协议支持。这些新功能增强了调试功能，使你能够支持更广泛的企业应用。
* [更好的 IP 定位](https://www.nginx.com/blog/nginx-plus-r11-released/?utm_source=nginx-plus-r11-released&utm_medium=blog#r11-geoip2) —— 第三方的 GeoIP2 模块现在已经通过认证，并提供给 NGINX Plus 用户。这个新版本提供比原来的 GeoIP 模块更精准和丰富的位置信息。
* [增强的 nginScript 模块](https://www.nginx.com/blog/nginx-plus-r11-released/?utm_source=nginx-plus-r11-released&utm_medium=blog#r11-nginScript) —— nginScript 是基于 JavaScript 的 NGINX Plus 的下一代配置语言。新功能可以让你在流（TCP/UDP）模块中即时修改请求和响应数据。

最终结果？NGINX 准备继续与 Apache 竞争顶级 web 服务器的宝座。至于微软的 IIS？它将逐渐淡出市场。

---

via: <http://www.zdnet.com/article/when-to-use-nginx-instead-of-apache/>

作者：[Steven J. Vaughan-Nichols](http://www.zdnet.com/meet-the-team/us/steven-j-vaughan-nichols/) 译者：[OneNewLife](https://github.com/OneNewLife) 校对：[jasminepeng](https://github.com/jasminepeng)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


aria2 （命令行下载器）实例

Summary: aria2 是一个自由、开源、轻量级多协议和多源的命令行下载工具。它支持 HTTP/HTTPS、FTP、SFTP、 BitTorrent 和 Metalink 协议。

好东西

zhangzonghui@zhangzonghui-F83VD:~$ sudo dpkg -i /home/zhangzonghui/下载/deepin-boot-maker_1.1.3-1_i386.deb

正在选中未选择的软件包 deepin-boot-maker:i386。

(正在读取数据库 ... 系统当前共安装有 235665 个文件和目录。)

正准备解包 .../deepin-boot-maker_1.1.3-1_i386.deb  ...

正在解包 deepin-boot-maker:i386 (1.1.3-1) ...

dpkg: 依赖关系问题使得 deepin-boot-maker:i386 的配置工作不能继续：

 deepin-boot-maker:i386 依赖于 p7zip-full.

 deepin-boot-maker:i386 依赖于 mtools.

 deepin-boot-maker:i386 依赖于 syslinux.

 deepin-boot-maker:i386 依赖于 syslinux-common.

dpkg: 处理软件包 deepin-boot-maker:i386 (--install)时出错：

 依赖关系问题 - 仍未被配置

正在处理用于 bamfdaemon (0.5.3~bzr0+16.04.20160824-0ubuntu1) 的触发器 ...

Rebuilding /usr/share/applications/bamf-2.index...

正在处理用于 gnome-menus (3.13.3-6ubuntu3.1) 的触发器 ...

正在处理用于 desktop-file-utils (0.22-1ubuntu5+elementary2~ubuntu0.4.1) 的触发器 ...

正在处理用于 mime-support (3.59ubuntu1) 的触发器 ...

在处理时有错误发生：

 deepin-boot-maker:i386

zhen  mo  jie  jue

不错。

根据深度官方的文档，需要你下载源码，自己编译。

但是 aria2c 貌似没有 wget 的 --https-only 选项，用这个下载软件包虽然速度快，我担心会被降级 http，所以宁愿慢些，也用 wget 下载。

好东西，等回家下两个种子试试，留下一个邪恶的表情。

# aria2 （命令行下载器）实例

[aria2](https://aria2.github.io/) 是一个自由、开源、轻量级多协议和多源的命令行下载工具。它支持 HTTP/HTTPS、FTP、SFTP、 BitTorrent 和 Metalink 协议。aria2 可以通过内建的 JSON-RPC 和 XML-RPC 接口来操纵。aria2 下载文件的时候，自动验证数据块。它可以通过多个来源或者多个协议下载一个文件，并且会尝试利用你的最大下载带宽。默认情况下，所有的 Linux 发行版都包括 aria2，所以我们可以从官方库中很容易的安装。一些 GUI 下载管理器例如 [uget](http://www.2daygeek.com/install-uget-download-manager-on-ubuntu-centos-debian-fedora-mint-rhel-opensuse/) 使用 aria2 作为插件来提高下载速度。

<img src="content_image/album_201611_23_222806ck6kn26h2j96ck96.jpg" alt="" title="">

### Aria2 特性

* 支持 HTTP/HTTPS GET
* 支持 HTTP 代理
* 支持 HTTP BASIC 认证
* 支持 HTTP 代理认证
* 支持 FTP （主动、被动模式）
* 通过 HTTP 代理的 FTP（GET 命令行或者隧道）
* 分段下载
* 支持 Cookie
* 可以作为守护进程运行。
* 支持使用 fast 扩展的 BitTorrent 协议
* 支持在多文件 torrent 中选择文件
* 支持 Metalink 3.0 版本（HTTP/FTP/BitTorrent）
* 限制下载、上传速度

### 1) Linux 下安装 aria2

我们可以很容易的在所有的 Linux 发行版上安装 aria2 命令行下载器，例如 Debian、 Ubuntu、 Mint、 RHEL、 CentOS、 Fedora、 suse、 openSUSE、 Arch Linux、 Manjaro、 Mageia 等等……只需要输入下面的命令安装即可。对于 CentOS、 RHEL 系统，我们需要开启 [uget](http://www.2daygeek.com/aria2-command-line-download-utility-tool/) 或者 [RPMForge](http://www.2daygeek.com/aria2-command-line-download-utility-tool/) 库的支持。

```
[对于 Debian、 Ubuntu 和 Mint]
$ sudo apt-get install aria2

[对于 CentOS、 RHEL、 Fedora 21 和更早些的操作系统]
# yum install aria2

[Fedora 22 和 之后的系统]
# dnf install aria2

[对于 suse 和 openSUSE]
# zypper install wget

[Mageia]
# urpmi aria2

[对于 Arch Linux]
$ sudo pacman -S aria2

```

### 2) 下载单个文件

下面的命令将会从指定的 URL 中下载一个文件，并且保存在当前目录，在下载文件的过程中，我们可以看到文件的（日期、时间、下载速度和下载进度）。

```
# aria2c https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
[#986c80 19MiB/21MiB(90%) CN:1 DL:3.0MiB]
03/22 09:49:13 [NOTICE] Download complete: /opt/owncloud-9.0.0.tar.bz2

Download Results:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
986c80|OK  |   3.0MiB/s|/opt/owncloud-9.0.0.tar.bz2

Status Legend:
(OK):download completed.

```

### 3) 使用不同的名字保存文件

在初始化下载的时候，我们可以使用 `-o`（小写）选项在保存文件的时候使用不同的名字。这儿我们将要使用 owncloud.zip 文件名来保存文件。

```
# aria2c -o owncloud.zip https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
[#d31304 16MiB/21MiB(74%) CN:1 DL:6.2MiB]
03/22 09:51:02 [NOTICE] Download complete: /opt/owncloud.zip

Download Results:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
d31304|OK  |   7.3MiB/s|/opt/owncloud.zip

Status Legend:
(OK):download completed.

```

### 4) 下载速度限制

默认情况下，aria2 会利用全部带宽来下载文件，在文件下载完成之前，我们在服务器就什么也做不了（这将会影响其他服务访问带宽）。所以在下载大文件时最好使用 `–max-download-limit` 选项来避免进一步的问题。

```
# aria2c --max-download-limit=500k https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
[#7f9fbf 21MiB/21MiB(99%) CN:1 DL:466KiB]
03/22 09:54:51 [NOTICE] Download complete: /opt/owncloud-9.0.0.tar.bz2

Download Results:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
7f9fbf|OK  |   462KiB/s|/opt/owncloud-9.0.0.tar.bz2

Status Legend:
(OK):download completed.

```

### 5) 下载多个文件

下面的命令将会从指定位置下载超过一个的文件并保存到当前目录，在下载文件的过程中，我们可以看到文件的（日期、时间、下载速度和下载进度）。

```
# aria2c -Z https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2 ftp://ftp.gnu.org/gnu/wget/wget-1.17.tar.gz
[DL:1.7MiB][#53533c 272KiB/21MiB(1%)][#b52bb1 768KiB/3.6MiB(20%)]
03/22 10:25:54 [NOTICE] Download complete: /opt/wget-1.17.tar.gz
[#53533c 18MiB/21MiB(86%) CN:1 DL:3.2MiB]
03/22 10:25:59 [NOTICE] Download complete: /opt/owncloud-9.0.0.tar.bz2

Download Results:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
b52bb1|OK  |   2.8MiB/s|/opt/wget-1.17.tar.gz
53533c|OK  |   3.4MiB/s|/opt/owncloud-9.0.0.tar.bz2

Status Legend:
(OK):download completed.

```

### 6) 续传未完成的下载

当你遇到一些网络连接问题或者系统问题的时候，并将要下载一个大文件（例如： ISO 镜像文件），我建议你使用 `-c` 选项，它可以帮助我们从该状态续传未完成的下载，并且像往常一样完成。不然的话，当你再次下载，它将会初始化新的下载，并保存成一个不同的文件名（自动的在文件名后面添加 `.1` ）。注意：如果出现了任何中断，aria2 使用 `.aria2` 后缀保存（未完成的）文件。

```
# aria2c -c https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
[#db0b08 8.2MiB/21MiB(38%) CN:1 DL:3.1MiB ETA:4s]^C
03/22 10:09:26 [NOTICE] Shutdown sequence commencing... Press Ctrl-C again for emergency shutdown.

03/22 10:09:26 [NOTICE] Download GID#db0b08bf55d5908d not complete: /opt/owncloud-9.0.0.tar.bz2

Download Results:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
db0b08|INPR|   3.3MiB/s|/opt/owncloud-9.0.0.tar.bz2

Status Legend:
(INPR):download in-progress.

如果重新启动传输，aria2 将会恢复下载。

# aria2c -c https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
[#873d08 21MiB/21MiB(98%) CN:1 DL:2.7MiB]
03/22 10:09:57 [NOTICE] Download complete: /opt/owncloud-9.0.0.tar.bz2

Download Results:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
873d08|OK  |   1.9MiB/s|/opt/owncloud-9.0.0.tar.bz2

Status Legend:
(OK):download completed.

```

### 7) 从文件获取输入

就像 wget 可以从一个文件获取输入的 URL 列表来下载一样。我们需要创建一个文件，将每一个 URL 存储在单独的行中。ara2 命令行可以添加 `-i` 选项来执行此操作。

```
# aria2c -i test-aria2.txt
[DL:3.9MiB][#b97984 192KiB/21MiB(0%)][#673c8e 2.5MiB/3.6MiB(69%)]
03/22 10:14:22 [NOTICE] Download complete: /opt/wget-1.17.tar.gz
[#b97984 19MiB/21MiB(90%) CN:1 DL:2.5MiB]
03/22 10:14:30 [NOTICE] Download complete: /opt/owncloud-9.0.0.tar.bz2

Download Results:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
673c8e|OK  |   4.3MiB/s|/opt/wget-1.17.tar.gz
b97984|OK  |   2.5MiB/s|/opt/owncloud-9.0.0.tar.bz2

Status Legend:
(OK):download completed.

```

### 8) 每个主机使用两个连接来下载

默认情况，每次下载连接到一台服务器的最大数目，对于一条主机只能建立一条。我们可以通过 aria2 命令行添加 `-x2`（`2` 表示两个连接）来创建到每台主机的多个连接，以加快下载速度。

```
# aria2c -x2 https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
[#ddd4cd 18MiB/21MiB(83%) CN:1 DL:5.0MiB]
03/22 10:16:27 [NOTICE] Download complete: /opt/owncloud-9.0.0.tar.bz2

Download Results:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
ddd4cd|OK  |   5.5MiB/s|/opt/owncloud-9.0.0.tar.bz2

Status Legend:
(OK):download completed.

```

### 9) 下载 BitTorrent 种子文件

我们可以使用 aria2 命令行直接下载一个 BitTorrent 种子文件：

```
# aria2c https://torcache.net/torrent/C86F4E743253E0EBF3090CCFFCC9B56FA38451A3.torrent?title=[kat.cr]irudhi.suttru.2015.official.teaser.full.hd.1080p.pathi.team.sr
[#388321 0B/0B CN:1 DL:0B]
03/22 20:06:14 [NOTICE] Download complete: /opt/[kat.cr]irudhi.suttru.2015.official.teaser.full.hd.1080p.pathi.team.sr.torrent

03/22 20:06:14 [ERROR] Exception caught
Exception: [BtPostDownloadHandler.cc:98] errorCode=25 Could not parse BitTorrent metainfo

Download Results:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
388321|OK  |    11MiB/s|/opt/[kat.cr]irudhi.suttru.2015.official.teaser.full.hd.1080p.pathi.team.sr.torrent

Status Legend:
(OK):download completed.

```

### 10) 下载 BitTorrent 磁力链接

使用 aria2 我们也可以通过 BitTorrent 磁力链接直接下载一个种子文件：

```
# aria2c 'magnet:?xt=urn:btih:248D0A1CD08284299DE78D5C1ED359BB46717D8C'

```

### 11) 下载 BitTorrent Metalink 种子

我们也可以通过 aria2 命令行直接下载一个 Metalink 文件。

```
# aria2c https://curl.haxx.se/metalink.cgi?curl=tar.bz2

```

### 12) 从密码保护的网站下载一个文件

或者，我们也可以从一个密码保护网站下载一个文件。下面的命令行将会从一个密码保护网站中下载文件。

```
# aria2c --http-user=xxx --http-password=xxx https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2

# aria2c --ftp-user=xxx --ftp-password=xxx ftp://ftp.gnu.org/gnu/wget/wget-1.17.tar.gz

```

### 13) 阅读更多关于 aria2

如果你希望了解了解更多选项 —— 它们同时适用于 wget，可以输入下面的命令行在你自己的终端获取详细信息：

```
# man aria2c
or
# aria2c --help

```

谢谢欣赏 …）

---

via: <http://www.2daygeek.com/aria2-command-line-download-utility-tool/>

作者：[MAGESH MARUTHAMUTHU](http://www.2daygeek.com/author/magesh/) 译者：[yangmingming](https://github.com/yangmingming) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


Xfce 桌面新增‘免打扰’模式以及单一应用通知设置的新特性

Summary: Xfce　的开发者们正忙于把 Xfce 的应用和部件转移到 GTK3 上，在这个过程中，他们也增加了一些新的特性。

坐等 Xfce 迁移完成。

# Xfce 桌面新增‘免打扰’模式以及单一应用通知设置的新特性

Xfce　的开发者们正忙于把 Xfce 的应用和部件[转移](https://wiki.xfce.org/releng/4.14/roadmap)到 GTK3 上，在这个过程中，他们也增加了一些新的特性。

**“免打扰”**，一个常被要求增加的特性，[最近](http://simon.shimmerproject.org/2016/11/09/xfce4-notifyd-0-3-4-released-do-not-disturb-and-per-application-settings/)已登陆到了 xfce-notifyd 0.3.4 (Xfce 通知进程)上。

更近一步地，最新的 xfce-notifyd 包括了一个可以在单一应用基础上开启或关闭通知的选项。

当一个应用发出一个通知以后，这个应用就被加入到到了通知设置的列表里。从通知列表里，你可以控制哪些应用能够显示通知。

”免打扰“模式和应用特定的通知设置均可在“设置” > “通知” 中找到：

现在为止，还没有方法可以访问由于启用”免打扰“模式而错过的消息。然而，可以预期将来会发布**通知记录/维持的特性。**

最后， xfce-notifyd 0.3.4 的**另一个特性**是**选择在主监视器显示通知**（直到现在，通知都是显示在当前监视器）。这个特性目前在图形设置界面里是没有的，必须使用 `Xfconf`（设置编辑）在 xfce-notifyd 下增添一个叫做 `/primary-monitor`（没有引号）的布尔属性，并设置为 `True` 来启用该特性:

**xfce4-notifyd 0.3.4 目前在 PPA 上还没有，但是不久它可能被增添到 [Xfce GTK3 PPA](https://launchpad.net/%7Exubuntu-dev/+archive/ubuntu/xfce4-gtk3)中。**

**如果你想直接从源代码编译，从[这儿](http://archive.xfce.org/src/apps/xfce4-notifyd/0.3/)下载。**

---

via: <http://www.webupd8.org/2016/11/xfce-gets-do-not-disturb-mode-and-per.html>

作者：[Andrew](http://www.webupd8.org/p/about.html) 译者：[ucasFL](https://github.com/ucasFL) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


如何按最后修改时间对 ls 命令的输出进行排序

通俗易懂，赞一个。

时间排序还是挺实用的！！！

# 如何按最后修改时间对 ls 命令的输出进行排序

Linux 用户常常做的一个事情是，是在命令行[列出目录内容](http://www.tecmint.com/file-and-directory-management-in-linux/)。

我们已经知道，[ls](http://www.tecmint.com/15-basic-ls-command-examples-in-linux/) 和 [dir](http://www.tecmint.com/linux-dir-command-usage-with-examples/) 是两个可用在列出目录内容的 Linux 命令，前者是更受欢迎的，在大多数情况下，是用户的首选。

我们列出目录内容时，可以按照不同的标准进行排序，例如文件名、修改时间、添加时间、版本或者文件大小。可以通过指定一个特别的参数来使用这些文件的属性进行排序。

在这个简洁的 [ls 命令指导](http://www.tecmint.com/tag/linux-ls-command/)中，我们将看看如何通过上次修改时间（日期和时分秒）[排序 ls 命令的输出结果](http://www.tecmint.com/sort-command-linux/) 。

让我们由执行一些基本的 [ls 命令](http://www.tecmint.com/15-basic-ls-command-examples-in-linux/)开始。

### Linux 基本 ls 命令

1、 不带任何参数运行 ls 命令将列出当前工作目录的内容。

```
$ ls

```

*列出工作目录的内容*

2、要列出任何目录的内容，例如 /etc 目录使用如下命令：

```
$ ls /etc

```

*列出工作目录 /etc 的内容*

3、一个目录总是包含一些隐藏的文件（至少有两个），因此，要展示目录中的所有文件，使用`-a`或`-all`标志：

```
$ ls  -a

```

*列出工作目录的隐藏文件*

4、你还可以打印输出的每一个文件的详细信息，例如文件权限、链接数、所有者名称和组所有者、文件大小、最后修改的时间和文件/目录名称。

这是由`-l`选项来设置，这意味着一个如下面的屏幕截图般的长长的列表格式。

```
$ ls -l

```

*长列表目录内容*

### 基于日期和基于时刻排序文件

5、要在目录中列出文件并[对最后修改日期和时间进行排序](http://www.tecmint.com/find-and-sort-files-modification-date-and-time-in-linux/)，在下面的命令中使用`-t`选项：

```
$ ls -lt

```

*按日期和时间排序ls输出内容*

6、如果你想要一个基于日期和时间的逆向排序文件，你可以使用`-r`选项来工作，像这样：

```
$ ls -ltr

```

*按日期和时间排序的逆向输出*

我们将在这里结束，但是，[ls 命令](http://www.tecmint.com/tag/linux-ls-command/)还有更多的使用信息和选项，因此，应该特别注意它或看看其它指南，比如《[每一个用户应该知道 ls 的命令技巧](http://www.tecmint.com/linux-ls-command-tricks/)》或《[使用排序命令](http://www.tecmint.com/linux-sort-command-examples/)》。

最后但并非最不重要的，你可以通过以下反馈部分联系我们。

---

via: <http://www.tecmint.com/sort-ls-output-by-last-modified-date-and-time>

作者：[Aaron Kili](http://www.tecmint.com/author/aaronkili/) 译者：[zky001](https://github.com/zky001) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


在 Linux 上使用 Glyphr 设计自己的字体

标题“在 Linux 上使用 Glyphr 设计自己的字体”是否比“Linux上的字体设计软件Glyphr”好？

感觉对设计师的作用更大些！

# 在 Linux 上使用 Glyphr 设计自己的字体

LibreOffice 提供了丰富的字体，并且用户可以自由选择和下载增加自己的字体。然而，就算是你想创造自己的字体，也可以非常容易地使用 Glyphr 来做到。Glyphr 是一个新开源的矢量字体设计器，通过直观而易用的图形界面和丰富的功能集可以完成字体设计的方方面面。虽然这个应用还在早期开发阶段，但是已经十分棒了。下面将会有一个简短的快速入门教你如何使用 Glyphr 创建字体并加入到 LibreOffice。

首先，从[官方 Git 库](https://github.com/glyphr-studio/Glyphr-Studio-Desktop)下载 Glyphr。它提供 32 位和 64 位版本的二进制格式。完成下载后，进入下载文件夹， 解压文件，进入解压后的文件夹，右键点击 Glyphr Studio，选择“Run”。

启动应用后会给你三个选项。一个是从头创建一个新的字体集；第二个是读取已经存在的项目，可以是 Glyphr Studio 项目文件，也可以是其他 OpenType 字体（otf）或 TrueType 字体（ttf），甚至是 SVG 字体。第三个是读取已有的两个示例之一，然后可以在示例上修改创建。我将会选择第一个选项，并教你一些简单的设计概念。

完成进入编辑界面后, 你可以从屏幕左边的面板中选择字母，然后在右边的绘制区域设计。我选择 A 字母的图标开始编辑它。

要在绘图板上设计一些东西，我们可以从该板的左上角选择矩形、椭圆形或者路径等同处的“形状”工具，也可以使用该工具的第二行的第一项的路径编辑工具。使用任意工具，开始在板上放<ruby> 路径点 <rp>  （ </rp> <rt>  path point </rt> <rp>  ） </rp></ruby>来创建形状。添加的点数越多，接下来步骤的形状选项就越多。

将点移动到不同位置可以获得不同的路径，可以使用路径编辑工具右边的路径编辑，点击形状会出现可编辑点。然后可以把这些点拖到你喜欢的任意位置。

最后，形状编辑工具可以让你选择形状并将其拖动到其它位置、更改其尺寸以及旋转。

其它有用的设计动作集还有左侧面板提供的复制-粘贴、翻转-旋转操作。来看个例子，假设我现在正在创作 B 字母， 我要把已经创建好的上部分镜像到下半部分，保持设计的高度一致性。

现在，为了达到这个目的，选择形状编辑工具，选中欲镜像的部分，点击复制操作，然后在其上点击图形，拖放粘帖的形状到你需要的位置，根据你的需要进行水平翻转或者垂直翻转。

这款应用在太多地方可以讲述。如果有兴趣深入，可以深入了解数字化编辑、弯曲和引导等等，

然而，字体并不是仅仅是单个字体的设计，还需要学习字体设计的其他方面。通过应用左上角菜单栏上的“导航”还可以设置特殊字符对之间的字间距、增加连字符、部件、和设置常规字体设置等。

最棒的是你可以使用“测试驱动”来使用你的新字体，帮助你判断字体设计如何、间距对不对、尽量来优化你的字体。

完成设计和优化后，我们还可以导出 ttf 和 svg 格式的字体。

要将新的字体加入到系统中，打开字体浏览器并点击“安装”按钮。如果它不工作，可以在主目录下创建一个新的文件夹叫做`.fonts`，并将字体复制进去。也可以使用 root 用户打开文件管理器，进入 `/usr/share/fonts/opentype`， 创建一个新的文件夹并粘贴字体文件到里面。然后打开终端，输入命令重建字体缓存：`sudo fc-cache -f -v`。

在 LibreOffice 中已经可以看见新的字体咯，同样也可以使用你系统中的其它文本应用程序如 Gedit 来测试新字体。

---

via: <https://www.howtoforge.com/tutorial/how-to-design-and-add-your-own-font-on-linux-with-glyphr/>

作者：[Bill Toulas](https://twitter.com/howtoforgecom) 译者：[VicYu/Vic020](http://vicyu.net) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


全新 Kali Linux 系统安装指南

如果能用这些工具，为什么要看安装指南呢<br />
如果不会为什么要装这个系统呢。。

小白表示安装完了再一点一点的学习，，起码系统在手，学习的那种feel就上去了。。。就像我为了hold住自己上高三之前（还有6个月）把linux学会，现在我的笔记本里只有一个redhat linux 7.3，不得不强迫自己去接受  『然而穿山甲说了什么。。。』  楼主这个帖子可能就是给正在观望的小白看的。

啥也不说，，先插个眼

来条温馨提示，，用dd工具的时候老实的在一边等着，，千万别看没动静就去搞事情。。。不说了，我还得再买个u盘

因为要用

如果不安装这个系统永远学习不到，如果不看安装指南永远不会装，如果你带脑子就不会有这种问题。。。

# 全新 Kali Linux 系统安装指南

Kali Linux 系统可以说是在[安全测试方面最好](http://www.tecmint.com/best-security-centric-linux-distributions-of-2016/)的开箱即用的 Linux 发行版。Kali 下的很多工具软件都可以安装在大多数的 Linux 发行版中，Offensive Security 团队在 Kali 系统的开发过程中投入大量的时间精力来完善这个用于渗透测试和安全审计的 Linux 发行版。

Kali Linux 是基于 Debian 的面向安全的发行版本。该系统由于预安装了上百个知名的安全工具软件而出名。

Kali 甚至在信息安全领域还有一个含金量较高的认证叫做“<ruby> Kali 渗透测试 <rp>  （ </rp> <rt>  Pentesting with Kali </rt> <rp>  ） </rp></ruby>”认证。该认证的申请者必须在艰难的 24 小时内成功入侵多台计算机，然后另外 24 小时内完成渗透测试报告并发送给 Offensive Security 的安全人员进行评审。成功通过考试的人将会获得 OSCP 认证证书。

本安装指南及以后的文章主要是为了帮助个人熟悉 Kali Linux 系统和其中一些工具软件的使用。

**请谨慎使用 Kali 下的工具，因为其中一些工具如果使用不当将会导致计算机系统损坏。请在合法的途径下使用所有 Kali 系列文章中所包含的信息。**

### 系统要求

Kali 系统对硬件有一些最基本的要求及建议。根据用户使用目的，你可以使有更高的配置。这篇文章中假设读者想要把 kali 安装为电脑上唯一的操作系统。

1. 至少 10GB 的磁盘空间；强烈建议分配更多的存储空间。
2. 至少 512MB 的内存；希望有更多的内存，尤其是在图形界面下。
3. 支持 USB 或 CD/DVD 启动方式。
4. Kali Linux 系统 ISO 镜像下载地址 <https://www.kali.org/downloads/>。

### 使用 dd 命令创建 USB 启动工具

该文章假设可使用 USB 设备来引导安装系统。注意尽可能的使用 4GB 或者 8GB 的 USB 设备，并且其上的所有数据将会被删除。

本文作者在使用更大容量的 USB 设备在安装的过程中遇到了问题，但是别的人应该还是可以的。不管怎么说，下面的安装步骤将会清除 USB 设备内的数据。

在开始之前请务必备份所有数据。用于安装 Kali Linux 系统的 USB 启动设备将在另外一台机器上创建完成。

第一步是获取 Kali Linux 系统 ISO 镜像文件。本指南将使用最新版的包含 Enlightenment 桌面环境的 Kali Linux 系统进行安装。

在终端下输入如下命令来获取这个版本的 ISO 镜像文件。

```
$ cd ~/Downloads
$ wget -c http://cdimage.kali.org/kali-2016.2/kali-linux-e17-2016.2-amd64.iso

```

上面两个命令将会把 Kali Linux 的 ISO 镜像文件下载到当前用户的 Downloads 目录。

下一步是把 ISO 镜像写入到 USB 设备中来启动安装程序。我们可以使用 Linux 系统中的 `dd` 命令来完成该操作。首先，该 USB 设备要在 `lsblk` 命令下可找到。

```
$ lsblk

```

*在 Linux 系统中确认 USB 设备名*

确定 USB 设备的名字为 `/dev/sdc`，可以使用 dd 工具将 Kali 系统镜像写入到 USB 设备中。

```
$ sudo dd if=~/Downloads/kali-linux-e17-2016.2-amd64.iso of=/dev/sdc

```

**注意：**以上命令需要 root 权限，因此使用 `sudo` 命令或使用 root 账号登录来执行该命令。这个命令会删除 USB 设备中的所有数据。确保已备份所需的数据。

一旦 ISO 镜像文件完全复制到 USB 设备，接下来可进行 Kali Linux 系统的安装。

### 安装 Kali Linux 系统

1、 首先，把 USB 设备插入到要安装 Kali 操作系统的电脑上，然后从 USB 设备引导系统启动。只要成功地从 USB 设备启动系统，你将会看到下面的图形界面，选择“Install”或者“Graphical Install”选项。

本指南将使用“Graphical Install”方式进行安装。

*Kali Linux 启动菜单*

2、 下面几个界面将会询问用户选择区域设置信息，比如语言、国家，以及键盘布局。

选择完成之后，系统将会提示用户输入主机名和域名信息。输入合适的环境信息后，点击继续安装。

*设置 Kali Linux 系统的主机名*

*设置 Kali Linux 系统的域名*

3、 主机名和域名设置完成后，需要设置 root 用户的密码。请勿忘记该密码。

*设置 Kali Linux 系统用户密码*

4、 密码设置完成之后，安装步骤会提示用户选择时区然后停留在硬盘分区界面。

如果 Kali Linux 是这个电脑上的唯一操作系统，最简单的选项就是使用“Guided – Use Entire Disk”，然后选择你需要安装 Kali 的存储设备。

*选择 Kali Linux 系统安装类型*

*选择 Kali Linux 安装磁盘*

5、 下一步将提示用户在存储设备上进行分区。大多数情况下，我们可以把整个系统安装在一个分区内。

*在分区上安装 Kali Linux 系统*

6、 最后一步是提示用户确认将所有的更改写入到主机硬盘。注意，点确认后将会**清空整个磁盘上的所有数据**。

*确认磁盘分区更改*

7、 一旦确认分区更改，安装包将会进行复制文件的安装过程。安装完成后，你需要设置一个网络镜像源来获取软件包和系统更新。如果你希望使用 Kali 的软件库，确保开启此功能。

*配置 Kali Linux 包管理器*

8、 选择网络镜像源后，系统将会询问你安装 Grub 引导程序。再次说明，本文假设你的电脑上仅安装唯一的 Kali Linux 操作系统。

在该屏幕上选择“Yes”，用户需要选择要写入引导程序信息的硬盘引导设备。

*安装 Grub 引导程序*

*选择安装 Grub 引导程序的分区*

9、 当 Grub 安装完成后，系统将会提醒用户重启机器以进入新安装的 Kali Linux 系统。

*Kali Linux 系统安装完成*

10、 因为本指南使用 Enlightenment 作为 Kali Linux 系统的桌面环境，因此默认情况下是启动进入到 shell 环境。

使用 root 账号及之前安装过程中设置的密码登录系统，以便运行 Enlightenment 桌面环境。

登录成功后输入命令`startx`进入 Enlightenment 桌面环境。

```
# startx

```

*Kali Linux 下进入 Enlightenment 桌面环境*

初次进入 Enlightenment 桌面环境时，它将会询问用户进行一些首选项配置，然后再运行桌面环境。

 [](http://www.tecmint.com/wp-content/uploads/2016/10/Kali-Linux-Enlightenment-Desktop.png)

*Kali Linux Enlightenment 桌面*

此时，你已经成功地安装了 Kali Linux 系统，并可以使用了。后续的文章我们将探讨 Kali 系统中一些有用的工具以及如何使用这些工具来探测主机及网络方面的安全状况。

请随意发表任何评论或提出相关的问题。

---

via: <http://www.tecmint.com/kali-linux-installation-guide/>

作者：[Rob Turner](http://www.tecmint.com/author/robturner/) 译者：[rusking](https://github.com/rusking) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出