仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 702|回复: 8
打印 上一主题 下一主题

[shell编程] 带来一篇Centos Shell经常使用技能 RE

[复制链接]
活着的死人 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-14 20:18:53 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的好朋友们!一.特别文件:/dev/null和/dev/tty

Linux体系供应了两个对Shell编程十分有效的特别文件,/dev/null和/dev/tty。个中/dev/null将会丢失落一切写进它的数据,换句换说,当步伐将数据写进到此文件时,会以为它已乐成完成写进数据的操纵,但实践上甚么事都没有做。假如你必要的是下令的加入形态,而非它的输入,此功效会十分有效,见以下Shell代码:
/>vitest_dev_null.sh

#!/bin/bash
ifgrephelloTestFile>/dev/null
then
echo"Found"
else
echo"NOTFound"
fi
在vi中保留并加入后实行以下下令:
/>chmod+xtest_dev_null.sh#使该文件成为可实行文件
/>cat>TestFile
hellomyfriend
CTRL+D#加入下令行文件编纂形态
/>./test_dev_null.sh
Found#这里并没有输入grep下令的实行了局。
将以上Shell剧本做以下修正:
/>vitest_dev_null.sh

#!/bin/bash
ifgrephelloTestFile
then
echo"Found"
else
echo"NOTFound"
fi
在vi中保留加入后,再次实行该剧本:
/>./test_dev_null.sh
hellomyfriend#grep下令的实行了局被输入了。
Found

上面我们再来看/dev/tty的用处。当步伐翻开此文件时,Linux会主动将它重定向到一个终端窗口,因而该文件关于读取野生输出时出格有效。见以下Shell代码:
/>vitest_dev_tty.sh

#!/bin/bash
printf"Enternewpassword:"#提醒输出
stty-echo#封闭主动打印输出字符的功效
readpassword</dev/tty#读取暗码
printf"
Enteragain:"#换行后提醒再输出一次
readpassword2</dev/tty#再读取一次以确认
printf"
"#换行
sttyecho#记住翻开主动打印输出字符的功效
echo"Password="$password#输入读进变量
echo"Password2="$password2
echo"AllDone"

在vi中保留并加入后实行以下下令:
/>chmod+xtest_dev_tty.sh#使该文件成为可实行文件
/>./test_dev_tty
Enternewpassword:#这里暗码的输出被读进到剧本中的password变量
Enteragain:#这里暗码的输出被读进到剧本中的password2变量
Password=hello
Password2=hello
AllDone

二.复杂的下令跟踪:

LinuxShell供应了两种体例来跟踪Shell剧本中的下令,以匡助我们正确的定位步伐中存在的成绩。上面的代码为第一种体例,该体例会将Shell剧本中一切被实行的下令打印到终端,并在下令前加"+":加号的前面还随着一个空格。
/>cat>trace_all_command.sh
who|wc-l#这两条Shell下令将输入以后Linux办事器登录的用户数目
CTRL+D#加入下令行文件编纂形态
/>chmod+xtrace_all_command.sh
/>sh-x./trace_all_command.sh#Shell实行器的-x选项将翻开剧本的实行跟踪功效。
+wc-l#被跟踪的两条Shell下令
+who
2#实践输入了局。
LinuxShell供应的另外一种体例能够只打印局部被实行的Shell下令,该***在调试较为庞大的剧本时,显得尤其有效。
/>cat>trace_patial_command.sh
#!/bin/bash
set-x#从该下令以后翻开跟踪功效
echo1stecho#将被打印输入的Shell下令
set+x#该Shell下令也将被打印输入,但是在该下令被实行以后,一切的下令将不再打印输入
echo2ndecho#该Shell下令将不再被打印输入。
CTRL+D#加入下令行文件编纂形态
/>chmod+xtrace_patial_command.sh
/>./trace_patial_command.sh
+echo1stecho
1stecho
+set+x
2ndecho

三.正则表达式基础语法形貌:

LinuxShell情况下供应了两种正则表达式划定规矩,一个是基础正则表达式(BRE),另外一个是扩大正则表达式(ERE)。
上面是这两种表达式的语法列表,必要注重的是,假如没有明白指出的Meta字符,其将可同时用于BRE和ERE,不然将尽合用于指定的形式。
正则元字符形式寄义用例一般用于封闭厥后续字符的特别意义,规复其原意。(...),这里的括号仅仅暗示括号。.婚配任何单个字符。a.b,将婚配abb、acb等*婚配它之前的0-n个的单个字符。a*b,将婚配ab、aab、aaab等。^婚配紧接着的正则表达式,外行的肇端处。^ab,将婚配abc、abd等,可是不婚配cab。$婚配紧接着的正则表达式,外行的开头处。ab$,将婚配ab、cab等,可是不婚配abc。[...]方括号表达式,婚配其外部任何字符。个中-暗示一连字符的局限,^标记置于方括号里第一个字符则有反向的寄义,即婚配不在列表内(方括号)的任何字符。假如想让]和-暗示其原意,必要将其安排在方括号的首字符地位,如[]ab]或[-ab],如这两个字符同时存在,则将]安排在首字符地位,-安排在最尾部,如[]ab-]。[a-bA-Z0-9!]暗示一切的巨细写字母,数字和叹息号。[^abc]暗示a、b、c以外的一切字符。[Tt]om,能够婚配Tom和tom。{n,m}区间表达式,婚配在它后面的单个字符反复呈现的次数区间,{n}暗示反复n次;{n,}暗示最少反复n次;{n,m}暗示反复n到m次。ab{2}暗示abb;ab{2,}暗示abb、abbb等。ab{2,4}暗示abb、abbb和abbbb。(...)将圆括号之间的形式存储在特别“保存空间”。最多能够将9个自力的子形式存储在单个形式中。婚配于子形式的文本,能够经由过程本义序列1到9,被反复利用在不异形式里。(ab).*1暗示ab组合呈现两次,两次之间可存在任何数量的任何字符,如abcdab、abab等。{n,m}(ERE)其功效同等于下面的{n,m},只是不再写本义符了。ab+婚配ab、abbb等,可是不婚配a。+(ERE)和后面的星号比拟,+婚配的是后面正则表达式的1-n个实例。?(ERE)婚配后面正则表达式的0个或1个。ab?仅婚配a或ab。|(ERE)婚配于|标记前后的正则表达式。(ab|cd)婚配ab或cd。[:alpha:]婚配字母字符。[[:alpha:]!]ab$婚配cab、dab和!ab。[:alnum:]婚配字母和数字字符。[[:alnum:]]ab$婚配1ab、aab。[:blank:]婚配空格(space)和Tab字符。[[:alnum:]]ab$婚配1ab、aab。[:cntrl:]婚配把持字符。[:digit:]婚配数字字符。[:graph:]婚配非空格字符。[:lower:]婚配小写字母字符。[:upper:]婚配年夜写字母字符。[:punct:]婚配标点字符。[:space:]婚配空缺(whitespace)字符。[:xdigit:]婚配十六进制数字。w婚配任何字母和数字构成的字符,同等于[[:alnum:]_]W婚配任何非字母和数字构成的字符,同等于[^[:alnum:]_]<>婚配单词的肇端和开头。<read婚配readme,me>婚配readme。
上面的列表给出了LinuxShell中经常使用的工具或下令分离撑持的正则表达式的范例。
grepsedviegrepawkBRE***ERE**
四.利用cut下令选定字段:

cut下令是用来剪下文本文件里的数据,文本文件能够是字段范例或是字符范例。上面给出使用实例:
/>cat/etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
......
/>cut-d:-f1,5/etc/passwd#-d前面的冒号暗示字段之间的分开符,-f暗示取支解后的哪些字段
root:root#这里掏出的是第一个和第五个字段。
bin:bin
daemon:daemon
adm:adm
......
/>cut-d:-f3-/etc/passwd#从第三个字段入手下手显现,直到最初一个字段。
0:0:root:/root:/bin/bash
1:1:bin:/bin:/sbin/nologin
2:2:daemon:/sbin:/sbin/nologin
3:4:adm:/var/adm:/sbin/nologin
4:7:lp:/var/spool/lpd:/sbin/nologin
......
这里必要进一步申明的是,利用cut下令还能够剪切以字符数目为标量的局部字符,该功效经由过程-c选项完成,其不克不及与-d选项共存。
/>cut-c1-4/etc/passwd#取每行的前1-4个字符。
/>cut-c-4/etc/passwd#取每行的前4个字符。
root
bin:
daem
adm:
......
/>cut-c4-/etc/passwd#取每行的第4个到最初字符。
t:x:0:0:root:/root:/bin/bash
:x:1:1:bin:/bin:/sbin/nologin
mon:x:2:2:daemon:/sbin:/sbin/nologin
:x:3:4:adm:/var/adm:/sbin/nologin
......
/>cut-c1,4/etc/passwd#取每行的第一个和第四个字符。
rt
b:
dm
a:
......
/>cut-c1-4,5/etc/passwd#取每行的1-4和第5个字符。
root:
bin:x
daemo
adm:x

五.盘算行数、字数和字符数:

Linux供应了一个复杂的工具wc用于完成该功效,见以下用例:
/>echoThisisatestoftheemergencybroadcastsystem|wc
1949#1行,9个单词,49个字符
/>echoTestingonetwothree|wc-c
22#22个字符
/>echoTestingonetwothree|wc-l
1#1行
/>echoTestingonetwothree|wc-w
4#4个单词
/>wc/etc/passwd/etc/group#盘算两个文件里的数据。
39711933/etc/passwd
6262906/etc/group
1011332839总用量

六.提取开首或开头数行:

偶然,你会必要从文本文件里把几行字,多数是接近开首或开头的几行提掏出来。如检察事情日记等操纵。LinuxShell供应head和tail两个下令来完成此项事情。见以下用例:
/>head-n5/etc/passwd#显现输出文件的前五行。
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

/>tail-n5/etc/passwd#显现输出文件的最初五行。
sshd:x:74:74:Privilege-separatedSSH:/var/empty/sshd:/sbin/nologin
mysql:x:27:27:MySQLServer:/var/lib/mysql:/bin/bash
pulse:x:496:494:PulseAudioSystemDaemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
stephen:x:500:500:stephen:/home/stephen:/bin/bash
假如利用者想检察不中断增加的日记(如办事步伐输入的),可使用tail的-f选项,如许可让tail下令不会主动加入,必需经由过程CTRL+C下令强迫加入,因而该选项不合适用于Shell剧本中,见以下用例:
/>tail-f-n5my_server_log
......
^C#CTRL+C加入到下令行提醒符形态。


如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们!
乐观 该用户已被删除
9#
发表于 2015-3-21 09:44:51 | 只看该作者
另外Linux上也有很多的应用软件,安装运行了这些软件后,你就可以在Linux上编辑文档、图?片,玩游戏、上网、播放多媒体文件等。
8#
发表于 2015-3-14 12:06:39 | 只看该作者
主流Linux发行版都自带非常详细的文档(包括手册页和FAQ),从系统安装到系统安全,针对不同层次的人的详尽文档,仔细阅读文档后40%问题都可在此解决。
谁可相欹 该用户已被删除
7#
发表于 2015-3-7 03:21:33 | 只看该作者
我想即使Linux高手也很难快速准确精练的回答你。
分手快乐 该用户已被删除
6#
发表于 2015-2-22 11:50:28 | 只看该作者
永中office 2004增强版安装只需要默认安装即可使用并操作大多与win系统雷同,打印机的配置和管理,记录光盘等。
小女巫 该用户已被删除
5#
发表于 2015-2-7 12:12:49 | 只看该作者
随着Linux应用的扩展,出现了不少Linux社区。有一些非常优秀的社区往往是Linux高手的舞台,如果在探讨高级技巧的论坛张贴非常初级的问题经常会没有结果。
若相依 该用户已被删除
地板
发表于 2015-2-1 16:28:10 | 只看该作者
熟悉系统的基本操作,Linux的图形界面直观,操作简便,多加上机练习就可熟悉操作,在Linux下学习办公软件等常用软件。
简单生活 该用户已被删除
板凳
发表于 2015-1-24 12:41:16 | 只看该作者
然我们对Linux的学习首先是通过对它的产生,发展,到今天仍然在不断完善开始的。
冷月葬花魂 该用户已被删除
沙发
发表于 2015-1-15 23:00:25 | 只看该作者

带来一篇Centos Shell经常使用技能 RE

目前全球有超过一百多个Linux发行版本,在国内也能找到十几个常见版本。如何选择请根据你的需求和能力,RedhatLinux和DebianLinux是网络管理员的理想选择。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-16 15:45

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表