分类 技术 下的文章

你有没有感到需要一款Linux下的命令行工具,它可以验证你的拼写?一款可以显示包含特定前缀字符串的行?好的,本篇中,我们会讨论Linux下的 look命令,它满足了上面的这些要求。

Linux下的look命令

下面是来自look命令man页面描述的截图:

测试环境

  • OS – Ubuntu 13.04
  • Shell – Bash 4.2.45
  • Application – look 2.20.1-5.1ubuntu8

简要教程

现在让我们通过一些特定例子来讨论这个命令。

假设你要验证单词'rendezvous'的拼写。你可以轻松地用look命令做到。

这是个例子 :

$ look rendez
rendezvous
rendezvous's
rendezvoused
rendezvouses
rendezvousing

如你所见,我只传入了单词的前面几个字符作为命令行参数,命令产生了所有的相关单词。这些单词通过look命令从文件 /usr/share/dict/words取回。

另外一种情况是需要打印所有包含特定字符串的行。比如,如果我想要显示c文件中所有的头文件,那么我就用下面的方法:

$ look "#include" efence_test.c 
#include 
#include 

如你所见,它生成了所有的在文件efence\_test.c中以"#include"开始的行,因此我知道了原文件中包含的头文件。

默认上,所有look命令的匹配都是大小写敏感的。你可以使用非大小写敏感匹配的选项-f

下面是一些look命令提供了其他一些命令行选项:

想要获取这个命令的更多信息,阅读这个 man 页.

下载/安装/配置

下面是关于look命令的一些链接:

  • 主页 [如果你知道这个工具的主页的话让我知道一下]
  • 下载链接

look命令成了util-linux包的一部分,它在大多数Linux发行版中已经预安装了。

优点

  • 非常容易地在命令行验证拼写。
  • 在大多数Linux发行版中已经预安装。

缺点

  • 依赖于/usr/share/dict/words 来做拼写验证。

总结

一款出色的用来验证拼写的命令行工具。节省了大量时间如果你想要显示以特定字符串为开头的行的话。试一下,你一定会喜欢上它的。


via: http://mylinuxbook.com/look-verify-spellings-and-display-lines/

译者:geekpi 校对:wxy

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

如果你是一位狂热的摄影爱好者,那么你的摄影集中可能会有一些令人叹为观止的全景摄影作品。事实上,制作这些照片既不需要专业的摄影技术,也不需要什么特别的设备,利用一些照片合并软件(在线或者是离线,桌面设备或者移动设备)就可以将两幅或者多幅有重叠部分的照片轻松合成一幅全景照片。

这篇教程里,我将会解释 如何在 Linux 中完成全景照片的合并工作。在这儿,我将会使用一款叫做 Hugin 的照片合并软件。

Hugin 是一款开源(GPLv2)并可以免费使用的照片合并工具。它目前支持多个平台,包括 Linux,Windows,OS X 和 FreeBSD。 尽管作为一款开源软件,但是不论在功能上还是质量上,Hugin 都丝毫不逊色于商业软件。相反,Hugin 非常强大,不仅可以用来创建360度全景照片,还支持多种高级测光修正和优化。

在 Linux 中安装 Hugin

在 Debian,Ubuntu 或者 Linux Mint 中安装 Hugin:

$ sudo apt-get install hugin

在 Fedora 中安装 Hugin:

$ sudo yum install hugin

启动 Hugin

我们使用命令来启动Hugin。

$ hugin

在这儿(Assistant页),我们要做的第一件事就是导入我们想要合并的照片。我们先来点击Load images 按钮,然后导入(两张或者多张)图片。当然了,这些照片应该需要相互有一些重叠的部分(我们这里载入了三张)。

第一次照片合并

在导入照片之后,点击 Align 按钮来开始我们的第一次合并

为了正确合并照片,Hugin 将会在一个单独的窗口中启动合并助手,用来分析照片之间的关键点(控制点)。分析完毕之后,呈现在你眼前的将会是一幅全景照片的预览图。

接下来让我们切换回 Hugin 的主窗口。在 Align 按钮的下方,你将会看见照片合并的状态(比如控制点的数量,错误情况)。当然,还会有合并好坏的相关提示。

如果合并提示显示 bad 或者 really bad,你可以继续按照下面的办法来进行排列的调整。

添加或者删除控制点

在主窗口中,进入 Control Points 标签页。在这儿,Hugin 展现在组合照片中常用的的控制点。我们看到,在左右面板中展现了一对照片,上面的一些同色的小方盒表示的是常用的控制点。你可以手动来添加或者删除这些控制点。这些控制点匹配的越精确,我们得到的合并质量也就越高。除此之外,如果这些控制点分散得比较均匀,得到的效果将会更好。

使用顶部中间的左右箭头按钮来找到拥有最少控制点的两幅照片。如这样的两幅照片,我们可以试图按照下面的办法来手动增加控制点。

首先我们点击左边照片中的某个点,然后再来点击右边照片中对应的点。Hugin 将会试图自动调整。接下来,我们继续点击底部的 Add 按钮来添加匹配对。重复上面的操作来添加更多的控制点。

其他优化

我们可以试图进行重新优化,比如点击工具栏中的 Re-optimize 按钮,或者去 Optimizer 标签中重新调整之前的优化。

接下来回到 Hugin 主窗口中的 Assistant 标签,再次点击 Align 按钮来看看是否能得到一个更棒的结果。

倘若合并的全景照片的水平线参差不齐,我们可以试图将它拉直。首先点击工具栏上的 Preview panorama 按钮。

然后点击预览窗口中的 Straighten 按钮。

一旦你对合并的结果感到满意,你可以继续将它导出为图片文件。只需要到 Hugin 主窗口中 Sticher 标签页里进行下面的操作:

调整画布大小,剪切数量。当然,还需要选择输出格式(比如 TIFF,JPEG,PNG)。最后,点击 Stitch!按钮来完成。

之后会有提示保存当前项目文件(*.pto),设定保存好输出的文件名即可。

导出过程可能会需要花费几秒钟的时间。

本文题图是我利用 Hugin 的实验输出结果。画面中是墨西哥坎昆迷人海滩的全景。:-)


via: http://xmodulo.com/2013/12/stitch-photos-together-linux.html

译者:ailurus1991 校对:wxy

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

众所周知,计算机必须有称之为RAM(随机访问内存)的存储器使得计算机工作。RAM指的是插在计算机主板上的物理存储。这里的RAM被用于加载像浏览器、文字处理器这类的程序,实际上,你使用的程序都运行在内存上。

让我们假设你有2GB的内存。当你在运行操作系统时,你的可用内存可能只有1.5GB。接着你使用了大量的程序。当内存使用满之后,你可能再也无法加载更多的程序。浅显地说,计算机可能会说:"抱歉,你不能在运行更多的程序了,如果你还要运行其他的程序请先关闭一些程序。"

为了解决这个问题,包括Linux在内的各种操作系统使用了一个称之为虚拟内存的方法。这个方法会搜索最近不在使用的程序的内存区域,接着将它们拷贝到计算机硬盘上。这会腾出一些剩余内存空间给你有机会运行更多的程序。

为了监视虚拟内存的活动,我们使用vmstat工具。

什么是 vmstat

vmstat是一个提供报告虚拟内存统计的工具。它包括了系统内存、交换和实时处理器利用率。

如何运行 vmstat

mpstat一样,vmstat包含在sysstat包中。如果你还没有,请安装sysstat包。

为了运行vmstat,只需在控制台输入vmstat。不带参数运行vmstat会显示vmstat的默认结果。

让我们看下如何了解vmstat提供的信息:

Procs

procs有 r列和b列。r列代表等待访问CPU的进程数量。而b列意味着睡眠进程的数量。在这些列的下面,是它们的值。从上面的截图中,我门有2个进程正在等待访问CPU,0个睡眠进程。

Memory

memory有swpd、 free、 buffcache 这些列。这些信息和命令free -m相同。swpd列显示了有多少内存已经被交换到了交换文件或者磁盘。free列显示了未分配的可用内存。buff列显示了使用中的内存。cache列显示了有多少内存可以被交换到交换文件或者磁盘上如果一些应用需要他们。

Swap

swap显示了从交换系统上发送或取回了多少内存。si列告诉我们每秒有多少内存被从swap移到真实内存中(In)。so列告诉我们每秒有多少内存被从真实内存移到swap中(Out)。

I/O

io依据块的读写显示了每秒输入输出的活动。bi列告诉我们收到的块数量,bo列告诉我们发送的块数量。

System

system显示了每秒的系统操作数量。in列显示了系统每秒被中断的数量。cs列显示了系统为了处理所以任务而上下文切换的数量。

CPU

CPU告诉了我们CPU资源的使用情况。us列显示了处理器在非内核程序消耗的时间。sy列显示了处理器在内核相关任务上消耗的时间。id列显示了处理器的空闲时间。wa列显示了处理器在等待IO操作完成以继续处理任务上的时间。

按间隔时间运行vmstat

作为一个统计工具,使用vmstat最好的方法是使用间隔时间。你可以间断地捕捉系统状态。让我假设以5秒的间隔运行vmstat。只需要在你的控制台中输入vmstat 5就行。

命令将会每5秒运行一次,直到你按下Ctrl-C来终止它。你也可以使用第二个参数来控制vmstat运行的次数。

上面的命令会以5秒的间隔运行7次vmstat

显示活跃和非活跃内存

要这么做,你可以在vmstat后加入-a选项。这是个示例。

显示磁盘统计数据总结

如果你想,vmstat也可以打印系统磁盘活动统计。使用-D选项就行。

显示单位

你可以选择你想打印的显示单位字符。在-S后跟上k (小写,1000)、 K (大写,1024)、 m (小写,1000000)、 M (大写,1048576) 字节. 如果你不想选择单位,默认使用的是K (1024)。

显示某个磁盘分区的详细统计数据

要这么做,你可以使用-p选项跟上设备名。这里有个例子。

文件

vmstat实际上是使用这些文件获取的数据。

/proc/meminfo
/proc/stat
/proc/*/stat 

总结

如果你感觉系统运行超出内存了,在你增加物理内存前,这个工具可以帮助你确定问题的根本原因。通常上,你可以在控制台中输入man vmstat获取更多的关于vmstat的详细信息,这会为你显示vmstat的手册页。


via: http://linoxide.com/linux-command/linux-vmstat-command-tool-report-virtual-memory-statistics/

译者:geekpi 校对:wxy

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

Linux命令中的链接的意思是,通过操作符的行为将几个命令组合执行。Linux中的链接命令,有些像你在shell中写短小的shell脚本,并直接在终端中执行。链接使得自动处理变得更方便。不仅如此,一个无人看管的机器在链接操作符的帮助下能够十分有条理地运行。

Linux中的10个链接操作符

本文旨在介绍一些常用的链接操作符,通过简短的描述和相关的例子帮助读者提高生产力、降低系统负载、写出更加简短有意义的代码。

1. 和号操作符 (&)

&’的作用是使命令在后台运行。只要在命令后面跟上一个空格和 ‘&’。你可以一口气在后台运行多个命令。

在后台运行一个命令:

tecmint@localhost:~$ ping ­c5 www.tecmint.com &

同时在后台运行两个命令:

root@localhost:/home/tecmint# apt-get update & mkdit test &

2. 分号操作符 (;)

分号操作符使你可以一口气运行几个命令,命令顺序执行。

root@localhost:/home/tecmint# apt-get update ; apt-get upgrade ; mkdir test

上述命令先后执行了update和upgrade,最后在当前工作目录下创建了一个‘test’文件夹

3. 与操作符 (&&)

如果第一个命令执行成功,与操作符 (&&)才会执行第二个命令,也就是说,第一个命令退出状态是0。(译注:原文的这里明显写错了,我们进行了改译,有兴趣的读者可以参看原文以及原文下面的评论。在UNIX里面,0表示无错误,而所有非0返回值都是各种错误)。这个命令在检查最后一个命令的执行状态时很有用。

比如,我想使用links 命令在终端中访问网站tecmint.com,但在这之前我需要检查主机是否在线不在线

root@localhost:/home/tecmint# ping -c3 www.tecmint.com && links www.tecmint.com

4. 或操作符 (||)

或操作符 (||)很像编程中的else语句。上面的操作符允许你在第一个命令失败的情况下执行第二个命令,比如,第一个命令的退出状态是1

举例来说,我想要在非root帐户中执行‘apt-get update‘,如果第一个命令失败了,接着会执行第二个命令‘links www.tecmint.com‘。

tecmint@localhost:~$ apt-get update || links tecmint.com

上面的命令中,由于该用户不允许更新系统,这意味着第一个命令的退出状态是’1′,因此最后一个命令‘links tecmint.com‘会执行。

如果第一个命令成功执行并且退出状态是‘0‘呢?很明显的,第二个命令不会执行。

tecmint@localhost:~$ mkdir test || links tecmint.com

这里,用户在家目录创建了一个‘test‘文件夹,这是被允许的。命令成功的执行,退出状态是‘0‘,因此,最后的命令不会执行。

5. 非操作符 (!)

非操作符 (!)很像except语句。这个命令会执行除了提供的条件外的所有的语句。要理解这点,在你的主目录创建一个目录‘tecmint’,并‘cd’到它这里。

tecmint@localhost:~$ mkdir tecmint 
tecmint@localhost:~$ cd tecmint

接下来,在文件夹‘tecmint’下创建不同类型的文件。

tecmint@localhost:~/tecmint$ touch a.doc b.doc a.pdf b.pdf a.xml b.xml a.html b.html

看一下我们在文件夹‘tecmint’创建的新文件。

tecmint@localhost:~/tecmint$ ls 

a.doc  a.html  a.pdf  a.xml  b.doc  b.html  b.pdf  b.xml

用一种聪明的办法马上删除除了 ‘html’之外的所有文件。

tecmint@localhost:~/tecmint$ rm -r !(*.html)

验证一下上次的执行结果,使用ls 命令列出可见所有文件。

tecmint@localhost:~/tecmint$ ls 

a.html  b.html

6. 与或操作符 (&& – ||)

上面的操作符实际上是‘’和‘’操作符的组合。它很像‘if-else‘语句。

比如,我们ping tecmint.com,如果成功打印‘已验证’,否则打印‘主机故障’。

tecmint@localhost:~/tecmint$ ping -c3 www.tecmint.com && echo "Verified" || echo "Host Down"

示例输出

PING www.tecmint.com (212.71.234.61) 56(84) bytes of data. 
64 bytes from www.tecmint.com (212.71.234.61): icmp_req=1 ttl=55 time=216 ms 
64 bytes from www.tecmint.com (212.71.234.61): icmp_req=2 ttl=55 time=224 ms 
64 bytes from www.tecmint.com (212.71.234.61): icmp_req=3 ttl=55 time=226 ms 

--- www.tecmint.com ping statistics --- 
3 packets transmitted, 3 received, 0% packet loss, time 2001ms 
rtt min/avg/max/mdev = 216.960/222.789/226.423/4.199 ms 
Verified

现在,断开我们现在的网络连接诶,再试一下相同的命令。

tecmint@localhost:~/tecmint$ ping -c3 www.tecmint.com && echo "verified" || echo "Host Down"

实例输出

ping: unknown host www.tecmint.com 
Host Down

7. 管道操作符 (|)

PIPE在将第一个命令的输出作为第二个命令的输入时很有用。比如,‘ls -l’的输出通过管道到‘less’,并看一下输出。

tecmint@localhost:~$ ls -l | less

8. 命令合并操作符 {}

合并两个或多个命令,第二个命令依赖于第一个命令的执行。

比如,检查一下文件‘xyz.txt’是否在Downloads目录下,如果不存在则创建之并输出提示信息。

tecmint@localhost:~$ [ -f /home/tecmint/Downloads/xyz.txt ] || touch /home/tecmint/Downloads/xyz.txt; echo "The file does not exist"

但是这样的命令的运行结果并不如我们预期的运行,会始终都输出提示信息。因此需要使用{}操作符来合并命令:

tecmint@localhost:~$ [ -f /home/tecmint/Downloads/xyz1.txt ] || {touch /home/tecmint/Downloads/xyz.txt; echo "The file does not exist"}

“The file does not exist”

(译注:原文这里应该也是复制或书写的时候,出现了一些问题,例子中并没有出现小标题中的"{}"操作符,所以这里我们进行了修改)

9. 优先操作符 ()

这个操作符可以让命令以优先顺序执行。

Command_x1 &&Command_x2 || Command_x3 && Command_x4.

在上面的伪代码中,如果Command\_x1执行失败了会怎么样,Command\_x2, Command\_x3, Command\_x4没有一个会执行,对于这种情况,我们使用优先操作符

(Command_x1 &&Command_x2) || (Command_x3 && Command_x4)

在上面的伪代码中,如果Command\_x1执行失败,Command\_x2不会执行,但是Command\_x3会继续执行, Command\_x4会依赖于 Command\_x3的退出状态。

10. 连接符 ()

连接符 ()如它名字所说,被用于连接shell中那些太长而需要分成多行的命令。可以在输入一个“\”之后就回车,然后继续输入命令行,直到输入完成。比如,下面的命令会打开文本文件test(1).txt

tecmint@localhost:~/Downloads$ nano test\
1.txt

今天就到这里,我会近日开始另外一个有趣的文章。不要走开,继续关注我们。不要忘记在评论栏里提出有价值的反馈。


via: http://www.tecmint.com/chaining-operators-in-linux-with-practical-examples/

译者:geekpi 校对:Mr小眼儿

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

linux系统里有一些日志文件。观察这些日志文件是系统管理员的一个重要任务。你可以很方便地使用tail命令观察它们。但是如果你想要长时间监视这些文件,每几分钟使用tail检查那些日志文件是一件很乏味的事情。你可以写一个短小的无限循环的脚本来周期性地检查文件,但其实已经有一个程序可以为你处理这种重复的任务。

Linux watch 命令

Linux中的watch 命令提供了一种方式处理重复的任务。默认watch会每2秒重复执行命令。你一定也想到了,watch是一个很好的观察log文件的工具。下面是一个例子。

watch tail /var/log/syslog

想要停止命令的执行,只要使用标准的kill流程, [Ctrl]+C

使用Linux watch命令监测syslog 使用Linux watch命令监测syslog

你可以使用-n开关改变并指定时间间隔。要想每10秒检测日志文件,试试这个。

watch -n 10 tail /var/log/syslog

带有管道的watch命令

watch并不仅限于浏览日志文件。它可以用来重复你给它的任何命令。如果你要监测CPU的温度,你可以使用watch后跟上sensord命令来查看。

watch -n 1 sensors

我电脑上的输出看上去就像这样:

acpitz-virtual-0
Adapter: Virtual device
temp1:        +45.0°C  (crit = +100.0°C)

我想过滤一下这个输出来只显示温度而不显示其他的。

我可以使用这个命令来查看

sensors | grep temp | awk '{ print $2 }'

记住,watch命令会重复它后面的第一个命令。必须要注意命令后面跟上管道的情况。你可以将你的命令放在引号里面来管理。

watch -n1 "sensors | grep temp | awk '{ print $2 }'"

带管道的watch命令 带管道的watch命令

将watch作为时钟

就像你现在已经注意到的,watch执行后会在你的终端的右上角显示时间。我们可以通过传给watch一个空的命令参数来把它作为一个简单的时钟。 我们可以将一个空格包含在引号中来作为一个空的参数。

watch -n 1 " "

如你所见,这给予这个命令另外一个意义,手表(watch)。你可以把它作为你的腕表。

现在你知道如何使用Linux的watch命令。你要用它处理什么重复任务?


via: http://tuxtweaks.com/2013/12/linux-watch-command/

译者:geekpi 校对:Mr小眼儿

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

CentOS 6.5 新版本发布

随着RHEL 6.5新版本的发布,CentOS 6.5在12月1号准时跟上。现在是时间来玩弄它了。如果想要从已经安装好的6.4系统升级到6.5,只要简单的使用* yum update *命令,然后就是见证奇迹的时刻。

CentOS 6.5 迎来了新的更新包和新功能。可以在release notes中查看更多细节信息。

主要更新

  • 精密时间协议 - 以前仅是一个科技预览版 - 现在已经完整支持了!以下设备支持网络时间戳:bnx2x,tg3 , e1000e , igb , ixgbe ,sfc。
  • OpenSSL 升级到1.0.1版本
  • OpenSSL、NSS支持TLS1.1和1.2
  • KVM得到大量加强。包括提升对VMDK文件和VHDX文件的只读,CPU支持热插拔以及升级了 virt-v2v-/virt-p2v-conversion 工具
  • Hyper-V 和 VMware 驱动升级
  • 升级到 Evolution(2.32)和 Libre Office(4.0.4)

下载

这篇教程我们将要安装它的桌面版。你可以从下面的任意一个url开始

http://isoredirect.centos.org/centos-6/6.5/isos/http://mirror.centos.org/centos/6.5/isos/

选择你的机器制式,它会列出一张镜像表。进入任何一个镜像、得到种子文件下载或者直接下载iso链接。有许多选择下载方式可以选择,比如,LiveCD, LiveDVD, Dvd1+2双碟套装, Minimal最小化安装 和 Netinstall.

Minimal最小化安装是一个基于文字界面的安装程序,这样安装的CentOS将只有shell和最少软件应用程序。剩余的所有东西不得不你自己通过yum安装。

LiveCD/LiveDVD提供桌面版和GUI安装程序,可以安装CentOS系统但是不提供任何可选择的软件包。

DvD1+2双碟套装给有需求的人提供完整的应用程序集合

netinstall 事实上会先下载安装镜像然后再安装

这篇文章我们将使用LiveCD。 它大概有650MB。 尽管CentOS主要使用在服务器上,但它有一个桌面系统可以帮助你的服务器在安装时创造一个基础GUI的安装环境。在其他文章,我们将会尝试minimal 和 netinstall安装方法。

安装

所以现在,该是时候在你的桌面系统安装CentOS了。快点使用LiveDVD或者是LiveCD去启动运行吧!

1.放入媒体然后重启。启动菜单有多个带说明的选项。选择Boot进入Live桌面。

2.在桌面上双击下列安装图标,开启anaconda安装器。

3.进入安装向导,点击Next(下一步)

4.键盘布局 - 这一步会询问你,选择你的键盘布局。(译注:推荐选择U.S. English)

5.存储类型完成键盘布局的选择,接下来的是选择用来安装CentOS的存储类型。对于本地硬盘启动,应该选择Basic storage。

6.主机名 下一步 anaconda 安装器会询问主机名。所以填入适当的词。如果不确定,随意输入一个(译注:主机名hostname可以随时更改)。

7.时区选择 接下来选择时区选项。

8.Root 密码 下面是输入 root 密码 ,最好是输入一个你熟悉但要足够强壮的密码。

9.规划分区 现在向导想要知道,你将要怎么规划存储设备。 如果你需要自己规划分区,选择 “Custom Layout” 并根据需要分区。为了这篇教程的目的,我们选择了第一个选项,那就是使用整个设备并让CentOS用它喜欢的规划自动分区。

10.复制文件 现在安装已经开始复制文件了。现在除了等待和盯着没有什么事情可以做。LiveCD安装器基本上从CD镜像上复制到硬盘上。你没有得到任何安装包的选项去选择安装或省略。而且liveCD本身只自带了很少的软件和应用程序。

安装完毕后配置

11.在安装完毕后会自动重启,欢迎向导将出现来进一步配置系统。

12.许可证协议 就像所有CentOS的软件一样会有一个很小只有几行的许可证。所以同意吧!

13.创建用户 现在为自己创建一个使用系统的普通用户。

14.当前日期和时间 输入当前日期和时间并且选择使用网络自动同步时间。

15.Kdump这是欢迎向导的最后一步,询问Kdump应该是开启还是关闭。推荐开启它。

开始使用 CentOS 6.5

结束完之前步骤,系统将会重启,最后引导到登陆界面。

登陆之后,迎来的金光闪闪的CentOS 6.5 的桌面!

希望你喜欢这篇安装指南,可以在下方留下你的评论和问题。

资源

CentOS 6.5 release notes(版本记录) http://wiki.centos.org/Manuals/ReleaseNotes/CentOS6.5


via: http://www.binarytides.com/centos-6-5-installation-screenshots/

译者:Vic\_\_\_ 校对:Mr小眼儿

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