




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Lesson08 Shell进阶,复习,vi常用命令:模式切换,光标控制,复制,粘贴,保存,退出等等 shell入门:echo set export alias history,内容提要,配置文件 特殊符号 命令重定向 管道命令 Shell Scripts,BASH Shell的配置文件,系统设置(所有用户有效) /etc/profile 设置系统范围内的环境变量:PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC。比如需要修改历史命令的记忆数量,可以在这里把 HISTSIZE=1000 这一行进行修改(一般改到50)。 设置启动时执行的程序。例如/etc/profile.d/下面的所有.sh脚本都将被执行 /etc/bashrc 设置登录之后需要设置的环境变量,例如其中定义了uid比99打的话umask设置为002,否则设置为022 设置命令别名 /etc/man.config 定义了使用man命令时,查找man信息的路径,BASH Shell的配置文件,个人设置(只对本用户有效) /.bash_profile 定义用户的个性环境变量以及需要运行的程序。如: JAVA_HOME=/app/java/jdk1.5.0_11 export JAVA_HOME PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$JAVA_HOME/jre/bin export PATH /.bashrc BASH的个性化设置,例如个人常用变量以及命令别名 /.bash_history 命令历史 /.bash_logout 注销的时候执行的命令,默认只是调用clear清屏,可以把history -c加上(清空历史命令记录),BASH Shell的配置文件,执行文件的命令:source 语法: source filename 作用: 在当前的shell环境中读取和执行filename中的脚本。 如果修改了用户的配置文件,可以通过注销再登录来自动运行新的修改。也可以通过执行source命令使之生效。如: echo “alias lsl=ls -al | less“ .bashrc lsl =无效 source .bashrc lsl =有效了,特殊符号,符号 含 义 * 通配符,代表任意字符(0到多个) ? 通配符,代表一个字符 # 注释,常用在脚本中,用于说明 转义符,将特殊符号“打成原形” / 路径分隔符号 | 分隔两个管道 ; 连续执行命令的分隔符 用户根目录(Home) $ 引用变量时需要加在前面的修饰符 & 指令变成在背景下工作,特殊符号,符号 含 义 ! 逻辑非 , 输出重定向,分别表示替换和增加 单引号,其中的变量失效 “ 双引号,其中变量有效 字符组合 引用命令执行结果 Ctrl+C 终止当前执行的命令 Ctrl+Z 暂停当前执行命令 Ctrl+D 输入结束 Ctrl+M 回车,特殊符号,举例: ls test* =列出当前目录下所有以test开头的文件 ls test? =列出以test开头且文件名为5个的字符文件 ls test? =列出以test开头且文件名称为7个字符文件 cp test1-5 /tmp =拷贝test后面是数字1到5的文件至/tmp cd /lib/modules/uname -r/kernel/drivers =被 括起来的内容会先执行cd后执行,如: /lib/modules/2.6.18-8.el5/kernel/drivers,特殊符号,连续执行命令的方式: 方式1:command1 ; command2 方式2:command1 & command2 方式3:command1 | command2 方式1的意思是执行完command1之后,不管command1的执行结果是成功还是出错,command2继续执行。 方式2的意思是执行完command1之后,如果command1执行成功command2才继续执行。 方式3的意思是执行完command1之后,如果command1执行失败command2才继续执行。,特殊符号,连续执行命令的方式举例: ls abcd ; ls . ls abcd & ls . ! ls abc & ls . ls abcd | ls . 如果abcd目录不存在,上面的命令执行结果有何不同?,命令重定向,重定向就是把所得数据转到其他地方 例如ls -l会把结果输出到屏幕上,但是ls -lt就会把结果输出到文件t中,屏幕上啥也没有。而且如果t文件不存在,则新建该文件,如果t存在,那么起内容被覆盖 BASH的三个“标准” 标准输入:代码为0,使用方式为 错误输出:代码为2,使用方式为2,命令重定向,重定向的使用方式: 命令 设备或者文件 1 2 :将原本在屏幕输出的数据输出到右边的文件或者设备(如打印机) :将原本在屏幕输出的数据追加到右边,与不同的是,该文件将不会被覆盖而是增加 2 :将原本在屏幕输出的错误数据输出到2的右边 /dev/null :“黑洞”设备,来什么扔什么,命令重定向,重定向的使用方式举例: find / -name test /dev/null /dev/null /tmp/correct 2/tmp/err /tmp/correct 2&1 a 2a =会怎样? 某些数据要被冲掉,命令重定向,重定向的使用时机: 当屏幕输出的信息很重要,而且我们需要将他存下来的时候 后台执行中的程序,不希望他干扰屏幕正常的输出结果时 一些系统的例行命令(例如写在/etc/crontab 中的文件)的执行结果,希望他可以存下来时 执行某些命令,我们已经知道他可能会显示某些错误信息,而这些错误信息对我们不重要时,可以用2/dev/null将他丢掉 错误信息与正确信息需要分别输出时,管道命令,什么是管道? 管道是指一个命令的标准输出可以作为另外一个命令的标准输入的机制。 每个命令完成自己的独立任务,管道提供了一种协作机制 把管道“连接起来”的符号: | 注意:管道不能处理标准错误信息,管道命令,典型应用问题 显示文件的10行到20行 分页显示/etc下面的所有文件 查看当前登录用户的数量 查询本月root用户的登录次数,管道命令,cut 切割命令,用于对行的文本进行切分 语法: cut -d “分隔字符“ -cf fields d参数指定用于切分的标志字符 c参数指定提取每行的多少字符 f参数指定分割之后取哪一个域(块),编号从1开始。可以使用逗号表示同时取出多个域(如1,4),也可以使用“-”表示域的范围(如13) 注意:-c和-d不能一起用,-f必须和-d结合,管道命令,cut命令实战 cat /etc/passwd | cut -d “:“ -f1 将 passwd 这个文件每一行里头的 : 用来作为分隔号,并列出第一个区块(姓名)。 root test /root# last | cut -d “ “ -f1 以空格符为分隔,并列出第一个域(用户名) root test /root# last | cut -c1-20 将last结果中每行的1-20个字符取出,管道命令,sort 排序命令 语法: sort -nru -n:使用纯数字排序,否则以字母顺序排序 -r:反向排序 -u:相同行只列出一次,管道命令,sort命令实战 按照用户GID排序 tail /etc/passwd | cut -d “:“ -f4 | sort tail /etc/passwd | cut -d “:“ -f4 | sort -n tail /etc/passwd | cut -d “:“ -f4 | sort -nr tail /etc/passwd | cut -d “:“ -f4 | sort -nur,管道命令,wc 计数命令 语法: wc -lmw 参数说明: -l :多少行 -m :多少字符,包括空格 -w :多少单词,以空格来进行分割 举例: who | wc -l who | wc -w cat /etc/passwd | wc -w,管道命令,uniq 去掉重复行的命令 语法: uniq -cdu 参数说明: -c 在每行的前面显示出现次数 -d 只显示出现次数大于1的行 -u 只显示出现次数等于1的行 注意:uniq只能去除相邻的重复行 实验,管道命令,tee 从标准输入读取,同时输出到标准输出以及文件 语法: tee -a 参数说明: -a 附加到文件而不是覆盖 举例: last | tee last.lst | cut -d “ “ -f1 last | cut -d “ “ -f1| tee last2.lst,管道命令,tr 转换或者删除字符 语法: tr -ds SET1 SET2 参数说明: 不带参数:把SET1中的字符转化为SET2 -d 删除SET1中的字符 -s 把输入数据中包含在SET1中的重复字符去除 举例: last | tr a-z A-Z =小写变大写 last | tr 0-9 $ =数字变美元 cat /etc/passwd | tr -d : =去掉冒号,管道命令,grep 语法: grep -e PATTERN FILE. 打印匹配条件的行,如果存在FILE参数,那么输入来自文件,否则来自标准输入。 参数说明: -e 指定PATTERN为匹配模式,常用于表达式 以-开头的情况 举例: 查询本月hexy的登录次数: last | grep hexy|wc -l,管道命令,正则表达式 . 代表一个任意字符,一定要有一个字符存在 ? 匹配0次或者1次,也可以用于表示单一字符 * 匹配任意次,也可以用于表示任意字符 list 列表中的字符 range 列表中范围内的字符,范围用“-”分隔,管道命令,正则表达式 list 不属于list的元素,与 list 相反 range 不属于range的元素,与 range相反 n 与前一个相同条件连续匹配n个 n,m 与前一个相同条件连续匹配n到m个,管道命令,正则表达式实验,假设有如下文本,文件名称为t: hi, i am eric, my phone ismobile phone isat changsha , i will usemy id is 22334455667 my email is may be u can also use ERIC-HXY163.COM call me please bye,管道命令,问题: 如何查找文本中的移动电话? grep -e “130-99“ t 如何查找文本中的固定电话号码? grep -e “00-92,3-0-97,8“ t,Shell Scripts,什么是Shell Scripts? 一系列连续命令 如何执行? 使文件具备执行属性,然后执行 使用sh命令,如sh a,Shell Scripts,建立第一个脚本: vi test01 输入 echo hello scripts world 保存退出 增加可执行权限:chmod a+x test01 执行./test01 去掉可执行权限: chmod a-x test01 执行./test01 执行 sh test01,Shell Scripts,默认变量类型是字符串,其他变量声明用d: 语法: declare -afir 变量名称=初始值 含义:-a定义数组,-f定义函数,-i定义整数,-r定义只读变量,Shell Scripts,变量声明举例: a1=10 b1=20 c1=$a1*$b1 echo $c1 declare -i a2=10 declare -i b2=20 declare -i c2=$a2*$b2 echo $c2 实验,Shell Scripts,跟用户交互read: echo input u name: read name echo u name is $name 参数的读取: $0代表命令或者脚本名称,$1代表第一个参数,一直到9 实验,Shell Scripts,常用的逻辑判断: -f 检测文件是否存在 -d 检测目录是否存在 -e 检测对象是否存在,对象可以是任何东西 -r 文件是否具备可读属性 -w 是否可写 -x 是否可执行 -s 文件是否非空 -u 文件是否具备SUID -g 文件是否具备SGID -k 文件是否具备sticky bit属性 & 逻辑与 | 逻辑或,Shell Scripts,常用的整数运算符: -eq 等于 -ne 不等于 -lt 小于 -gt 大于 -le 小于或等于 -ge 大于或等于,Shell Scripts,常用的字符串运算符: str 若str为非空字符串则为真 str1=str2 若str1与str2相同则为真 str1!=str2 若str1与str2不相同则为真 str1str2 若str1比str2排序较大则为真 -z str 若str长度为0则为真 -n str 若str长度大于0则为真,Shell Scripts,条件判断: 最简单的条件判断 if condition ;then action fi 注意: 在中,只能有一个判断式 在与之间,可以使用&或|组合,Shell Scripts,条件判断: 复杂的if语句: if condition ; then action elif condition2 ; then action2 elif condition3 ; then else actionx fi,Shell Scripts,问题: 如果用户输入Y或者y就打印hello,否则打印bye,这个脚本该如何写? echo “press any key to continue“ read key if “$key“ = “y“ | “$key“ = “Y“ ; then echo “hello“ else echo “bye“ fi,Shell Scripts,条件判断: 分支判断: case 字符
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025节能器采购合同书
- 2025解除房屋租赁合同协议书版本
- 2025江苏徐州市泉山国有资产投资经营有限公司部门负责人选聘2人(二)模拟试卷附答案详解(完整版)
- 2025年北京市二手车交易委托代理合同
- 2025年荆门市“招硕引博”考试考前自测高频考点模拟试题有答案详解
- 2025年“才聚齐鲁成就未来”山东泰安市泰山财产保险股份有限公司河南分公司社会招聘4人考前自测高频考点模拟试题及1套完整答案详解
- 2025企业集体合同协议
- 2025年度湖北省纪委监委考试录用公务员专业测试考前自测高频考点模拟试题及一套答案详解
- 经济学考试题库及答案
- 邮政财务考试题库及答案
- 湖南安全员c3考试试题及答案
- 2025年中学生心理健康测试题及答案
- 产品品质及售后无忧服务承诺书3篇
- 2025年第11个全国近视防控宣传教育月活动课件
- 患者跌倒的预防及管理课件
- 医疗设备验收单
- 质量体系调查表模板(空)
- 新型干法水泥回转窑系统介绍
- 竞选大学心理委员ppt模板
- T∕CEPPEA 5008-2021 城市电缆线路岩土工程勘察规范_
- 医师执业注册健康体检表
评论
0/150
提交评论