Linux下优秀的音频编辑软件

Summary: 不论您是一个音乐爱好者或只是一个要记录您导师的讲话的学生，您都需要录制音频和编辑音频。长久以来这样的工作都要靠Macintosh，如今那个时代已经过去，现在Linux也可以胜任这些工作了。简而言之，这里有一份不完全的音频编辑器软件列表，适用于不同的任务和需求。 1. Audacity  让我们从我个人最喜欢的软件开始。Audacity可以运行在Windows、Mac和Linux上。它是开源的，且易于使用。你会觉得：Audacity几乎是完美的。它可以让您在干净的界面上操作音频波形。简单地说，您可以覆盖音轨、剪切和修改音轨、增加特效、执行高级的声音分析，

现在可以加上Reaper了，一个多平台的Daw。还有Tracktor、Renoise、Bitwig

LMMS确实吊，常用audacity

有谁知道audacity怎么下载和安装吗？

有谁知道audacity怎么下载和安装吗？

有谁知道audacity怎么下载和安装吗？

有谁知道audacity怎么下载和安装吗？

有谁知道audacity怎么下载和安装吗？

不论您是一个音乐爱好者或只是一个要记录您导师的讲话的学生，您都需要录制音频和编辑音频。长久以来这样的工作都要靠Macintosh，如今那个时代已经过去，现在Linux也可以胜任这些工作了。简而言之，这里有一份不完全的音频编辑器软件列表，适用于不同的任务和需求。

### 1. Audacity

![](/data/attachment/album/201506/25/102937f3cl66a996zx6xyx.jpg)

让我们从我个人最喜欢的软件开始。[Audacity](http://audacity.sourceforge.net/)可以运行在Windows、Mac和Linux上。它是开源的，且易于使用。你会觉得：Audacity几乎是完美的。它可以让您在干净的界面上操作音频波形。简单地说，您可以覆盖音轨、剪切和修改音轨、增加特效、执行高级的声音分析，然后将它们导出到一大堆可用的格式。我喜欢它的原因是它将基本的功能和复杂的功能结合在一起并且保持一个简单的学习曲线。然而，它并不是一个完全最优化的软件，尤其是对于音乐家和专业人员。

### 2. Jokosher

![](/data/attachment/album/201506/25/102941jsfuzr44bbsurmzq.jpg)

在不同的层次上，[Jokosher](https://launchpad.net/jokosher/)更多的聚焦在多音轨方面。它使用Python和GTK+作为前端界面，并使用GStreamer作为音频后端。Jokosher那易用的界面和它的扩展性给我留下了深刻的印象。也许编辑的功能并不是最先进的，但它的提示十分清晰，适合音乐家。例如，我十分喜欢音轨和乐器的组合。简而言之，如果您是一个音乐家，那么它是在您转移到下一个软件前进行实践的好机会。

### 3. Ardour

![](/data/attachment/album/201506/25/102942wtv6u4mhshvshpc2.jpg)

接下来谈论一些复杂的工具，[Ardour](http://ardour.org/)是一套完整的可以录制、编辑和混音的软件。这个设计吸引了所有的专业人员，Ardour在声音和插件方面超出我的想象。如果您在寻找一头野兽并且不惧怕驯服它，那么Ardour或许是一个不错的选择。再次，它的界面和丰富的文档，尤其是它首次启动时的配置工具都是它迷人魅力的一部分。

### 4. Kwave

![](/data/attachment/album/201506/25/102945iqwh6spw8s3gqk67.jpg)

对于所有KDE的热爱者，[KWave](http://kwave.sourceforge.net/)绝对符合您对于设计和功能的想象。它有丰富的快捷键以及很多有趣的选项，例如内存管理。尽管很多特效很不错，但我们更应该关注那些用于音频剪切/粘贴的工具。可惜的是它无法与Audacity相比，而更重要的是，它的界面并没有那么吸引我。

### 5. Qtractor

![](/data/attachment/album/201506/25/102946uk5kkh6zk5nk9nn0.jpg)

如果Kwave对您来说过于简单，但基于Qt的程序却有些吸引力，那么对您来说，也许[Qtractor](http://qtractor.sourceforge.net/qtractor-index.html)是一个选项。它致力于做一个“对于家庭用户来说足够简单，并且对专业人员来说足够强大的软件。”实际上它功能和选项的数量几乎是压倒性的。我最喜欢的当然是可定制的快捷键。除此之外，Qtractor可能是我最喜欢的一个处理MIDI文件的工具。

### 6. LMMS

![](/data/attachment/album/201506/25/102947gew29pzue6puw0me.jpg)

作为Linux多媒体工作室，LMMS的直接目标是音乐制作。如果您之前没有什么经验并且不想浪费太多的时间，那么请去别处吧。LMMS是其中一个复杂但强大的软件，只有少数的人真正的掌握了它。它有太多的功能和特效以至于无法一一列出，但如果我必须找一个，我会说用来模拟Game Boy声音系统的Freeboy插件简直像魔术一样。然后，去看看它那惊人的文档吧。

### 7. Traverso

![](/data/attachment/album/201506/25/102948u5ujjhhffsbb8vbv.jpg)

最后站在我面前的是Traverso，它支持无限制的音轨计数，并直接整合了CD烧录的功能。另外，它对我来说是介于简单的软件和专业的软件之间的程序。它的界面是KDE样式的，其键盘配置很简单。更有趣的是，Traverso会监视您的系统资源以确定不会超过您的CPU或者硬件的能力。

总而言之，能在Linux系统上看到这么多不同的应用程序是一件开心的事。它使得您永远可以找到最适合自己的那一款。虽然我最喜欢的应用是Audacity，但我非常震惊于LMMS和Jokosher的设计。

我们有漏掉什么么？您在Linux下使用哪一款软件呢？原因是什么呢？请留言让我们知道。

---

via: <http://xmodulo.com/good-audio-editing-software-linux.html>

作者：[Adrien Brochard](http://xmodulo.com/author/adrien) 译者：[wwy-hust](https://github.com/wwy-hust) 校对：[wxy](https://github.com/wxy)

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


2015 年度开源项目新秀榜

Summary: 黑鸭（Black Duck）软件公布了一份名叫年度开源项目新秀的报告，介绍了由全球开源协会发起的10个最有趣、最活跃的新项目。  年度开源项目新秀 每年都有上千新的开源项目问世，但只有少数能够真正的吸引我们的关注。一些项目因为利用了当前比较流行的技术而发展壮大，有一些则真正地开启了一个新的领域。很多开源项目建立的初衷是为了解决一些生产上的问题，还有一些项目则是世界各地志同道合的开发者们共同发起的一个宏伟项目。 从2009年起，开源软件管理公司黑鸭便发起了年度开源项目新秀这一活动，它的评选根据Open Hub网站（即以前的Oh

Neovim  url问题 亲校验

谢谢您的指正，已经修正：》

黑鸭（Black Duck）软件公布了一份名叫“年度开源项目新秀”的报告，介绍了由全球开源协会发起的10个最有趣、最活跃的新项目。

![](/data/attachment/album/201506/26/235221wltvta99qmnhh4l5.jpg)

### 年度开源项目新秀

每年都有上千新的开源项目问世，但只有少数能够真正的吸引我们的关注。一些项目因为利用了当前比较流行的技术而发展壮大，有一些则真正地开启了一个新的领域。很多开源项目建立的初衷是为了解决一些生产上的问题，还有一些项目则是世界各地志同道合的开发者们共同发起的一个宏伟项目。

从2009年起，开源软件管理公司黑鸭便发起了[年度开源项目新秀](https://www.blackducksoftware.com/open-source-rookies)这一活动，它的评选根据[Open Hub](https://www.openhub.net/)网站（即以前的Ohloh）上的活跃度。今年，我们很荣幸能够报道2015年10大开源项目新秀的得主和2名荣誉奖得主，它们是从上千个开源项目中脱颖而出的。评选采用了加权评分系统，得分标准基于项目的活跃度，交付速度和几个其它因数。

开源俨然成为了产业创新的引擎，就拿今年来说，和Docker容器相关的开源项目在全球各地兴起，这也不恰巧反映了企业最感兴趣的技术领域吗？最后，我们接下来介绍的项目，将会让你了解到全球开源项目的开发者们的在思考什么，这很快将会成为一个指引我们发展的领头羊。

### 2015年度开源项目新秀: DebOps

![](/data/attachment/album/201506/26/235221hfcslkaildykalzs.jpg)

[DebOps](https://github.com/debops/debops)收集打包了一套[Ansible](http://www.infoworld.com/article/2612397/data-center/review--ansible-orchestration-is-a-veteran-unix-admin-s-dream.html)方案和规则（Ansible是一种自动化运维工具），可以从1个容器扩展到一个完整的数据中心。它的创始人Maciej Delmanowski将DebOps开源来保证项目长久进行，从而更好的通过外部贡献者的帮助发展下去。

DebOps始创于波兰的一个不起眼大学校园里，他们运营自己的数据中心，一切工作都采用手工配置。有时系统崩溃而导致几天的宕机，这时Delmanowski意识到一个配置管理系统是很有必要的。以Debian作为基础开始，DebOps是一组配置一整个数据基础设施的Ansible方案。此项目已经在许多不同的工作环境下实现，而创始者们则打算继续支持和改进这个项目。

### 2015年度开源项目新秀: Code Combat

![](/data/attachment/album/201506/26/235222mvu9wkq7x13kfqnm.jpg)

传统的纸笔学习方法已近不能满足技术学科了。然而游戏却有很多人都爱玩，这也就是为什么[CodeCombat](https://codecombat.com/)的创始人会去开发一款多人协同编程游戏来教人们如何编码。

刚开始CodeCombat是一个创业想法，但其创始人决定取而代之创建一个开源项目。此想法在社区传播开来，很快不少贡献者加入到项目中来。项目发起仅仅两个月后，这款游戏就被接纳到Google’s Summer of Code活动中。这款游戏吸引了大量玩家，并被翻译成45种语言。CodeCombat希望成为那些想要一边学习代码同时获得乐趣的同学的风向标。

### 2015年度开源项目新秀: Storj

![](/data/attachment/album/201506/26/235222s6z161kikwdzv2q2.jpg)

[Storj](http://storj.io/)是一个点对点的云存储网络，可实现端到端加密，保证用户不用依赖第三方即可传输和共享数据。基于比特币block chain技术和点对点协议，Storj提供安全、私密、加密的云存储。

云数据存储的反对者担心成本开销和漏洞攻击。针对这两个担忧，Storj提供了一个私有云存储市场，用户可以通过Storjcoin X(SJCX) 购买交易存储空间。上传到Storj的文件会被粉碎、加密和存储到整个社区。只有文件所有者拥有密钥加密的信息。

在2014年举办的Texas Bitcoin Conference Hackathon会议上，去中心化的云存储市场概念首次被提出并证明可行。在第一次赢得黑客马拉松活动后，项目创始人们和领导团队利用开放论坛、Reddit、比特币论坛和社交媒体增长成了一个活跃的社区，如今，它们已成为影响Storj发展方向的一个重要组成部分。

### 2015年度开源项目新秀: Neovim

![](/data/attachment/album/201506/26/235223emom0bfofa9entdz.jpg)

自1991年出现以来，Vim已经成为数以百万计软件开发人员所钟爱的文本编辑器。 而[Neovim](http://neovim.org/)就是它的下一个版本。

在过去的23年里，软件开发生态系统经历了无数增长和创新。Neovim创始人Thiago de Arruda认为Vim缺乏当代元素，跟不上时代的发展。在保留Vim的招牌功能的前提下，Neovim团队同样在寻求改进和发展这个最受欢迎的文本编辑器的技术。早期众筹让Thiago de Arruda可以连续6个月时间投入到此项目。他相信Neovim社区会支持这个项目，激励他继续开发Neovim。

### 2015年度开源项目新秀: CockroachDB

![](/data/attachment/album/201506/26/235223blr9o30zwzr5w005.jpg)

前谷歌员工开发了一个开源的大型企业数据存储项目[CockroachDB](https://github.com/cockroachdb/cockroach)，它是一个可扩展的、跨地域复制且支持事务的数据存储的解决方案。

为了保证在线的百万兆字节流量业务的质量，Google开发了Spanner系统，这是一个可扩展的，稳定的，支持事务的系统。许多参与开发CockroachDB的团队现在都服务于开源社区。就像真正的蟑螂（cockroach）一样，CockroachDB可以在没有数据头、任意节点失效的情况下正常运行。这个开源项目有很多富有经验的贡献者，创始人们通过社交媒体、Github、网络、会议和聚会结识他们并鼓励他们参与其中。

### 2015年度开源项目新秀: Kubernetes

![](/data/attachment/album/201506/26/235224xqqth6v699b91eqt.jpg)

在将容器化软件到引入开源社区发展时，[Docker](http://www.infoworld.com/resources/16373/application-virtualization/the-beginners-guide-to-docker)是一匹黑马，它创新了一套技术和工具。去年6月谷歌推出了[Kubernetes](http://kubernetes.io/)，这是一款开源的容器管理工具，用来加快开发和简化操作。

谷歌在它的内部运营上使用容器技术多年了。在2014年夏天的DockerCon上大会上，谷歌这个互联网巨头开源了Kubernetes，Kubernetes的开发是为了满足迅速增长的Docker生态系统的需要。通过和其它的组织、项目合作，比如Red Hat和CoreOS，Kubernetes项目的管理者们推动它登上了Docker Hub的工具下载榜榜首。Kubernetes的开发团队希望扩大这个项目，发展它的社区，这样的话软件开发者就能花更少的时间在管理基础设施上，而更多的去开发他们自己的APP。

### 2015年度开源项目新秀: Open Bazaar

![](/data/attachment/album/201506/26/235224xok2xavqnkc97bo6.jpg)

OpenBazaar是一个使用比特币与其他人交易的去中心化的市场。OpenBazaar这一概念最早在编程马拉松（hackathon）活动中被提出，它的创始人结合了BitTorent、比特币和传统的金融服务方式，创造了一个不受审查的交易平台。OpenBazaar的开发团队在寻求新的成员，而且不久以后他们将极度扩大Open Bazaar社区。Open Bazaar的核心是透明度，其创始人和贡献者的共同目标是在商务交易中掀起一场革命，让他们向着一个真实的、一个无控制的，去中心化的市场奋进。

### 2015年度开源项目新秀: IPFS

![](/data/attachment/album/201506/26/235225sahhsigs7gppczs7.jpg)

IPFS 是一个面向全球的、点对点的分布式版本文件系统。它综合了Git，BitTorrent，HTTP的思想，开启了一个新的数据和数据结构传输协议。

人们所知的开源，它的本意用简单的方法解决复杂的问题，这样产生许多新颖的想法，但是那些强大的项目仅仅是开源社区的冰山一角。IFPS有一个非常激进的团队，这个概念的提出是大胆的，令人惊讶的，有点甚至高不可攀。看起来，一个点对点的分布式文件系统是在寻求将所有的计算设备连在一起。这个可能的 HTTP 替换品通过多种渠道维护着一个社区，包括Git社区和超过100名贡献者的IRC。这个疯狂的想法将在2015年进行软件内部测试。

### 2015年度开源项目新秀: cAdvisor

![](/data/attachment/album/201506/26/235225q6tr5z111i2i8xi8.jpg)

[cAdvisor (Container Advisor)](https://github.com/google/cadvisor) 是一个针对在运行中的容器进行收集，统计，处理和输出信息的工具，它可以给容器的使用者提供资源的使用情况和工作特性。对于每一个容器，cAdvisor记录着资源的隔离参数，资源使用历史，资源使用历史对比框图，网络状态。这些从容器输出的数据跨越主机传递。

cAdvisor可以在绝大多数的Linux发行版上运行，并且支持包括Docker在内的多种容器类型。事实上它成为了一种容器的代理，并被集成在了很多系统中。cAdvisor在DockerHub下载量也是位居前茅。cAdvisor的开发团队希望把cAdvisor改进到能够更深入地理解应用性能，并且集成到集群系统。

### 2015年度开源项目新秀: Terraform

![](/data/attachment/album/201506/26/235226ewgw9ps9821cdwdp.jpg)

[Terraform](https://www.terraform.io/)提供了一些常见设置来创建一个基础设施，从物理机到虚拟机，以及email服务器、DNS服务器等。这个想法包括从家庭个人机解决方案到公共云平台提供的服务。一旦建立好了以后，Terraform可以让运维人员安全又高效地改变你的基础设施，就如同配置一样。

Terraform.io的创始者工作在一个Devops模式的公司，他找到了一个窍门把建立一个完整的数据中心所需的知识结合在一起，可以从添加服务器到支持网络服务的功能齐备的数据中心。基础设施的描述采用高级的配置语法，允许你把数据中心的蓝图按版本管理，并且转换成多种代码。著名开源公司HashiCorp赞助开发这个项目。

### 荣誉奖: Docker Fig

![](/data/attachment/album/201506/26/235226smjede9nsz9o69de.jpg)

[Fig](http://www.fig.sh/)为[Docker](http://www.infoworld.com/resources/16373/application-virtualization/the-beginners-guide-to-docker)的使用提供了一个快速的，分离的开发环境。Docker的移植只需要将配置信息放到一个简单的 fig.yml文件里。它会处理所有工作，包括构建、运行，端口转发，分享磁盘和容器链接。

Orchard去年发起了Fig，来创造一个使Docker工作起来的系统工具。它的开发像是为Docker设置开发环境，为了确保用户能够为他们的APP准确定义环境，在Docker中会运行数据库和缓存。Fig解决了开发者的一个难题。Docker全面支持这个开源项目，最近[将买下](http://www.infoworld.com/article/2608546/application-virtualization/docker-acquires-orchard-in-a-sign-of-rising-ambitions.html)Orchard来扩张这个项目。

### 荣誉奖: Drone

![](/data/attachment/album/201506/26/235227tzeiwwuu326z07au.jpg)

[Drone](https://drone.io/)是一个基于Docker的持续集成平台，而且它是用Go语言写的。Drone项目不满于现存的设置开发环境的技术和流程。

Drone提供了一个简单的自动测试和持续交付的方法：简单选择一个Docker镜像来满足你的需求，连接并提交至GitHub即可。Drone使用Docker容器来提供隔离的测试环境，让每个项目完全自主控制它的环境，没有传统的服务器管理的负担。Drone背后的100位社区贡献者强烈希望把这个项目带到企业和移动应用程序开发中。

### 开源新秀

![](/data/attachment/album/201506/26/235227aq6vxh8jxsen5ojh.jpg)

参见：

* [InfoWorld2015年年度技术奖](http://www.infoworld.com/article/2871935/application-development/infoworlds-2015-technology-of-the-year-award-winners.html)
* [Bossies: 开源软件最高荣誉](http://www.infoworld.com/article/2688104/open-source-software/article.html)

---

via: <http://www.infoworld.com/article/2875439/open-source-software/the-top-10-rookie-open-source-projects.html>

作者：[Black Duck Software](http://www.infoworld.com/author/Black-Duck-Software/) 译者：[sevenot](https://github.com/sevenot) 校对：[wxy](https://github.com/wxy)

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


命令行艺术

Summary: 流畅地使用命令行是一个常被忽略的技能，或被认为是神秘的奥义。但是，它会以明显而微妙的方式改善你作为工程师的灵活度和生产力。这是我在 Linux 上工作时发现的有用的命令行使用小窍门和笔记的精粹。有些小窍门是很基础的，而有些是相当地特别、复杂、或者晦涩难懂。这篇文章不长，但是如果你可以使用并记得这里的所有内容，那么你就懂得很多了。 其中大部分最初出现在Quora上，但是考虑到兴趣所在，似乎更应该放到 Github 上，这里的人比我更能提出改进建议。如果你看到一个错误，或者更好的某种东西，请提交问题或 PR！（当然，提交前

赞。。。

没看完

太棒了!

![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](/data/attachment/album/201506/27/151622zjf2gg5cgpso2kcv.png)

流畅地使用命令行是一个常被忽略的技能，或被认为是神秘的奥义。但是，它会以明显而微妙的方式改善你作为工程师的灵活度和生产力。这是我在 Linux 上工作时发现的有用的命令行使用小窍门和笔记的精粹。有些小窍门是很基础的，而有些是相当地特别、复杂、或者晦涩难懂。这篇文章不长，但是如果你可以使用并记得这里的所有内容，那么你就懂得很多了。

其中大部分[最初](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands)[出现](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix)在[Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know)上，但是考虑到兴趣所在，似乎更应该放到 Github 上，这里的人比我更能提出改进建议。如果你看到一个错误，或者更好的某种东西，请提交问题或 PR！（当然，提交前请看看必读小节和已有的 PR/Issue。）

必读
--

范围：

* 本文是针对初学者和专业人员的，选题目标是覆盖面广（全都很重要）、有针对性（大多数情况下都给出具体实例）而简洁（避免不必要内容以及你能在其它地方轻松找到的离题的内容）。每个小窍门在某种情形下都很必需的，或者能比替代品大大节省时间。
* 这是为 Linux 写的。绝大部分条目都可以同样应用到 MacOS（或者甚至 Cygwin）。
* 主要针对交互式 Bash，尽管大多数小窍门也可以应用到其它 shell，以及常规 Bash 脚本。
* 包括了“标准的”UNIX 命令以及那些需要安装的软件包（它们很重要，值得安装）。

注意：

* 为了能在一篇文章内展示尽量多的东西，一些具体的信息会被放到引用页里。你可以使用 Google 来获得进一步的内容。（如果需要的话，）你可以使用 `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` 来安装这些新的程序。
* 使用 [Explainshell](http://explainshell.com/) 来获取命令、参数、管道等内容的解释。

基础
--

* 学习基本 Bash 技能。实际上，键入`man bash`，然后至少浏览一遍所有内容；它很容易理解，没那么长。其它 shell 也不错，但是 Bash 很强大，而且到处都可以找到（如果在你自己的笔记本上*只*学习 zsh、fish 之类，会在很多情形下受到限制，比如使用现存的服务器时）。
* 至少学好一种基于文本的编辑器。理想的一个是 Vim（`vi`），因为在终端中编辑时随时都能找到它（即使大多数时候你在使用 Emacs、一个大型的 IDE、或一个现代的时髦编辑器）。
* 学习怎样使用 `man` 来阅读文档（好奇的话，用 `man man` 来列出分区号，比如 1 是常规命令，5 是文件描述，8 用于管理员）。用 `apropos` 找到帮助页。了解哪些命令不是可执行程序，而是 Bash 内置的，你可以用 `help` 和 `help -d` 得到帮助。
* 学习使用 `>` 和 `<` 来进行输出和输入重定向，以及使用 `|` 来管道重定向，学习关于 stdout 和 stderr 的东西。
* 学习 `*`（也许还有 `?` 和 `{`...`}` ）文件通配扩展和应用，以及双引号 `"` 和单引号 `'` 之间的区别。（更多内容请参看下面关于变量扩展部分）。
* 熟悉 Bash 作业管理：`&`， **ctrl-z**， **ctrl-c**， `jobs`， `fg`， `bg`， `kill` 等等。
* 掌握`ssh`，以及通过 `ssh-agent`，`ssh-add` 等进行无密码验证的基础技能。
* 基本的文件管理：`ls` 和 `ls -l`（特别是，知道`ls -l`各个列的意义），`less`， `head`， `tail` 和 `tail -f`（或者更好的`less +F`），`ln` 和 `ln -s`（知道硬链接和软链接的区别，以及硬链接相对于软链接的优势），`chown`，`chmod`，`du`（用于查看磁盘使用率的快速摘要：`du -sk *`）。文件系统管理：`df`， `mount`，`fdisk`，`mkfs`，`lsblk`。
* 基本的网络管理： `ip` 或 `ifconfig`，`dig`。
* 熟知正则表达式，以及各种使用`grep`/`egrep`的选项。`-i`，`-o`，`-A` 和 `-B` 选项值得掌握。
* 学会使用 `apt-get`，`yum` ，`dnf` 或 `pacman`（这取决于你的发行版）来查找并安装软件包。确保你可以用 `pip` 来安装基于 Python 的命令行工具（下面的一些东西可以很容易地通过 `pip` 安装）。

日常使用
----

* 在Bash中，使用 **tab** 补完参数，使用 **ctrl-r** 来搜索命令历史。
* 在Bash中，使用 **ctrl-w** 来删除最后的单词，使用 **ctrl-u** 来删除整行，返回行首。使用 **alt-b** 和 **alt-f** 来逐词移动，使用 **ctrl-k** 来清除到行尾的内容，以及使用 **ctrl-l** 清屏。参见 `man readline` 来查看 Bash 中所有默认的键盘绑定，有很多。例如，**alt-.** 可以循环显示先前的参数，而**alt-** 扩展通配。（LCTT 译注：关于 Bash 下的快捷键，可以参阅： </article-5660-1.html> ）
* 另外，如果你喜欢 vi 风格的键盘绑定，可以使用 `set -o vi`。
* 要查看最近用过的命令，请使用 `history` 。 有许多缩写形式，比如 `!$`（上次的参数）和`!!`（上次的命令），虽然使用 `ctrl-r` 和 `alt-.` 更容易些。（LCTT 译注：关于历史扩展功能，可以参阅： </article-5658-1.html> ）
* 返回先前的工作目录： `cd -`
* 如果你命令输入到一半，但是改变主意了，可以敲 **alt-#** 来添加一个 `#` 到开头，然后将该命令作为注释输入（或者使用快捷键 **ctrl-a**， **#**，**enter** 输入）。然后，你可以在后面通过命令历史来回到该命令。
* 使用 `xargs`（或 `parallel`），它很强大。注意，你可以控制每行（`-L`）执行多少个项目，以及并行执行（`-P`）。如果你不确定它是否会做正确的事情，可以首先使用 `xargs echo`。同时，使用 `-I{}` 也很方便。样例：

```
  find . -name '*.py' | xargs grep some_function
  cat hosts | xargs -I{} ssh root@{} hostname

```
* `pstree -p` 对于显示进程树很有帮助。
* 使用 `pgrep` 和 `pkill` 来按名称查找进程或给指定名称的进程发送信号（`-f` 很有帮助）。
* 掌握各种可以发送给进程的信号。例如，要挂起进程，可以使用 `kill -STOP [pid]`。完整的列表可以查阅 `man 7 signal`。
* 如果你想要一个后台进程一直保持运行，使用 `nohup` 或 `disown`。
* 通过 `netstat -lntp` 或 `ss -plat` 检查哪些进程在监听（用于 TCP，对 UDP 使用 `-u` 替代 `-t`）。
* `lsof`来查看打开的套接字和文件。
* 在 Bash 脚本中，使用 `set -x` 调试脚本输出。尽可能使用严格模式。使用 `set -e` 在遇到错误时退出。也可以使用 `set -o pipefail`，对错误进行严格处理（虽然该话题有点微妙）。对于更复杂的脚本，也可以使用 `trap`。
* 在 Bash 脚本中，子 shell（写在括号中的）是组合命令的便利的方式。一个常见的例子是临时移动到一个不同的工作目录，如：

```
  # 在当前目录做些事
  (cd /some/other/dir; other-command)
  # 继续回到原目录

```
* 注意，在 Bash 中有大量的各种各样的变量扩展。检查一个变量是否存在：`${name:?error message}`。例如，如果一个Bash脚本要求一个单一参数，只需写 `input_file=${1:?usage: $0 input_file}`。算术扩展：`i=$(( (i + 1) % 5 ))`。序列： `{1..10}`。修剪字符串：`${var%suffix}` 和 `${var#prefix}`。例如，if `var=foo.pdf` ，那么 `echo ${var%.pdf}.txt` 会输出 `foo.txt`。
* 命令的输出可以通过 `<(some command)` 作为一个文件来处理。例如，将本地的 `/etc/hosts` 和远程的比较：

```
  diff /etc/hosts <(ssh somehost cat /etc/hosts)

```
* 了解 Bash 中的“嵌入文档”，就像在 `cat <<EOF ...` 中。
* 在 Bash 中，通过：`some-command >logfile 2>&1` 同时重定向标准输出和标准错误。通常，要确保某个命令不再为标准输入打开文件句柄，而是将它捆绑到你所在的终端，添加 `</dev/null` 是个不错的做法。
* `man ascii` 可以得到一个不错的ASCII表，带有十六进制和十进制值两种格式。对于常规编码信息，`man unicode`，`man utf-8` 和 `man latin1` 将很有帮助。
* 使用 `screen` 或 `tmux` 来复用屏幕，这对于远程 ssh 会话尤为有用，使用它们来分离并重连到会话。另一个只用于保持会话的最小可选方案是 `dtach`。
* 在 ssh 中，知道如何使用 `-L` 或 `-D`（偶尔也用`-R`）来打开端口通道是很有用的，如从一台远程服务器访问网站时。
* 为你的 ssh 配置进行优化很有用；例如，这个 `~/.ssh/config` 包含了可以避免在特定网络环境中连接被断掉的情况的设置、使用压缩（这对于通过低带宽连接使用 scp 很有用），以及使用一个本地控制文件来开启到同一台服务器的多通道：

```
  TCPKeepAlive=yes
  ServerAliveInterval=15
  ServerAliveCountMax=6
  Compression=yes
  ControlMaster auto
  ControlPath /tmp/%r@%h:%p
  ControlPersist yes

```
* 其它一些与 ssh 相关的选项对会影响到安全，请小心开启，如各个子网或主机，或者在信任的网络中：`StrictHostKeyChecking=no`， `ForwardAgent=yes`
* 要获得八进制格式的文件的权限，这对于系统配置很有用而用 `ls` 又没法查看，而且也很容易搞得一团糟，可以使用像这样的东西：

```
  stat -c '%A %a %n' /etc/timezone

```
* 对于从另一个命令的输出结果中交互选择值，可以使用[`percol`](https://github.com/mooz/percol)。
* 对于基于另一个命令（如`git`）输出的文件交互，可以使用`fpp` ([路径选择器](https://github.com/facebook/PathPicker))。
* 要为当前目录（及子目录）中的所有文件构建一个简单的 Web 服务器，让网络中的任何人都可以获取，可以使用： `python -m SimpleHTTPServer 7777` （使用端口 7777 和 Python 2）。

处理文件和数据
-------

* 要在当前目录中按名称定位文件，`find . -iname '*something*'`（或者相类似的）。要按名称查找任何地方的文件，使用 `locate something`（但请记住，`updatedb` 可能还没有索引最近创建的文件）。
* 对于源代码或数据文件进行的常规搜索（要比 `grep -r` 更高级），使用 [`ag`](https://github.com/ggreer/the_silver_searcher)。
* 要将 HTML 转成文本：`lynx -dump -stdin`。
* 对于 Markdown、HTML，以及各种类型的文档转换，可以试试 [`pandoc`](http://pandoc.org/)。
* 如果你必须处理 XML，`xmlstarlet` 虽然有点老旧，但是很好用。
* 对于 JSON，使用`jq`。
* 对于 Excel 或 CSV 文件，[csvkit](https://github.com/onyxfish/csvkit) 提供了 `in2csv`，`csvcut`，`csvjoin`，`csvgrep` 等工具。
* 对于亚马逊 S3 ，[`s3cmd`](https://github.com/s3tools/s3cmd) 会很方便，而 [`s4cmd`](https://github.com/bloomreach/s4cmd) 则更快速。亚马逊的 [`aws`](https://github.com/aws/aws-cli) 则是其它 AWS 相关任务的必备。
* 掌握 `sort` 和 `uniq`，包括 uniq 的 `-u` 和 `-d` 选项——参见下面的单行程序。
* 掌握 `cut`，`paste` 和 `join`，它们用于处理文本文件。很多人会使用 `cut`，但常常忘了 `join`。
* 了解 `tee`，它会将 stdin 同时复制到一个文件和 stdout，如 `ls -al | tee file.txt`。
* 知道 locale 会以微妙的方式对命令行工具产生大量的影响，包括排序的顺序（整理）以及性能。大多数安装好的 Linux 会设置 `LANG` 或其它 locale 环境变量为本地设置，比如像 US English。但是，你要明白，如果改变了本地环境，那么排序也将改变。而且 i18n 过程会让排序或其它命令的运行慢*好多倍*。在某些情形中（如像下面那样的设置操作或唯一性操作），你可以安全地整个忽略缓慢的 i18n 过程，然后使用传统的基于字节的排序顺序 `export LC_ALL=C`。
* 了解基本的改动数据的 `awk` 和 `sed` 技能。例如，计算某个文本文件第三列所有数字的和：`awk '{ x += $3 } END { print x }'`。这可能比 Python 的同等操作要快3倍，而且要短3倍。
* 在一个或多个文件中，替换所有出现在特定地方的某个字符串：

```
  perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt

```
* 要立即根据某个模式对大量文件重命名，使用 `rename`。对于复杂的重命名，[`repren`](https://github.com/jlevy/repren) 可以帮助你达成。

```
  # 恢复备份文件 foo.bak -> foo:
  rename 's/\.bak$//' *.bak
  # 完整的文件名、目录名 foo -> bar:
  repren --full --preserve-case --from foo --to bar .

```
* 使用 `shuf` 来从某个文件中打乱或随机选择行。
* 了解 `sort` 的选项。知道这些键是怎么工作的（`-t`和`-k`）。特别是，注意你需要写`-k1,1`来只通过第一个字段排序；`-k1`意味着根据整行排序。
* 稳定排序（`sort -s`）会很有用。例如，要首先按字段2排序，然后再按字段1排序，你可以使用 `sort -k1,1 | sort -s -k2,2`
* 如果你曾经需要在 Bash 命令行中写一个水平制表符（如，用于 -t 参数的排序），按**ctrl-v** **[Tab]**，或者写`$'\t'`（后面的更好，因为你可以复制/粘贴）。
* 对源代码进行补丁的标准工具是 `diff` 和 `patch`。 用 `diffstat` 来统计 diff 情况。注意 `diff -r` 可以用于整个目录，所以可以用 `diff -r tree1 tree2 | diffstat` 来统计（两个目录的）差异。
* 对于二进制文件，使用 `hd` 进行简单十六进制转储，以及 `bvi` 用于二进制编辑。
* 还是用于二进制文件，`strings`（加上 `grep` 等）可以让你找出一点文本。
* 对于二进制文件的差异（delta 压缩），可以使用 `xdelta3`。
* 要转换文本编码，试试 `iconv` 吧，或者对于更高级的用途使用 `uconv`；它支持一些高级的 Unicode 的东西。例如，这个命令可以转换为小写并移除所有重音符号（通过扩展和丢弃）：

```
  uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt

```
* 要将文件分割成几个部分，来看看 `split`（按大小分割）和 `csplit`（按格式分割）吧。
* 使用 `zless`，`zmore`，`zcat` 和 `zgrep` 来操作压缩文件。

系统调试
----

* 对于 Web 调试，`curl` 和 `curl -I` 很方便灵活，或者也可以使用它们的同行 `wget`，或者更现代的 [`httpie`](https://github.com/jakubroztocil/httpie)。
* 要了解磁盘、CPU、网络的状态，使用 `iostat`，`netstat`，`top`（或更好的 `htop`）和（特别是）`dstat`。它们对于快速获知系统中发生的状况很好用。
* 对于更深层次的系统总览，可以使用 [`glances`](https://github.com/nicolargo/glances)。它会在一个终端窗口中为你呈现几个系统层次的统计数据，对于快速检查各个子系统很有帮助。
* 要了解内存状态，可以运行 `free` 和 `vmstat`，看懂它们的输出结果吧。特别是，要知道“cached”值是Linux内核为文件缓存所占有的内存，因此，要有效地统计“free”值。
* Java 系统调试是一件截然不同的事，但是对于 Oracle 系统以及其它一些 JVM 而言，不过是一个简单的小把戏，你可以运行 `kill -3 <pid>`，然后一个完整的堆栈追踪和内存堆的摘要（包括常规的垃圾收集细节，这很有用）将被转储到stderr/logs。
* 使用 `mtr` 作路由追踪更好，可以识别网络问题。
* 对于查看磁盘满载的原因，`ncdu` 会比常规命令如 `du -sh *` 更节省时间。
* 要查找占用带宽的套接字和进程，试试 `iftop` 或 `nethogs` 吧。
* （Apache附带的）`ab`工具对于临时应急检查网络服务器性能很有帮助。对于更复杂的负载测试，可以试试 `siege`。
* 对于更仔细的网络调试，可以用 `wireshark`，`tshark` 或 `ngrep`。
* 掌握 `strace` 和 `ltrace`。如果某个程序失败、挂起或崩溃，而你又不知道原因，或者如果你想要获得性能的大概信息，这些工具会很有帮助。注意，分析选项（`-c`）和使用 `-p` 关联运行进程。
* 掌握 `ldd` 来查看共享库等。
* 知道如何使用 `gdb` 来连接到一个运行着的进程并获取其堆栈追踪信息。
* 使用 `/proc`。当调试当前的问题时，它有时候出奇地有帮助。样例：`/proc/cpuinfo`，`/proc/xxx/cwd`，`/proc/xxx/exe`，`/proc/xxx/fd/`，`/proc/xxx/smaps`。
* 当调试过去某个东西为何出错时，`sar` 会非常有帮助。它显示了 CPU、内存、网络等的历史统计数据。
* 对于更深层的系统和性能分析，看看 `stap` ([SystemTap](https://sourceware.org/systemtap/wiki))，[`perf`](http://en.wikipedia.org/wiki/Perf_(Linux)) 和 [`sysdig`](https://github.com/draios/sysdig) 吧。
* 确认是正在使用的 Linux 发行版版本（支持大多数发行版）：`lsb_release -a`。
* 每当某个东西的行为异常时（可能是硬件或者驱动器问题），使用`dmesg`。

单行程序
----

这是将命令连成一行的一些样例：

* 有时候通过 `sort`/`uniq` 对文本文件做交集、并集和差集运算时，这个例子会相当有帮助。假定 `a` 和 `b` 是已经进行了唯一性处理的文本文件。这会很快，而且可以处理任意大小的文件，总计可达数千兆字节。（Sort不受内存限制，不过如果 `/tmp` 放在一个很小的根分区的话，你可能需要使用 `-T` 选项。）也可参见上面关于`LC_ALL`的注解和 `-u` 选项（参见下面例子更清晰）。

```
sh cat a b | sort | uniq > c # c 是 a 和 b 的并集
cat a b | sort | uniq -d > c # c 是 a 和 b 的交集
cat a b b | sort | uniq -u > c # c 是 a 减去 b 的差集
```
* 使用 `grep . *` 来可视化查看一个目录中的所有文件的所有内容，例如，对于放满配置文件的目录： `/sys`， `/proc`， `/etc`。
* 对某个文本文件的第三列中所有数据进行求和（该例子可能比同等功能的Python要快3倍，而且代码也少于其3倍）：

```
  awk '{ x += $3 } END { print x }' myfile

```
* 如果想要查看某个文件树的大小/日期，该例子就像一个递归`ls -l`，但是比`ls -lR`要更容易读懂：

```
  find . -type f -ls

```
* 只要可以，请使用 `xargs` 或 `parallel`。注意，你可以控制每行（`-L`）执行多少个项目，以及并行执行（`-P`）。如果你不确定它是否会做正确的事情，可以首先使用 `xargs echo`。同时，使用 `-I{}` 也很方便。样例：

```
  find . -name '*.py' | xargs grep some_function
  cat hosts | xargs -I{} ssh root@{} hostname

```
* 比如说，你有一个文本文件，如 Web 服务器的日志，在某些行中出现了某个特定的值，如 URL 中出现的 `acct_id` 参数。如果你想要统计有多少个 `acct_id` 的请求：

```
cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn

```
* 运行该函数来获得来自本文的随机提示（解析Markdown并从中提取某个项目）：

```
function taocl() {
    curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md |
      pandoc -f markdown -t html |
      xmlstarlet fo --html --dropdtd |
      xmlstarlet sel -t -v "(html/body/ul/li[count(p)>0])[$RANDOM mod last()+1]" |
      xmlstarlet unesc | fmt -80
  }

```

晦涩难懂，但却有用
---------

* `expr`：实施算术或布林操作，或者求正则表达式的值
* `m4`：简单的宏处理器
* `yes`：大量打印一个字符串
* `cal`：漂亮的日历
* `env`：（以特定的环境变量设置）运行一个命令（脚本中很有用）
* `look`：查找以某个字符串开头的英文单词（或文件中的行）
* `cut` 和 `paste` 以及 `join`：数据处理
* `fmt`：格式化文本段落
* `pr`：格式化文本为页/列
* `fold`：文本折行
* `column`：格式化文本为列或表
* `expand` 和 `unexpand`：在制表符和空格间转换
* `nl`：添加行号
* `seq`：打印数字
* `bc`：计算器
* `factor`：分解质因子
* `gpg`：加密并为文件签名
* `toe`：terminfo 条目表
* `nc`：网络调试和数据传输
* `socat`：套接字中继和 tcp 端口转发（类似 `netcat`）
* `slurm`：网络流量可视化
* `dd`：在文件或设备间移动数据
* `file`：识别文件类型
* `tree`：以树形显示目录及子目录；类似 `ls`，但是是递归的。
* `stat`：文件信息
* `tac`：逆序打印文件
* `shuf`：从文件中随机选择行
* `comm`：逐行对比分类排序的文件
* `hd`和`bvi`：转储或编辑二进制文件
* `strings`：从二进制文件提取文本
* `tr`：字符转译或处理
* `iconv`或`uconv`：文本编码转换
* `split`和`csplit`：分割文件
* `units`：单位转换和计算；将每双周（fortnigh）一浪（浪，furlong，长度单位，约201米）转换为每瞬（blink）一缇（缇，twip，一种和屏幕无关的长度单位）（参见： /usr/share/units/definitions.units）（LCTT 译注：这都是神马单位啊！）
* `7z`：高比率文件压缩
* `ldd`：动态库信息
* `nm`：目标文件的符号
* `ab`：Web 服务器基准测试
* `strace`：系统调用调试
* `mtr`：用于网络调试的更好的路由追踪软件
* `cssh`：可视化并发 shell
* `rsync`：通过 SSH 同步文件和文件夹
* `wireshark` 和 `tshark`：抓包和网络调试
* `ngrep`：从网络层摘取信息
* `host` 和 `dig`：DNS查询
* `lsof`：处理文件描述符和套接字信息
* `dstat`：有用的系统统计数据
* [`glances`](https://github.com/nicolargo/glances)：高级，多个子系统概览
* `iostat`：CPU和磁盘使用率统计
* `htop`：top的改进版
* `last`：登录历史
* `w`：谁登录进来了
* `id`：用户/组身份信息
* `sar`：历史系统统计数据
* `iftop`或`nethogs`：按套接口或进程的网络使用率
* `ss`：套接口统计数据
* `dmesg`：启动和系统错误信息
* `hdparm`：SATA/ATA 磁盘操作/改善性能
* `lsb_release`：Linux 发行版信息
* `lsblk`：列出块设备，以树形展示你的磁盘和分区
* `lshw`：硬件信息
* `fortune`，`ddate` 和 `sl`：嗯，好吧，它取决于你是否认为蒸汽机车和 Zippy 引用“有用”

更多资源
----

* [超棒的shell](https://github.com/alebcay/awesome-shell): 一个shell工具和资源一览表。
* [严格模式](http://redsymbol.net/articles/unofficial-bash-strict-mode/) 用于写出更佳的shell脚本。

免责声明
----

除了非常小的任务外，其它都写出了代码供大家阅读。伴随力量而来的是责任。事实是，你*能*在Bash中做的，并不意味着是你所应该做的！；）

---

via: <https://github.com/jlevy/the-art-of-command-line>

作者：[jlevy](https://github.com/jlevy) 译者：[GOLinux](https://github.com/GOLinux) 校对：[wxy](https://github.com/wxy)

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


在Ubuntu中安装Unity 8桌面预览版

Summary: 如果你一直关注新闻，那么就知道Ubuntu将会切换到带有Unity 8桌面的Mir显示服务器。然而，在尚未确定运行在 Mir 上的Unity 8是否会出现在Ubuntu 15.10 Willy Werewolf之前，有了一个Unity 8的预览版本可供你体验和测试。通过官方PPA，可以很容易地安装Unity 8到Ubuntu 14.04,14.10和15.04中。 到目前为止，开发者已经可以通过ISO（主要途径）获得该Unity 8预览来进行测试。不过Canonical也通过LXC容器发布了它。通过该方法，你可以使用Unity 8桌面会话，让它像其它桌面环境一样运行在Mir显示服务器上。就像你在Ubuntu中安装Mate桌面，然后

不是说Unity要转Qt吗，怎么没见动静啊

其实我想看的是登录之后是啥样子

请问作者可不可以截个图看看？我安装之后进不去unity8，非常可惜。会一直卡在登录窗口。

就像看看桌面啥样的，就是不给张图

setup失败...懒得整了

来自云南昆明的 Internet Explorer 11.0|Windows 8.1 用户

希望成功吧

无所谓，不关心……我只需要系统稳定，占用资源少即可，对花哨的桌面没什么兴趣

![](/data/attachment/album/201506/27/153104vh53twwyecxtxk3r.jpg)

如果你一直关注新闻，那么就知道Ubuntu将会切换到带有[Unity 8](https://wiki.ubuntu.com/Unity8Desktop)桌面的[Mir显示服务器](http://en.wikipedia.org/wiki/Mir_%28software%29)。然而，在尚未确定运行在 Mir 上的Unity 8是否会出现在[Ubuntu 15.10 Willy Werewolf](http://itsfoss.com/ubuntu-15-10-codename/)之前，有了一个Unity 8的预览版本可供你体验和测试。通过官方PPA，可以很容易地**安装Unity 8到Ubuntu 14.04,14.10和15.04中**。

到目前为止，开发者已经可以通过[ISO](https://wiki.ubuntu.com/Unity8DesktopIso)（主要途径）获得该Unity 8预览来进行测试。不过Canonical也通过[LXC容器](https://wiki.ubuntu.com/Unity8inLXC)发布了它。通过该方法，你可以使用Unity 8桌面会话，让它像其它桌面环境一样运行在Mir显示服务器上。就像你[在Ubuntu中安装Mate桌面](http://itsfoss.com/install-mate-desktop-ubuntu-14-04/)，然后从LightDm登录屏幕选择桌面会话一样。

想要试试Unity 8？让我们来看怎样安装它吧。

**注意： 它是一个实验性预览，可能不是所有人都可以让它正确工作的。**

### 安装Unity 8桌面到Ubuntu

下面是安装并使用Unity 8的步骤：

#### 步骤 1： 安装Unity 8到Ubuntu 12.04和14.04

如果你正运行着Ubuntu 12.04和14.04，那么你必须使用官方PPA来安装Unity 8。使用以下命令进行安装：

```
sudo apt-add-repository ppa:unity8-desktop-session-team/unity8-preview-lxc
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install unity8-lxc

```

#### 步骤 1： 安装Unity 8到Ubuntu 14.10和15.04

如果你正运行着Ubuntu 14.10或15.04，那么Unity 8 LXC已经在源中准备好。你只需要运行以下命令：

```
sudo apt-get update
sudo apt-get install unity8-lxc

```

#### 步骤 2： 设置Unity 8桌面预览LXC

安装Unity 8 LXC后，该对它进行设置，下面的命令就可达到目的：

```
sudo unity8-lxc-setup

```

它将花费一些时间来设置，所以，耐心点。它会下载ISO，然后解压缩，接着完成最后一些必要的设置来让它工作。它也会安装一个LightDM的轻度修改版本。这一切都搞定后，需要重启。

#### 步骤 3： 选择Unity 8

重启后，在登录屏幕，点击你的登录旁边的Ubuntu图标：

![](/data/attachment/album/201506/27/153105s5w336uvf5tv5rec.jpg)

你应该可以在这看到Unity 8的选项，选择它：

![](/data/attachment/album/201506/27/153105ihtcyi87dciptig3.jpg)

### 卸载Unity 8 LXC

如果你发现Unity 8毛病太多，或者你不喜欢它，那么你可以以相同的方式切换回默认Unity版本。此外，你也可以通过下面的命令移除Unity 8：

```
sudo apt-get remove unity8-lxc

```

该命令会将Unity 8选项从LightDM屏幕移除，但是配置仍然保留着。

以上就是你在Ubuntu中安装带有Mir的Unity 8的全部过程，试玩后请分享你关于Unity 8的想法哦！

---

via: <http://itsfoss.com/install-unity-8-desktop-ubuntu/>

作者：[Abhishek](http://itsfoss.com/author/abhishek/) 译者：[GOLinux](https://github.com/GOLinux) 校对：[wxy](https://github.com/wxy)

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


在Ubuntu 15.04下安装Android Studio

Summary: Android Studio是官方为了Android应用开发者而发布的IDE，它基于IntelliJ的IDEA。 Android Studio的功能   灵活的基于Gradle的建构系统   针对不同手机编译多个版本的apk   代码模板功能构建出各种常用的应用   支持拖动编辑主题的富布局编辑器   lint工具可以捕捉到应用的性能、可用性、版本冲突或者其他问题   代码混淆和应用签名功能   内置 Google Cloud Platform 的支持，可以轻易的融入Google Cloud Messaging 和 App Engine支持   还有更多   在 Ubuntu 15.04 上安装 Android Studio 打开terminal，输入以下命令 sudo apt-add-repo

需要在线下载SDK不用考虑Google被墙的问题吗？

需要考虑，挂个VPN，或者设置一个HTTPS代理

还不如自己去下载 ，并没有 什么 用，更新 很慢

下载好打SDK怎么配置？

![](/data/attachment/album/201506/27/212542xoqt2a05iszxx5zv.png)

Android Studio是官方为了Android应用开发者而发布的IDE，它基于IntelliJ的IDEA。

### Android Studio的功能

* 灵活的基于Gradle的建构系统
* 针对不同手机编译多个版本的apk
* 代码模板功能构建出各种常用的应用
* 支持拖动编辑主题的富布局编辑器
* lint工具可以捕捉到应用的性能、可用性、版本冲突或者其他问题
* 代码混淆和应用签名功能
* 内置 Google Cloud Platform 的支持，可以轻易的融入Google Cloud Messaging 和 App Engine支持
* 还有更多

### 在 Ubuntu 15.04 上安装 Android Studio

打开terminal，输入以下命令

```
sudo apt-add-repository ppa:paolorotolo/android-studio
sudo apt-get update
sudo apt-get install android-studio

```

如果要把Android Studio添加到启动栏，你需要如下操作

打开Android Studio，点击Configure选择Create Desktop Entry，这样Android Studio应该在dash中创建快捷方式了。

### 截图

![](/data/attachment/album/201506/27/212543ytqtz6i7ag46mvui.png)

![](/data/attachment/album/201506/27/212545f0qypn0nyjrrd6py.png)

![](/data/attachment/album/201506/27/212546slgfd86jdxtoqxf7.png)

![](/data/attachment/album/201506/27/212548vcoa6059u5ku5h65.png)

![](/data/attachment/album/201506/27/212550krru7b2x9wvwmd42.png)

![](/data/attachment/album/201506/27/212552iykzxymy26bs4lfy.png)

---

via: <http://www.ubuntugeek.com/install-android-studio-on-ubuntu-15-04.html>

作者：[ruchi](http://www.ubuntugeek.com/author/ubuntufix) 译者：[NearTan](https://github.com/NearTan) 校对：[wxy](https://github.com/wxy)

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


如何在 Ubuntu 15.04 中安装 nginx 和 google pagespeed

Summary: Nginx （engine-x）是一个开源的高性能 HTTP 服务器、反向代理和 IMAP/POP3 代理服务器。nginx 杰出的功能有：稳定、丰富的功能集、简单的配置和低资源消耗。nginx 被用于一些高性能网站并在站长之间变得越来越流行。本教程会从源码构建一个带有 google paespeed 模块的用于 Ubuntu 15.04 的 nginx .deb 安装包。 pagespeed 是一个由 google 开发的 web 服务器模块来加速网站响应时间、优化 html 和减少页面加载时间。ngx_pagespeed 的功能如下：  图像优化：去除元数据、动态缩放、重压缩。 CSS 与 JavaScript 压缩、串联、内联、外联。

Nginx （engine-x）是一个开源的高性能 HTTP 服务器、反向代理和 IMAP/POP3 代理服务器。nginx 杰出的功能有：稳定、丰富的功能集、简单的配置和低资源消耗。nginx 被用于一些高性能网站并在站长之间变得越来越流行。本教程会从源码构建一个带有 google paespeed 模块的用于 Ubuntu 15.04 的 nginx .deb 安装包。

pagespeed 是一个由 google 开发的 web 服务器模块来加速网站响应时间、优化 html 和减少页面加载时间。ngx\_pagespeed 的功能如下：

* 图像优化：去除元数据、动态缩放、重压缩。
* CSS 与 JavaScript 压缩、串联、内联、外联。
* 小资源内联
* 图像与 JavaScript 延迟加载
* HTML 重写
* 缓存生命期插件

更多请见 <https://developers.google.com/speed/pagespeed/module/>。

### 前置要求

* Ubuntu Server 15.04 64位
* root 权限

本篇我们将要：

* 安装必备软件包
* 安装带 ngx\_pagespeed 的 nginx
* 测试

#### 安装必备包

```
sudo apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev

```

### 安装带 ngx\_pagespeed 的 nginx

#### 第一步 - 添加nginx仓库

```
vim /etc/apt/sources.list.d/nginx.list

```

加入下面的行：

```
deb http://nginx.org/packages/ubuntu/ trusty nginx
deb-src http://nginx.org/packages/ubuntu/ trusty nginx

```

更新仓库：

```
sudo apt-get update

```

注意：如果你看到信息：GPG error [...] NO\_PUBKEY [...] 等等

请添加key：

```
sudo sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys KEYNUMBER
sudo apt-get update

```

#### 第二步 - 从仓库下载 nginx 1.8

```
sudo su
cd ~
mkdir -p ~/new/nginx_source/
cd ~/new/nginx_source/
apt-get source nginx
apt-get build-dep nginx

```

#### 第三步 - 下载 Pagespeed

```
cd ~
mkdir -p ~/new/ngx_pagespeed/
cd ~/new/ngx_pagespeed/
ngx_version=1.9.32.3
wget https://github.com/pagespeed/ngx_pagespeed/archive/release-${ngx_version}-beta.zip
unzip release-${ngx_version}-beta.zip

cd ngx_pagespeed-release-1.9.32.3-beta/
wget https://dl.google.com/dl/page-speed/psol/${ngx_version}.tar.gz
tar -xzf 1.9.32.3.tar.gz

```

#### 第四步 - 配置 nginx 来编译 Pagespeed

```
cd ~/new/nginx_source/nginx-1.8.0/debin/
vim rules

```

在两处 CFLAGS `.configure` 下添加模块：

```
--add-module=../../ngx_pagespeed/ngx_pagespeed-release-1.9.32.3-beta \

```

![adding pagespeed to nginx](/data/attachment/album/201506/27/214218nt7v3stq8tpfof0v.png)

![adding pagespeed to nginx](/data/attachment/album/201506/27/214220gzbz44d4cez79bdb.png)

#### 第五步 - 打包 nginx 软件包并安装

```
cd ~/new/nginx_source/nginx-1.8.0/
dpkg-buildpackage -b

```

dpkg-buildpackage 会编译 ~/new/ngix\_source/ 为 nginx.deb。打包完成后，看一下目录：

```
cd ~/new/ngix_source/
ls

```

![nginx builded with pagespeed](/data/attachment/album/201506/27/214222u3k57g8bhgeuwhbr.png)

接着安装 nginx。

```
dpkg -i nginx_1.8.0-1~trusty_amd64.deb

```

![Install nginx](/data/attachment/album/201506/27/214224gr29ttctttktc4a4.png)

### 测试

运行 nginx -V 测试 nginx 是否已经自带 ngx\_pagespeed。

```
nginx -V

```

![nginx -V](/data/attachment/album/201506/27/214226y1aovlfbqwoc7mmo.png)

### 总结

稳定、快速、开源的 nginx 支持许多不同的优化模块。这其中之一是 google 开发的‘pagespeed’。不像 apache，nginx 模块不是动态加载的，因此你必须在编译之前就选择好需要的模块。

---

via: <https://www.howtoforge.com/tutorial/how-to-install-nginx-and-google-pagespeed-on-ubuntu-15-04/>

作者：Muhammad Arul 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

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


如何在 Linux 上使用 x2go 设置远程桌面

Summary: 由于一切都迁移到了云上，作为提高职员生产力的一种方式，虚拟远程桌面在工业中越来越流行。尤其对于那些需要在多个地方和设备之间不停漫游的人，远程桌面可以让他们和工作环境保持无缝连接。远程桌面对于雇主同样有吸引力，可以在工作环境中提高敏捷性和灵活性，由于硬件整合、桌面安全加固等原因降低 IT 花费。 在 Linux 世界中，理所当然设置远程桌面有很多选择，支持许多协议（例如 RDP、RFB、NX） 和服务器/客户端实现（例如 TigerVNC、RealVNC、FreeNX、x2go、X11vnc、TeamViewer 等等）。 这当中有个出色的产品叫做 X2Go，它是一个

看上去很易用啊

由于一切都迁移到了云上，作为提高职员生产力的一种方式，虚拟远程桌面在工业中越来越流行。尤其对于那些需要在多个地方和设备之间不停漫游的人，远程桌面可以让他们和工作环境保持无缝连接。远程桌面对于雇主同样有吸引力，可以在工作环境中提高敏捷性和灵活性，由于硬件整合、桌面安全加固等原因降低 IT 花费。

在 Linux 世界中，理所当然设置远程桌面有很多选择，支持许多协议（例如 RDP、RFB、NX） 和服务器/客户端实现（例如 [TigerVNC](http://ask.xmodulo.com/centos-remote-desktop-vps.html)、RealVNC、FreeNX、x2go、X11vnc、TeamViewer 等等）。

这当中有个出色的产品叫做 [X2Go](http://wiki.x2go.org/)，它是一个基于 NX（译者注：通过计算机网络显示远程桌面环境的一种技术，可参考 [Wiki](https://en.wikipedia.org/wiki/NX_technology)）的远程桌面服务器和客户端的开源(GPLv2)实现。在这个教程中，我会介绍 **如何为 Linux VPS 使用 X2Go 设置远程桌面环境**。

### X2Go 是什么？

![](/data/attachment/album/201506/27/220901ef8j6x8v55q03k5g.png)

X2Go 的历史要追溯到 NoMachine 的 NX 技术。NX 远程桌面协议的设计目的是通过利用主动压缩和缓存解决低带宽和高延迟的网络连接问题。后来，NX 转为闭源，但 NX 库还是采用 GPL 协议。这导致出现了多种基于 NX 的远程桌面解决方案开源实现，X2Go 就是其中之一。

和其它解决方案例如 VNC 相比，X2Go 有哪些好处呢？ X2Go 继承了 NX 技术的所有高级功能，很自然能在慢速网络连接上良好工作。另外，由于它内置的基于 SSH 的加密技术，X2Go 保持了确保安全的良好业绩记录。不再需要[手动设置 SSH 隧道](http://xmodulo.com/how-to-set-up-vnc-over-ssh.html) 。X2Go 默认支持音频，这意味着远程桌面的音乐播放可以通过网络传送，并进入本地扬声器。在易用性方面，远程桌面上运行的应用程序可以在你的本地桌面中以一个独立窗口无缝呈现，会给你造成一种应用程序实际上在你本地桌面运行的错觉。正如你看到的，这些都是一些基于 VNC 的解决方案所缺少的[强大功能](http://wiki.x2go.org/doku.php/doc:newtox2go)。

### X2GO 的桌面环境兼容性

和其它远程桌面服务器一样，X2Go 服务器也有一些[已知的兼容性问题](http://wiki.x2go.org/doku.php/doc:de-compat)。像 KDE 3/4、Xfce、MATE 和 LXDE 是对 X2Go 服务器最友好的桌面环境。但是，用其它桌面管理器效果可能有所不同。例如，已知 GNOME 3 之后的版本、KDE 5、Unity 和 X2Go 并不兼容。如果你的远程主机的桌面管理器和 X2Go 兼容，你可以继续以下的教程。

### 在 Linux 上安装 X2Go 服务器

X2Go 由远程桌面服务器和客户端组件组成。让我们首先安装 X2Go 服务器。我假设你已经有一个和 X2Go 兼容的桌面管理器并且在远程主机上运行，我们会安装 X2Go 服务器到该远程主机。

注意系统启动后 X2Go 服务器组件没有需要单独启动的服务。你只需要保证开启了 SSH 服务并在正常运行。

#### Ubuntu 或 Linux Mint：

配置 X2Go PPA 库。对于 Ubuntu 14.04 以及更高版本，有可用的 X2Go PPA。

```
$ sudo add-apt-repository ppa:x2go/stable
$ sudo apt-get update
$ sudo apt-get install x2goserver x2goserver-xsession

```

#### Debian (Wheezy)：

```
$ sudo apt-key adv --recv-keys --keyserver keys.gnupg.net E1F958385BFE2B6E
$ sudo sh -c "echo deb http://packages.x2go.org/debian wheezy main > /etc/apt/sources.list.d/x2go.list"
$ sudo sh -c "echo deb-src http://packages.x2go.org/debian wheezy main >> /etc/apt/sources.list.d/x2go.list"
$ sudo apt-get update
$ sudo apt-get install x2goserver x2goserver-xsession

```

#### Fedora：

```
$ sudo yum install x2goserver x2goserver-xsession

```

#### CentOS/RHEL：

首先启用 [EPEL 库](/article-2324-1.html) 然后运行：

```
$ sudo yum install x2goserver x2goserver-xsession

```

### 在 Linux 上安装 X2Go 客户端

在将会连接到远程桌面的本地主机上，安装以下命令安装 X2Go 客户端。

#### Ubuntu 或 Linux Mint：

配置 X2Go PPA 库。对于 Ubuntu 14.04 以及更高版本，有可用的 X2Go PPA。

```
$ sudo add-apt-repository ppa:x2go/stable
$ sudo apt-get update
$ sudo apt-get install x2goclient

```

Debian (Wheezy)：

```
$ sudo apt-key adv --recv-keys --keyserver keys.gnupg.net E1F958385BFE2B6E
$ sudo sh -c "echo deb http://packages.x2go.org/debian wheezy main > /etc/apt/sources.list.d/x2go.list"
$ sudo sh -c "echo deb-src http://packages.x2go.org/debian wheezy main >> /etc/apt/sources.list.d/x2go.list"
$ sudo apt-get update
$ sudo apt-get install x2goclient

```

#### Fedora：

```
$ sudo yum install x2goclient

```

CentOS/RHEL：

首先启用 [EPEL 库](/article-2324-1.html) ，然后运行：

```
$ sudo yum install x2goclient

```

### 用 X2Go 客户端连接到远程桌面

现在可以连接到远程桌面了。在本地主机上，只需运行以下命令或者使用桌面启动器启动 X2Go 客户端。

```
$ x2goclient

```

输入远程主机的 IP 地址和 SSH 用户名称。同时，指定会话类型（例如，远程主机的桌面管理器）。

![](/data/attachment/album/201506/27/220923le1bvv1bwv1kmkia.jpg)

如果需要的话，你可以自定义其它东西（通过点击其它的标签），例如连接速度、压缩、屏幕分辨率等等。

![](/data/attachment/album/201506/27/220925zjyufyada5gnaxeg.jpg)

![](/data/attachment/album/201506/27/220929zqqukaaazjqksczh.jpg)

当你初始化一个远程桌面连接的时候，会要求你登录。输入你的 SSH 登录名和密码。

![](/data/attachment/album/201506/27/220931zsc3fc55z8mmcss3.jpg)

成功登陆后，你会看到远程桌面屏幕。

![](/data/attachment/album/201506/27/220934yzr9fm73bj9uuibg.jpg)

如果你想测试 X2Go 的无缝窗口功能，选择 "Single application" 会话类型，然后指定远处主机上可执行文件的路径。在该例子中，我选择远程 KDE 主机上的 Dolphin 文件管理器。

![](/data/attachment/album/201506/27/220943njwwyva3bwaybh31.jpg)

你成功连接后，你会在本地桌面上看到一个远程应用窗口，而不是完整的远程桌面屏幕。

![](/data/attachment/album/201506/27/220944b8bqyltzx9xd9b5y.jpg)

### 总结

在这篇教程中，我介绍了如何在 [Linux VPS](http://xmodulo.com/go/digitalocean) 实例上设置 X2Go 远程桌面。正如你所看到的，整个设置过程都非常简单（如果你使用一个合适的桌面环境的话）。尽管对于特定桌面仍有问题，X2Go 是一个安全、功能丰富、快速并且免费的远程桌面解决方案。

X2Go 的什么功能最吸引你？欢迎分享你的观点。

---

via: <http://xmodulo.com/x2go-remote-desktop-linux.html>

作者：[Dan Nanni](http://xmodulo.com/author/nanni) 译者：[ictlyh](https://github.com/ictlyh) 校对：[wxy](https://github.com/wxy)

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


如何在 Linux 中安装漂亮的 GTK+ 扁平化主题 Arc

Summary: 今天我们将向你介绍最新发布的GTK+主题，它拥有透明和扁平元素，并且与多个桌面环境和Linux发行版兼容。这个主题叫Arc。 开始讲细节之前，我建议你快速浏览一下下面的图，这样你有会对这个主题就会有一个基本的概念了。同样你应该知道它目前可以工作在GTK+ 2.x、GTK+ 3.x、GNOME-Shell、 Budgie、 Unity和Pantheon用户界面，它们都使用了GNOME 体系。    同样、Arc主题的开发者告诉我们它已经成功地在Ubuntu 15.04（Vivid Vervet）、 Arch Linux、 elementary OS 0.3 Freya、 Fedora 21、 Fedora 22、 Debian GNU/Linux 8.0 (Jessie)、 De

装个主题还这么麻烦，还不如把精力放在值得折腾的地方

换了N多主题,其实感觉UbuntuKylin默认的主题就很好

前几天在 omgubuntu 看到过, 挺不错的.

不含图标的么？有点小瑕疵，会造成ibus输入法备选词条和背景色差别太小，看不清当前的备选词。

**今天我们将向你介绍最新发布的GTK+主题，它拥有透明和扁平元素，并且与多个桌面环境和Linux发行版兼容。[这个主题叫Arc](https://github.com/horst3180/Arc-theme)。**

开始讲细节之前，我建议你快速浏览一下下面的图，这样你有会对这个主题就会有一个基本的概念了。同样你应该知道它目前可以工作在GTK+ 2.x、GTK+ 3.x、GNOME-Shell、 Budgie、 Unity和Pantheon用户界面，它们都使用了GNOME 体系。

![](/data/attachment/album/201506/27/222107d05iasssmsjfxi3o.jpg)

![](/data/attachment/album/201506/27/222107h6juvwfju45wgg9w.jpg)

![](/data/attachment/album/201506/27/222107d44oojzzz43mchot.jpg)

同样、Arc主题的开发者告诉我们它已经成功地在Ubuntu 15.04（Vivid Vervet）、 Arch Linux、 elementary OS 0.3 Freya、 Fedora 21、 Fedora 22、 Debian GNU/Linux 8.0 (Jessie)、 Debian Testing、 Debian Unstable、 openSUSE 13.2、 openSUSE Tumbleweed和Gentoo测试过了。

### 要求和安装指导

要构建Arc主题，你需要先安装一些包，比如autoconf、 automake、 pkg-config (对于Fedora则是pkgconfig)、基于Debian/Ubuntu-based发行版的libgtk-3-dev或者基于RPM的gtk3-devel、 git、 gtk2-engines-pixbuf和gtk-engine-murrine (对于Fedora则是gtk-murrine-engine)。

Arc主题还没有二进制包，因此你需要从git仓库中取下最新的源码并编译。这样，打开终端并运行下面的命令，一行行地输入，并在每行的末尾按下回车键并等待上一步完成来继续下一步。

```
git clone https://github.com/horst3180/arc-theme --depth 1 && cd arc-theme
git fetch --tags
git checkout $(git describe --tags `git rev-list --tags --max-count=1`)
./autogen.sh --prefix=/usr
sudo make install

```

就是这样！此时你已经在你的GNU/Linux发行版中安装了Arc主题，如果你使用GNOME可以使用GONME Tweak工具，如果你使用Ubuntu的Unity可以使用Unity Tweak工具来激活主题。玩得开心但不要忘了在下面的评论栏里留下你的截图。

---

via: <http://news.softpedia.com/news/Here-s-How-to-Install-the-Beautiful-Arc-GTK-plus-Flat-Theme-on-Linux-483143.shtml>

作者：[Marius Nestor](http://news.softpedia.com/editors/browse/marius-nestor) 译者：[geekpi](https://github.com/geekpi) 校对：[caroline](https://github.com/carolinewuyan)

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


有哪些不错的命令行HTTP客户端？

Summary: 整体大于它的各部分之和，这是引自希腊哲学家和科学家的亚里士多德的名言。这句话特别切中Linux。在我看来，Linux最强大的地方之一就是它的协作性。Linux的实用性并不仅仅源自大量的开源程序（命令行）。相反，其协作性来自于这些程序的综合利用，有时是结合成更大型的应用。 Unix哲学引发了一场软件工具的运动，关注开发简洁，基础，干净，模块化和扩展性好的代码，并可以运用于其他的项目。这种哲学成为了许多的Linux项目的一个重要的元素。 好的开源开发者写程序为了确保该程序尽可能运行得好，并且同时能与其他程序很好地协作。目标就

作为业余用户并比较怀旧的我，还是最喜欢使用wget

Me too~cURL很少

“整体大于它的各部分之和”，这是引自希腊哲学家和科学家的亚里士多德的名言。这句话特别切中Linux。在我看来，Linux最强大的地方之一就是它的协作性。Linux的实用性并不仅仅源自大量的开源程序（命令行）。相反，其协作性来自于这些程序的综合利用，有时是结合成更大型的应用。

Unix哲学引发了一场“软件工具”的运动，关注开发简洁，基础，干净，模块化和扩展性好的代码，并可以运用于其他的项目。这种哲学成为了许多的Linux项目的一个重要的元素。

好的开源开发者写程序为了确保该程序尽可能运行得好，并且同时能与其他程序很好地协作。目标就是使用者拥有一堆方便的工具，每一个力求干好一件事。许多程序能独立工作得很好。

这篇文章讨论3个开源命令行HTTP客户端。这些客户端可以让你使用命令行从互联网上下载文件。但同时，他们也可以用于许多有意思的地方，如测试，调式和与HTTP服务器或web应用交互。对于HTTP架构师和API设计人员来说，使用命令行操作HTTP是一个值得花时间学习的技能。如果你需要经常使用API，HTTPie和cURL就非常有价值。

### HTTPie

![HTTPie in action](/data/attachment/album/201506/27/224924liluoyi0luxul0e5.png)

HTTPie（发音 aych-tee-tee-pie）是一款开源的命令行HTTP客户端。它是一个命令行界面，便于手工操作的类cURL工具。

该软件的目标是使得与Web服务器的交互尽可能的人性化。其提供了一个简单的http命令，允许使用简单且自然的语句发送任意的HTTP请求，并显示不同颜色的输出。HTTPie可以用于测试，调试，以及与HTTP服务器的常规交互。

#### 功能包括：

* 生动而直观的语法格式
* 经过格式化的彩色终端输出
* 内建JSON支持
* 支持表单和文件上传
* 支持HTTPS，代理和认证
* 任意数据请求
* 自定义请求头
* 持久会话
* 类Wget的下载
* 支持Python 2.6，2.7和3.x
* 支持Linux，Mac OS X 和 Windows
* 支持插件
* 文档
* 单元测试覆盖

---

* 网站:[httpie.org](http://httpie.org/)
* 开发者: Jakub Roztočil
* 证书: 开源
* 版本号: 0.9.2

### cURL

![cURL in action](/data/attachment/album/201506/27/224927avlzxesxbsbx1xjt.png)

cURL是一个开源的命令行工具，用于使用URL语句传输数据，支持DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS,IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET和TFTP等协议。

cURL支持SSL证书，HTTP POST，HTTP PUT，FTP上传，基于表单的HTTP上传，代理，缓存，用户名+密码的认证方式(Basic, Digest, NTLM, Negotiate, kerberos...)，文件续传，代理通道和一些其他的有用功能。

#### 功能包括：

* 支持配置文件
* 一个单独命令行请求多个URL
* 支持匹配： [0-13]，{one, two, three}
* 一个命令上传多个文件
* 自定义最大传输速度
* 重定向了标准错误输出
* 支持Metalink

---

* 网站: [curl.haxx.se](http://curl.haxx.se/)
* 开发者: Daniel Stenberg
* 证书: MIT/X derivate license
* 版本号: 7.42.0

### Wget

![Wget in action](/data/attachment/album/201506/27/224930m3kp5wnnanraqah8.png)

Wget是一个从网络服务器获取信息的开源软件。其名字源于World Wide Web 和 get。Wget支持HTTP，HTTPS和FTP协议，同时也可以通过HTTP代理获取信息。

Wget可以根据HTML页面的链接，创建远程网络站点的本地副本，完全重造源站点的目录结构。这种方式被称作“递归下载”。

Wget设计上增强了低速或者不稳定的网络连接。

功能包括：

* 使用REST和RANGE恢复中断的下载
* 使用文件名通配符，支持递归地对目录镜像
* 基于NLS的消息文件支持多语言
* 可选的转换下载文档里地绝对链接为相对链接，使得下载文档可以在本地相互链接
* 可以在大多数类UNIX操作系统和微软Windows上运行
* 支持HTTP代理
* 支持HTTP cookie
* 支持HTTP持久连接
* 无人照管/后台操作
* 当对远程镜像时，使用本地文件时间戳来决定是否需要重新下载文档

---

* 站点: [www.gnu.org/software/wget/](https://www.gnu.org/software/wget/)
* 开发者: Hrvoje Niksic, Gordon Matzigkeit, Junio Hamano, Dan Harkless, and many others
* 证书: GNU GPL v3
* 版本号: 1.16.3

---

via: <http://www.linuxlinks.com/article/20150425174537249/HTTPclients.html>

作者：Frazer Kline 译者：[wi-cuckoo](https://github.com/wi-cuckoo) 校对：[wxy](https://github.com/wxy)

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


Linux 4.1 带来了什么新东西？

Summary: 一个新的Linux内核已经发布了 - 全世界为之心跳（我们想把它说的诗意一些）。 Linus Torvalds（除了他不会有谁了）在Linux邮件列表（当然不会在别的地方）中宣布，在大概两个月后迎来了第一个4.x系列的Linux内核的发布。 像每次发布前那样，Linux 4.1带来了很多的改变。它们包括了硬件兼容性、电源管理、文件系统性能、以及你从没听说过的处理器的技术修复。 Linux 4.1 已经进入将在10月发布的 Ubuntu 15.10 。 Linux 4.1 有哪些新东西  Tux 收到了邮件 这个标题只是说说而已，我们不是简单地将发布公告贴到这里。 我们会从（大量、冗长以

传说的4.1大变身就是这个？ext4 有了文件系统层面的加密？

是啊，感觉没啥啊。。我还是觉得4.0更重要些。

**一个新的Linux内核已经发布了 - 全世界为之心跳（我们想把它说的诗意一些）。**

Linus Torvalds（除了他不会有谁了）在Linux邮件列表（当然不会在别的地方）中[宣布](https://lkml.org/lkml/2015/6/22/8)，在大概两个月后迎来了[第一个4.x系列的Linux内核的发布](http://www.omgubuntu.co.uk/2015/04/linux-kernel-4-0-new-features)。

像每次发布前那样，Linux 4.1带来了很多的改变。它们包括了硬件兼容性、电源管理、文件系统性能、以及你从没听说过的处理器的技术修复。

Linux 4.1 已经进入将在10月发布的 Ubuntu 15.10 。

### Linux 4.1 有哪些新东西

![Tux got mail](/data/attachment/album/201506/28/161932f6bf9pld6ql3fdau.jpg)

*Tux 收到了邮件*

这个标题只是说说而已，我们不是简单地将发布公告贴到这里。

我们会从（大量、冗长以及那些不明觉厉的的技术的）更改日志去挑选一些对桌面用户而言，不见得夸张但或许有用的亮点。

#### 电源管理

你可以在Linux 4.1中找到的面向用户的一大特性是对 Intel 的 Cherry Trail 和 Bay Trai 芯片、Soc及Intel计算棒等设备的性能及能效的提升。

传闻建议是Linux 4.1给出了新的Intel硬件组合，和更长电池寿命。这么多的进步自然不可能针对所有芯片，它只对特定芯片和系统（和高端的）有用，但仍旧是一个令人兴奋的消息。

**Linux 4.1 亮点包括:**

* ext4 有了文件系统层面的加密（感谢Google）
* 罗技游戏手柄lg4ff驱动改进了‘力反馈’
* 东芝笔记本驱动进行了USB睡眠充电和背光改进
* Xbox One控制器支持Rumble
* Wacom平板驱动改进了电源报告
* 各种针对arm和x86设备电源管理改进
* Samsung Exynos 3250 电源管理改进
* 支持Bamboo平板
* 联想OneLink Pro Dock获得USB支持
* 支持Realtek 8723A、 8723B、 8761A、 8821 Wi-Fi网卡

### Ubuntu中安装Linux 4.1

虽然这次发布的内核被标记为稳定，但是Ubuntu用户并不需要迫切地安装它。

但如果你等不及了并且技术足够熟练，你可以从[Canonical的主干内核归档](http://kernel.ubuntu.com/%7Ekernel-ppa/mainline/?C=N;O=D)中下载合适的软件包来安装Linux 4.1（或者冒着风险使用第三方PPA）。

10月发布的Ubuntu 15.10 Wily Werewolf将会基于Ubuntu Kernel 4.1.x（Ubuntu内核是基于Linux内核加上Ubuntu没被上流接受的独有补丁）。

---

via: <http://www.omgubuntu.co.uk/2015/06/linux-4-1-kernel-new-features>

作者：[Joey-Elijah Sneddon](https://plus.google.com/117485690627814051450/?rel=author) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

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


适合于远程编辑以及更多环境的简洁文本编辑器

必然有vim

vim这么好，怎么会没有。

emacs tramp

文本编辑器是用来编辑纯文本的软件。这种软件有许多用处，包括修改配置文件，编写程序源代码，记下一些想法或者甚至写一份购物列表。由于这种编辑器能都用于许多不同的方面，因此值得花些时间找一个最适合您喜好的编辑器。

不论编辑器有多么复杂，它们通常有一个共同的功能集，包括查找/替换文本，格式化文本，导入文件以及在文件中移动文本。

所有这些文本编辑器都是基于终端的应用，因此他们很适合在远程主机上编辑文件。文本编辑器通常也会提供一个图形化的用户界面，但依旧会保证快速和精简。

基于终端的应用程序在系统资源方面也是轻量级的（在低配置机器上很有用），比起它的图形化版本来也会更快、更高效，由于它们在X需要重启时也不会停止工作，因此非常适合编写脚本。

我选择了一些我最喜欢的开源文本编辑器，他们在使用系统资源方面都非常节俭。

### Textadept

![](/data/attachment/album/201506/28/230714nvlstxc1vexddczl.png)

Textadept是一款适合程序员的，快速、精简、可扩展、跨平台的开源文本编辑器。这个开源程序由C和Lua写就，并且于这些年间在速度和精简方面进行了优化。

Textadept是那些想要无限的扩展性且不愿牺牲速度或屈服于代码膨胀的程序员们的理想编辑器。

它也有一个用于终端的版本，仅仅依赖ncurses，适合在远程主机上进行编辑。

#### 功能包括:

* 轻量级
* 精简设计以最大化利用屏幕
* 自包含的执行文件 - 无需安装
* 全键盘驱动
* 无限制的分割视图（GUI版本），以您所好任意水平或垂直的分割编辑器窗口。请注意Textadep不是一个选项卡式的编辑器。
* 支持多达80种的编程语言
* 强大的代码片段和快捷键命令
* 代码自动补全和API查询
* 无与伦比的扩展性
* 书签
* 查找和替换
* 在文件中查找
* 基于缓存的单词补全
* 成熟的编程语言符号自动补全，以及显示API文档的功能
* 主题：亮色、暗色、终端
* 使用词法分析器将名称放到缓冲中，如评论、字符串、关键词
* 支持会话
* 快速打开
* 许多可用的模块，包括对Java、Python、Ruby和近期打开文件列表的支持
* 符合Gnome HIG用户接口的指导
* 支持编辑Lua代码。许多Textadept对象和Lua的标准库支持语法自动补全和LuaDoc。

---

* 网址: [foicica.com/textadept](http://foicica.com/textadept/)
* 开发者: Mitchell and contributors
* 许可证: MIT License
* 版本号: 7.7

### Vim

![](/data/attachment/album/201506/28/230721pv03zgzp1nn3apn0.png)

vim是一个高级的文本编辑器，它在'vi'强大的基础上，并拥有更全面的功能集。

这个编辑器对编程和编辑其他纯ASCII的文件十分有用。所有的命令都由普通的键盘按键提供，能够使用十指来输入，因而十分快捷。另外，功能键可以由用户来定义，并且可也以使用鼠标。

Vim通常被称作"程序员的编辑器"，它十分适合于编程，并被认为可以作为完整的集成开发环境。然而，这个软件并不是仅仅面向程序员。Vim适合于各种文本编辑，从编写email到修改配置文件。

Vim的界面基于文本界面下的命令行。尽管它的图形化版本gVim为常用的命令添加了菜单和工具栏，但这个软件的整个功能依旧依赖于它的命令行模式。

#### 功能包括:

* 3 种模式:
	+ 命令模式
	+ 插入模式
	+ 命令行模式
* 无限制的撤销
* 多个窗口和缓冲区
* 平滑的插入模式
* 根据所编辑的文件的类型使用不同的颜色或风格进行语法高亮
* 交互命令
	+ 标记一行
	+ vi 行缓冲
	+ 移动代码块
* 块操作
* 命令行历史
* 扩展的正则表达式
* 可编辑压缩/打包文件 (gzip, bzip2, zip, tar)
* 文件名补全
* 标记跳转
* 折叠文本
* 缩进
* ctags和cscope整合
* 100%与vi的模式兼容
* 插件用于添加/扩展功能
* 宏
* vimscript, Vim的内部脚本
* Unicode支持
* 多语言支持
* 在线帮助支持

---

* 网址: [www.vim.org](http://www.vim.org/)
* 开发者: Bram Moolenaar
* 许可证: GNU GPL compatible (charityware)
* 版本号: 7.4

### ne

![](/data/attachment/album/201506/28/230725txw900hniunzc5zi.png)

ne是一款全屏幕的开源文本编辑器。它像是一个比vi更容易学习的vi替代物，并且可以在POSIX-兼容的系统中便携使用。

ne对于新手来说易于使用，但也非常强大并有完全可配置的引导程序，并且在资源使用上十分节约。

#### 功能包括:

* 三种用户界面： 控制键，命令行、菜单；按键和菜单都可配置
* 语法高亮
* 对于UTF-8文件的完全支持，包括占据多列的字符（宽字符）
* 文档，剪切块，显示的维度和文件/行号长度都有编号，并且仅受制于机器的整型字长
* 简单的脚本语言，脚本可以用简单易理解的录制/播放的方式制作
* 无限制的撤销/重做功能（可以通过命令禁用）
* 基于被编辑的文件扩展名的自动个性化配置系统
* 使用您文档中的词语做字典来进行自动前缀补全
* 易用的文件存取功能
* 扩展的正则表达式可用于查找和替换，类似emacs和vi
* 非常紧凑的内存模型，在加载和修改大型文件时十分快速
* 可编辑二进制文件

---

* 网址: [ne.di.unimi.it](http://ne.di.unimi.it/)
* 开发者: Sebastiano Vigna (original developer). Additional features added by Todd M. Lewis
* 许可证: GNU GPL v3
* 版本号: 2.5

### Zile

![](/data/attachment/album/201506/28/230732hg4siiysi2wzr2ee.png)

Zile（Zile Is Lossy Emacs，Emacs精简版），它是一个小型的Emacs的克隆版。Zile是一个可定制的，自文档化，实时显示的编辑器，Zile被开发的尽可能像Emacs一样，每个Emacs用户都会对Zile感到亲切。

Zile以它极小的RAM用量，大约130KB，以及快速开始编辑而闻名。它是支持8比特字符集的，允许用于编写任何种类的文件。

#### 功能包括:

* 小型但快速、强大
* 多个缓冲区，允许多级的撤销
* 多窗口
* 以最小的缓冲区完成补全
* 自动填充 (自动换行)
* Registers
* 看起来像Emacs，键序列、功能和变量名都与Emacs相同
* Killing
* Yanking
* 自动行末检测

---

* 网址: [www.gnu.org/software/zile](http://www.gnu.org/software/zile/)
* 开发者: Reuben Thomas, Sandro Sigala, David A. Capello
* 许可证: GNU GPL v2
* 版本号: 2.4.11

### nano

![](/data/attachment/album/201506/28/230738zv9i92phqdvqjzds.png)

nano是基于curses库的文本编辑器。它是Pico（Pine电子邮件客户端编辑器）的一个复刻版。

由于Pine套件的许可证问题诉讼案（Pine并未以开源许可证发布），并且也因为Pine缺少一些重要的功能，nano项目于1999年发起。

nano致力于赶上Pico的功能和其易用性，与此同时提供更多的功能，但不集成Pine/Pico的邮件客户端。

nano像Pico一样是以键盘为导向的设计，可以用控制键来控制。

#### 功能包括:

* 交互式的查找和替换
* 彩色语法高亮
* 转到行号和列号处
* 自动缩进
* 功能开关
* 支持UTF-8
* 混合型的文件类型自动转换
* 逐字输入模式
* 多个文件缓冲区
* 平滑滚动
* 括号匹配
* 自定义引用字符串
* 备份文件
* 国际化支持
* tab补全文件名

---

* 网址: [nano-editor.org](http://nano-editor.org/)
* 开发者: Chris Allegretta, David Lawrence, Jordi Mallach, Adam Rogoyski, Robert Siemborski, Rocco Corsi, David Benbennick, Mike Frysinger
* 许可证: GNU GPL v3
* 版本号: 2.2.6

---

via: <http://www.linuxlinks.com/article/20141011073917230/TextEditors.html>

作者：Frazer Kline 译者：[wwy-hust](https://github.com/wwy-hust) 校对：[wxy](https://github.com/wxy)

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


27 个 Linux 下软件包管理工具 DNF 命令例子

Summary: DNF即Dandified YUM，是基于RPM的Linux发行版的下一代软件包管理工具。它首先在Fedora 18中出现，并且在最近发行的Fedora 22中替代了YUM工具集。  DNF致力于改善YUM的瓶颈，即性能、内存占用、依赖解决、速度和许多其他方面。DNF使用RPM、libsolv和hawkey库进行包管理。尽管它并未预装在CentOS和RHEL 7中，但您可以通过yum安装，并同时使用二者。 您也许想阅读更多关于DNF的信息：  使用DNF取代Yum背后的原因  最新的DNF稳定版本是2015年5月11日发布的1.0（在写这篇文章之前）。它（以及所有DNF之前版本）主要由Python编写，并以GPL v2许

对于初学者来说，感觉还是蛮好用的。

看来yum还是默认安装啊-_-！既然选了DNF...不能理解的是用yum装dnf

感觉很不错，收藏了！

DNF即Dandified YUM，是基于RPM的Linux发行版的下一代软件包管理工具。它首先在Fedora 18中出现，并且在最近发行的Fedora 22中替代了[YUM工具集](http://www.tecmint.com/20-linux-yum-yellowdog-updater-modified-commands-for-package-mangement/)。

![](/data/attachment/album/201506/28/233921grqz2zxxqqe6fqe6.jpg)

DNF致力于改善YUM的瓶颈，即性能、内存占用、依赖解决、速度和许多其他方面。DNF使用RPM、libsolv和hawkey库进行包管理。尽管它并未预装在CentOS和RHEL 7中，但您可以通过yum安装，并同时使用二者。

您也许想阅读更多关于DNF的信息：

* [使用DNF取代Yum背后的原因](http://www.tecmint.com/dnf-next-generation-package-management-utility-for-linux/)

最新的DNF稳定版本是2015年5月11日发布的1.0（在写这篇文章之前）。它（以及所有DNF之前版本）主要由Python编写，并以GPL v2许可证发布。

### 安装DNF

尽管Fedora 22官方已经过渡到了DNF，但DNF并不在RHEL/CentOS 7的默认仓库中。

为了在RHEL/CentOS系统中安装DNF，您需要首先安装和开启epel-release仓库。

```
# yum install epel-release
或
# yum install epel-release -y

```

尽管并不建议在使用yum时添上'-y'选项，因为最好还是看看什么将安装在您的系统中。但如果您对此并不在意，则您可以使用'-y'选项以自动化的安装而无需用户干预。

接下来，使用yum命令从epel-realease仓库安装DNF包。

```
# yum install dnf

```

在您装完dnf后，我会向您展示27个实用的dnf命令和例子，以便帮您更容易和高效的管理基于RPM包的发行版。

### 1. 检查DNF版本

检查您的系统上安装的DNF版本。

```
# dnf --version

```

![检查DNF版本](/data/attachment/album/201506/28/233922bkxgilk7iiygl3t1.gif)

### 2. 列出启用的DNF仓库

dnf命令中的'repolist'选项将显示您系统中所有启用的仓库。

```
# dnf repolist

```

![检查所有开启的仓库](/data/attachment/album/201506/28/233922sx5uyeu1u5xfjc58.gif)

### 3. 列出所有启用和禁用的DNF仓库

'repolist all'选项将显示您系统中所有启用/禁用的仓库。

```
# dnf repolist all

```

![列出所有启用/禁用的仓库](/data/attachment/album/201506/28/233923q847agnzwekn47z9.gif)

### 4. 用DNF列出所有可用的且已安装的软件包

'dnf list'命令将列出所有仓库中所有可用的软件包和您Linux系统中已安装的软件包。

```
# dnf list

```

![用DNF列出所有的软件包](/data/attachment/album/201506/28/233923vnc4hclwwe4c014z.png)

### 5. 用DNF列出所有已安装的软件包

尽管'dnf list'命令将列出所有仓库中所有可用的软件包和已安装的软件包。然而像下面一样使用'list installed'选项将只列出已安装的软件包。

```
# dnf list installed

```

![列出已安装的软件包](/data/attachment/album/201506/28/233924gd6zcwldhlehkldm.png)

### 6. 用DNF列出所有可用的软件包

类似的，可以用'list available'选项列出所有开启的仓库中所有可用的软件包。

```
# dnf list available

```

![用DNF列出可用的软件包](/data/attachment/album/201506/28/233926v9a99xgb15w7gxzx.png)

### 7. 使用DNF查找软件包

如果您不太清楚您想安装的软件包的名字，这种情况下，您可以使用'search'选项来搜索匹配该字符（例如，nano）和字符串的软件包。

```
# dnf search nano

```

![通过关键字搜索软件包](/data/attachment/album/201506/28/233927zho6agohaovf56ss.gif)

### 8. 查看哪个软件包提供了某个文件/子软件包？

dnf的选项'provides'能查找提供了某个文件/子软件包的软件包名。例如，如果您想找找哪个软件包提供了您系统中的'/bin/bash'文件，可以使用下面的命令

```
# dnf provides /bin/bash

```

![查找提供文件的软件包](/data/attachment/album/201506/28/233927n7a952s99lj8v7s7.gif)

### 9. 使用DNF获得一个软件包的详细信息

如果您想在安装一个软件包前知道它的详细信息，您可以使用'info'来获得一个软件包的详细信息，例如：

```
# dnf info nano

```

![用DNF查看软件信息](/data/attachment/album/201506/28/233928rjdo34w2adj7b22j.gif)

### 10. 使用DNF安装软件包

想安装一个叫nano的软件包，只需运行下面的命令，它会为nano自动的解决和安装所有的依赖。

```
# dnf install nano

```

![用DNF安装软件](/data/attachment/album/201506/28/233930t12ja8txf6s6m8a1.gif)

### 11. 使用DNF更新一个软件包

您可能只想更新一个特定的包（例如，systemd）并且保留系统内剩余软件包不变。

```
# dnf update systemd

```

![更新一个软件包](/data/attachment/album/201506/28/233932mmeppqzc8ch3ccly.gif)

### 12. 使用DNF检查系统更新

检查系统中安装的所有软件包的更新可以简单的使用如下命令：

```
# dnf check-update

```

![检查系统更新](/data/attachment/album/201506/28/233938juu6sq78xahr56vz.gif)

### 13. 使用DNF更新系统中所有的软件包

您可以使用下面的命令来更新整个系统中所有已安装的软件包。

```
# dnf update
或
# dnf upgrade

```

![更新系统](/data/attachment/album/201506/28/233940gdtstvpzl0lypnnt.gif)

### 14. 使用DNF来移除/删除一个软件包

您可以在dnf命令中使用'remove'或'erase'选项来移除任何不想要的软件包。

```
# dnf remove nano
或
# dnf erase nano

```

![移除系统中的软件](/data/attachment/album/201506/28/233941quqdv5syuslivvks.gif)

### 15. 使用DNF移除于依赖无用的软件包（Orphan Packages）

这些为了满足依赖安装的软件包在相应的程序删除后便不再需要了。可以用过下面的命令来将它们删除。

```
# dnf autoremove

```

![移除无用的依赖包](/data/attachment/album/201506/28/233942mwbgfrwf7sf7d0fi.gif)

### 16. 使用DNF移除缓存的软件包

我们在使用dnf时经常会碰到过期的头部信息和不完整的事务，它们会导致错误。我们可以使用下面的语句清理缓存的软件包和包含远程包信息的头部信息。

```
# dnf clean all

```

![移除DNF缓存](/data/attachment/album/201506/28/233942bz8u7q8qnuh9t57q.gif)

### 17. 获得特定DNF命令的帮助

您可能需要特定的DNF命令的帮助（例如，clean），可以通过下面的命令来得到：

```
# dnf help clean

```

![获得某一命令帮助](/data/attachment/album/201506/28/233943tmt23zltmfome8h2.gif)

### 18. 列出所有DNF的命令和选项

要显示所有dnf的命令和选项，只需要：

```
# dnf help

```

![获得命令选项帮助](/data/attachment/album/201506/28/233945oafaz2arraav2823.gif)

### 19. 查看DNF的历史记录

您可以调用'dnf history'来查看已经执行过的dnf命令的列表。这样您便可以知道什么被安装/移除及其时间戳。

```
# dnf history

```

![查看历史记录](/data/attachment/album/201506/28/233947hku2yykmxsoyvy8y.gif)

### 20. 显示所有软件包组

'dnf grouplist'命令可以显示所有可用的或已安装的软件包，如果没有什么输出，则它会列出所有已知的软件包组。

```
# dnf grouplist

```

![列出所有软件包组](/data/attachment/album/201506/28/233948xx75wl6skt9be00l.gif)

### 21. 使用DNF安装一个软件包组

要安装一组由许多软件打包在一起的软件包组（例如，Educational Softaware），只需要执行：

```
# dnf groupinstall 'Educational Software'

```

![安装一个软件包组](/data/attachment/album/201506/28/233949dglgg7xw1ziwgi6k.gif)

### 22. 更新一个软件包组

可以通过下面的命令来更新一个软件包组（例如，Educational Software）：

```
# dnf groupupdate 'Educational Software'

```

![更新软件包组](/data/attachment/album/201506/28/233950fig4bjr4ipewpmtu.gif)

### 23. 移除一个软件包组

可以使用下面的命令来移除一个软件包组（例如，Educational Software）：

```
# dnf groupremove 'Educational Software'

```

![移除软件包组](/data/attachment/album/201506/28/233951vuuwqtdz3d9drod9.gif)

### 24. 从某个特定的仓库安装一个软件包

DNF可以从任何特定的仓库（比如 epel）安装一个软件包（例如，phpmyadmin）：

```
# dnf --enablerepo=epel install phpmyadmin

```

![从特定的仓库安装软件](/data/attachment/album/201506/28/234002gu4a1mvblhhcvuvm.gif)

### 25. 将已安装的软件包同步到稳定发行版

'dnf distro-sync'将同步所有已安装的软件包到所有开启的仓库中最近的稳定版本。如果没有选择软件包，则会同步所有已安装的软件包。

```
# dnf distro-sync

```

![将包同步至稳定版](/data/attachment/album/201506/28/234004gr3agv0av35jgr3v.gif)

### 26. 重新安装一个软件包

'dnf reinstall nano'命令将重新安装一个已经安装的软件包（例如，nano）：

```
# dnf reinstall nano

```

![重新安装软件包](/data/attachment/album/201506/28/234005siykgrrryy9rydkr.gif)

### 27. 降级一个软件包

选项'downgrade'将会使一个软件包（例如，acpid）回退到低版本。

```
# dnf downgrade acpid

```

示例输出

```
Using metadata from Wed May 20 12:44:59 2015
No match for available package: acpid-2.0.19-5.el7.x86_64
Error: Nothing to do.

```

**我观察到**：dnf不会按预想的那样降级一个软件包。这已做为一个bug被提交。

### 结论

DNF是YUM管理器的优秀替代品。它试着自动做许多甚至不推荐有经验的Linux系统管理员做的工作。例如：

* `--skip-broken`不被DNF识别，并且DNF中没有其替代命令。
* 尽管您可能会运行dnf provides，但再也没有'resolvedep'命令了。
* 没有'deplist'命令用来发现软件包依赖。
* 您排除一个仓库意味着在所有操作上排除该仓库，而在yum中，排除一个仓库只在安装和升级等时刻排除他们。

许多Linux用户对于Linux生态系统的走向不甚满意。首先[Systemd替换了init系统](http://www.tecmint.com/systemd-replaces-init-in-linux/)v，现在DNF将于不久后替换YUM，首先是Fedora 22，接下来是RHEL和CentOS。

您怎么看呢？是不是发行版和整个Linux生态系统并不注重用户并且在朝着与用户愿望相悖的方向前进呢？IT行业里有这样一句话 - “如果没有坏，为什么要修呢？”，System V和YUM都没有坏。

上面便是这篇文章的全部了。请在下方留言以让我了解您的宝贵想法。点赞和分享以帮助我们传播。谢谢！

---

via: <http://www.tecmint.com/dnf-commands-for-fedora-rpm-package-management/>

作者：[Avishek Kumar](http://www.tecmint.com/author/avishek/) 译者：[wwy-hust](https://github.com/wwy-hust) 校对：[wxy](https://github.com/wxy)

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


在 Ubuntu 中给你的照片加上 Instagram 风格的滤镜程序

Summary: 拿起你的自拍杆跟我来。 XnRetro 照片编辑器 XnRetro 是一个可以让你快速给你照片添加类 Instagram效果的程序。 你肯定知道我说的这些效果：划痕、噪点、相框、过度处理、复古和怀旧色调（因为在这个数字过客的时代，我们一定知道无穷无尽的自拍永远也找不回怀旧的自己。） 无论你认为这些效果是愚蠢的艺术还是创作的捷径，这些滤镜非常流行，可以帮助那些平实无奇的照片添加个性。  XnRetro是一个照片编辑应用 XnRetro的功能 XnRetro 有下面那些功能  20 种色彩滤镜 15 种光影效果(虚化、泄露等等) 28 种画框和边线 5 种插图 (带力度控制

拿起你的自拍杆跟我来。

### XnRetro 照片编辑器

**XnRetro** 是一个可以让你快速给你照片添加“类 Instagram”效果的程序。

你肯定知道我说的这些效果：划痕、噪点、相框、过度处理、复古和怀旧色调（因为在这个数字过客的时代，我们一定知道无穷无尽的自拍永远也找不回怀旧的自己。）

无论你认为这些效果是愚蠢的艺术还是创作的捷径，这些滤镜非常流行，可以帮助那些平实无奇的照片添加个性。

![](/data/attachment/album/201506/30/135415oazi88evg2ftzik3.jpg)

*XnRetro是一个照片编辑应用*

#### XnRetro的功能

**XnRetro 有下面那些功能**

* 20 种色彩滤镜
* 15 种光影效果(虚化、泄露等等)
* 28 种画框和边线
* 5 种插图 (带力度控制)
* 对比度、伽马校正、饱和度等图像调整
* 矩形修剪选项

![](/data/attachment/album/201506/30/135416ubia3vbpwixqnwdy.png)

*灯光效果调整*

（理论上）你可以保存编辑过的 .jpg 或者 .png 文件，并且直接在 app 中分享到社交媒体上。

我说“理论上”的意思是保存.jpg图像无法正常在 linux 版的程序上工作（你可以保存 .png 的图像）。相似问题还有，大多数内置的社交链接失效或者无法导出。

要使用**15 种光影效果**，你需要在 XnRetro 的‘light’文件夹下将 .jpg 文件重新保存成 .png 文件。编辑‘light.xml’来匹配新的文件名，点击保存那么灯光效果就可以没有问题的加载进 XnRetro 了。

**XnRetro 值得安装么？**

XnRetro 并不是完美的。它看上去很老土、很难正确的安装，**并且已经几年没有更新了**。

但它还可以使用，除了保存 .jpg 文件外。同时也是那些像 Gimp 或者 Shotwell 的那些‘正规’的图片调整工具的一个灵活替代品。

虽然像 [Pixlr Touch Up](http://www.omgchrome.com/?s=pixlr) 和 [Polarr](http://www.omgchrome.com/the-best-chrome-apps-of-2014/) 这样的 web 应用和 Chrome Apps 也提供相似的功能，但你也许正在寻找真正原生的解决方案。

习惯了 XnRetro 就很难离开它。

### 下载 Ubuntu 下的 XnRetro

XnRetro 没有可用的 .deb 安装包。它以二进制文件的形式发行，这意味着你需要每次双击程序来运行。它也只有32位的版本。

你可以使用下面的 XnRetro下载链接。下载完成后你需要解压压缩包并进入。双击里面的‘xnretro’程序。

* [下载 Linux 版 XnRetro (32位, tar.gz)](http://www.xnview.com/en/xnretro/#downloads)

---

via: <http://www.omgubuntu.co.uk/2015/05/instagram-photo-filters-ubuntu-desktop-app>

作者：[Joey-Elijah Sneddon](https://plus.google.com/117485690627814051450/?rel=author) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

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


12 个全球认可的 Linux 认证

正式工作后发现其实这些认证并没有太多卵用。。。。。想我还当初花了那么多钱。

不过如果没有实际的工作经验证明你的能力之前，你还是得用证书来证明。

--！工作几年了~结果一个证没考

其实这个证你带来的作用是在你找工作的时候跟具竞争力

比如说我，没文凭、没工作经验、人家听了直接把电话挂了，及时让你面试了也不会在给你回应了，

他们看得不是你的技术，而是你能给自己贴多少"金"

没有一个是容易获取到得吧？？？

当你没有一个牛b的文凭，高级证书就是你的闪光点。

大家好，今天我们将会认识一些非常有价值的全球认可的Linux认证。Linux认证是不同的Linux专业机构在全球范围内进行的认证程序。Linux认证可以让Linux专业人才可以在服务器领域或者相关公司等等这些地方更容易获得Linux相关的工作。Linux认证评估一个人在Linux的各个领域里的专业程度。有很多不错的Linux专业机构提供不同的Linux认证。但是，在公司谋取一份工作时全球仅有少数被非常认可的Linux认证含金量很高，这些工作包括管理服务器，虚拟化，安装系统与软件，配置程序，应用支持和其他Linux操作系统相关的东西。随着全球使用Linux操作系统的服务器的增长，拉动了对于Linux专业人才的需求。为了更好的证明Linux专业技术水平，在全球看来，更好的、著名的认证总是有着更高的优先级。

这里是一些全球认可的Linux认证，我们接下来将会一一谈到。

![](/data/attachment/album/201506/30/163258lwws2ssn9gryggzp.jpg)

### 1. CompTIA Linxu+

CompTIA Linux+ 是LPI（Linux Professional Institute，Linux专业委员会）主办的一个Linux认证，在全世界范围内提供培训。其提供的Linux相关知识，可以用于从事一大批Linux相关专业的工作，如Linux管理员、高级网络管理员、系统管理员、Linux数据库管理员和Web管理员。如果任何人想从事安装和维护Linux操作系统，该课程会帮助他达到认证要求，并且通过提供对Linux系统更宽阔的认识，能够为通过考试做好准备。LPI的CompTIA Linux+认证的主要目的就是，提供给证书持有者足够扎实的，关于安装软件、操作、管理和设备排障的知识。我们可以付出一定的费用、时间和努力，完成CompTIA Linux+，同时获得三个业内认可的证书：**LPI LPIC-1**和**SUSE Certified Linux Administrator （CLA）**证书。

* **认证代码** : LX0-103，LX0-104（2015年3月30日启动）或者LX0-101，LX0-102
* 题目数量：每次考试60道题
* 题目类型：多选
* 考试时长：90分钟
* 要求：A+，Network+，并且有至少12个月的Linux管理经验
* 分数线：500 （对于200-800的范围来说）
* 语言：英语，将来会有德语，葡萄牙语，繁体中文，西班牙。
* 有效期：认证后三年有效

**注意**：不同系列的考试不能合并。如果你考的是LX0-101，那么你必须考LX0-102完成认证。同样的，LX0-103和LX0-104又是一个系列。LX0-103和LX0-104系列是LX0-101和LX0-102系列的升级版。

### 2. LPIC

LPIC，全称Linux专业委员会认证（ Linux Professional Institute Certification），是Linux专业委员会的一个Linux认证程序。这是一个多级别的认证程序，要求在每个级别通过一系列（通常是两个）的认证考试。该认证有三个级别，包括初级水平认证 **LPIC-1** ，高级水平认证 **LPIC-2**和最高水平认证 **LPIC-3**。前两个认证侧重于 **Linux系统管理**，而最后一个认证侧重一些专业技能，包括虚拟化和安全。为了得到 **LPIC-3** 认证，一个持有有效的 **LPIC-1** 与**LPIC-2** 认证的考生必须通过300复杂环境测试、303安全测试、304虚拟化测试和高可用性测试中的一个。**LPIC-1**认证按照证书持有者可以通过运行Linux，使用命令行界面和基本的网络知识安装，维护，配置等任务而设计，LPIC-2测试考生是否作为管理中小型混合网络的候选人。LPIC-3认证是为企业级Linux专业技能设计所设计，代表了最高的专业水平和不针对特定 Linux 发行版的行业认证。

* **认证代码**：LPIC-1（101和102），LPIC-2（201和202）和LPIC-3（300，303或者304）
* 题目类型：60个多项选择
* 考试时长：90分钟
* 要求：无，建议有 Linux Essentials 认证
* 分数线：500（在200-800的范围内）
* 语言：LPIC-1：英语，德语，意大利语，葡萄牙语，西班牙语（现代），汉语（简体），汉语（繁体），日语
* LPIC-2：英语，德语，葡萄牙语，日语
* LPIC-3：英语，日语
* 有效期：退休之后五年内仍然有效

### 3.Oracle Linux OCA

Oracle联合认证（OCA）为个人而定制，适用于那些想证明其部署和管理Oracle Linux操作系统的知识牢固的人。该认证专业知识仅仅针对Oracle Linux发行版，这个系统完全是为Oracle产品特别剪裁的，可以运行Oracle设计的系统，包括Oracle Exadata数据库服务器，Oracle Exalytics In-Memory 服务器，Oracle Exalogic 均衡云，和Oracle数据库应用等。Oracle Linux的“坚不可摧企业内核”为企业应用带来了高性能、高扩展性和稳定性。OCA认证覆盖了如管理本地磁盘设备、管理文件系统、安装和移除Solaris包与补丁，优化系统启动过程和系统进程。这是拿到OCP证书系列的第一步。OCA认证以其前身为Sun Certified Solaris Associate（SCSAS）而为人所知。

* **认证代码**：OCA
* 题目类型：75道多项选择
* 考试时长：120分钟
* 要求：无
* 分数线：64%
* 有效期：永远有效

### 4. Oracle Linux OCP

Oracle专业认证(OCP)是Oracle公司为Oracle Linux提供的一个认证，覆盖更多的进阶知识和技能，对于一个Oracle Linux管理员来说。它囊括的知识有配置网络接口、管理交换分区配置、崩溃转储、管理软件、数据库和重要文件。OCP认证是技术性专业知识和专业技能的基准测试，这些知识与技能需要在公司里广泛用于开发、部署和管理应用、中间件和数据库。Oracle Linux OCP的工作机会在增长，这得益于工作市场和经济发展。根据考试纲领，证书持有者有能力胜任安全管理、为Oracle 数据库准备Oracle Linux系统、排除故障和进行恢复操作、安装软件包、安装和配置内核模块、维护交换空间、完成用户和组管理、创建文件系统、配置逻辑卷管理（LVM）、文件分享服务等等。

* **认证代码**：OCP
* 题目类型：60至80道多项选择题
* 考试时长：120分钟
* 要求：Oracle Linux OCA
* 分数线：64%
* 有效期：永远有效

### 5. RHCSA

RHCSA是红帽公司作为红帽认证系统工程师推出的一个认证程序。RHCSA们是指一些拥有在著名的红帽Linux环境下完成核心系统管理技能和能力的人。这是一个入门级的认证程序，关注在系统管理上的实际胜任能力，包括安装、配置一个红帽Linux系统，接入一个可用的网络提供网络服务。一个红帽认证的系统管理员可以理解和使用基本的工具，用以处理文件、目录、命令行环境和文档；操作运行中的系统，包括以不同的启动级别启动、识别进程、开启和停止虚拟机和控制服务；使用分区和逻辑卷配置本地存储；创建和配置文件系统和文件系统属性，包括权限、加密、访问控制列表和网络文件系统；部署配置和维护系统，包括软件安装、更新和核心服务；管理用户和组，包括使用一个中心的目录用于验证；安全性的工作，包括基本的基本防火墙和SELinux配置。要获得RHCE和其他认证，首先得认证过RHCSA。

* **认证代码**：RHCSA
* 课程代码：RH124，RH134和RH199
* 考试代码：EX200
* 考试时长：21-22小时，取决于选择的课程
* 要求：无。有一些Linux基础知识更好
* 分数线：300总分，210过（70%）
* 有效期：3年

### 6. RHCE

RHCE，也叫做红帽认证工程师，是一个中到高级水平的认证程序，为一些想要学习更多技能和知识，成为一个负责红帽企业Linux的高级系统管理员的RHCSA开设的，RHCE应该有能力、知识和技能来配置静态路由、包过滤、NAT、设定内核运行参数、配置一个ISCSI初始化程序，生成并发送系统用量报告、使用shell脚本自动完成系统维护任务、配置系统日志，包括远程日志、提供网络服务如HTTP/HTTPS、FTP、NFS、SMB、SMTP、SSH和NTP等等。推荐希望获得更多高级水平的认证的RHCSA们、已经完成系统管理员I，II和III、或者已经完成RHCE 快速跟进培训的人们参加认证。

* **认证代码**：RHCE
* 课程代码：RH124，RH134，RH254和RH199
* 考试代码：EX200和EX300
* 考试时长：21-22个小时，取决于所选课程
* 要求：一个RHCSA证书
* 分数线：300总分，210过（70%）
* 有效期：3年

### 7. RHCA

RHCA即红帽认证架构师，是红帽公司的一个认证程序。它的关注点在系统管理的实际能力，包括安装和配置一个红帽Linux系统，并加入到一个可用网络中运行网络服务。RHCA是所有红帽认证中最高水平的认证。考生需要选择他们希望针对的领域，或者选择合格的红帽认证的任意组合来创建一个他们自己的领域。这里有三个主要的领域：数据中心、云和应用平台。精通数据中心领域的RHCA能够运行、管理数据中心；而熟悉云的可以创建、配置和管理私有云和混合云、云应用平台以及使用红帽企业Linux平台的灵活存储方案；精通应用平台集合的RHCA拥有技能如安装、配置和管理红帽JBoss企业应用平台和应用，云应用平台和混合云环境，借助红帽的OpenShift企业版，使用红帽JBoss数据虚拟化技术从多个资源里组合数据。

* **认证代码**：RHCA
* 课程代码：CL210，CL220.CL280，RH236，RH318，RH413，RH436，RH442，JB248和JB450
* 考试代码：EX333，EX401，EX423或者EX318，EX436和EX442
* 考试时长：21-22个小时，取决于所选课程
* 要求：未过期的RHCE证书
* 分数线：300总分，210过（70%）
* 有效期：3年

### 8. SUSE CLA

SUSE认证Linux管理员（SUSE CLA）是SUSE推出的一个初级认证，关注点在SUSE Linux企业服务器环境下的日常任务管理。为了获得SUSE CLA认证，不用必须完成课程任务，只需要通过考试就能获得认证。SUSE CLA们能够、也有技术去使用Linux桌面、定位并利用帮助资源、管理Linux文件系统、用Linux Shell和命令行工作、安装SLE 11 SP22、管理系统安装、硬件、备份和恢复、用YaST管理Linux、Linux进程和服务、存储、配置网络、远程接入、SLE 11 SP2监控，任务自动化和管理用户访问和安全工作。我们可以同时获得SUSE CLA，LPIC-1和CompTIA Linux认证，因为SUSE，Linux Professional Institute和CompATI合作提供了这个同时获得三个Linux认证的机会。

* **认证代码**：SUSE CLA
* 课程代码：3115，3116
* 考试代码：050-720，050-710
* 问题类型：多项选择
* 考试时长：90分钟
* 要求：无
* 分数线：512

### 9. SUSE CLP

SUSE认证Linux专业人员（CLP）是一个认证程序，为那些希望获得关于SUSE Linux企业服务器更多高级且专业的知识的人而服务。SUSE CLP是通过SUSE CLA认证后的下一步。应该通过CLA的考试并拥有证书，然后通过完成CLP的考试才能获得CLP的认证。通过SUSE CLP认证的人员有能力完成安装和配置SLES 11系统、维护文件系统、管理软件包、进程、打印、配置基础网络服务、samba、Web服务器、使用IPv6、创建和运行bash shell脚本。

* **认证代码**：SUSE CLP
* 课程代码：3115，3116和3117
* 考试代码：050-721，050-697
* 考试类型：手写
* 考试时长：180分钟
* 要求：SUSE CLA 认证

### 10. SUSE CLE

SUSE认证Linux工程师(CLE)是一个工程师级别的高级认证，为那些已经通过CLE考试的人准备。为了获得CLE认证，人们需要已经获得SUSE CLA和CLP的认证。获得CLE认证的人员拥有架设复杂SUSE Linux企业服务器环境的技能。CLE认证过的人可以配置基本的网络服务、管理打印、配置和使用Open LDAP、samba、IPv6、完成服务器健康检测和性能调优、创建和执行shell脚本、部署SUSE Linux企业板、通过Xen实现虚拟化等等。

* **认证代码**：SUSE CLE
* 课程代码：3107
* 考试代码：050-723
* 考试类型：手写
* 考试时长：120分钟
* 要求：SUSE CLP 10或者11证书

### 11. LFCS

Linux基金会认证系统管理员（LFCS）认证考生使用Linux和通过终端环境使用Linux的知识。LFCS是Linux基金会的一个认证程序，为使用Linux操作系统工作的系统管理员和工程师准备。Linux基金会联合业内专家、Linux内核社区，测试考生的核心领域、关键技能、知识和应用能力。通过LFCS认证的人员拥有一些技能、知识和能力，包括在命令行下编辑和操作文件、管理和处理文件系统与存储的错误、聚合分区作为LVM设备、配置交换分区、管理网络文件系统、管理用户帐号/权限和属组、创建并执行bash shell脚本、安装/升级/移除软件包等等。

* **认证代码**：LFCS
* 课程代码：LFCS201，LFCS220（可选）
* 考试代码：LFCS 考试
* 考试时长：2小时
* 要求：无
* 分数线：74%
* 语言：英语
* 有效期：两年

### 12. LFCE

Linux基金会认证工程师（LFCE），是Linux基金会为Linux工程师推出的认证。相比于LFCS，通过LFCE认证的人员在Linux方面拥有更大范围的技能。这是一个工程师级别的高级认证程序。LFCE认证的人具备一些网络管理方面的技能和能力，如配置网络服务、配置包过滤、监控网络性能、IP流量、配置文件系统和文件服务、网络文件系统、从仓库安装/升级软件包、管理网络安全、配置iptables、http服务、代理服务、邮件服务等等。由于其为高级工程级别的认证程序，所以普遍认为相比LFCS，学习和通过的难度更大些。

* **认证代码**：LFCE
* 课程代码：LFS230
* 考试代码：LFCE 考试
* 考试时长：2小时
* 要求：认证过LFCS
* 分数线：72%
* 语言：英语
* 有效期：2年

### 我们发现的情况（这仅仅是我们的观点）

最近的调查表明，在不同的高端招聘代理中，称80%的Linux工作描述更倾向于红帽的认证。如果你是一个学生/新手，并且想学习Linux，那么我们建议选择越来越流行的Linux基金会认证，或者CompTIA Linux也可以是一个选择。如果你已经了解了oracle或suse，或者在他们的产品上工作，那oracle/suse的认证会更好些，如果你在公司里工作了，这些认证会对你的职业生涯成长有帮助 :-)

### 总结

在这个世界上，成千上万的大公司正在运行跑着Linux操作系统的服务器和主框架机，为了在这些服务器上管理、配置和工作，总是存在着对Linux技术/专业知识高度认证的需求。这些国际上承认的认证对某些人在Linux的职业生涯扮演很重要的角色。这些遍布全球的公司运行着Linux，需要Linux工程师、系统管理员和已经获得认证且在Linux相关领域干得不错的人员。全球认可的Linux认证，对于专业知识和职业生涯的辉煌都是重中之重，所以好好准备考试并获得认证，对于在Linux建立职业生涯是一个很好的选择。如果你有任何问题，想法，反馈，请写在下方的评论框里，让我们好知道哪些东西需要添加或者改进。谢谢！:-)

---

via: <http://linoxide.com/linux-how-to/12-globally-recognized-linux-certifications/>

作者：[Arun Pyasi](http://linoxide.com/author/arunp/) 译者：[wi-cuckoo](https://github.com/wi-cuckoo) 校对：[wxy](https://github.com/wxy)

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


15 个有用的 MySQL/MariaDB 性能调整和优化技巧

Summary: MySQL 是一个强大的开源关系数据库管理系统（简称 RDBMS）。它发布于 1995 年（20年前）。它采用结构化查询语言（SQL），这可能是数据库内容管理中最流行的选择。最新的 MySQL 版本是 5.6.25，于 2015 年 5 月 29 日发布。 关于 MySQL 一个有趣的事实是它的名字来自于 Michael Widenius（MySQL 的创始人）的女儿 My。尽管有许多关于 MySQL 有趣的传闻，不过本文主要是向你展示一些有用的实践，以帮助你管理你的 MySQL 服务器。  MySQL 性能优化 2009 年 4 月，MySQL 被 Oracle 收购。其结果是MySQL 社区分裂，创建了一个叫 MariaDB 的分支

got it

“设置 MySQL 允许的最大数据包”，今天遇到了【max_allowed_packet】变量带来的问题。

MySQL 是一个强大的开源关系数据库管理系统（简称 RDBMS）。它发布于 1995 年（20年前）。它采用结构化查询语言（SQL），这可能是数据库内容管理中最流行的选择。最新的 MySQL 版本是 5.6.25，于 2015 年 5 月 29 日发布。

关于 MySQL 一个有趣的事实是它的名字来自于 Michael Widenius（MySQL 的创始人）的女儿“ My”。尽管有许多关于 MySQL 有趣的传闻，不过本文主要是向你展示一些有用的实践，以帮助你管理你的 MySQL 服务器。

![MySQL 性能优化](/data/attachment/album/201506/30/233820d4cq7en1pzr4i1pq.png)

*MySQL 性能优化*

2009 年 4 月，MySQL 被 Oracle 收购。其结果是MySQL 社区分裂，创建了一个叫 MariaDB 的分支 。创建该分支的主要原因是为了保持这个项目可以在 GPL 下的自由。

今天，MySQL 和 MariaDB 是用于类似 WordPress、Joomla、Magento 和其他 web 应用程序的最流行的 RDMS 之一（如果不是最多的）。

这篇文章将告诉你一些基本的，但非常有用的关于如何优化 MySQL/MariaDB 性能的技巧。注意，本文假定您已经安装了 MySQL 或 MariaDB。如果你仍然不知道如何在系统上安装它们，你可以按照以下说明去安装：

* [在 RHEL/CentOS 7 上安装 LAMP](http://www.tecmint.com/install-lamp-in-centos-7/)
* [在 Fedora 22 上安装 LAMP](http://www.tecmint.com/install-lamp-linux-apache-mysql-php-on-fedora-22/)
* [在 Ubuntu 15.04 安装 LAMP](http://www.tecmint.com/install-lamp-on-ubuntu-15-04/)
* [在 Debian 8 上安装 MariaDB](http://www.tecmint.com/install-mariadb-in-debian/)
* [在 Gentoo Linux 上安装 MariaDB](http://www.tecmint.com/install-lemp-in-gentoo-linux/)
* [在 Arch Linux 上安装 MariaDB](http://www.tecmint.com/install-lamp-in-arch-linux/)

**重要提示**： 在开始之前，不要盲目的接受这些建议。每个 MySQL 设置都是不同的，在进行任何更改之前需要慎重考虑。

你需要明白这些：

* MySQL/MariaDB 配置文件位于 `/etc/my.cnf`。 每次更改此文件后你需要重启 MySQL 服务，以使更改生效。
* 这篇文章使用 MySQL 5.6 版本。

### 1. 启用 InnoDB 的每张表一个数据文件设置

首先，有一个重要的解释， InnoDB 是一个存储引擎。MySQL 和 MariaDB 使用 InnoDB 作为默认存储引擎。以前，MySQL 使用系统表空间来保存数据库中的表和索引。这意味着服务器唯一的目的就是数据库处理，它们的存储盘不用于其它目的。

InnoDB 提供了更灵活的方式，它把每个数据库的信息保存在一个 `.ibd` 数据文件中。每个 .idb 文件代表它自己的表空间。通过这样的方式可以更快地完成类似 “TRUNCATE” 的数据库操作，当删除或截断一个数据库表时，你也可以回收未使用的空间。

这样配置的另一个好处是你可以将某些数据库表放在一个单独的存储设备。这可以大大提升你磁盘的 I/O 负载。

MySQL 5.6及以上的版本默认启用 `innodb_file_per_table`。你可以在 /etc/my.cnf 文件中看到。该指令看起来是这样的：

```
innodb_file_per_table=1

```

### 2. 将 MySQL 数据库数据存储到独立分区上

**注意**：此设置只在 MySQL 上有效, 在 MariaDB 上无效。

有时候操作系统的读/写会降低你 MySQL 服务器的性能，尤其是如果操作系统和数据库的数据位于同一块磁盘上。因此，我建议你使用单独的磁盘（最好是 SSD）用于 MySQL 服务。

要完成这步，你需要将新的磁盘连接到你的计算机/服务器上。对于这篇文章，我假定磁盘挂在到 /dev/sdb。

#### 下一步是准备新的分区：

```
# fdisk /dev/sdb

```

现在按 “N” 来创建新的分区。接着按 “P”，使其创建为主分区。在此之后，从 1-4 设置分区号。之后，你可以选择分区大小。这里按 enter。在下一步，你需要配置分区的大小。

如果你希望使用全部的磁盘，再按一次 enter。否则，你可以手动设置新分区的大小。准备就绪后按 “w” 保存更改。现在，我们需要为我们的新分区创建一个文件系统。这可以用下面命令轻松地完成：

```
# mkfs.ext4 /dev/sdb1

```

现在我们会挂载新分区到一个目录。我在根目录下创建了一个名为 “ssd” 的目录：

```
# mkdir /ssd/

```

挂载新分区到刚才创建的目录下：

```
# mount /dev/sdb1  /ssd/

```

你可以在 /etc/fstab 文件中添加如下行设置为开机自动挂载：

```
/dev/sdb1 /ssd ext3 defaults 0 0

```

#### 现在我们将 MySQL 移动到新磁盘中

首先停止 MySQL 服务：

```
# service mysqld stop

```

我建议你同时停止 Apache/nginx，以防止任何试图写入数据库的操作：

```
# service httpd stop
# service nginx stop

```

现在复制整个 MySQL 目录到新分区中:

```
# cp /var/lib/mysql /ssd/ -Rp

```

这可能需要一段时间，具体取决于你的 MySQL 数据库的大小。一旦这个过程完成后重命名 MySQL 目录：

```
# mv /var/lib/mysql /var/lib/mysql-backup

```

然后创建一个符号链接：

```
# ln -s /ssd/mysql /var/lib/mysql

```

现在启动你的 MySQL 和 web 服务：

```
# service mysqld start
# service httpd start
# service nginx start

```

以后你的数据库将使用新的磁盘访问。

### 3. 优化使用 InnoDB 的缓冲池

InnoDB 引擎在内存中有一个缓冲池用于缓存数据和索引。这当然有助于你更快地执行 MySQL/MariaDB 查询语句。选择合适的内存大小需要一些重要的决策并对系统的内存消耗有较多的认识。

下面是你需要考虑的:

* 其它的进程需要消耗多少内存。这包括你的系统进程，页表，套接字缓冲。
* 你的服务器是否专门用于 MySQL 还是你运行着其它非常消耗内存的服务。

在一个专用的机器上，你可能会把 60-70％ 的内存分配给 `innodb_buffer_pool_size`。如果你打算在一个机器上运行更多的服务，你应该重新考虑专门用于 `innodb_buffer_pool_size` 的内存大小。

你需要设置 my.cnf 中的此项:

```
innodb_buffer_pool_size

```

### 4. 在 MySQL 中避免使用 Swappiness

“交换”是一个当系统移动部分内存到一个称为 “交换空间” 的特殊磁盘空间时的过程。通常当你的系统用完物理内存后就会出现这种情况，系统将信息写入磁盘而不是释放一些内存。正如你猜测的磁盘比你的内存要慢得多。

该选项默认情况下是启用的：

```
# sysctl vm.swappiness

vm.swappiness = 60

```

运行以下命令关闭 swappiness：

```
# sysctl -w vm.swappiness=0

```

### 5. 设置 MySQL 的最大连接数

`max_connections` 指令告诉你当前你的服务器允许多少并发连接。MySQL/MariaDB 服务器允许有 SUPER 权限的用户在最大连接之外再建立一个连接。只有当执行 MySQL 请求的时候才会建立连接，执行完成后会关闭连接并被新的连接取代。

请记住，太多的连接会导致内存的使用量过高并且会锁住你的 MySQL 服务器。一般小网站需要 100-200 的连接数，而较大可能需要 500-800 甚至更多。这里的值很大程度上取决于你 MySQL/MariaDB 的使用情况。

你可以动态地改变 `max_connections` 的值而无需重启MySQL服务器：

```
# mysql -u root -p
mysql> set global max_connections = 300;

```

### 6. 配置 MySQL 的线程缓存数量

`thread_cache_size` 指令用来设置你服务器缓存的线程数量。当客户端断开连接时，如果当前线程数小于 `thread_cache_size`，它的线程将被放入缓存中。下一个请求通过使用缓存池中的线程来完成。

要提高服务器的性能，你可以设置 `thread_cache_size` 的值相对高一些。你可以通过以下方法来查看线程缓存命中率：

```
mysql> show status like 'Threads_created';
mysql> show status like 'Connections';

```

你可以用以下公式来计算线程池的命中率：

```
100 - ((Threads_created / Connections) * 100)

```

如果你得到一个较低的数字，这意味着大多数 mysql 连接使用新的线程，而不是从缓存加载。在这种情况下，你需要增加 `thread_cache_size`。

这里有一个好处是可以动态地改变 `thread_cache_size` 而无需重启 MySQL 服务。你可以通过以下方式来实现：

```
mysql> set global thread_cache_size = 16;

```

### 7. 禁用 MySQL 的 DNS 反向查询

默认情况下当新的连接出现时，MySQL/MariaDB 会进行 DNS 查询解析用户的 IP 地址/主机名。对于每个客户端连接，它的 IP 都会被解析为主机名。然后，主机名又被反解析为 IP 来验证两者是否一致。

当 DNS 配置错误或服务器出现问题时，这很可能会导致延迟。这就是为什么要关闭 DNS 的反向查询的原因，你可以在你的配置文件中添加以下选项去设定：

```
[mysqld]
# Skip reverse DNS lookup of clients
skip-name-resolve

```

更改后你需要重启 MySQL 服务。

### 8. 配置 MySQL 的查询缓存容量

如果你有很多重复的查询并且数据不经常改变 – 请使用缓存查询。 人们常常不理解 `query_cache_size` 的实际含义而将此值设置为 GB 级，这实际上会降低服务器的性能。

背后的原因是，在更新过程中线程需要锁定缓存。通常设置为 200-300 MB应该足够了。如果你的网站比较小的，你可以尝试给 64M 并在以后及时去增加。

在你的 MySQL 配置文件中添加以下设置：

```
query_cache_type = 1
query_cache_limit = 256K
query_cache_min_res_unit = 2k
query_cache_size = 80M

```

### 9. 配置临时表容量和内存表最大容量

`tmp_table_size` 和 `max_heap_table_size` 这两个变量的大小应该相同，它们可以让你避免磁盘写入。`tmp_table_size` 是内置内存表的最大空间。如果表的大小超出限值将会被转换为磁盘上的 MyISAM 表。

这会影响数据库的性能。管理员通常建议在服务器上设置这两个值为每 GB 内存给 64M。

```
[mysqld]
tmp_table_size= 64M
max_heap_table_size= 64M

```

### 10. 启用 MySQL 慢查询日志

记录慢查询可以帮助你定位数据库中的问题并帮助你调试。这可以通过在你的 MySQL 配置文件中添加以下值来启用：

```
slow-query-log = 1
slow-query-log-file = /var/lib/mysql/mysql-slow.log
long_query_time = 1

```

第一个变量启用慢查询日志，第二个告诉 MySQL 实际的日志文件存储位置。使用 `long_query_time` 来定义完成 MySQL 查询多少用时算长。

### 11. 检查 MySQL 的空闲连接

空闲连接会消耗资源，可以的话应该被终止或者刷新。空闲连接是指处于 “sleep” 状态并且保持了很长一段时间的连接。你可以通过运行以下命令查看空闲连接：

```
# mysqladmin processlist -u root -p | grep “Sleep”

```

这会显示处于睡眠状态的进程列表。当代码使用持久连接到数据库时会出现这种情况。使用 PHP 调用 mysql\_pconnect 可以打开这个连接，执行完查询之后，删除认证信息并保持连接为打开状态。这会导致每个线程的缓冲都被保存在内存中，直到该线程结束。

首先你要做的就是检查代码问题并修复它。如果你不能访问正在运行的代码，你可以修改 `wait_timeout` 变量。默认值是 28800 秒，而你可以安全地将其降低到 60 ：

```
wait_timeout=60

```

### 12. 为 MySQL 选择正确的文件系统

选择正确的文件系统对数据库至关重要。在这里你需要考虑的最重要的事情是 - 数据的完整性，性能和易管理性。

按照 MariaDB 的建议，最好的文件系统是XFS、ext4 和 Btrfs。它们都是可以使用超大文件和大容量存储卷的企业级日志型文件系统。

下面你可以找到一些关于这三个文件系统的有用信息：

| 文件系统 | XFS | Ext4 | Btrfs |
| --- | --- | --- | --- |
| 文件系统最大容量 | 8EB | 1EB | 16EB |
| 最大文件大小 | 8EB | 16TB | 16EB |

我们的这篇文章详细介绍了 Linux 文件系统的利与弊: [Linux 文件系统解析](http://www.tecmint.com/linux-file-system-explained/)。

### 13. 设置 MySQL 允许的最大数据包

MySQL 把数据拆分成包。通常一个包就是发送到客户端的一行数据。`max_allowed_packet` 变量定义了可以被发送的最大的包。

此值设置得过低可能会导致查询速度变得非常慢，然后你会在 MySQL 的错误日志看到一个错误。建议将该值设置为最大包的大小。

### 14. 测试 MySQL 的性能优化

你应该定期检查 MySQL/MariaDB 的性能。这将帮助你了解资源的使用情况是否发生了改变或需要进行改进。

有大量的测试工具可用，但我推荐你一个简单易用的。该工具被称为 mysqltuner。

使用下面的命令下载并运行它：

```
# wget https://github.com/major/MySQLTuner-perl/tarball/master
# tar xf master
# cd major-MySQLTuner-perl-993bc18/
# ./mysqltuner.pl

```

你将收到有关 MySQL 使用的详细报告和推荐提示。下面是默认 MariaDB 安装的输出样例：

![MySQL 性能优化](/data/attachment/album/201506/30/233822xkxhkxxsfjs5asth.png)

### 15. 优化和修复 MySQL 数据库

有时候 MySQL/MariaDB 数据库中的表很容易崩溃，尤其是服务器意外关机、文件系统突然崩溃或复制过程中仍然访问数据库。幸运的是，有一个称为 'mysqlcheck' 的免费开源工具，它会自动检查、修复和优化 Linux 中数据库的所有表。

```
# mysqlcheck -u root -p --auto-repair --check --optimize --all-databases
# mysqlcheck -u root -p --auto-repair --check --optimize databasename

```

就是这些！我希望上述文章对你有用，并帮助你优化你的 MySQL 服务器。一如往常，如果你有任何疑问或评论，请在下面的评论部分提交。

---

via: <http://www.tecmint.com/mysql-mariadb-performance-tuning-and-optimization/>

作者：[Marin Todorov](http://www.tecmint.com/author/marintodorov89/) 译者：[strugglingyouth](https://github.com/strugglingyouth) 校对：[ictlyh](https://github.com/ictlyh)

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


25 个有用 Apache ‘.htaccess’ 技巧

Summary: 网站是我们生活中重要的一部分。它们是实现扩大业务、分享知识以及其它更多功能的方式。早期受制于只能提供静态内容，随着动态客户端和服务器端脚本语言的引入和现有静态语言的持续改进，例如从 html 到 html5，动态网站成为可能，剩下的也许在不久的将来也会实现。 对于网站，随之而来的是需要一个能向全球大规模用户显示站点的某个东西。这个需求可以通过托管网站的服务器实现。这包括一系列的服务器，例如：Apache HTTP Server、Joomla 以及 允许个人拥有自己网站的 WordPress。  25 个 htaccess 小技巧 想要拥有一个网站，可以创建一

好东西 分享了

按照Apache的解释，.htaccess是在没有权限修改httpd.conf的情况下才使用的，因为htaccess不是预编译的。<br />
请不要这样使用htaccess

这样有点滥用了。

网站是我们生活中重要的一部分。它们是实现扩大业务、分享知识以及其它更多功能的方式。早期受制于只能提供静态内容，随着动态客户端和服务器端脚本语言的引入和现有静态语言的持续改进，例如从 html 到 html5，动态网站成为可能，剩下的也许在不久的将来也会实现。

对于网站，随之而来的是需要一个能向全球大规模用户显示站点的某个东西。这个需求可以通过托管网站的服务器实现。这包括一系列的服务器，例如：Apache HTTP Server、Joomla 以及 允许个人拥有自己网站的 WordPress。

![Apache htaccess 小技巧](/data/attachment/album/201507/01/130912thiu4x2o36h369u9.jpg)

*25 个 htaccess 小技巧*

想要拥有一个网站，可以创建一个自己的本地服务器，或者联系任何上面提到的或其它服务器管理员来托管他的网站。但实际问题也从这点开始。网站的性能主要取决于以下因素：

* 网站消耗的带宽。
* 面对黑客，网站有多安全。
* 对数据库进行数据检索时的优化。
* 显示导航菜单和提供更多 UI 功能时的用户友好性。

除此之外，保证托管网站服务器成功的多种因素还包括：

* 对于一个流行站点的数据压缩量。
* 同时为多个对请求同一或不同站点的用户服务的能力。
* 保证网站上输入的机密数据安全，例如：Email、信用卡信息等等。
* 允许更多的选项用于增强站点的动态性。

这篇文章讨论一个服务器提供的用于增强网站性能和提高针对坏机器人、热链等的安全性的功能：‘.htaccess’ 文件。

### .htaccess 是什么？

htaccess (hypertext access，超文本访问) 是为网站所有者提供用于控制服务器环境变量以及其它参数的选项，从而增强他们网站的功能的文件。这些文件可以在网站目录树的任何一个目录中，并向该目录以及目录中的文件和子目录提供功能。

这些功能是什么呢？其实这些是服务器的指令，例如命令服务器执行特定任务的行，这些命令只对该文件所在目录中的文件和子目录有效。这些文件默认是隐藏的，因为所有操作系统和网站服务器默认配置为忽略它们，但如果查看隐藏文件的话，你就可以看到这些特殊文件。后续章节的话题将讨论能控制什么类型的参数。

注意：如果 .htaccess 文件保存在 /apache/home/www/Gunjit/ 目录，那么它会向该目录中的所有文件和子目录提供命令，但如果该目录包含一个名为 /Gunjit/images/ 子目录，且该子目录中也有一个 .htaccess 文件，那么这个子目录中的命令会覆盖父目录中 .htaccess 文件(或者目录层次结构中更上层的文件)提供的命令。

### Apache Server 和 .htaccess 文件

Apache HTTP Server 俗称为 Apache，是为了表示对一个有卓越战争策略技能的美洲土著部落的尊敬而命名。它基于 [NCSA HTTPd 服务器](https://en.wikipedia.org/wiki/NCSA_HTTPd) ，是用 C/C++ 和 XML 建立的跨平台 Web 服务器，它在万维网的成长和发展中起到了关键作用。

它最常用于 UNIX，但 Apache 也能用于多种平台，包括 FreeBSD、Linux、Windows、Mac OS、Novel Netware 等。在 2009 年，Apache 成为第一个为超过一亿站点提供服务的服务器。

Apache 服务器可以让 www/ 目录中的每个用户有一个单独的 .htaccess 文件。尽管这些文件是隐藏的，但如果需要的话可以使它们可见。在 www/ 目录中可以有很多子目录，每个子目录通过用户名或所有者名称命名，包含了一个站点。除此之外你可以在每个子目录中有一个 .htaccess 文件，像之前所述用于配置子目录中的文件。

下面介绍如果配置 Apache 服务器上的 htaccess 文件。

### Apache 服务器上的配置

这里有两种情况：

#### 在自己的服务器上托管网站

在这种情况下，如果没有启用 .htaccess 文件，你可以通过在 http.conf(Apache HTTP 守护进程的默认配置文件) 中找到 部分启用。

```
<Directory "/var/www/htdocs">

```

定位如下行

```
AllowOverride None

```

更改为

```
AllowOverride All

```

现在，重启 Apache 后就启用了 .htaccess。

#### 在不同的托管服务提供商的服务器上托管网站

在这种情况下最好咨询托管管理员，如果他们允许访问 .htaccess 文件的话。

### 用于网站的 25 个 Apache Web 服务器 ‘.htaccess’ 小技巧

#### 1. 如何在 .htaccess 文件中启用 mod\_rewrite

mod\_rewrite 选项允许你使用重定向并通过重定向到其它 URL 来隐藏你真实的 URL。这个选项非常有用，允许你用短的容易记忆的 URL 替换长 URL。

要允许 mod\_rewrite，只需要在你的 .htaccess 文件的第一行添加如下一行。

```
Options +FollowSymLinks

```

该选项允许你跟踪符号链接从而在站点中启用 mod*rewrite。后面会介绍用短 URL 替换。（LCTT 译注：+FollowSymLinks 只是启用 mod*rewrite 的前提之一，还需要在全局和虚拟机中设置 `RewriteEngine on` 才能启用重写模块。）

#### 2. 如何允许或禁止对站点的访问

通过使用 order、allow 和 deny 关键字，htaccess 文件可以允许或者禁止对站点或目录中子目录或文件的访问。

**只允许 IP 192.168.3.1 的访问**

```
Order Allow, Deny
Deny from All
Allow from 192.168.3.1

或

Order Allow, Deny
Allow from 192.168.3.1

```

这里的 Order 关键字指定处理 allow 和 deny 访问的顺序。对于上面的 ‘Order’ 语句，首先会处理 Allow 语句，然后是 deny 语句。

**只禁止某个 IP 的访问**

下面一行的意思是除了 IP 地址 192.168.3.1，允许所有用户访问网站。

```
Order Allow, Deny
Deny from 192.168.3.1
Allow from All

或

Order Deny, Allow
Deny from 192.168.3.1

```

#### 3. 为不同错误码生成 Apache 错误文档

用简单几行，我们可以解决当用户/客户端请求一个站点上不可用的网页时服务器产生的错误码的错误文档，例如我们大部分人见过的浏览器中显示的 ‘404 Page not found’。‘.htaccess’ 文件指定了发生这些错误情况时采取何种操作。

要做到这点，需要添加下面的行到 ‘.htaccess’ 文件：

```
ErrorDocument <error-code> <path-of-document/string-representing-html-file-content>

```

‘ErrorDocument’ 是一个关键字，error-code 可以是 401、403、404、500 或任何有效的表示错误的代码，最后 ‘path-of-document’ 表示本地机器上的路径（如果你使用的是你自己的本地服务器） 或服务器上的路径（如果你使用任何其它服务器来托管网站）。

**例子：**

```
ErrorDocument 404 /error-docs/error-404.html

```

上面一行设置客户请求任何无效页面，服务器报告 404 错误时显示 error-docs 目录下的 ‘error-404.html’ 文档。

```
<html><head><title>404 Page not found</title></head><body><p>The page you request is not present. Check the URL you have typed</p></body></html>
```

上面的表示也正确，其中字符串相当于一个普通的 html 文件。

#### 4. 设置/取消 Apache 服务器环境变量

在 .htaccess 文件中你可以设置或者取消站点所有者可以更改的全局环境变量。要设置或取消环境变量，你需要在你的 .htaccess 文件中添加下面的行。

**设置环境变量**

```
SetEnv OWNER “Gunjit Khera”

```

**取消环境变量**

```
UnsetEnv OWNER

```

#### 5. 为文件定义不同 MIME 类型

MIME（多用途 Internet 多媒体扩展）是浏览器运行任何页面所默认识别的类型。你可以在 .htaccess 文件中为你的站点定义 MIME 类型，然后服务器就可以识别你定义类型的文件并运行。

```
<IfModule mod_mime.c>
    AddType application/javascript      js
    AddType application/x-font-ttf      ttf ttc
</IfModule>

```

这里，mod\_mime.c 是用于控制定义不同 MIME 类型的模块，如果在你的系统中已经安装了这个模块，那么你就可以用该模块去为你站点中不同的扩展名定义不同的 MIME 类型，从而让服务器可以理解这些文件。

#### 6. 如何在 Apache 中限制上传和下载的大小

.htaccess 文件允许你能够控制某个用户从你的站点（通过 PHP）单次上传数据量的大小（LCTT 译注：原文有误，修改）。要做到这点你只需要添加下面的行到你的 .htaccess 文件：

```
php_value upload_max_filesize 20M
php_value post_max_size 20M
php_value max_execution_time 200
php_value max_input_time 200

```

上面的行设置最大上传大小、最大POST 提交数据大小、最长执行时间（例如，允许用户在他的本地机器上单次执行一个请求的最大时间）、限制的最大输入时间。

#### 7. 让用户不能在你的站点上在线播放 .mp3 和其它文件

大部分情况下，人们在下载检查音乐质量之前会在网站上播放等等。作为一个聪明的销售者，你可以添加一个简单的功能，不允许任何用户在线播放音乐或视频，而是必须下载完成后才能播放。这非常有用，因为（无缓冲的）在线播放音乐和视频会消耗很多带宽。

要添加下面的行到你的 .htaccess 文件：

```
AddType application/octet-stream .mp3 .zip

```

#### 8. 为站点设置目录索引

大部分网站开发者都知道第一个显示的页面是哪个，例如一个站点的首页，被命名为 ‘index.html’。我们大部分也见过这个。但是如何设置呢？

.htaccess 文件提供了一种方式用于列出一个客户端请求访问网站的主页面时会顺序扫描的一些网页集合，相应地如果找到了列出的页面中的任何一个就会作为站点的主页面并显示给用户。

需要添加下面的行产生所需的效果。

```
DirectoryIndex index.html index.php yourpage.php

```

上面一行指定如果有任何访问首页的请求到来，首先会在目录中顺序搜索上面列出的网页：如果发现了 index.html 则显示为主页面，否则会找下一个页面，例如 index.php，如此直到你在列表中输入的最后一个页面。

#### 9. 如何为文件启用 GZip 压缩以节省网站带宽

繁忙的站点通常比只占少量空间的轻量级站点运行更慢，这是常见的现象。因为对于繁忙的站点需要时间加载巨大的脚本文件和图片以在客户端的 Web 浏览器上显示。

通常的机制是这样的，当浏览器请求一个 web 页面时，服务器提供给浏览器该页面，并在浏览器端显示该 web 页面，浏览器需要下载该页面并运行页面内的脚本。

这里 GZip 压缩所做的就是节省单个用户的服务时间而不用增加带宽。服务器上站点的源文件以压缩形式保存，当用户请求到来的时候，这些文件以压缩形式传送，然后在客户端上解压（LCTT 译注：原文此处有误）。这改善了带宽限制。

下面的行允许你压缩站点的源文件，但要求在你的服务器上安装 mod\_deflate.c 模块。

```
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE application/html
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>

```

#### 10. 处理文件类型

服务器默认的有一些特定情况。例如：在服务器上运行 .php 文件，显示 .txt 文件。像这些我们可以以源代码形式只显示一些可执行 cgi 脚本或文件而不是执行它们（LCTT 译注：这是为了避免攻击者通过上传恶意脚本，进而在服务器上执行恶意脚本进行破坏和窃取）。

要做到这点在 .htaccess 文件中有如下行。

```
RemoveHandler cgi-script .php .pl .py
AddType text/plain .php .pl .py

```

这些行告诉服务器只显示而不执行 .pl (perl 脚本)、.php (PHP 文件) 和 .py (Python 文件) 。

#### 11. 为 Apache 服务器设置时区

从 .htaccess 文件可用于为服务器设置时区可以看出它的能力和重要性。这可以通过设置一个服务器为每个托管站点提供的一系列全局环境变量中的 ‘TZ’ 完成。

由于这个原因，我们可以在网站上看到根据我们的时区显示的时间。也许服务器上其他拥有网站的人会根据他居住地点的位置设置时区。

下面的一行为服务器设置时区。

```
SetEnv TZ India/Kolkata

```

#### 12. 如果在站点上启用缓存控制

浏览器很有趣的一个功能是，很多时间你可以看到，当多次同时打开一个网站和第一次打开相比前者会更快。但为什么会这样呢？事实上，浏览器在它的缓存中保存了一些通常访问的页面用于加快后面的访问。

但保存多长时间呢？这取决于你自己。例如，你的 .htaccess 文件中设置的缓存控制时间。.htaccess 文件指定了站点的网页可以在浏览器缓存中保存的时间，时间到期后需要重新验证缓存，页面可能会从缓存中删除然后在下次用户访问站点的时候重建。

下面的行为你的站点实现缓存控制。

```
<FilesMatch "\.(ico|png|jpeg|svg|ttf)$">
    Header Set Cache-Control "max-age=3600, public"
</FilesMatch>
<FilesMatch "\.(js|css)$">
    Header Set Cache-Control "public"
    Header Set Expires "Sat, 24 Jan 2015 16:00:00 GMT"
</FilesMatch>

```

上面的行允许缓存 .htaccess 文件所在目录中的页面一小时。

#### 13. 配置单个文件

通常 .htaccess 文件中的内容会对该文件所在目录中的所有文件和子目录起作用，但是你也可以对特殊文件设置一些特殊权限，例如只禁止对某个文件的访问等等。

要做到这点，你需要在文件中以类似方式添加 <Files> 标记：

```
<files conf.html="">
Order allow, deny
Deny from 188.100.100.0
</files>

```

这是一个禁止 IP 188.100.100.0 访问 ‘conf.html’ 的简单例子，但是你也可以添加介绍过的 .htaccess 文件的任何功能，包括将要介绍的功能，例如：缓存控制、GZip 压缩。

大部分服务器会用这个功能增强 .htaccess 文件的安全，这也是我们在浏览器上看不到 .htaccess 文件的原因。在后面的章节中会介绍如何给文件授权。

#### 14. 启用在 cgi-bin 目录以外运行 CGI 脚本

通常服务器运行的 CGI 脚本都保存在 cgi-bin 目录中，但是你可以在你需要的目录运行 CGI 脚本，只需要在所需的目录中的 .htaccess 文件添加下面的行，如果没有该文件就创建一个，并添加下面的行：

```
AddHandler cgi-script .cgi
Options +ExecCGI

```

#### 15.如何用 .htaccess 在站点上启用 SSI

服务器端包括（SSI）顾名思义是和服务器部分相关的东西。这是什么呢？通常当我们在站点上有很多页面的时候，我们在主页上会有一个显示到其它页面链接的导航菜单，我们可以启用 SSI 选项允许导航菜单中显示的所有页面完全包含在主页面中。

SSI 允许多个页面包含同样的内容，因此只需要编辑一个文件就行，从而可以节省很多磁盘空间。对于 .shtml 文件，服务器默认启用了该选项。

如果你想要对 .html 启用该选项，你需要添加下面的行：

```
AddHandler server-parsed .html

```

这样 html 文件中如下部分会被替换为 SSI。

```
<!--#inlcude virtual="gk/document.html"-->

```

#### 16. 如何防止网站列出目录列表

为防止任何客户端在本地机器罗列服务器上的网站目录列表，添加下面的行到你不想列出的目录的文件中。

```
Options -Indexes

```

#### 17. 更改默认字符集和语言头

.htaccess 文件允许你更改网站使用的字符集，例如 ASCII 或 UNICODE，UTF-8 等，以及用于显示内容的默认语言。

在服务器的全局环境变量之后添加下面语句可以实现上述功能。

```
AddDefaultCharset UTF-8
DefaultLanguage en-US

```

#### 18. 重定向一个非 www URL 到 www URL

在开始解释之前，首先看看如何启用该功能，添加下列行到 .htaccess 文件。

```
RewriteEngine ON
RewriteCond %{HTTP_HOST} ^abc\.net$
RewriteRule (.*) http://www.abc.net/$1 [R=301,L]

```

上面的行启用重写引擎，然后在第二行检查所有涉及到主机 abc.net 或 环境变量 HTTP\_HOST 为 “abc.net” 的 URL。

对于所有这样的 URL，代码永久重定向它们(如果启用了 R=301 规则)到新 URL http://www.abc.net/$1，其中 $1 是主机为 abc.net 的非 www URL。非 www URL 是大括号内的内容，并通过 $1 引用。

**重写 URL 的重定向规则**

重写功能简单的说，就是用短而易记的 URL 替换长而难以记忆的 URL。但是，在开始这个话题之前，这里有一些本文后面会使用的特殊字符的规则和约定。

**特殊符号：**

```
符号              含义
^         -     字符串开头
$         -     字符串结尾
|         -     或 [a|b] ： a 或 b
[a-z]     -     a 到 z 的任意字母
+         -     之前字母的一次或多次出现
*         -     之前字母的零次或多次出现
?         -     之前字母的零次或一次出现

```

**常量和它们的含义：**

```
常量          含义
NC          -   区分大小写
L           -   最后的规则 – 停止处理后面规则
R           -   临时重定向到新 URL
R=301       -   永久重定向到新 URL
F           -   禁止发送 403 头给用户
P           -   代理 - 获取远程内容代替部分并返回
G           -   Gone， 不再存在
S=x         -   跳过后面的 x 条规则
T=mime-type -   强制指定 MIME 类型
E=var:value -   设置环境变量 var 的值为 value
H=handler   -   设置处理器
PT          -   Pass through - 用于 URL 还有额外的头
QSA         -   将查询字符串追加到替换 URL

```

#### 19. 重定向整个站点到 https

下面的行会帮助你转换整个网站到 https：

```
RewriteEngine ON
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

```

上面的行启用重写引擎，然后检查环境变量 HTTPS 的值。如果设置了那么重写所有网站页面到 https。

#### 20.一个自定义重写例子

例如，重定向 url ‘http://www.abc.net?p=100&q=20’ 到 ‘http://www.abc.net/10020pq’。

```
RewriteEngine ON
RewriteRule ^http://www.abc.net/([0-9]+)([0-9]+)pq$ ^http://www.abc.net?p=$1&q=$2

```

在上面的行中，$1 表示第一个括号，$2 表示第二个括号。

#### 21. 重命名 htaccess 文件

为了防止入侵者和其他人查看 .htaccess 文件，你可以重命名该文件，这样就不能通过客户端浏览器访问。实现该目标的语句是：

```
AccessFileName  htac.cess

```

#### 22. 如何为你的网站禁用图片盗链

网站带宽消耗比较大的另外一个重要问题是盗链问题，这是其它站点用于显示你网站的图片而链接到你的网站的链接，这会消耗你的带宽。这问题也被成为 ‘带宽盗窃’。

一个常见现象是当一个网站要显示其它网站所包含的图片时，由于该链接需要从你的网站加载内容，消耗你站点的带宽而为其它站点显示图片。为了防止出现这种情况，比如对于 .gif、.jpeg 图片等，下面的代码行会有所帮助：

```
RewriteEngine ON
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERERER} !^http://(www\.)?mydomain.com/.*$ [NC]
RewriteRule \.(gif|jpeg|png)$ - [F].

```

上面的行检查 HTTP\_REFERER 是否没有设为空或没有设为你站点上的任何链接。如果是这样的话，你网页上的所有图片会用 403 禁止访问代替。

#### 23. 如何将用户重定向到维护页面

如果你的网站需要进行维护并且你想向所有需要访问该网站的你的所有客户通知这个消息，对于这种情况，你可以添加下面的行到你的 .htaccess 文件，从而只允许管理员访问并替换所有访问 .jpg、.css、.gif、.js 等的页面内容。

```
RewriteCond %{REQUEST_URI} !^/admin/ [NC]
RewriteCond %{REQUEST_URI} !^((.*).css|(.*).js|(.*).png|(.*).jpg)    [NC]
RewriteRule ^(.*)$ /ErrorDocs/Maintainence_Page.html [NC,L,U,QSA]

```

这些行检查请求 URL 是否包含任何例如以 ‘/admin/’ 开头的管理页面的请求，或任何到 ‘.png, .jpg, .js, .css’ 页面的请求，对于任何这样的请求，用 ‘ErrorDocs/Maintainence\_Page.html’ 替换那个页面。

#### 24. 映射 IP 地址到域名

名称服务器是将特定 IP 地址转换为域名的服务器。这种映射也可以在 .htaccess 文件中用以下形式指定。

```
# 为了将IP地址 L.M.N.O 映射到域名 www.hellovisit.com
RewriteCond %{HTTP_HOST} ^L\.M\.N\.O$ [NC]
RewriteRule ^(.*)$ http://www.hellovisit.com/$1 [L,R=301]

```

上面的行检查任何页面的主机是否包含类似 L.M.N.O 的 IP 地址，如果是的话第三行会通过永久重定向将页面映射到域名 http://www.hellovisit.com。

#### 25. FilesMatch 标签

类似用于应用条件到单个文件的 标签， 能用于匹配一组文件并对该组文件应用一些条件，如下：

```
<FilesMatch “\.(png|jpg)$”>
Order Allow, Deny
Deny from All
</FilesMatch>

```

### 结论

.htaccess 文件能实现的小技巧还有很多。这告诉了我们这个文件有多么强大，通过该文件能给你的站点添加多少安全性、动态性以及其它功能。

我们已经在这篇文章中尽最大努力覆盖尽可能多的 htaccess 小技巧，但如果我们缺少了任何重要的技巧，或者你愿意告诉我们你的 htaccess 想法和技巧，你可以在下面的评论框中提交，我们也会在文章中进行介绍。

---

via: <http://www.tecmint.com/apache-htaccess-tricks/>

作者：[Gunjit Khera](http://www.tecmint.com/author/gunjitk94/) 译者：[ictlyh](https://github.com/ictlyh) 校对：[wxy](https://github.com/wxy)

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


20 款优秀的 Linux 终端仿真器

Summary: 终端仿真器是一款用其它显示架构重现可视终端的计算机程序。换句话说就是终端仿真器能使哑终端看似像一台连接上了服务器的客户机。终端仿真器允许最终用户用文本用户界面和命令行来访问控制台和应用程序。（LCTT 译注：终端仿真器原意指对大型机-哑终端方式的模拟，不过在当今的 Linux 环境中，常指通过远程或本地方式连接的伪终端，俗称终端。）  20款Linux终端仿真器 你能从开源世界中找到大量的终端仿真器，它们有些拥有大量的特性而有些则反之。为了能更好地了解它们的特性，我们收集了一份优秀的Linux终端仿真器清单。每一款都列出了

Guake

竟然没有terminator，差评

你看清楚了么？第一个不是么？

好眼力

不错！

一直用的 xterm

装了guake，果然好用

这个不错哦

来自223.104.95.161的 Chrome Mobile 59.0|Android 5.1 用户

xshell是不是终端模拟器啊

终端仿真器是一款用其它显示架构重现可视终端的计算机程序。换句话说就是终端仿真器能使哑终端看似像一台连接上了服务器的客户机。终端仿真器允许最终用户用文本用户界面和命令行来访问控制台和应用程序。（LCTT 译注：终端仿真器原意指对大型机-哑终端方式的模拟，不过在当今的 Linux 环境中，常指通过远程或本地方式连接的伪终端，俗称“终端”。）

![Linux Terminal Emulators](/data/attachment/album/201507/01/232405flrlzsoottdeltln.jpg)

*20款Linux终端仿真器*

你能从开源世界中找到大量的终端仿真器，它们有些拥有大量的特性而有些则反之。为了能更好地了解它们的特性，我们收集了一份优秀的Linux终端仿真器清单。每一款都列出了它们各自的描述和特性以及软件界面截图和下载链接。

### 1. Terminator

Terminator是一款先进且强大的终端仿真器，它支持多终端窗口。这款仿真器可以完全自定义。你可以更改它的界面尺寸、颜色，给它设置不同的形状。拥有高用户友好性且使用起来很有乐趣。

#### Terminator的特性

* 自定义配置和配色方案，根据你的需要设置尺寸。
* 使用插件来提供更多功能。
* 快捷键可以加快普通操作。
* 可以把终端窗口分割成几个虚拟终端并把它们根据需要重新调整尺寸。

![Terminator Terminal](/data/attachment/album/201507/01/232436qrv5gu6r0r393wr3.jpg)

*Terminator 终端*

* [Terminator 主页](https://launchpad.net/terminator)
* [下载和安装指引](http://www.tecmint.com/terminator-a-linux-terminal-emulator-to-manage-multiple-terminal-windows/)

### 2. Tilda

Tilda是一款漂亮的下拉式终端，基于GTK+，一键单击你就可以呼出一个新的或隐藏着的Tilda窗口。你也可以用你所选择的颜色来更改文本颜色和终端背景颜色。

#### Tilda的特性

* 高度定制的选项界面设置。
* 你可以给Tilda设置透明度。
* 优秀的嵌入式配色方案。

![Tilda Terminal](/data/attachment/album/201507/01/232440vcq316q3c6swmcm3.jpg)

*Tilda 终端*

* [Tilda 主页](http://tilda.sourceforge.net/tildaabout.php)

### 3. Guake

Guake是一款基于python的下拉式终端，诞生于GNOME桌面环境。一键调出，再按一下就能隐藏。它的设计构思来源于FPS (第一人称射击) 游戏 Quake，其主要目标是容易访问。

Guake与Yakuaka和Tilda非常相似，不过它是一个集上述二者的优点于一体的基于GTK的程序。Guake完全是用Python和C的片段写成的(全局热键部分)。

![Guake Terminal](/data/attachment/album/201507/01/232456es42bmr55s6sybrt.jpg)

*Guake 终端*

* [Guake 主页](https://github.com/Guake/guake)

### 4. Yakuake

Yakuake (Yet Another Kuake) 是一款基于KDE的下拉式终端仿真器，它与Guake在功能上非常相似。它的设计构思也是受FPS游戏Quake的启发。

Yakuake从根本上说是一款KDE应用程序，它能非常轻松地安装在KDE桌面上，但是如果你试着将它安装在GNOME桌面上，你将会安装大量的依赖包。

#### Yakuake的特性

* 顺畅地从屏幕顶端弹出
* 标签式界面
* 可配置的尺寸和动画速度
* 可定制

![Yakuake Terminal](/data/attachment/album/201507/01/232506mwphsxjz7ahapbq6.jpg)

*Yakuake 终端*

* [Yakuake 主页](http://extragear.kde.org/apps/yakuake/)

### 5. ROXTerm

ROXterm是又一款轻量级终端仿真器，旨在提供与“GNOME终端”相似的特性。它原本创造出来是为了避免使用Gnome库从而更少占用空间和更快启动，并使用独立的小程序来显示配置界面(GUI), 但是随着时间的流逝，它的角色就转变为给那些高级用户带来更高层次的特性。

然而，它比GNOME终端更加具有可制定性，并且对于那些经常使用终端的高级用户更令人期望。它能和GNOME桌面环境完美结合并在终端中提供像拖拽项目那样的特性。

![Roxterm Terminal](/data/attachment/album/201507/01/232518smvu229xqmqwvbxx.jpg)

*Roxterm 终端*

* [ROXTerm 主页](http://roxterm.sourceforge.net/index.php?page=index&lang=en)

### 6. Eterm

Eterm是最轻量级的一款彩色终端仿真器，是作为xterm的替代品而被设计出来。它是以一种自由选择的理念设计的，带来了更强大、灵活、用户自主把控的终端。

![Eterm Terminal](/data/attachment/album/201507/01/232526mp0noaldolx4algn.jpg)

*Eterm 终端*

* [Eterm 主页](http://www.eterm.org/)

### 7. Rxvt

Rxvt 的意思是扩展虚拟终端，它是一款彩色终端仿真器，是为那些不需要一些诸如Tektronix 4014仿真和toolkit-style可配置性等特性的高级用户而生的xterm替代品。

![Rxvt Terminal](/data/attachment/album/201507/01/232537uam8m8s83kxcvv1k.jpg)

*Rxvt 终端*

* [Rxvt 主页](http://sourceforge.net/projects/rxvt/)

### 8. Wterm

Wterm是另一款以rxvt项目为基础的轻量级彩色终端仿真器。它所包含的特性包括设置背景图片、透明度、反向透明度和大量的设置或运行环境选项让它成为一款可高度自定义的终端仿真器。

![wterm Terminal](/data/attachment/album/201507/01/232546qrx8pemdez49li23.jpg)

*wterm 终端*

* [Wterm 主页](http://sourceforge.net/projects/wterm/)

### 9. LXTerminal

LXTerminal是一款基于VTE的终端仿真器，默认运行于没有任何多余依赖的LXDE(轻量级X桌面环境)下。这款终端有很多很棒的特性。

#### LXTerminal的特性

* 多标签式支持
* 支持常规命令如cp, cd, dir, mkdir, mvdir
* 隐藏菜单栏以保证足够界面空间
* 更改配色方案

![lxterminal Terminal](/data/attachment/album/201507/01/232607wbvbpmmsovscbl6y.jpg)

*lxterminal 终端*

* [LXTerminal 主页](http://wiki.lxde.org/en/LXTerminal)

### 10. Konsole

Konsole是另一款强大的基于KDE的免费终端仿真器，最初由Lars Doelle创造。

#### Konsole的特性

* 多标签式终端
* 半透明背景
* 支持拆分视图模式
* 目录和SSH书签化
* 可定制的配色方案
* 可定制的按键绑定
* 终端中的活动通知警告
* 增量搜索
* 支持Dolphin文件管理器
* 支持导出显示为普通文本和HTML格式

![Konsole Terminal](/data/attachment/album/201507/01/232614yzp7qx5qqifpjxww.jpg)

*Konsole 终端*

* [Konsole 主页](http://konsole.kde.org/)

### 11. TermKit

TermKit是一款漂亮简洁的终端，其目标是用WebKit渲染引擎在基于应用程序的命令行中构建出GUI视图（LCTT 译注：这个描述比较模糊，请参考截图，或安装一个体验下），WebKit渲染引擎在Google Chrome和Chromium中广泛使用。TermKit起初是为Mac和Windows设计的，但是由于Floby对TermKit 构建了分支，现在你可以将它安装在Linux发行版上并感受TermKit带来的魅力。

![TermKit Terminal](/data/attachment/album/201507/01/232619ff21ks182t2f2akf.jpg)

*TermKit 终端*

* [TermKit 主页](https://github.com/unconed/TermKit)

### 12. st

st是一款简单的X Window终端。

![st terminal](/data/attachment/album/201507/01/232623c6lilow734jwhlli.png)

*st 终端*

* [st 主页](http://st.suckless.org/)

### 13. Gnome 终端

GNOME终端是一款在GNOME桌面环境下自带的终端仿真器，由Havoc Pennington和其他一些人共同开发。它允许用户在GNOME环境下可以使用一个真实的Linux shell来运行命令。GNOME终端是模仿了xterm终端仿真器，并有一些相似的特性。

Gnome终端支持多配置文件，用户可以为他们的账户创建多个配置文件，每个配置文件能自定义配置选项，如字体、颜色、背景图片、行为习惯等等，并能分别给每个配置文件取名。它也支持鼠标事件、url探测、多标签等。

![Gnome Terminal](/data/attachment/album/201507/01/232645ew0d0s80kxg6i06m.jpg)

*Gnome 终端*

* [Gnome 终端](https://help.gnome.org/users/gnome-terminal/stable/)

### 14. Final Term

Final Term是一款漂亮的开源终端仿真器，在这一个单独的界面里蕴藏着一些令人激动的特性和方便的功能。虽然它仍然有待改进，但是它提供了一些重要的特性比如“语义”文本菜单、智能的命令行补全、GUI终端控制、全能的快捷键、彩色支持等等。以下动图抓取并演示了它们的一些特性，点开来看看吧。

![FinalTerm Terminal](/data/attachment/album/201507/01/232729duna09hlijyufyn6.gif)

*FinalTerm 终端*

* [Final Term](http://finalterm.org/)

### 15. Terminology

Terminology是又一款新的现代化终端仿真器，为Enlightenment桌面创造，但也能用于其它桌面环境。它有一些独一无二的棒极了的特性，这是其它终端仿真器所不具备的。

抛开这些特性，terminology甚至还提供了你无法从其它仿真器看到的东西，比如图像、视频和文档的缩略图预览，它允许你从Terminology直接就能看到那些文件。

你可以来看看Terminology的开发人员制作的小视频(视频画质不太清晰，但足以让你了解Terminology了)： <https://www.youtube.com/ibPziLRGvkg>

* [Terminology](http://www.enlightenment.org/p.php?p=about/terminology)

### 16. Xfce4 终端

Xfce终端是一款轻量级的现代化终端仿真器，它简单易用，为Xfce桌面环境设计。它最新的一个版本有许多新的炫酷特性，比如搜索对话框、标签颜色转换器、像Guake或Yakuake一样的下拉式控制台等等。

![Xfce Terminal](/data/attachment/album/201507/01/232738rr26pmna6hxwr2xm.jpg)

*Xfce 终端*

* [Xfce4 终端](http://docs.xfce.org/apps/terminal/start)

### 17. xterm

xterm应用是一款标准的在X Window系统上的终端仿真器。它保持了对DEC VT102和Tektronix 4014终端的兼容，以支持那些不能直接使用窗口系统的应用。

![xterm Terminal](/data/attachment/album/201507/01/232752jyeggf6jdde3ddzf.jpg)

*xterm 终端*

* [xterm](http://invisible-island.net/xterm/)

### 18. LilyTerm

LilyTerm是一款基于libvte的开源终端仿真器，这款不太出名的仿真器追求的是快速和轻量级。LilyTerm也包括一些关键特性：

* 支持标签、彩色以及标签重新排序
* 通过快捷键管理标签
* 支持背景透明化和饱和度调整
* 支持用户创建配置文件
* 若干个自定义选项
* 广泛支持UTF-8

![Lilyterm Terminal](/data/attachment/album/201507/01/232758niu91ifx1d6ij69i.jpg)

*Lilyterm 终端*

* [LilyTerm](http://lilyterm.luna.com.tw/)

### 19. Sakura

Sakura是另一款不知名的Unix风格终端仿真器，是为命令行模式和基于文本的终端程序开发的。Sakura基于GTK和livte，自身特性不多，不过还是有一些自定义选项，比如多标签支持、自定义文本颜色、字体和背景图片、快速命令处理等等。

![Sakura Terminal](/data/attachment/album/201507/01/232807ab29j59jbsc1c0ej.jpg)

*Sakura 终端*

* [Sakura](https://launchpad.net/sakura)

### 20. rxvt-unicode

rxvt-unicode (也称为urxvt) 是另一个高度可定制、轻量级和快速的终端仿真器，支持xft和unicode，由Marc Lehmann开发。它有许多显著特性，比如通过Unicode支持国际化语言，能显示多种字体类型并支持Perl扩展。

![rxvt unicode](/data/attachment/album/201507/01/232809oto4tl8uol44e6zt.png)

*rxvt unicode*

* [rxvt-unicode](http://software.schmorp.de/pkg/rxvt-unicode)

如果你知道任何其它强大的Linux终端仿真器而上文未提及，欢迎在评论中与我们分享。

---

via: <http://www.tecmint.com/linux-terminal-emulators/>

作者：[Ravi Saive](http://www.tecmint.com/author/admin/) 译者：[ZTinoZ](https://github.com/ZTinoZ) 校对：[wxy](https://github.com/wxy)

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


如何在 Linux 上 使用 ONLYOFFICE 协同编辑文档

Summary: 多年前由一些紧张兮兮的、带有强迫症的助理开发的 Bulletin，只是一个放在共享文件夹中只有 Emily 和我可以访问的 Word 文档而已。同一时间我们只有一个人可以打开它并添加消息、想法，或者给条目列表上增加问题。然后我们再打印出更新后的版本并放到我桌子架上的剪贴板，并在完成时删除旧的内容。（《穿普拉达的女王》，劳伦魏丝伯格著 ）  直到今天人们仍然在使用这样的协同编辑，只有一个人可以打开共享文件，对其进行更改，然后告诉其它人什么时候修改了什么。  ONLYOFFICE 是一款集成了文档、电子邮件、事件、任务和客户关系管理工具

http://blog.csdn.net/hotqin888/article/details/79337881<br />
专门针对ONLYOFFICE界面汉化和中文字体。

亲自试验了才知道，onlyoffice document server只能连接20个同时进行编辑。自己电脑都可以试出来，浏览器打开20个文档标签页，就会有提示，再打开多的就只能看，不能编辑了。

>
> “多年前由一些紧张兮兮的、带有强迫症的助理开发的 Bulletin，只是一个放在共享文件夹中只有 Emily 和我可以访问的 Word 文档而已。同一时间我们只有一个人可以打开它并添加消息、想法，或者给条目列表上增加问题。然后我们再打印出更新后的版本并放到我桌子架上的剪贴板，并在完成时删除旧的内容。”（——《穿普拉达的女王》，劳伦·魏丝伯格著 ）
>
>
>

直到今天人们仍然在使用这样的“协同编辑”，只有一个人可以打开共享文件，对其进行更改，然后告诉其它人什么时候修改了什么。

![](/data/attachment/album/201507/02/155124xlwi2t9sse3rfiyl.jpg)

ONLYOFFICE 是一款集成了文档、电子邮件、事件、任务和客户关系管理工具的开源在线办公套件。

使用 ONLYOFFICE 办公套件，一组人可以同时编辑文本、电子表格或者在浏览器上进行展示。可以直接在他们的文档上留下评论并用其中集成的聊天工具和其他人沟通。最后，可以保存文档为 PDF 文件并打印。作为额外的增强功能，它还能浏览文档历史并在如果需要时恢复到之前的修订/版本。

在这篇教程中，我会介绍如何使用 [免费版 ONLYOFFICE](http://www.onlyoffice.org/) 部署你自己的在线办公套件，免费版 ONLYOFFICE 是 ONLYOFFICE 在 GNU AGPL v3 协议下发布的自托管版本。

### 在 Linux 上安装 ONLYOFFICE

安装 ONLYOFFICE 要求在你的 Linux 系统上要有 mono（4.0.0 或更高版本）、nodejs、libstdc++6、nginx 和 mysql-server。为了简化安装过程并避免依赖错误，我使用 Docker 安装 ONLYOFFICE。在这种情况下只需要安装一种依赖 - [Docker](http://xmodulo.com/recommend/dockerbook)。

提醒一下，Docker 是一个在软件容器中自动部署应用的开源项目。如果在你的 Linux 系统上 Docker 不可用，首先根据 [基于 Debian](http://xmodulo.com/manage-linux-containers-docker-ubuntu.html) 或 [基于 Red-Hat](http://xmodulo.com/docker-containers-centos-fedora.html) 系统的 Docker 安装指令安装它。

注意，你需要 Docker 1.4.1 或更高版本。要检查安装的 Docker 版本，可以使用下面的命令。

```
$ docker version

```

在一个 Docker 容器中试用 ONLYOFFICE，只需要执行下面的命令：

```
$ sudo docker run -i -t -d --name onlyoffice-document-server onlyoffice/documentserver
$ sudo docker run -i -t -d -p 80:80 -p 443:443 --link onlyoffice-document-server:document_server onlyoffice/communityserver

```

这些命令会下载为了能正常运行带有所有所需依赖的 [官方 ONLYOFFICE Docker 镜像](https://registry.hub.docker.com/u/onlyoffice/communityserver/)。

也可以在 Linux 服务器上单独安装 [ONLYOFFICE 在线编辑器](http://onlyoffice.org/sources#document)，并通过提供的 API 轻松地集成到你的站点或云应用。

### 运行自行托管的在线 Office

要打开你的在线 office，在你浏览器的地址栏输入 localhost（http://IP地址/）。会打开欢迎页面：

![](/data/attachment/album/201507/02/155129pt7ew77g7puopwgh.jpg)

输入一个密码并指定下次访问你的 office 所使用的电子邮件地址。

### 在线编辑文档

首先点击 Document 链接打开 **the My Documents** 文件夹。

![](/data/attachment/album/201507/02/155131opilpalbk2gbz8kc.jpg)

#### STEP 1. 选择需要编辑的文档

要在这里新建一个新文档，点击左上角的 “Create” 按钮，从下拉列表中选择文件类型。要编辑保存在你硬盘中的文件，点击 **Create** 按钮旁边的 **Upload** 按钮上传文件到 **Document**。

![](/data/attachment/album/201507/02/155132op4aiaazfaefrzey.jpg)

#### STEP 2. 共享文档

如果你在 **My Documents** 文件夹中，用右边的 **Share** 按钮，或者如果你在文档中，用 **File >> Document Info ... >> Change Access Rights**。

在打开的 **Sharing Settings** 窗口，点击左边的 **People outside portal** 链接，打开到文档的访问，并通过启用 **Full Access** 单选按钮给予完全访问权限。

最后，选择一种方式共享到你文档的链接，通过 email 或者你可用的一种社交网络：Google+、Facebook 或 Twitter 发送。

![](/data/attachment/album/201507/02/155133sfc7a66bp7hcccfe.jpg)

#### STEP 3. 开始协同编辑

邀请的人只需要根据提供的链接就可以开始协同编辑文档。

它会自动用不用颜色的虚线将你的合作者编辑的文本段落标记出来。

![](/data/attachment/album/201507/02/155134baa92w51vl1aaetn.jpg)

只要你的其中一个协作者保存了他/她的更改，你会看到在顶部工具栏左上角出现了一个提示标签，表示这里有更新。

![](/data/attachment/album/201507/02/155134sy0xnxbu1gtuocyv.jpg)

点击 **Save** 图标保存更改并更新。然后会高亮所有的更新。

![](/data/attachment/album/201507/02/155135ef6l14dgyjqf4oxu.jpg)

#### STEP 4. 和协作者互动

要写评论，用鼠标选择一个文本段落，右击并从上下文菜单中选择 **Add comment** 选项。

![](/data/attachment/album/201507/02/155135fpifjq93lclxp1ue.jpg)

要和协作者实时互动，可以使用集成的聊天工具。**Chat** 面板会列出所有正在编辑文档的用户。点击左侧边栏的 **Chat** 图标打开它。在 **Chat** 面板的合适区域输入你的信息开始讨论。

![](/data/attachment/album/201507/02/155136jukuzy121y1que0k.jpg)

### 有用的提示

最后，这里有一些你充分利用 ONLYOFFICE 的有用提示。

#### Tip #1. 在云存储服务例如 ownCloud 上编辑文档

如果你将文档存储在其它网络资源上，例如 Box、Dropbox、Google Drive、OneDrive、SharePoint 或 ownCloud，你可以轻松地和 ONLYOFFICE 同步。

在打开的 ‘Documents’ 模块，点击 **Add the account** 下面的其中一个图标：Google、Box、DropBox、OneDrive、ownCloud 或 ‘Add account’，并输入所需数据。

#### Tip #2. 在 iPad 上编辑文档

要随时随地对文件进行修改，我使用 iPad 的 ONLYOFFICE Documents 应用。你可以从 [iTune](https://itunes.apple.com/us/app/onlyoffice-documents/id944896972) 下载并安装它，然后你需要输入你的 ONLYOFFICE 地址、email 和密码来访问你的文档。功能设置几乎一样。

为了评估 ONLYOFFICE 在线编辑器的功能，你可以使用供个人使用的 [云版本](https://personal.onlyoffice.com/)。

---

via: <http://xmodulo.com/edit-documents-collaboratively-linux.html>

作者：[Tatiana Kochedykova](http://xmodulo.com/author/tatiana) 译者：[ictlyh](https://github.com/ictlyh) 校对：[wxy](https://github.com/wxy)

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