Shell脚本学习
文章平均质量分 70
BruceZhang
计算机专业的一个小学生
展开
-
正则表达式
目录跳过目录本文目标如何使用本教程正则表达式到底是什么东西?入门测试正则表达式元字符字符转义重复字符类分枝条件反义分组后向引用零宽断言负向零宽断言注释贪婪与懒惰处理选项平衡组/递归匹配还有些什么东西没提到联系作者网上的资源及本文参考文献更新纪录本文目标30分钟内让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用它。如何使用本教原创 2013-03-10 15:01:56 · 1593 阅读 · 0 评论 -
Linux Shell脚本攻略学习总结:二
比较与测试程序中的流程控制是由比较和测试语句来处理的。我们可以用if,if else 以及逻辑运算符来执行测试,而用一些比较运算符来比较数据项。另外,有一个test 命令也可以用来进行测试。让我们来看看如何使用这些命令。实战演练:if 条件:if condition;thencommands;fielse if 和 else :if condition;thencommands;原创 2013-07-04 09:26:14 · 2404 阅读 · 0 评论 -
linux中shell变量$#,$@,$0,$1,$2的含义解释
linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 $@ 所有参数列表。如"$@"用转载 2013-07-04 11:05:02 · 1849 阅读 · 0 评论 -
Shell中read的常用方式
read命令的语法:read -p "Prompt" variable1 variable2 variableN-p "Prompt": 显示提示信息(和用户输入同一行显示)variable1: 用户输入的第一个值将赋给variable1variable2: 用户输入的第二个值将赋给variable2处理输入创建名为greet.sh的文件,输入:#!/bin/bashread -p "Enter转载 2013-07-03 14:33:14 · 1417 阅读 · 0 评论 -
Linux Shell脚本攻略学习总结:三
根据扩展名切分文件名首先,我们先来看两个例子:file_jpg="sample.jgp"name=${file_jpg%.*}echo File name is : $name输出结果:File name is sampleextension=${file_jpg#*.}echo Extension is : $extension输出结果:Extension is : jpg工作原理在原创 2013-07-04 10:04:40 · 1948 阅读 · 0 评论 -
Linux Shell 脚本攻略学习--四
linux中(chattr)创建不可修改文件的方法在常见的linux扩展文件系统中(如ext2、ext3、ext4等),可以将文件设置为不可修改(immutable)。某些文件属性可帮助我们将文件设置不可修改。一旦文件被设置为不可修改,任何用户包括超级用户都不能删除该文件,除非其不可修改的属性被移除。通过查看/etc/mtab文件,很容易找出所有挂载分区的文件系统类型。这个文件的第一列指定了分区设转载 2013-07-04 16:08:36 · 1917 阅读 · 0 评论 -
Linux Shell 命令--grep
从这篇开始,是文本内容操作,区别于文本操作。shell,perl,python,一直都是文本操作的专家语言,而我们今后学习的的将是shell的噱头--文本操作。下面提到最常见的一个:grep这算是文本内容的一个重量级选手,能根据某些规格在上千行的文本文件中查找所需要的数据。他能接受正则表达式和通配符。 基础实例:1. 命令翻译包含给定match_pattern的文本行,如我在grep.txt中查找转载 2013-07-05 08:29:33 · 2520 阅读 · 0 评论 -
统计特定文件中的词频
查找文件中使用的单词的频率是一件很有意思的事情,下面,我们利用 关联数组,awk,sed,grep 等不同的方式来解决问题。首先,我们需要一个测试用的文本,保存名为 word.txt内容如下:Word usedthis countingthis接下来需要编写Shell脚本程序,如下所示:#!/bin/bash#Name: word_freq.sh#Description: Find o原创 2013-07-05 10:29:04 · 5923 阅读 · 0 评论 -
shell sed过滤器详解
1. Sed简介sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。以下介绍转载 2013-07-05 10:51:46 · 7377 阅读 · 0 评论 -
Linux Shell 命令--awk
说明:awk被设计用于数据流,能够对列和行进行操作。而sed更多的是匹配,进行替换和删除。awk有很多内建的功能,比如数组,函数等。灵活性是awk的最大优势。 awk的结构awk 'BEGIN{ print "start"} pattern { commands } END{ print "end"}'file为了偏于观看,我打了回车,实际上是一行 一个awk脚本通常是3部分1. BEGIN语句块转载 2013-07-05 14:19:53 · 2915 阅读 · 0 评论 -
Linux Shell 命令--cut
解读—help用法:cut [选项]... [文件]... 从每个文件中输出指定部分到标准输出。长选项必须使用的参数对于短选项时也是必需使用的。 -b, --bytes=列表 只选中指定的这些字节 -c, --characters=列表 只选中指定的这些字符 -d, --delimiter=分界符 使用指定分界符代替制表符作为区域分界 -转载 2013-07-04 16:21:58 · 2618 阅读 · 0 评论 -
Linux Shell 只列出目录的方法
在实际应用中,我们有时需要仅列出目录,下面是 4 种不同的方法。1. 利用 ls 命令的 -d 选项:$ ls -d */Desktop/ pic/ shell/ src/2. 利用 ls 命令的 -F 选项:$ ls -F |grep "/$"Desktop/pic/shell/src/-F 选项会给输出的不同文件类型加上一个后缀,比如普通文件会在其后加一个 * 符号,管道文件会转载 2013-07-04 16:58:30 · 46649 阅读 · 2 评论 -
Shell 正则表达式总结及其含义举例
基本元字符集及其含义:^ 只匹配行首$ 只匹配行尾* 只一个单字符后紧跟*,匹配0个或多个此单字符[ ] 只匹配[ ]内字符。可以是一个单字符,也可以是字符序列。可以使用 - 表示[ ]内字符序列范围,如用[1-5]代替[12345]\ 只用来屏蔽一个元字符的特殊含义。因为有时在s h e l l中一些元字符有特殊含义。\可以使其失去应有意义.只匹配任意单字符pattern\{n\}只用来转载 2013-07-04 21:48:53 · 2110 阅读 · 0 评论 -
对文件中的行,单词和字符进行迭代
编写不同的文本处理和文件操作脚本时,通常需要对文件中的行,单词和字符进行迭代,尽管这个问题看起来很简单,但是实现起来却常常出现问题,下面,就让我们来看看怎样实现上述功能。为了实现上述的功能,我们需要分三个步骤叙述一.迭代文件中的每一行我们可以通过用一个 while 循环从标准输入中读取,因此,它在每一次迭代中都会读取一行。下面的方法可以将stdin 重定向到文件:首先我们看下文件中的内容是怎样的:原创 2013-07-05 19:08:00 · 2341 阅读 · 0 评论 -
shell 常用正则表达式
“^\d+$” //非负整数(正整数 + 0) “^[0-9]*[1-9][0-9]*$” //正整数 “^((-\d+)|(0+))$” //非正整数(负整数 + 0) “^-[0-9]*[1-9][0-9]*$” //负整数 “^-?\d+$” //整数 “^\d+(\.\d+)?$” //非负浮点数(正浮点数 + 0) “^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9转载 2013-07-05 19:53:59 · 12325 阅读 · 0 评论 -
Linux Shell 命令--rename
重命名文件,经常用到mv命令,批量重命名文件rename是最好的选择,Linux的rename 命令有两个版本,一个是C语言版本的,一个是Perl语言版本的,判断方法:输入man rename 看到第一行是RENAME(1) Linux Programmer’s Manual RENAME(1)这个就是C语言版本的 ---我的就是C语言版本而如果出现的是RENAME(1) Perl Program转载 2013-07-03 22:15:11 · 10295 阅读 · 0 评论 -
Linux Shell脚本攻略学习总结:一
终端打印终端打印的常用命令有两个:echo和print首先,我先介绍echo1.echoecho这个命令接受三种形式的参数,实例如下:echo "Hello World"echo 'Hello World'echo Hello World这三中形式的命令输出的都是同样的结果,但是,每种方法都有它相应的“副作用”例如如下的结果:从结果中我们可以看出,以双引号为参数的命令并不能识别标点符号,此时原创 2013-07-03 18:54:47 · 2072 阅读 · 0 评论 -
Shell中的数据重定向--输入/输出重定向
在了解重定向之前,我们先来看看linux 的文件描述符。linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作。 用户可以自定义文件描述符范围是:3-num,这个最大数字,跟用户的:ulimit –n 定义数字有关系,不能超过最大值。 linux启动后,会默认打开3个文件描述符,分原创 2013-03-09 21:37:35 · 2013 阅读 · 0 评论 -
Shell中的管道
管道命令操作符是:”|”,它仅能处理经由前面一个指令传出的正确输出信息,也就是 standard output 的信息,对于 stdandard error 信息没有直接处理能力。然后,传递给下一个命令,作为标准的输入 standard input. 管道命令使用说明:先看下下面图:command1正确输出,作为command2的输入 然后coman原创 2013-03-09 21:42:57 · 3436 阅读 · 0 评论 -
Linux下ipconfig分析及C语言实现
在linux下使用ifconfigl命令能很方便的查看网卡与网线是否连通,运行ifconfig eth0命令大致输出如下:# ifconfig eth0eth0 Link encap:Ethernet HWaddr 00:25:35:68:CC:D6 inet addr:192.168.1.168 Bcast:192.168.1.255 Mask:255.转载 2013-06-18 20:09:49 · 2901 阅读 · 0 评论 -
用C语言实现Ping程序功能
本文转载自:http://www.ibm.com/developerworks/cn/linux/network/ping/ping命令是用来查看网络上另一个主机系统的网络连接是否正常的一个工具。ping命令的工作原理是:向网络上的另一个主机系统发送ICMP报文,如果指定系统得到了报文,它将把报文一模一样地传回给发送者,这有点象潜水艇声纳系统中使用的发声装置。例如,在Linux终端上执行ping转载 2013-06-18 19:46:39 · 6543 阅读 · 0 评论 -
Linux grep命令分析以及C语言版本的实现
1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。2.格式grep [options]3.主要参数[options]主要参数:-c:只输出匹配行的计数。-I:不区分大 小写(只适用于单字符)。-h:查询多文件时转载 2013-06-18 10:38:36 · 8347 阅读 · 0 评论 -
文本切片与参数操作
这则攻略考察了一些简单的文本替换技术以及Bash中可用的参数扩展简写法,这些简单的技巧可能在某些方面很有用处。下面,我就以实例的形式讲解这部分内容。替换变量中的部分文本:使用的命令如下所示:var="This is a line of text"echo ${var/line/Replaced}输出的内容如下所示:this is a Replaced of text我们可以看到 line 被Re原创 2013-07-05 21:11:38 · 2455 阅读 · 0 评论 -
Linux Shell -- 无网不利
这篇文章中我介绍几个非常实用的和网络相关的命令一.ifconfig这个命令在Windows下被“翻译为ipconfig”,它用于显示网络接口,子网掩码等详细信息。注:在每个系统中,默认都有一个称之为环回接口的lo,这个接口指向当前主机本身。ifconfig 左边一列是网络接口名,占据10个字节,右边的若干列显示对应的网络接口的详细信息。下面这张截图是在博主的电脑上运行这个命令之后显示的信息:相关技原创 2013-07-06 19:22:49 · 2828 阅读 · 0 评论 -
shell中的wait
cat test1 | uniq > newtest1 &cat test2 | uniq > newtest2 &waitdiff newtest1 newtest2为了比较newtest1和newtest2的不同,必须先让以上的两个cat命令成功并执行完成并生成newtest1和newtest2,否则diff的执行将错误。。。而wait就是保证以上命令执行完成之后才执行diff命令...转载 2013-07-06 19:48:15 · 7174 阅读 · 0 评论 -
linux shell编程语句if、case.
shell学习笔记--if,caseshell的控制流结构主要有if语句、for语句、case语句、while语句、until语句这五种,在shell中这些语句的用法有点类似C语言,很容易学会,但也很容易忘记,只有经常实用它们才不会很快忘记,像我之前看的时候很快就看完了,但是很久没用,过一阵子又把它忘记了,现在又重看了一遍才记起来,好了,下面将详细介绍这几种语句的用法:1、if then else转载 2013-07-09 15:08:37 · 2590 阅读 · 0 评论 -
shell快捷键
方向 前 后->删除ctrl + d 删除光标所在位置上的字符相当于VIM里x或者dlctrl + h 删除光标所在位置前的字符相当于VIM里hx或者dhctrl + k 删除光标后面所有字符相当于VIM里d shift+$ctrl + u 删除光标前面所有字符相当于VIM里d shift+^ctrl + w转载 2013-07-12 16:53:34 · 1793 阅读 · 0 评论 -
Shell脚本的调试技术
编程中必不可少的一点就是调试,Shell脚本以其强大的功能令人向往,当然,它的强大之处不只是体现在语言的实现功能上,更强大的是它的调试功能,下面,我将以实例讲解Shell脚本的调试技术。下面是我所用到的实例:#!/bin/bash LINE="Tests run: 196, Failures: 1, Errors: 1"error=`echo $LINE|cut -d':' -f4`ec原创 2013-07-03 09:22:34 · 2181 阅读 · 0 评论 -
windows与linux下的\r\n
\n 为ASCII的0x0a 换行 \r 为ASCII的0x0d 回车 在windows 系统中,当你输入回车时会自动变成\r\n 在linux下的回车键只代表\n 而在windows下的回车键表示\r\n \n为进入下一行,\r为打印头回到行首上 linux/unix下只用\n,它就表示回车+转载 2013-07-03 10:46:25 · 1615 阅读 · 0 评论 -
linux shell (()) 双括号运算符使用
估计很多朋友都感觉比较难以接受。特变逻辑运算符”[]”使用时候,必须保证运算符与算数 之间有空格。 四则运算也只能借助:let,expr等命令完成。 今天讲的双括号”(())”结构语句,就是对shell中算数及赋值运算的扩展。 使用方法: 语法: ((表达式1,表达式2…)) 特点: 1、在双括号结构中,所有表达式可以像c语言一样,如:a++,b--等。 2、在双括号结构中,所有变量可以不加入:“转载 2013-07-03 10:11:08 · 3036 阅读 · 0 评论 -
Linux Shell 命令--tr
tr 用来从标准输入中通过替换或删除操作进行字符转换 -c或--complerment 取代所有不属于第一字符集的字符。 -d或--delete 删除所有属于第一字符集的字符。 -s或--squeeze-repeats 把连续重复的字符以单独一个字符表示。 -t或-转载 2013-07-03 20:29:18 · 1634 阅读 · 0 评论 -
git简介及使用方法
一、git简介及安装1、git简介Git 是用于 Linux 内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。 Git 的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的合并跟踪(merge tracing)能力。实际上内核开发转载 2013-07-06 12:33:02 · 1969 阅读 · 0 评论