Linux 中的常用的 grep 命令

  你是否遇到过需要在文件中查找一个特定的字符串或者样式,但是不知道如何查询?那么,可以使用grep命令查询。grep是每个Linux发行版都预装的一个强有力的文件模式搜索工具。无论何种原因,如果你的系统没有预装它的话,你可以很容易的通过系统的包管理器来安装它(Debian/Ubuntu系中的apt-get和RHEl/CentOS/Fedora系中的yum)。

  $ sudo apt-get install grep #Debian/Ubuntu $ sudo yum install grep #RHEL/CentOS/Fedora

  使用现实世界中的真实例子让你投身其中是让你接触grep命令的最容易方式。

  1.搜索和寻找文件

  假设你已经在你的电脑上安装了一个全新的Ubuntu,然后你打算卸载Python。你浏览网页寻找教程,但是你发现存在两个不同版本的Python在使用,而你不知道你的Ubuntu安装器到底在你的系统中安装了哪个版本的Python,也不知道它安装了哪些模块。解决这个烦恼只需简单的运行以下命令:

  $ sudo dpkg -l | grep -i python

  输出例子

  ii python2.7 2.7.3-0ubuntu3.4Interactive high-level object-oriented language(version2.7)

  ii python2.7-minimal2.7.3-0ubuntu3.4Minimal subset of the Python language(version2.7)

  ii python-openssl 0.12-1ubuntu2.1 Python wrapper around the OpenSSL library

  ii python-pam 0.4.2-12.2ubuntu4APython interfacetothe PAM library

  首先,我们运行dpkg -l列出你系统上安装的.deb包。接着,我们使用管道将输出结果传输给命令grep -i python,这一步可以简单解释为把结果传输给grep然后过滤出所有含有python的项,并返回结果。–i选项用于忽略大小写,因为 grep 是大小写敏感的。使用选项-i是个好习惯,除非你打算进行更细节的搜索。

  2.搜索和过滤文件

  grep还可以在一个或多个文件里用于搜索和过滤。让我们来看一个这样的情景:

  你的Apache网页服务器出现了问题,你不得不从许多专业网站里找一个发帖询问。好心回复你的人让你粘贴上来你的/etc/apache2/sites-available/default-ssl文件内容。假如你能移除掉所有的注释行,那么对你,对帮你的人,以及所有阅读该文件的人,不是更容易发现问题吗?你当然可以很容易的做到!只需这样做就可以了:

  $ sudo grep -v “#” /etc/apache2/sites-available/default-ssl

  选项-v是告诉grep命令反转它的输出结果,意思就是不输出匹配的项,做相反的事,打印出所有不匹配的项。这个例子中,有#的是注释行(译注:其实这个命令并不准确,包含“#”的行不全是注释行。关于如何精确匹配注释行,可以了解更多的关于正则表达式的内容。)。(欢迎关注公众号:网络工程师阿龙,提升网络技术。)

  3.找出所有的mp3文件

  grep命令对于过滤来自于标准输出的结果非常有用。例如,假设你的一个文件夹里面全是各种格式的音乐文件。你要找出艺术家jayZ的所有mp3格式的音乐文件,里面也不要有任何混合音轨。使用find命令再结合管道使用grep就可以完成这个魔法:

  $ sudo find . -name “.mp3” | grep -i JayZ | grep -vi “remix””

  在这个例子中,我们使用find命令打印出所有以.mp3为后缀名的文件,接着将其使用管道传递给grep -i过滤和打印出名字为“JayZ”的文件,再使用管道传送给grep -vi以便过滤掉含有“remix”的项。

  4.在搜索字符串前面或者后面显示行号

  另外两个选项是-A和-B之间的切换,是用以显示匹配的行以及行号,分别控制在字符串前或字符串后显示的行数。Man页给出了更加详细的解释,我发现一个记忆的小窍门:-A=after、-B=before。

  $ sudo ifconfig | grep -A 4 etho $ sudo ifconfig | grep -B 2 UP

  5.在匹配字符串周围打印出行号

  grep命令的-C选项和例4中的很相似,不过打印的并不是在匹配字符串的前面或后面的行,而是打印出两个方向都匹配的行(译注:同上面的记忆窍门一样:-C=center,以此为中心):

  $ sudo ifconfig | grep -C 2 lo

  6.计算匹配项的数目

  这个功能类似于将grep输出的结果用管道传送给计数器(wc程序),grep内建的选项可以达到同样的目的:

  $ sudo ifconfig | grep -c inet6

  7.按给定字符串搜索文件中匹配的行号

  当你在编译出错时需要调试时,grep命令的-n选项是个非常有用的功能。它能告诉你所搜索的内容在文件的哪一行:

  $ sudo grep -n “main” setup.py

  8.在所有目录里递归的搜索

  假若你要在当前文件夹里搜索一个字符串,而当前文件夹里又有很多子目录,你可以指定一个-r选项以便于递归的搜索:

  $ sudo grep -r “function” *

  9.进行精确匹配搜索

  传递-w选项给grep命令可以在字符串中进行精确匹配搜索(译注:包含要搜索的单词,而不是通配)。例如,像下面这样输入:

  $ sudo ifconfig | grep -w “RUNNING”

  将打印出含有引号内匹配项的行。另外,你还可以试一下这个:

  $ sudo ifconfig | grep -w “RUN”

  搜索这个匹配项时,若搜索的东西里面没有这样的一个单独的单词,将什么也不会返回。(欢迎关注公众号:网络工程师阿龙,提升网络技术。

  10.在Gzip压缩文件中搜索

  我们还要关注一下grep的衍生应用。第一个是zgrep,这个与zcat很相似,可以用于gzip压缩过的文件。它有与grep相似的命令选项,使用方式也一样:

  $ sudo zgrep -i error /var/log/syslog.2.gz

  11.在文件中匹配正则表达式

  egrep是另一个衍生应用,代表着“扩展全局正则表达式”。它可以识别更多的正则表达式元字符,例如at + ? | 和()。在搜索源代码文件时,egrep是一个非常有用的工具,还有其他的一些零碎代码文件的搜索需要,使得这样的搜索能力成为必需。可以在grep命令中使用选项-E来启用它。

  $ sudo grep -E

  12.搜索一个固定匹配字符串

  fgrep用于在一个文件或文件列表中搜索固定样式的字符串。功能与grep -F同。fgrep的一个通常用法为传递一个含有样式的文件给它:

  $ sudo fgrep -f file_full_of_patterns.txt file_to_search.txt

  这仅仅是grep命令的开始,你可能已经注意到,它对于实现各种各样的需求简直是太有用了。除了这种我们运行的这种只有一行的命令,grep还可以写成cron任务或者自动的shell脚本去执行。保持好奇心,试验一下man页的各个选项,为实现你的目的写出一些grep表达式吧。

美国主机Linux 中的 rsync 命令与示例

  rsync(remote synchronize)是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机之间的文件。也可以使用 rsync 同步本地硬盘中的不同目录。rsync的可用于镜像数据,增量备份,系统之间的复制文件,并且作为替代scp ,sftp 和cp 命令。本文rsync通过实际示例和最常见rsync选项的详细说明bluehost美国主机来解释如何使用。

  Rsync 命令语法

  在讨论如何使用该rsync命令之前,让我们先回顾一下基本语法。

  rsync表达式采用以下形式:

  Local to Local: rsync [OPTION]… [SRC]… DEST

  Local to Remote: rsync [OPTION]… [SRC]… [[email protected]]HOST:DEST

  Remote to Local: rsync [OPTION]… [[email protected]]HOST:SRC… [DEST]

  OPTION- rsync 选项 。

  SRC – 源目录。

  DEST – 目标目录。

  USER – 远程用户名。

  HOST – 远程主机名或 IP 地址。

  基本的 Rsync 用法

  最基本的用例rsync是将单个文件从一个本地位置复制到另一个本地位置。下面是一个例子:

  $ rsync -a /opt/filename.zip /tmp/

  运行该命令的用户必须具有对源位置的读取权限和对目标位置的写入权限。

  从目标位置省略文件名复制具有当前名称的文件。如果要以不同的名称保存文件,请在目标位置上指定新名称:

  $ rsync -a /opt/filename.zip /tmp/newfilename.zip

  rsync同步目录时,真正的威力就来了。下面的示例显示了如何创建网站文件的本地备份:

  $ rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/

  如果目标目录不存在,rsync将创建它。

  值得一提的是rsync,对带有斜杠 ( /)的源目录进行了不同的处理。如果源目录有尾部斜杠,则该命令将仅将目录内容复制到目标目录。当省略尾部斜杠时,rsync将源目录复制到目标目录中。

  使用rsync从本地将数据同步到远程计算机

  当使用rsync到远程传输数据 ,它必须被安装在源和目标计算机两者上。新版本rsync配置为使用 SSH 作为默认远程 shell。

  在以下示例中,我们将目录从本地传输到远程机器:

  $ rsync -a /opt/media/ [email protected]_host_or_ip:/opt/media/

  如果您没有设置远程机器的无密码SSH登录,您将被要求输入用户密码。

  要将数据从远程传输到本地计算机,请使用远程位置作为源:

  $ rsync -a [email protected]_host_or_ip:/opt/media/ /opt/media/

  如果远程主机上的SSH正在侦听默认端口22以外的端口,请使用以下-e选项指定端口:

  $rsync -a -e “ssh -p 2322” /opt/media/ [email protected]_host_or_ip:/opt/media/

  传输大量数据时,建议rsync在屏幕会话中运行该命令或使用以下-P选项:

  rsync -a -P [email protected]_host_or_ip:/opt/media/ /opt/media/

  以上就是美国主机Linux 中的 rsync 命令与示例全部内容。

如何选择Linux企业服务器发行版

当人们在讨论各种桌面Linux发行版的优点时,大多数人都可以对此侃侃而谈。但当话题涉及企业服务器发行版时,对此有所了解的人恐怕就寥寥无几了。

如何选择Linux企业服务器发行版
如何选择Linux企业服务器发行版

事实上,如果您想要寻找最优质,最简易,或最实惠的企业Linux发行版,那么您所面临的选择可能少之又少。或许您觉得可以列出清单,进而简化选择理想的Linux服务器发行版的难度,但事实却并非如此。

哪个发行版最适合您的企业服务器?其实在某种程度上,事情往往是当局者迷旁观者清。因此,LinuxInsider 网站向Linux内部专业团队寻求相关建议。

当然,没有一个服务器发行版能够适用于所有的企业场景。然而,当您在评估各个发行版的优劣时,您应该记住几个主要的因素。您应该时刻牢记选择Linux而非其他操作系统的原因–这一切都将决定您是否能够选择最适合的服务器版本。

了解选项

Red Hat的高级产品营销经理Marty Wesley指出,没有任何两个Linux服务器发行版是完全一致的,但其中某些发行版可能会拥有类似的元件和功能。

Wesley表示:“这是因为这些Linux发行版的来源都是一样的。当您认为Linux实际上是许多程序包的合集时(根据发行版的不同,其所包含的程序包可能高达几千个),您就会开始发现某一特定的Linux发行版其实就是大型软件封装。”

例如,所有的Linux发行版都是源自于Linux创始人 Linus Torvalds所发起的内核项目。它们之间的差异在于每个发行版推出的时间不同,并且还有不同的构建,测试和QA流程,这使得Linux的设计被分成了两种派别。

决定基本架构

Linux服务器发行版之所以会产生差异,都要归结于Linux本身的原因。每个Linux服务器都有优缺点。 IBM的Linux技术中心主管Jim Wasko表示,例如,在Power架构中的Linux服务器发行版所具备的扩展功能却不适用于x86 Linux服务器发行版。

Wasko指出,大型机的Linux发行版也是如此。 在相同平台或架构上Linux发行版之间的差异往往归结于版本的差异。

Wasko表示:“从表面来看,不论您使用哪种Linux发行版来运行数据库,其核心性能都是相同的。”

某些企业也会选择自主研发企业内部的Linux发行版。Wasko表示,从Linux内核的性能来看,这些企业也能够获得与其他Linux发行版同等的性能。

获得社群认同

Suse的Linux市场总监Kerry Kim表示,在不同的Linux服务器发行版中,最显著的差别之一就是各自的开发者社群。在这个范围内,Linux的发行版有很大的不同,但其差异并没有Linux桌面发行版那么明显。

Kim表示:“Linux服务器发行版之间另一个更加明显的差别就是其确定总体业务目标的方式。还有一点就是各个发行版针对特定用户市场的设计上的差异。”

Kim指出,与桌面发行版相同,所有的核心服务器功能也都是在开源社群中开发出来的。并且Live DVD 版本也可供用户使用。其真正的差别在于生态系统,支持以及功能。

建立家庭连接

Kim表示:“真正具有实用性的服务器OS发行版的数量很有可能更少。大部分企业都有其特定的需求,并且希望其所选择的服务器发行版能够帮助实现业务目标,并且她们还愿意支付保证金,确保服务器产品的证书能够为企业所使用的硬件和软件提供维护。”

Kim指出,用户可以选择免费的社群支持服务器版本,也可以选择拥有订购服务支持的企业版服务器。 所有服务器发行版都按照类似的开源许可证发行,而免费版本也有自己的收费制度。

当您在选择Linux服务器发行版时,除了硬件和发行版本的差异之外,您还应该考虑所使用的任务关键型软件的预期寿命。

Wesley :“您必须明确软件的更新周期。您肯定不希望在一个发行版本上部署了使用期限长达五年的应用程序后,却发现该版本每六个月就需要更新一次。在这种情况下,每当Linux服务器发行版更新时,您就必须花费所有的时间重新构建应用程序并对其进行测试。”

制定方案

在开始之前,您最好应该确认一下您所选择的发行版的运作要求。因为您所使用的硬件和软件配置可能并不兼容,而且特定的服务器发行版可能也只适用于特定的架构。

Wasko指出,例如,用于Linux的IBM服务器系列支持x86和Power的大型机架构。 该系列的服务器发行版包含相同的内核和程序包。此外,IBM还支持由Red Hat和Suse两家发行商所推出的商业企业服务器版本。

Kim指出,企业通常会根据开发商的声誉和服务质量来选择Linux服务器发行版。而其中影响企业决定的关键因素就是可运行特定硬件和软件的服务器发行版证书。

他解释说:“对服务器开发商来说,这需要付出很多的努力。为了保持证书的有效性,任何时候代码出现了变动,开发商都需要对服务器重新进行测试。”

以上是部分有关如何选择Linux企业服务器发行版的介绍,后面我们将继续介绍相关的一些资讯内容,请继续关注www.idcdiy.com

更多内容推荐:>>>Linux系统服务器如何防止黑客攻击