Aaron Kili 发布的文章

在这篇文章中,我们会点评一些可以在 Linux 上安装使用的最好的 Markdown 编辑器。 你可以在 Linux 平台上找到非常多的 的 Markdown 编辑器,但是在这里我们将尽可能地为您推荐那些最好的。

Best Linux Markdown Editors

对于不了解 Markdown 的人做个简单介绍,Markdown 是由著名的 Aaron Swartz 和 John Gruber 发明的标记语言,其最初的解析器是一个用 Perl 写的简单、轻量的同名工具。它可以将用户写的纯文本转为可用的 HTML(或 XHTML)。它实际上是一门易读,易写的纯文本语言,以及一个用于将文本转为 HTML 的转换工具。

希望你先对 Markdown 有一个稍微的了解,接下来让我们逐一列出这些编辑器。

1. Atom

Atom 是一个现代的、跨平台、开源且强大的文本编辑器,它可以运行在 Linux、Windows 和 MAC OS X 等操作系统上。用户可以在它的基础上进行定制,删减修改任何配置文件。

它包含了一些非常杰出的特性:

  • 内置软件包管理器
  • 智能自动补全功能
  • 提供多窗口操作
  • 支持查找替换功能
  • 包含一个文件系统浏览器
  • 轻松自定义主题
  • 开源、高度扩展性的软件包等

Atom Markdown Editor for Linux

访问主页: https://atom.io/

2. GNU Emacs

Emacs 是 Linux 平台上一款的流行文本编辑器。它是一个非常棒的、具备高扩展性和定制性的 Markdown 语言编辑器。

它综合了以下这些神奇的特性:

  • 带有丰富的内置文档,包括适合初学者的教程
  • 有完整的 Unicode 支持,可显示所有的人类符号
  • 支持内容识别的文本编辑模式
  • 包括多种文件类型的语法高亮
  • 可用 Emacs Lisp 或 GUI 对其进行高度定制
  • 提供了一个包系统可用来下载安装各种扩展等

Emacs Markdown Editor for Linux

访问主页: https://www.gnu.org/software/emacs/

3. Remarkable

Remarkable 可能是 Linux 上最好的 Markdown 编辑器了,它也适用于 Windows 操作系统。它的确是是一个卓越且功能齐全的 Markdown 编辑器,为用户提供了一些令人激动的特性。

一些卓越的特性:

  • 支持实时预览
  • 支持导出 PDF 和 HTML
  • 支持 Github Markdown 语法
  • 支持定制 CSS
  • 支持语法高亮
  • 提供键盘快捷键
  • 高可定制性和其他

Remarkable Markdown Editor for Linux

访问主页: https://remarkableapp.github.io

4. Haroopad

Haroopad 是为 Linux,Windows 和 Mac OS X 构建的跨平台 Markdown 文档处理程序。用户可以用它来书写许多专家级格式的文档,包括电子邮件、报告、博客、演示文稿和博客文章等等。

功能齐全且具备以下的亮点:

  • 轻松导入内容
  • 支持导出多种格式
  • 广泛支持博客和邮件
  • 支持许多数学表达式
  • 支持 Github Markdown 扩展
  • 为用户提供了一些令人兴奋的主题、皮肤和 UI 组件等等

Haroopad Markdown Editor for Linux

访问主页: http://pad.haroopress.com/

5. ReText

ReText 是为 Linux 和其它几个 POSIX 兼容操作系统提供的简单、轻量、强大的 Markdown 编辑器。它还可以作为一个 reStructuredText 编辑器,并且具有以下的特性:

  • 简单直观的 GUI
  • 具备高定制性,用户可以自定义语法文件和配置选项
  • 支持多种配色方案
  • 支持使用多种数学公式
  • 启用导出扩展等等

ReText Markdown Editor for Linux

访问主页: https://github.com/retext-project/retext

6. UberWriter

UberWriter 是一个简单、易用的 Linux Markdown 编辑器。它的开发受 Mac OS X 上的 iA writer 影响很大,同样它也具备这些卓越的特性:

  • 使用 pandoc 进行所有的文本到 HTML 的转换
  • 提供了一个简洁的 UI 界面
  • 提供了一种 专心 distraction free 模式,高亮用户最后的句子
  • 支持拼写检查
  • 支持全屏模式
  • 支持用 pandoc 导出 PDF、HTML 和 RTF
  • 启用语法高亮和数学函数等等

UberWriter Markdown Editor for Linux

访问主页: http://uberwriter.wolfvollprecht.de/

7. Mark My Words

Mark My Words 同样也是一个轻量、强大的 Markdown 编辑器。它是一个相对比较新的编辑器,因此提供了包含语法高亮在内的大量的功能,简单和直观的 UI。

下面是一些棒极了,但还未捆绑到应用中的功能:

  • 实时预览
  • Markdown 解析和文件 IO
  • 状态管理
  • 支持导出 PDF 和 HTML
  • 监测文件的修改
  • 支持首选项设置

MarkMyWords Markdown Editor for-Linux

访问主页: https://github.com/voldyman/MarkMyWords

8. Vim-Instant-Markdown 插件

Vim 是 Linux 上的一个久经考验的强大、流行而开源的文本编辑器。它用于编程极棒。它也高度支持插件功能,可以让用户为其增加一些其它功能,包括 Markdown 预览。

有好几种 Vim 的 Markdown 预览插件,但是 Vim-Instant-Markdown 的表现最佳。

9. Bracket-MarkdownPreview 插件

Brackets 是一个现代、轻量、开源且跨平台的文本编辑器。它特别为 Web 设计和开发而构建。它的一些重要功能包括:支持内联编辑器、实时预览、预处理支持及更多。

它也是通过插件高度可扩展的,你可以使用 Bracket-MarkdownPreview 插件来编写和预览 Markdown 文档。

Brackets Markdown Plugin Preview

10. SublimeText-Markdown 插件

Sublime Text 是一个精心打造的、流行的、跨平台文本编辑器,用于代码、markdown 和普通文本。它的表现极佳,包括如下令人兴奋的功能:

  • 简洁而美观的 GUI
  • 支持多重选择
  • 提供专心模式
  • 支持窗体分割编辑
  • 通过 Python 插件 API 支持高度插件化
  • 完全可定制化,提供命令查找模式

SublimeText-Markdown 插件是一个支持格式高亮的软件包,带有一些漂亮的颜色方案。

SublimeText Markdown Plugin Preview

结论

通过上面的列表,你大概已经知道要为你的 Linux 桌面下载、安装什么样的 Markdown 编辑器和文档处理程序了。

请注意,这里提到的最好的 Markdown 编辑器可能对你来说并不是最好的选择。因此你可以通过下面的反馈部分,为我们展示你认为列表中未提及的,并且具备足够的资格的,令人兴奋的 Markdown 编辑器。


via: http://www.tecmint.com/best-markdown-editors-for-linux/

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

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

在 awk 系列的前几节,我们看到大多数操作都是从一个文件或多个文件读取输入,或者你想要把标准输入作为 awk 的输入。

在 awk 系列的第七节中,我们将会看到几个例子,你可以筛选其他命令的输出代替从一个文件读取输入作为 awk 的输入。

我们首先从使用 dir 命令开始,它类似于 ls 命令,在第一个例子下面,我们使用 dir -l 命令的输出作为 awk 命令的输入,这样就可以打印出文件拥有者的用户名,所属组组名以及在当前路径下他/她拥有的文件。

# dir -l | awk '{print $3, $4, $9;}'

列出当前路径下的用户文件

再来看另一个例子,我们使用 awk 表达式 ,在这里,我们想要在 awk 命令里使用一个表达式筛选出字符串来打印出属于 root 用户的文件。命令如下:

# dir -l | awk '$3=="root" {print $1,$3,$4, $9;} '

列出 root 用户的文件

上面的命令包含了 (==) 来进行比较操作,这帮助我们在当前路径下筛选出 root 用户的文件。这是通过使用 $3=="root" 表达式实现的。

让我们再看另一个例子,我们使用一个 awk 比较运算符 来匹配一个确定的字符串。

这里,我们使用了 cat 命令 来浏览文件名为 tecmint\_deals.txt 的文件内容,并且我们想要仅仅查看有字符串 Tech 的部分,所以我们会运行下列命令:

# cat tecmint_deals.txt
# cat tecmint_deals.txt | awk '$4 ~ /tech/{print}'
# cat tecmint_deals.txt | awk '$4 ~ /Tech/{print}'

用 Awk 比较运算符匹配字符串

在上面的例子中,我们已经用了参数为 ~ /匹配字符/ 的比较操作,但是上面的两个命令给我们展示了一些很重要的问题。

当你运行带有 tech 字符串的命令时终端没有输出,因为在文件中没有 tech 这种字符串,但是运行带有 Tech 字符串的命令,你却会得到包含 Tech 的输出。

所以你应该在进行这种比较操作的时候时刻注意这种问题,正如我们在上面看到的那样,awk 对大小写很敏感。

你总是可以使用另一个命令的输出作为 awk 命令的输入来代替从一个文件中读取输入,这就像我们在上面看到的那样简单。

希望这些例子足够简单到可以使你理解 awk 的用法,如果你有任何问题,你可以在下面的评论区提问,记得查看 awk 系列接下来的章节内容,我们将关注 awk 的一些功能,比如变量,数字表达式以及赋值运算符。


via: http://www.tecmint.com/read-awk-input-from-stdin-in-linux/

作者:Aaron Kili 译者:vim-kakali 校对:wxy

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

现在,你可以很容易的找到大量的 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中国 荣誉推出

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

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

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中国 荣誉推出

对于 使用 awk 命令的用户来说,处理一行文本中的数字或者字符串时,使用比较运算符来过滤文本和字符串是十分方便的。

在 awk 系列的此部分中,我们将探讨一下如何使用比较运算符来过滤文本或者字符串。如果你是程序员,那么你应该已经熟悉了比较运算符;对于其它人,下面的部分将介绍比较运算符。

awk 中的比较运算符是什么?

awk 中的比较运算符用于比较字符串和或者数值,包括以下类型:

  • > – 大于
  • < – 小于
  • >= – 大于等于
  • <= – 小于等于
  • == – 等于
  • != – 不等于
  • some_value ~ / pattern/ – 如果 some\_value 匹配模式 pattern,则返回 true
  • some_value !~ / pattern/ – 如果 some\_value 不匹配模式 pattern,则返回 true

现在我们通过例子来熟悉 awk 中各种不同的比较运算符。

在这个例子中,我们有一个文件名为 food\_list.txt 的文件,里面包括不同食物的购买列表。我想给食物数量小于或等于 30 的物品所在行的后面加上(**)

File – food_list.txt
No      Item_Name               Quantity        Price
1       Mangoes                    45           $3.45
2       Apples                     25           $2.45
3       Pineapples                 5            $4.45
4       Tomatoes                   25           $3.45
5       Onions                     15           $1.45
6       Bananas                    30           $3.45

Awk 中使用比较运算符的通用语法如下:

# 表达式 { 动作; }

为了实现刚才的目的,执行下面的命令:

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

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

在刚才的例子中,发生如下两件重要的事情:

  • 第一个“表达式 {动作;}”组合中, $3 <= 30 { printf “%s\t%s\n”, $0,”**” ; } 打印出数量小于等于30的行,并且在后面增加(**)。物品的数量是通过 $3 这个域变量获得的。
  • 第二个“表达式 {动作;}”组合中, $3 > 30 { print $0 ;} 原样输出数量小于等于 30 的行。

再举一个例子:

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

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

在这个例子中,我们想通过在行的末尾增加 (TRUE) 来标记数量小于等于20的行。

总结

这是一篇对 awk 中的比较运算符介绍性的指引,因此你需要尝试其他选项,发现更多使用方法。

如果你遇到或者想到任何问题,请在下面评论区留下评论。请记得阅读 awk 系列下一部分的文章,那里我将介绍组合表达式。


via: http://www.tecmint.com/comparison-operators-in-awk/

作者:Aaron Kili 译者:chunyang-wen 校对:wxy

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