shell脚本
文章平均质量分 66
Jack_Lpz
Jack_Li style
展开
-
文件安全与权限(1)
1.文件的权限:1) 读,可以显示该文件的内容。2) 写,可以编辑或删除它。3) 执行,如果该文件是一个shell脚本或程序。在一个文件中执行ls -l命令,可以看到一系列的文件属性(In addition to the name of each file, print the file type, file mode bits, number of hard links, o原创 2014-09-05 22:02:22 · 506 阅读 · 0 评论 -
awk的使用(1)
1. 如果要格式化报文或从一个大的文本文件中抽取数据包,那么 awk可以完成这些任务。它在文本浏览和数据的熟练使用上性能优异。 整体来说, awk是所有shell过滤工具中最难掌握的,不知道为什么,也许是其复杂的语法或含义不明确的错误提示信息。在学习awk语言过程中,就会慢慢掌握诸如 Bailing out 和awk:cmd.Line:等错误信息。可以说 awk是一种自解释的编程语言,之所原创 2014-09-14 12:37:10 · 473 阅读 · 0 评论 -
awk的使用(2)
14.进行文本域的修改awk '{ if($1=="J.Troll") ($1="Jack.Troll"); print $1}' grade.txt会显示所有的记录awk '{ if($1=="J.Troll") {$1="Jack.Troll"; print $1}}' grade.txt只会显示修改后的记录创建新的输出域:awk 'BEGIN{ print "原创 2014-09-14 20:26:13 · 456 阅读 · 0 评论 -
sed命令的使用(1)
1.sed介绍sed是一个非交互性文本流编辑器。它编辑文件或标准输入导出的文本拷贝。标准输入可能是来自键盘、文件重定向、字符串或变量,或者是一个管道的文本。sed可以做些什么呢?别忘了, Vi也是一个文本编辑器.sed可以随意编辑小或大的文件,有许多sed命令用来编辑、删除,并允许做这项工作时不在现场。sed一次性处理所有改变,因而变得很有效,对用户来讲,最重要的是节省了时间。2.原创 2014-09-15 12:43:59 · 686 阅读 · 0 评论 -
sed的使用(2)
9.用新文本替换定位文本替换命令用替换模式替换指定模式,格式为:[ address[,address]]s/pattern-to-find/replacement-pattern/[gpwn]s选项通知sed这是一个替换操作,并查询pattern-to-find,成功后用replacement-pattern替换它。替换选项如下:g缺省情况下只替换第一次出现模式,使用 g选项替原创 2014-09-16 20:39:49 · 587 阅读 · 0 评论 -
sort和uniq命令
1.sort的使用:sort命令将许多不同的域按不同的列顺序分类。当查阅注册文件或为另一用户对下载文件重排文本列时,sort工具很方便。实际上,使用其他UNIX工具时,已假定工作文件已经被分过类。无论如何,分类文件比不分类文件看起来更有意义。sort命令的一般格式为: sort -cmu -o output_file [other options] +pos1 +pos2 inpu原创 2014-09-17 23:05:41 · 781 阅读 · 0 评论 -
shell变量
shell变量2.本地变量: 本地变量在用户现在的shell生命期的脚本中使用 local_test="Ths is a test from jack" echo $local_test(变量替换) variable-name=value set 显示本地所有的变量 readonly variable-name #表示是只读的 rea原创 2014-09-27 20:07:54 · 420 阅读 · 0 评论 -
join,sort等命令
.join的用法join用来将来自两个分类文本文件的行连在一起。如果学过 S Q L语言,可能会很熟悉join命令。join的一般格式为:join [option] input-file1 input-file2an n 为一数字,用于连接时从文件n中显示不匹配行。例如,-a1显示第一个文件的不匹配行,-a2为从第二个文件中显示不匹配行。o n.m n原创 2014-09-18 10:34:55 · 732 阅读 · 0 评论 -
条件测试
1.有时要判断字符串是否相等,可能还要检查文件状态或是数字测试。基于这些测试才能做进一步动作。 Test命令用于测试字符串,文件状态和数字2.文件测试test文件测试一般有两种格式1) test condition2) [ condition ] #使用括号时 注意两边加上空格-d 目录-f 正规文件-L 符号链接文件-r 可读文件-原创 2014-09-29 17:15:33 · 575 阅读 · 0 评论 -
向脚本传递参数
1.已经讲到如何使用特定变量$1..$9向脚本传递参数。$#用于统计传递参数的个数。可以创建一个 usage语句,需要时可通知用户怎样以适当的调用参数调用脚本或函数。2.opt的一个简单例子#!/bin/bashfunction usage(){ echo "please enter correct args"}opt=$1if [ $# -ne原创 2014-10-02 13:17:12 · 1044 阅读 · 0 评论 -
格式化时间 03
格式化时间在写shell脚本的时候,一个有疑问的问题是时间的格式化问题,格式化则巧妙的解决了这方面的问题,时间格式化问题是有一点挑战的因为它可以可以有多种方式进行格式化,即使你提示了格式化方式,像"月 日 年"这种, 你仍然可以会给出不合理的输入。一个关于月的数字不是一个月的名称,一个缩写的月的名称,或者一个月的名称是大写的都可能引起错误。下面是一个格式化时间的函数,本身是比较基础的,但是翻译 2014-10-11 20:45:22 · 543 阅读 · 0 评论 -
脚本输入
1.tput在使用tput前,需要在脚本或命令行中使用 tput命令初始化终端。$ tput inittput产生三种不同的输出:字符型、数字型和布尔型(真/假)。以下分别介绍其使用功能。字符串输出选项:bel 警铃blink 闪烁模式bold 粗体civis 隐藏光标clear 清屏原创 2014-10-04 20:09:35 · 556 阅读 · 0 评论 -
判断用户输入是否有效 02
如何判一个输入是有效的?用户在输入的时候,有时候会输入的格式会不正确,会错误,或者不连续,或者语法语句不是有效的。 作为一个脚本开发者,你需要防止他们的发生(做好检测)一种常见的情景是:在输入文件名(filname)或者s数据关键字的时候,你总是需要检测这些字是大写的,小写的,还是数字等。没有标点,没有特殊字符,没有空格,是不是认为这个就是有效的呢? 这个就是本章脚本的测试内容了。翻译 2014-09-14 14:40:05 · 734 阅读 · 0 评论 -
登录环境
登录系统时,在进入命令提示符前,系统要做两个工作。键入用户名和密码后,系统检查是否为有效用户,为此需查询/etc/passwd文件。如果登录名正确并且密码有效,开始下一步过程,即登录环境。1.首先来看看/etc/passwd文件用户名:加密的口令:UID:GID:用户的全名或者描述:主目录:登录的shelldaemon:x:1:1:daemon:/usr/sbin:/bin/s原创 2014-09-23 20:23:31 · 735 阅读 · 0 评论 -
文件安全与权限(2)
5.suid/guidsuid意味着如果某个用户对属于自己的 shell脚本设置了这种权限,那么其他用户在执行这一脚本时也会具有其属主的相应权限。于是,如果根用户的某一个脚本设置了这样的权限,那么其他普通用户在执行它的期间也同样具有根用户的权限。同样的原则也适用于guid,执行相应脚本的用户将具有该文件所属用户组中用户的权限。查找类似文件:ls -l | grep '^...s' #原创 2014-09-06 16:47:28 · 511 阅读 · 0 评论 -
find命令
1.本章介绍:1) find命令选项2) 使用find命令不同选项的例子3) 配合find使用xargs命令的例子2.find命令的一般格式:find pathname -option [-print -exec -ok]pathname find命令所查找的目录路径。例如用 .来表示当前目录,用 /来表示系统根目录。-print find命令将匹配的文件输出到标准原创 2014-09-07 15:06:45 · 411 阅读 · 0 评论 -
后台执行命令
1. cron是系统主要的调度进程,可以在无需人工干预的情况下运行作业。有一个叫做crontab的命令允许用户提交、编辑或删除相应的作业。2.crob的域第1列 分钟1~59第2列 小时1~23(0表示子夜)第3列 日1~31第4列 月1~12第5列 星期0~6(0表示星期天)第6列 要运行的命令举例:1). 30 21* * * /apps/bin/c原创 2014-09-08 15:24:31 · 460 阅读 · 0 评论 -
tr命令的使用
1.tr用来从标准输入中通过替换或删除操作进行字符转换。tr主要用于删除文件中控制字符或进行字符转换。使用tr时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。tr刚执行时,字符串 1中的字符被映射到字符串2中的字符,然后转换操作开始。2.tr[-c/-d/-s] str1 str2 file tr一般使用的选项有: -c, -d, -s -c: 用字符串1中字原创 2014-09-21 11:06:03 · 936 阅读 · 0 评论 -
元字符
1.文件置换当你在使用命令行时,有很多时间都用来查找你所需要的文件。 S h e l l提供了一套完整的字符串模式匹配规则,或者称之为元字符,这样你就可以按照所要求的模式来匹配文件。还可以使用字符类型来匹配文件名。在命令行方式下,使用元字符更为快捷2.形式:1) * 匹配文件名中的任何字符串,包括空字符串2) ? 匹配文件名中的任何单个字符3) [...] 匹配[]文原创 2014-09-09 19:14:47 · 529 阅读 · 0 评论 -
基本的输入输出
1.echo命令基本格式: echo stringIf -e is in effect, the following sequences are recognized: \\ backslash \a alert (BEL) \b backspace \c produce no furt原创 2014-09-10 20:30:07 · 448 阅读 · 0 评论 -
引号
在脚本中执行变量替换时最容易犯的一个错误就是由于引用错误。类型:"" 双引号'' 单引号` 反引号\ 反斜线1.双引号使用双引号可引用除字符 $、`、\外的任意字符或字符串。这些特殊字符分别为美元符号,反引号和反斜线,对shell来说,它们有特殊意义。如果使用双引号将字符串赋给变量并反馈它,实际原创 2014-09-22 13:24:43 · 696 阅读 · 0 评论 -
命令的执行顺序
1.在执行某个命令的时候,有时依赖前一个命令是否成功。例如假设你希望将一个目录中的文件全部拷贝到另外一个目录中后,然后删除源目录中的全部文件。在删除之前,你希望能够确信拷贝成功,否则就有可能丢失所有的文件。2.使用&&命令命令1 && 命令2 &&左边的命令返回真(及返回0,成功被执行), &&右边的命令才能被执行;例如: ls -l && echo "Jack"原创 2014-09-11 18:49:42 · 792 阅读 · 0 评论 -
查找一个文件是否存在 01
(自己翻译的编程百例 测试环境ubuntu 12.04LTS)1.Finding Programs in the pathshell脚本使用环境变量(像MAILER 和 PAGER)会有一个一个隐藏的危险,有时候,这些单词的设置会只指向不存在的程序,例如,如果你决定使用使用PAGER设置去显示脚本的输出,若不使用一些硬编码类型的特许的工具,你怎么能够保证你的PARGE值是有效的?毕竟,翻译 2014-09-11 23:07:22 · 888 阅读 · 0 评论 -
grep命令使用
1. grep是UNIX和LINUX中使用最广泛的命令之一。 grep(全局正则表达式版本)允许对文本文件进行模式查找。如果找到匹配模式, grep打印包含模式的所有行。 grep支持基本正则表达式,也支持其扩展集。 grep有三种变形,即:Grep:标准grep命令,本章大部分篇幅集中讨论此格式。Egrep:扩展grep,支持基本及扩展的正则表达式,但不支持\q模式范围的应用,与之相原创 2014-09-13 15:58:49 · 527 阅读 · 0 评论 -
正则表达式
1.正则表达式 一种用来描述文本模式的特殊语法,当从一个文件或命令输出中抽取或过滤文本时,可以使用正则表达式( RE),它是一些特殊或不很特殊的字符串模式的集合。我们给出抽取操作应遵守的一些规则。这些规则由一些特殊字符或进行模式匹配操作时使用的元字符组成。也可以使用规则字符作为模式中的一部分进行搜寻。例如, A将查询A,x将查找字母 x。^ 只只匹配行首$ 只只匹原创 2014-09-12 23:02:43 · 410 阅读 · 0 评论 -
嵌入命令
1.shell嵌入命令完整列表: 空,永远返回为 true. 从当前shell中执行操作break 退出for、while、until或case语句cd 改变到当前目录continue 执行循环的下一步echo 反馈信息到标准输出eval 读取参数,执行结果命exec原创 2014-10-05 16:41:25 · 530 阅读 · 0 评论