shell脚本笔记.doc

上传人:小** 文档编号:87217267 上传时间:2019-03-29 格式:DOC 页数:27 大小:430KB
返回 下载 相关 举报
shell脚本笔记.doc_第1页
第1页 / 共27页
shell脚本笔记.doc_第2页
第2页 / 共27页
shell脚本笔记.doc_第3页
第3页 / 共27页
shell脚本笔记.doc_第4页
第4页 / 共27页
shell脚本笔记.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《shell脚本笔记.doc》由会员分享,可在线阅读,更多相关《shell脚本笔记.doc(27页珍藏版)》请在金锄头文库上搜索。

1、#!/bin/sh第一部分 UNIX和SHELL工具1 四、使用文件lsls F用附加字符来标示列出来的条目的文件类型。ls d 只显示目录的名字,不显示它的内容。mkdir p /dir1/file1 如果父目录不存在,创建父目录catcat n file1输出的每一行带编号cat b file1输出的空白行不编号wc 参数: -l统计行数 -w统计单词数-m统计字符数linux中没有-c统计字符数 linux中有cpcp src1 srcN dest拷贝多个文件cp i file1 file2交互模式,覆盖会提问cp r dir1 dir2拷贝目录mvmv src1 srcN dest移动

2、多个文件mv i file1 file2交互模式,覆盖会提问rmrm i file1交互模式,覆盖会提问2 五、输入与输出1、输出到终端echoecho str输出strecho命令使用的转义序列(在ksh中有效,bash中无效)(该转义序列也可用于printf)n打印换行t打印tab字符c后面不默认跟随换行,打印一个字符串echo “Your fruit basket contains:napple orange pear”printfprintf命令要在字符串后输出换行,必须在所要打印的字符串后明确指定n转义序列,而echo命令会自动打印出换行。e.g.echo “Is that a ma

3、ngo?”等于printf “Is that a mango?n”printf 基本语法printf format argumentsformat格式序列形式如下:%-m.nx%标示格式序列开始,x指明格式序列的类型,下表给出了x可能得值字母描述字母描述s字符串o八进制数c字符e指数浮点数d十进制整数f固定浮点数x十六进制数g紧密浮点数根据x值的不同,整数m和n有不同的解释。通常,m是域的最小长度,而n是域的最大长度。如果你指定一个实数,n就被作为应该用到的精度,连字符 表在左边对齐一个域。默认情况下,所有的域都是在右边对齐的.e.g.printf “%-16st%-16sn” “Name”

4、“User Name”表示左对其,输出被分隔为两列,每16个字符长度被空格分隔开。2、输出重定向cmd file可以将命令列表的输出重定向e.g. date ; uptime ; who ; mylogcmd file追加到文件cmd | tee file将输出从定向到文件和屏幕,使用tee 命令e.g.date | tee now输出到屏幕同时写入文件now3、输入重定向cmd filecmd delimitershell将操作符 file1 fileexec nfile其中n为文件描述符e.g.exec 4file.out把文件file.out和文件描述符4关联起来注意:exec 1fil

5、e.out则所有输出都将被放到file.out中,在终端屏幕上将什么也看不见普通的输入/输出重定向将指定命令cmd的输出重定向到指定的文件cmd n filecmd n filee.g.ls 1file将ls命令的标准输出到file.重定向标准输出和标准错误到单独的文件cmd 1 file1 2file2因为文件描述符1可以被省略,上面的命令可以简化为 cmd file1 2file2cmd 1file1 2file2cmd file1 2file2重定向标准输出和标准错误到同一个文件cmd 1file 2&1等于cmd file 2&cmd 1file 2&1等于cmd file 2&打印消

6、息到标准输出echo str 1&2等于echo str &2printf format args 1&2等于printf format args &2 重定向一个文件描述符的输出到另一个文件描述符格式为: n&mn和m都是文件描述符,exec n&m关联所有n的输出到m重定向输入来自另一个文件描述符格式为: n&mn和m都是文件描述符exec n-3 六、操作文件属性命名管道mkfifo file在这里,file是给于该管道的文件名。SUID 和 SGIDSUID 当你执行一个设置了SUID位的程序时,你就继承了该程序的属主的权限,而没有设置SUID位的程序在执行时只拥有执行该程序的用户的权

7、限。SGID设置了SGID位的程序将以程序属主所属用户组的权限来执行。如果一个目录设置了SGID位,任何加到该目录下的新文件自动继承该目录的组,来代替生成文件的用户的组。SUID 和 SGID 位以字母s和S来表示。如果文件的SUID或SGID权限被激活,SUID位就在文件属主的执行权限位。e.g.ls l /usr/bin/passwd-r-sr-xr-x 1 root bin19031Feb713:47/usr/bin/passwd*如果大写字母S代替了小写字母s,则表示该文件的属主执行位没有被激活。粘滞位如果目录的粘滞位被设置,则只有当你是如下用户时,文件才能被删除:设置粘滞位的目录的属

8、组要被删除的文件的属组超级用户root粘滞位以字母t和T表示。如果大写字母代替了小写字母s,则表示该文件的属主执行位没有被激活。chmode.g.chmod go-w,a+x a.oute.g.chmod R o+r pub改变pub目录及其子目录下所有文件的权限使用8进制方法设置SUID和SGID位时,把这些位的数值放在标准权限位的前面,SUID和SGI分别取数字4和2。e.g.chmod 2444 *4 七、进程切换前台进程到后台bge.g.bg %2切换2号任务进程到后台切换后台进程到前台fge.g.fg %2切换2号后台任务进程到前台保持后台进程 nohupe.g.nohup ls &

9、等待后台进程的结束wait此命令会等待所指定的任务或者进程执行完毕。wait命令有3种形式:无选择(缺省)等待所有进程结束,通过进程IDe.g.wait 15060等待15060进程结束通过百分号%作为前缀的任务号e.g.wait %2等待2号任务显示后台任务 jobs该命令显示哪些进程被悬挂,哪些在后台运行。e.g.jobs3 + Runningfirst_one &2 Stopped (SIGTSTP)second_one 1 Stopped (SIGTTIN)third_one &任务3正在运行;任务2是一个前台进程,被Ctrl+Z进行悬挂;任务1是一个后台进程,正在等待键盘输入列出所有

10、运行进程 psUID 进程所有者;PID 进程标识符;PPID 父进程标识符;C 进程CPU占用率STIME进程开始时间;CMD开始进程的命令关闭进程 kille.g.kill %1关闭任务号为1的进程subshell概念当你运行一个shell脚本的时候,除了脚本中的命令之外,另一个shell解释器的拷贝也会产生。设个新shell被称为subshell。覆盖当前的进程 exec 该命令可以用一个新进程来覆盖当前进程。使用时要务必小心!可以exec来彻底更改你的shell解释器而不需要另外产生subshell。 e.g. exec csh第二部分 SHELL编程5 八、变量标量变量一次只能被赋予

11、一个值变量名只能包含字母、数字和下划线 _ 。只能以字母或下划线作为开始。变量值可以存储或分配任何值到变量中。带空格的变量值需要用单引号或双引号引起来。 E.g. ¥ FRUIT=”apple orange plum”访问变量要获取变量的值,只要在变量名之前加上美元符号$作为前缀即可建立数组变量方法一: 直接给一个索引赋值,格式为nameindex=valuee.g.$ FRUIT0=apple; FRUIT1=banana ; FRUIT2=orange方法二:在 ksh中为set A name value1 value2 valueNe.g. $ set A band derri terry mike gene在bash中为name=(value1 valueN)e.g. $ band=(derri terry mike gene)在bash中设定多重数组元素,需要在赋值之前建立一个数组索引:e.g. $ myarray=(0=derri 3=gene 2=mike 1=terry)数组索引不必安装顺序注意:索引必须是一个整数如果一个数组变量名和一个已经被定义了

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号