动力小刚自编shell教程
文章平均质量分 62
动力小刚
Senior OraceDBA/RHCA专注于oracle管理技术微博http://weibo.com/rhca5学习讨论群:80793440
展开
-
UNIT37 awk Integrated case
filename为以下文件,第二列用“-”隔开,以避免与FS冲突 ID Name Age City Country Tel Salary Children 1001 Steven 25 NY U.S.A +01-02-323222 $4900 2 1002 Huang-Yu 30 BJ CHN原创 2013-07-06 12:19:18 · 335 阅读 · 0 评论 -
UNIT17 Loop structure
loop 就是 script 中的一段在一定条件下反复执行的代码。在 shell script 设计中,若能善用 loop ,将能大幅度提高 script 在复杂条件下的处理能力。 一.for loop for是从一个清单列表中读进变量值,并"依次"的循环执行 do 到 done 之间的命令行。 1.for var in one two three do echo ---------原创 2013-07-05 11:57:56 · 294 阅读 · 0 评论 -
UNIT11 Built-in Variables
env|grep SHELL,set|grep SHELL,echo ${SHELL} 一.SHELL标准变量 LOGNAME TERM HOSTTYPE——i686 UID SHELL MACHTYPE——i686-redhat-linux-gnu EUID BASH OSTYP原创 2013-07-05 11:34:18 · 277 阅读 · 0 评论 -
UNIT26 VIM TIPS
一.更改文件名 1.复制文件 :edit copy.c :saveas move.c 2.改变当前正在编辑的文件名,但不想保存该文件: :edit copy.c :file move.c 二.查找文件 1.文件浏览器 :edit .显示出来的窗口中将是当前目录下的内容。 在当前窗口中打开文件 o 打开一个水平分隔的窗口显示文件原创 2013-07-05 12:26:31 · 334 阅读 · 0 评论 -
UNIT20 Array
一.创建和赋值 declare -a 数组名 如果不给出数组名,则显示当前定义的所有数组和数组的值。 例:$declare -a names $names[0]=“David” $names[1]=“Richard” $names=(“David” ”Richard”) 二.引用和销毁 A=(a b c def) ,则是将 $A 定义为组数 1.bas原创 2013-07-05 12:08:53 · 251 阅读 · 0 评论 -
UNIT28 SEd Basic Usage
Stream Editor主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。以下介绍的是Gnu版本的Sed。 定址选定希望编辑的行的范围 $ sed -n p file $ sed -n '2,$p' file $ sed ‘/music/=’ 打印行号 $ sed -n '3,+1p' file原创 2013-07-05 12:38:15 · 298 阅读 · 0 评论 -
UNIT27 VIM Customize
1.vimrc文件 也许你早已厌倦于手工键入那些常用的命令。要使你喜好的选项和映射一次性准备就绪,你可以把它们统统写进一个叫vimrc的文件。Vim在启动时会读取该文件。 :version"命令也会列出Vim是在哪些目录寻找该文件的。 对Unix和Macintosh系统而言通常是文件--这也是推荐的文件 ~/.vimrc 对MS-DOS和M原创 2013-07-05 12:30:11 · 413 阅读 · 0 评论 -
UNIT24 VIM Multi-window operation
在不同窗口中分别编辑不同的文件或同一文件的不同部分。窗口操作极大地方便了多文件操作,提高了文本处理的效率。 一.打开.创建.关闭多个窗口 1.窗口操作的快捷方式 Ctrl+W c关闭分屏 Ctrl+W q关闭分屏 Ctrl+W v左右分割 Ctrl+W s上下分割 ctrl+w+n水平拆分编辑一空文件 ctrl原创 2013-07-05 12:20:35 · 512 阅读 · 0 评论 -
UNIT18 Select condition structure
一.if语句: if then else 提供条件测试 1.格式 格式1 if [ 条件 ] then 命令 fi 格式2 if [ 条件 ] ; then命令 fi 格式3 if [ 条件 ] then 命令1 else原创 2013-07-05 12:01:35 · 263 阅读 · 0 评论 -
UNIT15 Process Management
一.ps 1.应用举例 a显示所有用户的所有进程 l长格式输出 x显示无控制终端的进程 u按用户名和启动时间显示进程 r显示运行中的进程 j用任务格式来显示进程 ww避免详细参数被截断 f用树形格式来显示进程 # ps auxf |grep httpd 用f原创 2013-07-05 11:50:55 · 414 阅读 · 0 评论 -
UNIT14 Redirection & PiPes
一.重定向针对终端过滤器.不对交互工具和编辑器 Linux命令:筛选器ls等;编辑器vim等;交互工具mc等 流 描述符 缩写 转向 默认 标准输入 0 Stdin 与KB相连 标准输出 1 Stdout > .1>;>>.1原创 2013-07-05 11:45:45 · 283 阅读 · 0 评论 -
UNIT19 Shell Functions
UNIT19 Shell Functions 1.函数定义 functionName(){命令序列;} 或 function functionName { COMMANDS; } 2.函数调用 functionName functionName 位置参数 3.函数返回 return 用函数中执行的上一个命令的退出码返回; ret原创 2013-07-05 12:07:58 · 309 阅读 · 0 评论 -
UNIT12 Custom Variable
ApacheVersion=”httpd-2.2.p1”&&tar –xvzf $ApacheVersion.tar.gz echo Hi,${myname}mm… 变量有其它英.数.底线,用{}隔开$和变量名 dir2=lib&&echo /usr/$dir2/ntp 变量名后接的不是英.数.底线,不必用{} 一.原创 2013-07-05 11:37:16 · 292 阅读 · 0 评论 -
UNIT35 awk Action
一.格式化输出 1.print 为无格式输出语句: print expr1,expr2,...,exprN print 语句显示每个表达式的串值,默认的ORS 和OFS 分别为\n 和Blank。 # ps -e | awk ‘/ tty5 / {print “tty05: ” $4}’看终端5的用户现在干什么 tty05: find原创 2013-07-06 12:13:15 · 329 阅读 · 0 评论 -
UNIT32 awk Operator
awk作为文本处理优秀工具之一,它有拥有丰富的运算符。awk运算符.表达式及功能与c语言基本相同。下面我们一起归纳总结一下所有运算符。 一.字段引用 $ 字段引用 空格 字符串连接符 # gawk -F"[ :]" '{ print $1 }' list.txt 同时使用两个分隔符 二.字段引用 x原创 2013-07-06 11:59:09 · 348 阅读 · 0 评论 -
UNIT30 SEd Command Summary
一.SEd文本转换和替代(-n和p一起用只打印变动行) $ sed -n ‘2,4s/B/567/p’ $ sed -n ‘/AA/s/237/567/’ $ sed -n ‘/AA/,/DD/s/B/567/p’ $ sed -n ‘s/La//p $ sed 's/:.*//' /etc/passwd 删除第一个冒号之后的所原创 2013-07-06 11:45:20 · 342 阅读 · 0 评论 -
UNIT33 awk Variables
一.AWK的部分内置变量(自定义变量的方法类似Shell) $0当前记录(作为单个变量) $1~$NF当前记录的第n个字段,字段间由FS分隔 NF当前记录中的字段个数 NR已读出的记录数,就是行号,从1开始 FS输入字段分隔符,默认是空格 RS输入的记录分隔符,默认为换行符 OFS输出字段分隔符,原创 2013-07-06 12:00:19 · 306 阅读 · 0 评论 -
UNIT31 awk Program
Awk是文本工具中最难掌握的,它借鉴了C 语言.python 和bash的一些精华部分。awk自解释型编程语言,它支持用户自定义函数和动态正则表达式等先进功能。 awk设计简单,速度表现很好,可结合Shell(w|awk…),它在命令行中使用,但多是作为脚本来使用。很多基于shell的日志分析工具可用它完成。 awk是那种一旦学会了就会成为您战略编码库的主要部分的语言。awk 能够用很短的程序原创 2013-07-06 11:47:56 · 402 阅读 · 0 评论 -
UNIT25 VIM Visual mode Block operations
vim列块操作就是在可是模式下操作选择的行中的某一些列的操作,比如常见的我们需要在很多行都需要做一些重复的工作,比如在行头和行尾加相应的标签,或者需要删除行中间某一些特殊的列,那么块操作就是很好的帮手了。 #vim→^v→I→#→ESC #vim→set nu→^v→(100G:当前行到第100行)→I→#→ESC 一.进入和退出可视模式 vi原创 2013-07-05 12:21:12 · 368 阅读 · 0 评论 -
UNIT23 VIM Substitute
一.:[address]s/from/to/[flags] 1.基本范例 :s/^\/these/ 用these替换当前行中第1个the :s/part1 /part2/g 用part2替换当前行中所有的part1 :%s/part1/part2 用part2替换所有行中每行第1个part1 :%s/原创 2013-07-05 12:18:26 · 387 阅读 · 0 评论 -
UNIT22 VIM cursor moving
1.以Word为单位的光标移动 w 往右移一个word 3w向右移动3个word b 往左一个word "e"命令会将光标移动到下一个word的最后一个字符. "ge"命令会将光标移动到前一个word的最后一个字符上。 2.将光标移到行首或行尾 "$"命令将光标原创 2013-07-05 12:16:02 · 412 阅读 · 0 评论 -
UNIT21 VIM Introduction
由于被广泛移植,无论是DOS,还是AIX,都能见到VI的身影。作为开源世界最重要的编辑器之一(另一个是 Emacs),VI以其强大的功能和无穷的魅力将使您终生受益。 vim 是一个『程序开发工具』,它加入了很多额外的功能,例如支持正则表示法的搜寻架构.多档案编辑.区块复制等等。 一.VI/vim的历史 ed是Unix上最古老的编辑器,它最初是Unix之父Ken Thompso原创 2013-07-05 12:13:58 · 528 阅读 · 0 评论 -
UNIT16 Auto http&ftp&rsync
一.ftp命令自动传输 1.手动FTP ftp ftp.kernel.org anonymous zcs@example.com cd pub get README quit 2.半自动FTP #cat getreadme.ftp ftp ftp.kernel.org anonymous zcs@example.com c原创 2013-07-05 11:54:00 · 335 阅读 · 0 评论 -
UNIT13 Here Document
一.变量替换及抑制 Here Document也支持变量替换——在输入的内容中如果有变量,bash在转向前,会先替换变量值。 to=’To:you@example.com.cn’ em=’20090310.txt’ Cat >$em //表示这个Here Document拥有和双引号一样的特性,即支持变量扩展。 $To HERE #vim e.sho原创 2013-07-05 11:40:50 · 294 阅读 · 0 评论 -
UNIT02 File Finder
find [-option] [action] 直接搜寻硬盘实时.递归.根据i节点信息查找文件时间花费很大! whereis与locate是利用数据库来搜寻数据而没有搜寻实际的硬盘文件,所以相当的快速,比较省时间! 所以通常使用whereis或者locate来检查,如果真的找不到了,才以find来搜寻。 一.与时间有关的参数(-atime,-ctime,-mtime)原创 2013-07-04 12:25:01 · 323 阅读 · 0 评论 -
UNIT05 Script Execute Principle
一、父Shell和子Shell 1、login shell和父shell 登陆主机后,在执行Script之前,我们所处的环境已经是在一个Bash Shell之中。这个Shell叫做login Shell是将来我们执行任何Script的上层环境,又叫做父shell。 2、父shell和子shell 执行某个Script时,父shell会根据script的第一行#!后指定的shell程序开启(原创 2013-07-04 11:13:53 · 55 阅读 · 0 评论 -
UNIT10 grep Family : grep.egrep.fgrep
一.grep家族 1.grep使用基本正则元字符集。标准的grep 在默认情况下也支持以反斜杠开头的扩展正则元字符集。例如:\?,\+,\{,\|,\(,\);前面没有反斜杠的扩展元字符集对于标准的grep 无特别的含义。 2.egrep 是grep的扩展,用的是正则表达式元字符集的扩展集。 3.fgrep 就是fixed grep 或者fast grep,元字符只表示其自身的字面意义。原创 2013-07-04 13:09:34 · 400 阅读 · 0 评论 -
UNIT08 One hour Mastering RE
^ 和 $ 他们是分别用来匹配字符串的开始和结束,以下分别举例说明 "^The": 开头一定要有"The"字符串; "of despair$": 结尾一定要有"of despair" 的字符串; 那么, "^abc$": 就是要求以abc开头和以abc结尾的字符串,实际上是只有abc匹配 '*', '+',和 '?', 他们用来表示一个字符可以出现的次数或者顺序.原创 2013-07-04 12:59:19 · 273 阅读 · 0 评论 -
UNIT06 Shell Mata-Characters
\回车, 续行符 \ 跳脱符,将元字符还原成一般字符 >,>> 输出重定向 输入重定向 ! 调用历史记录; ! 逻辑运算中的not / 路径分割符 | 两个命令之间的管道 ; 分割执行多个命令原创 2013-07-04 12:49:45 · 311 阅读 · 0 评论 -
UNIT01 Shell Introduction
一、Linux支持的SHELL 1、shell=命令解释器+脚本语言编程环境 shell是系统维护的重要工具,便于自动批量处理大量任务。 BNU BASH 1998年诞生, 兼容Bourne Shell(sh),2009年2月推出4.0,其官网为www.gnu.org/software/bash。 2、显示支持的shell(cat /etc/shells) /bin/sh原创 2013-07-04 11:57:27 · 315 阅读 · 0 评论 -
UNIT08 RE with reference to Table
字符 说明 Basic RegEx Extended RegEx python RegEx Perl regEx 转义 \ \ \ \ ^ 匹配行首,例如'^dog'匹配以字符串dog开头的行(注意:awk 指令中,'^'则是匹配字符串的开始)原创 2013-07-04 11:18:05 · 57 阅读 · 0 评论 -
UNIT39 Shell level test
一.OVERVIEW 篇 1. 有很多种 shell, 你熟悉几种? 各个 shell 的 home page 在那里? 2. 为什么说 zsh 是目前为止功能最为强大的 shell. 3. 为什么说 pdksh 功能较弱? 4. ksh88 与 ksh93 有何区别? 5. 为什么 shell 编程最好用 ksh? 6. 你的系统都有哪些 shell? 版原创 2013-07-06 12:29:22 · 359 阅读 · 0 评论 -
UNIT38 awk常见应用
一.awk 查看ip连接数 处理文本,是awk的强项了。 无论性能已经速度都是让人惊叹! $ awk 'BEGIN{ while("netstat -an"|getline){ if( $5 ~ /[1-255]/) { split($5,t1,":"); tarr[t1[1]]++;原创 2013-07-06 12:21:44 · 390 阅读 · 0 评论 -
UNIT36 awk Built-in function
内部函数 1.内部算数函数(执行与 C 语言中名称相同的子例程相同的操作) atan2(x,y) y,x范围内的余切 sin(x) 正弦 cos(x) 余弦函数 sqrt(x) 平方根 exp(x) 求幂 srand(x) x是rand()函数的种子原创 2013-07-06 12:16:28 · 340 阅读 · 0 评论 -
UNIT34 awk Patten
# awk '{print ($1 > 5 ? "ok "$1: "error"$1)}' test //$1大于5打印ok O.‘模式’是一种表达式 1./(RE)/:加圆括号以确保正确的值。 2.比较表达式中两操作数都是数进行数值比较,否则进行串比较。 3.awk字符类是一种特殊的方括号表达式,此概念来自于POSIX 标准,用于描述具有某种特定属性的字符集合。常用字符类有:原创 2013-07-06 12:05:33 · 343 阅读 · 0 评论 -
UNIT19 One hour Mastering RE
^ 和 $ 他们是分别用来匹配字符串的开始和结束,以下分别举例说明 "^The": 开头一定要有"The"字符串; "of despair$": 结尾一定要有"of despair" 的字符串; 那么, "^abc$": 就是要求以abc开头和以abc结尾的字符串,实际上是只有abc匹配 '*', '+',和 '?', 他们用来表示一个字符可以出现的次数或者顺序.原创 2013-07-04 11:17:09 · 46 阅读 · 0 评论 -
UNIT02 File Finder
UNIT02 File Finder find [-option] [action] 直接搜寻硬盘实时、递归、根据i节点信息查找文件时间花费很大! whereis与locate是利用数据库来搜寻数据而没有搜寻实际的硬盘文件,所以相当的快速,比较省时间! 所以通常使用whereis或者locate来检查,如果真的找不到了,才以find来搜寻。 一、与时间有关的参数(-atime,-ct原创 2013-07-04 11:09:41 · 64 阅读 · 0 评论 -
UNIT04 grep Family : grep、egrep、fgrep
一、grep家族 1、grep使用基本正则元字符集。标准的grep 在默认情况下也支持以反斜杠开头的扩展正则元字符集。例如:\?,\+,\{,\|,\(,\);前面没有反斜杠的扩展元字符集对于标准的grep 无特别的含义。 2、egrep 是grep的扩展,用的是正则表达式元字符集的扩展集。 3、fgrep 就是fixed grep 或者fast grep,元字符只表示其自身的字面意义。原创 2013-07-04 11:19:27 · 66 阅读 · 0 评论 -
UNIT03 Format Control Character
一、转义字符 转义字符 含义 转义字符 含义 \a alert BEL \b 退格键(Back Space) \f FormFeed换页仅影响打印机 \n Newline, 回车换行 \r return,回车回行首原创 2013-07-04 11:12:44 · 52 阅读 · 0 评论 -
UNIT05 Script Execute Principle
一.父Shell和子Shell 1.login shell和父shell 登陆主机后,在执行Script之前,我们所处的环境已经是在一个Bash Shell之中。这个Shell叫做login Shell是将来我们执行任何Script的上层环境,又叫做父shell。 2.父shell和子shell 执行某个Script时,父shell会根据script的第一行#!后指定的shell程序开启(原创 2013-07-04 12:43:14 · 361 阅读 · 0 评论