2016年7月

现在,你可以很容易的找到大量的 Linux 终端模拟器,每一个都可以给用户留下深刻的印象。

但是,很多时候,我们会很难根据我们的喜好来找到一款心仪的日常使用的终端模拟器。这篇文章中,我们将会推荐一款叫做 Terminix 的令人激动的终端模拟机。

Terminix Linux 终端模拟器

Terminix 是一个使用 VTE GTK+ 3 组件的平铺式终端模拟器。使用 GTK 3 开发的原因主要是为了符合 GNOME HIG( 人机接口 Human Interface Guidelines ) 标准。另外,Terminix 已经在 GNOME 和 Unity 桌面环境下测试过了,也有用户在其他的 Linux 桌面环境下测试成功。

和其他的终端模拟器一样,Terminix 有着很多知名的特征,列表如下:

  • 允许用户进行任意的垂直或者水平分屏
  • 支持拖拽功能来进行重新排布终端
  • 支持使用拖拽的方式终端从窗口中将脱离出来
  • 支持终端之间的输入同步,因此,可以在一个终端输入命令,而在另一个终端同步复现
  • 终端的分组配置可以保存在硬盘,并再次加载
  • 支持透明背景
  • 允许使用背景图片
  • 基于主机和目录来自动切换配置
  • 支持进程完成的通知信息
  • 配色方案采用文件存储,同时支持自定义配色方案

如何在 Linux 系统上安装 Terminix

现在来详细说明一下在不同的 Linux 发行版本上安装 Terminix 的步骤。首先,在此列出 Terminix 在 Linux 所需要的环境需求。

依赖组件

为了正常运行,该应用需要使用如下库:

  • GTK 3.14 或者以上版本
  • GTK VTE 0.42 或者以上版本
  • Dconf
  • GSettings
  • Nautilus 的 iNautilus-Python 插件

如果你已经满足了如上的系统要求,接下来就是安装 Terminix 的步骤。

在 RHEL/CentOS 7 或者 Fedora 22-24 上

首先,你需要通过新建文件 /etc/yum.repos.d/terminix.repo 来增加软件仓库,使用你最喜欢的文本编辑器来进行编辑:

# vi /etc/yum.repos.d/terminix.repo

然后拷贝如下的文字到我们刚新建的文件中:

[heikoada-terminix]
name=Copr repo for terminix owned by heikoada
baseurl=https://copr-be.cloud.fedoraproject.org/results/heikoada/terminix/fedora-$releasever-$basearch/
skip_if_unavailable=True
gpgcheck=1
gpgkey=https://copr-be.cloud.fedoraproject.org/results/heikoada/terminix/pubkey.gpg
enabled=1
enabled_metadata=1

保存文件并退出。

然后更新你的系统,并且安装 Terminix,步骤如下:

---------------- On RHEL/CentOS 7 ---------------- 
# yum update
# yum install terminix

---------------- On Fedora 22-24 ---------------- 
# dnf update
# dnf install terminix

在 Ubuntu 16.04-14.04 和 Linux Mint 18-17

虽然没有基于 Debian/Ubuntu 发行版本的官方的软件包,但是你依旧可以通过如下的命令手动安装。

$ wget -c https://github.com/gnunn1/terminix/releases/download/1.1.1/terminix.zip
$ sudo unzip terminix.zip -d / 
$ sudo glib-compile-schemas /usr/share/glib-2.0/schemas/

其它 Linux 发行版

OpenSUSE 用户可以从默认仓库中安装 Terminix,Arch Linux 用户也可以安装 AUR Terminix 软件包

Terminix 截图教程

Terminix 终端

Terminix 终端设置

Terminix 多终端界面

如何卸载删除 Terminix

如果你是手动安装的 Terminix 并且想要删除它,那么你可以参照如下的步骤来卸载它。从 Github 仓库上下载 uninstall.sh,并且给它可执行权限并且执行它:

$ wget -c https://github.com/gnunn1/terminix/blob/master/uninstall.sh
$ chmod +x uninstall.sh
$ sudo sh uninstall.sh

但是如果你是通过包管理器安装的 Terminix,你可以使用包管理器来卸载它。

在这篇介绍中,我们在众多优秀的终端模拟器中发现了一个重要的 Linux 终端模拟器。你可以尝试着去体验下它的新特性,并且可以将它和你现在使用的终端进行比较。

重要的一点,如果你想得到更多信息或者有疑问,请使用评论区,而且不要忘了,给我一个关于你使用体验的反馈。


via: http://www.tecmint.com/terminix-tiling-terminal-emulator-for-linux/

作者:Aaron Kili 译者:MikeCoder 校对:wxy

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

在 awk 系列的第六节,我们来看一下next命令 ,它告诉 awk 跳过你所提供的所有剩下的模式和表达式,直接处理下一个输入行。

next 命令帮助你阻止运行命令执行过程中多余的步骤。

要明白它是如何工作的, 让我们来分析一下 food\_list.txt 它看起来像这样:

Food List Items
No      Item_Name               Price           Quantity
1       Mangoes                 $3.45              5
2       Apples                  $2.45              25
3       Pineapples              $4.45              55
4       Tomatoes                $3.45              25
5       Onions                  $1.45              15
6       Bananas                 $3.45              30

运行下面的命令,它将在每个食物数量小于或者等于 20 的行后面标一个星号:

# awk '$4 <= 20 { printf "%s\t%s\n", $0,"*" ; } $4 > 20 { print $0 ;} ' food_list.txt 

No    Item_Name     Price      Quantity
1     Mangoes       $3.45       5    *
2     Apples        $2.45      25
3     Pineapples    $4.45      55
4     Tomatoes      $3.45      25 
5     Onions        $1.45      15   *
6     Bananas       $3.45      30

上面的命令实际运行如下:

  • 首先,它用$4 <= 20表达式检查每个输入行的第四列(数量(Quantity))是否小于或者等于 20,如果满足条件,它将在末尾打一个星号 (*)
  • 接着,它用$4 > 20表达式检查每个输入行的第四列是否大于20,如果满足条件,显示出来。

但是这里有一个问题, 当第一个表达式用{ printf "%s\t%s\n", $0,"**" ; }命令进行标注的时候在同样的步骤第二个表达式也进行了判断这样就浪费了时间.

因此当我们已经用第一个表达式打印标志行的时候就不再需要用第二个表达式$4 > 20再次打印。

要处理这个问题, 我们需要用到next 命令:

# awk '$4 <= 20 { printf "%s\t%s\n", $0,"*" ; next; } $4 > 20 { print $0 ;} ' food_list.txt

No  Item_Name       Price           Quantity
1     Mangoes       $3.45               5   *
2     Apples        $2.45              25
3     Pineapples    $4.45              55
4     Tomatoes      $3.45              25 
5     Onions        $1.45              15   *
6     Bananas       $3.45              30

当输入行用$4 <= 20 { printf "%s\t%s\n", $0,"*" ; next ; }命令打印以后,next命令将跳过第二个$4 > 20 { print $0 ;}表达式,继续判断下一个输入行,而不是浪费时间继续判断一下是不是当前输入行还大于 20。

next命令在编写高效的命令脚本时候是非常重要的,它可以提高脚本速度。本系列的下一部分我们将来学习如何使用 awk 来处理标准输入(STDIN)。

希望这篇文章对你有帮助,你可以给我们留言。


via: http://www.tecmint.com/use-next-command-with-awk-in-linux/

作者:Aaron Kili 译者:kokialoves 校对:wxy

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

图片来源 : opensource.com

开源共享生态圈内容纳了许多各异的项目,它们每一个都给出了自己的解决方案,且每一个都不按套路来。有很多原因导致你选择开源的解决方案,而非 Dropbox、Google Drive、iCloud 或 OneDrive 这些商业的解决方案。这些商业的解决方案虽然能让你不必为如何管理数据担心,但也理所应当的带着种种限制,其中就包括对于原有基础结构的控制和整合不足。

对于用户而言仍有相当一部分可供选择的文件分享和同步的替代品,其中就包括了 Pydio 和 ownCloud。

Pydio

Pydio ( 把你的数据放上轨道 Put your data in orbit ) 项目由一位作曲家 Charles du Jeu 发起,起初他只是需要一种与乐队成员分享大型音频文件的方法。Pydio 是一种文件分享与同步的解决方案,综合了多存储后端,设计时还同时考虑了开发者和系统管理员两方面。在世界各地有逾百万的下载量,已被翻译成 27 种语言。

项目在刚开始的时候便开源了,先是在 SourceForge 上茁壮的成长,现在已在 GitHub 上安了家。

用户界面基于 Google 的 Material 设计风格。用户可以使用现有的传统文件基础结构或是根据预估的需求部署 Pydio,并通过 web、桌面和移动端应用随时随地地管理自己的东西。对于管理员来说,细粒度的访问权限绝对是配置访问时的利器。

Pydio 社区,你可以找到许多让你增速的资源。Pydio 网站 对于如何为 Pydio GitHub 仓库贡献 给出了明确的指导方案。论坛中也包含了开发者板块和社区。

ownCloud

ownCloud 在世界各地拥有逾 8 百万的用户,它是一个开源、自行管理的文件同步共享技术。同步客户端支持所有主流平台并支持 WebDAV 通过 web 界面实现。ownCloud 拥有简单的使用界面,强大的管理工具,和大规模的共享及协作功能——以满足用户管理数据时的需求。

ownCloud 的开放式架构是通过 API 和为应用提供平台来实现可扩展性的。迄今已有逾 300 款应用,功能包括处理像日历、联系人、邮件、音乐、密码、笔记等诸多数据类型。ownCloud 由一个数百位贡献者的国际化的社区开发,安全,并且能做到为小到一个树莓派大到好几百万用户的 PB 级存储集群量身定制。

联合共享 Federated sharing

文件共享开始转向团队合作时代,而标准化为合作提供了坚实的土壤。

联合共享 Federated sharing ——一个由 OpenCloudMesh 项目提供的新的开放标准,就是在这个方向迈出的一步。先不说别的,在支持该标准的服务器之间分享文件和文件夹,比如说 Pydio 和 ownCloud。

ownCloud 7 率先引入该标准,这种服务器到服务器的分享方式可以让你挂载远程服务器上共享的文件,实际上就是创建你自己的云上之云。你可以直接为其它支持联合共享的服务器上的用户创建共享链接。

实现这个新的 API 允许存储解决方案之间更深层次的集成,同时保留了原有平台的安全,控制和特性。

“交换和共享文件是当下和未来不可或缺的东西。”ownCloud 的创始人 Frank Karlitschek 说道:“正因如此,采用联合和分布的方式而非集中的数据孤岛就显得至关重要。联合共享的设计初衷便是在保证安全和用户隐私的同时追求分享的无缝、至简之道。”

下一步是什么呢?

正如 OpenCloudMesh 做的那样,将会通过像 Pydio 和 ownCloud 这样的机构和公司,合作推广这一文件共享的新开放标准。ownCloud 9 已经引入联合的服务器之间交换用户列表的功能,让你的用户们在你的服务器上享有和你同样的无缝体验。将来,一个中央地址簿服务(联合的)集合,用以检索其他联合云 ID 的构想可能会把云间合作推向一个新的高度。

这一举措无疑有助于日益开放的技术社区中的那些成员方便地讨论,开发,并推动“OCM 分享 API”作为一个厂商中立协议。所有领导 OCM 项目的合作伙伴都全心致力于开放 API 的设计原则,并欢迎其他开源的文件分享和同步社区参与并加入其中。


via: https://opensource.com/business/16/5/sharing-files-pydio-owncloud

作者:ben van 't ende 译者:martin2011qi 校对:wxy

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

前两天我们报道过,微软为 Linux 带来了全新的 Skype 客户端,功能与 Windows 下的最新客户端保持看齐。但是,这个新的 Linux 客户端是基于 WebRTC 的,其事实上宣告了在 Linux 和 OS X 下的原生客户端的终结——虽然它们相对于 Windows 下的客户端比较老旧了,无论是界面和功能。

这是因为,Skype 整个重构了,用以云为中心的代码架构替代了之前的点对点架构。现在的 Windows、iOS、Android 和 Web 浏览器下的 Skype 客户端都已经是基于新的云架构,因此,这次发布的 Linux 客户端也采用了同样的架构。

微软并没有向 Mac 和 Linux 用户宣布原生客户端终结的日期,你现在仍然可以下载到这些应用。但是很显然,微软将不会再为这些臃肿的 OS X 和 Linux 原生客户端投入更多金钱和精力。

在 Skype 博客上的一篇博文中,微软提到了它将更关注于“核心平台”,换言之,就是“更新的发布、更轻、更快的在 Windows 10、iPhone、iPad 和 Android 下的应用。”Linux、OS X 下的客户端 (以及旧式 Windows 版本)最终将会被“基于 Web 的原生版本 Skype ”所取代,“得益于最新的 ORTC / WebRTC 技术”,它会运行在浏览器里。

发布于 2003 年的 Skype 原本由于其可以穿透防火墙的 VoIP 技术而得到了快速发展,从而先后被 eBay 和微软收购。然而当微软完成了向云迈进的转型之后,它就只剩下一个牌子和外壳了,它之前的点对点网络、各种特色的服务,终将消逝。

微软认为他们需要重构 Skype 以改进其通话品质:当语音数据传送到微软的云端时,他们可以对进出的数据进行处理,也就是说,可以控制语音质量。当然,用户的体验仍然与其带宽、ISP 等有关。那些特色服务也会有新的解决方案,现在已经是一个轻量、移动优先的时代了,这些功能都可以放到云端,而不是每个客户端里面。因此,微软可以向这些用户提供新的、增强的功能,比如更好的文件共享服务、视频通话、群聊、翻译以及机器人等等。

没有理由认为微软会取消 Skype 的加密通讯机制,但是离开了点对点模式,显然会增加用户在隐私方面的忧虑。

如今,其点对点 IM 使用的是 AES 256 加密,而通过云传输时则使用的是 TLS。当通话双方都是在网络上时,他们都是通过 TLS 传输的,而拨到电话时则仍旧采用 AES 256。

然而,并不清楚是否是端到端加密,由客户端之间进行加密协商,这一点上微软并没有给出明确的答案。如果加密只是在微软和客户端之间协商建立,用户肯定会面临着其传输的数据被协助司法调查。这一点不像 WhatsApp,微软将有能力做到监听。

一直以来在查对条件是否匹配时,我们使用的都是简单的表达式。那如果你想用超过一个表达式来查对特定的条件呢?

本文中,我们将看看如何在过滤文本和字符串时,结合多个表达式,即复合表达式,用以查对条件。

awk 的复合表达式可由表示“与”的组合操作符 && 和表示“或”的 || 构成。

复合表达式的常规写法如下:

( 第一个表达式 ) && ( 第二个表达式 )

这里只有当“第一个表达式” 和“第二个表达式”都是真值时整个表达式才为真。

( 第一个表达式 ) || ( 第二个表达式) 

这里只要“第一个表达式” 为真或“第二个表达式”为真,整个表达式就为真。

注意:切记要加括号。

表达式可以由比较操作符构成,具体可查看 awk 系列的第四节

现在让我们通过一个例子来加深理解:

此例中,有一个文本文件 tecmint_deals.txt,文本中包含着一张随机的 Tecmint 交易清单,其中包含了名称、价格和种类。

TecMint Deal List
No      Name                                    Price           Type
1       Mac_OS_X_Cleanup_Suite                  $9.99           Software
2       Basics_Notebook                         $14.99          Lifestyle
3       Tactical_Pen                            $25.99          Lifestyle
4       Scapple                                 $19.00          Unknown
5       Nano_Tool_Pack                          $11.99          Unknown
6       Ditto_Bluetooth_Altering_Device         $33.00          Tech
7       Nano_Prowler_Mini_Drone                 $36.99          Tech 

我们只想打印出价格超过 $20 且其种类为 “Tech” 的物品,在其行末用 (*) 打上标记。

我们将要执行以下命令。

# awk '($3 ~ /^\$[2-9][0-9]*\.[0-9][0-9]$/) && ($4=="Tech") { printf "%s\t%s\n",$0,"*"; } ' tecmint_deals.txt 

6   Ditto_Bluetooth_Altering_Device     $33.00      Tech    *
7   Nano_Prowler_Mini_Drone         $36.99          Tech     *

此例,在复合表达式中我们使用了两个表达式:

  • 表达式 1:($3 ~ /^\$[2-9][0-9]*\.[0-9][0-9]$/) ;查找交易价格超过 $20 的行,即只有当 $3 也就是价格满足 /^\$[2-9][0-9]*\.[0-9][0-9]$/ 时值才为真值。
  • 表达式 2:($4 == “Tech”) ;查找是否有种类为 “Tech”的交易,即只有当 $4 等于 “Tech” 时值才为真值。 切记,只有当 && 操作符的两端状态,也就是两个表达式都是真值的情况下,这一行才会被打上 (*) 标志。

总结

有些时候为了真正符合你的需求,就不得不用到复合表达式。当你掌握了比较和复合表达式操作符的用法之后,复杂的文本或字符串过滤条件也能轻松解决。

希望本向导对你有所帮助,如果你有任何问题或者补充,可以在下方发表评论,你的问题将会得到相应的解释。


via: http://www.tecmint.com/combine-multiple-expressions-in-awk/

作者:Aaron Kili 译者:martin2011qi 校对:wxy

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

作为一个 Ubuntu 16.04 LTS 的初学者。如何在 Ubuntu 14.04 和 16.04 的主机上搭建网桥呢?

顾名思义,网桥的作用是通过物理接口连接内部和外部网络。对于虚拟端口或者 LXC/KVM/Xen/容器来说,这非常有用。网桥虚拟端口看起来是网络上的一个常规设备。在这个教程中,我将会介绍如何在 Ubuntu 服务器上通过 bridge-utils (brctl) 命令行来配置 Linux 网桥。

网桥化的网络示例

图 01: Kvm/Xen/LXC 容器网桥示例 (br0)

在这个例子中,eth0 和 eth1 是物理网络接口。eth0 连接着局域网,eth1 连接着上游路由器和互联网。

安装 bridge-utils

使用 apt-get 命令 安装 bridge-utils:

$ sudo apt-get install bridge-utils

或者

$ sudo apt install bridge-utils

样例输出:

图 02: Ubuntu 安装 bridge-utils 包

在 Ubuntu 服务器上创建网桥

使用你熟悉的文本编辑器修改 /etc/network/interfaces ,例如 vi 或者 nano :

$ sudo cp /etc/network/interfaces /etc/network/interfaces.bakup-1-july-2016
$ sudo vi /etc/network/interfaces

接下来设置 eth1 并且将它映射到 br1 ,输入如下(删除或者注释所有 eth1 相关配置):

### br1 使用静态公网 IP 地址,并以 ISP 的路由器作为网关
auto br1
iface br1 inet static
        address 208.43.222.51
        network 255.255.255.248
        netmask 255.255.255.0
        broadcast 208.43.222.55
        gateway 208.43.222.49
        bridge_ports eth1
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

接下来设置 eth0 并将它映射到 br0,输入如下(删除或者注释所有 eth0 相关配置):

auto br0
iface br0 inet static
        address 10.18.44.26
        netmask 255.255.255.192
        broadcast 10.18.44.63
        dns-nameservers 10.0.80.11 10.0.80.12
        # set static route for LAN
        post-up route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.18.44.1
        post-up route add -net 161.26.0.0 netmask 255.255.0.0 gw 10.18.44.1
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

关于 br0 和 DHCP 的一点说明

如果使用 DHCP ,配置选项是这样的:

auto br0
iface br0 inet dhcp
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

保存并且关闭文件。

重启服务器或者网络服务

你需要重启服务器或者输入下列命令来重启网络服务(在 SSH 登录的会话中这可能不管用):

$ sudo systemctl restart networking

如果你证使用 Ubuntu 14.04 LTS 或者更老的没有 systemd 的系统,输入:

$ sudo /etc/init.d/restart networking

验证网络配置成功

使用 ping/ip 命令来验证 LAN 和 WAN 网络接口运行正常:

### 查看 br0 和 br1
ip a show
### 查看路由信息
ip r
### ping 外部站点
ping -c 2 cyberciti.biz
### ping 局域网服务器
ping -c 2 10.0.80.12

样例输出:

图 03: 验证网桥的以太网连接

现在,你就可以配置 br0 和 br1 来让 XEN/KVM/LXC 容器访问因特网或者私有局域网了。再也没有必要去设置特定路由或者 iptables 的 SNAT 规则了。


via: http://www.cyberciti.biz/faq/how-to-create-bridge-interface-ubuntu-linux/

作者:VIVEK GITE 译者:MikeCoder 校对:wxy

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