shell

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

认识shellbash的功能1、命令记忆功能2、命令与文件补全功能(tab键)3、命令别名设置功能(alias)4、变量的功能5、作业控制、前台、后台控制6、程序脚本(shellscripts)7、通配符系统合法的shell[root@bogon~]#cat/etc/shells/bin/sh:BourneShell,最初的shell/bin/bash:BourneAgainshell,标准的GNUshell,直观而又灵活/sbin/nologin:非交互式shell/bin/csh:TurboCshell,语法类似于C语言/bin/tcsh:普通Cshell的超集,加强了的用户友好度和速度/bin/ksh:某些时候被有UNIX背景的人所赏识。Bourneshell的一个超集,有着对初学者来说就是一场恶梦的标准配置历史命令记录history命令与~/.bash_history文件替换历史命令的方法:!n、!cmdhistory–c清除历史命令history-w强制写入历史命令记录文件.bash_history禁止记录历史命令[tom@bogon~]$rm-fr.bash_history[tom@bogon~]$ln-s/dev/null.bash_history[tom@bogon~]$ls.bash_history.bash_history--符号链接文件名[tom@bogon~]$ll.bash_historylrwxrwxrwx1tomtom910-1123:00.bash_history-/dev/nullbash的内置命令—type[root@localhost~]#typecdcdisashellbuiltin[root@localhost~]#manbash[root@localhost~]#typeumaskumaskisashellbuiltin[root@localhost~]#typemkdirmkdiris/bin/mkdirshell的变量功能变量的分类:本地变量、环境变量、系统变量、位置变量变量的显示与设置:echo(显示变量)、unset(取消变量)变量的显示:echo$PATH或echo${PATH}本地变量变量的设置:语法:变量名=值[root@bogon~]#myname=tom[root@bogon~]#echo$mynametom变量的设置规则:变量名与变量值用“=”连接等号两边不能直接接空格符,如果有空格需要用引号将变量名或者变量值引起来变量名称可以由英文字母、数字组成和“_”组成,但开头字符不能为数字!示例:定义的变量值有空格:[root@localhostopt]#aa=nimei[root@localhostopt]#echo$aanimei定义的变量值是一条命令的执行结果:[root@localhostopt]#ker=`uname-r`[root@localhostopt]#echo$ker2.6.18-238.el5取消变量:unset[root@localhost~]#aa=1234[root@localhost~]#unsetaa[root@localhost~]#echo$aa[root@localhost~]#环境变量环境变量的查看:set和export环境变量与本地变量的区别:环境变量可以被子进程引用(调用)本地变量只能被设置该变量的进程引用(调用)环境变量的设置:exportexport:示例:root@localhostopt]#var=huahua定义本地变量[root@localhostopt]#echo$var调用(引用)该本地变量huahua[root@localhostopt]#bash打开子shell[root@localhostopt]#echo$var尝试应用父shell中的本地变量--由于变量var是本地变量,无法引用[root@localhostopt]#exit退出子shellexit[root@localhostopt]#exportvar=123定义环境变量var[root@localhostopt]#echo$$在当前shell的进程号25620[root@localhostopt]#echo$var当前shell中调用该环境变量123[root@localhostopt]#bash打开子shell[root@localhostopt]#echo$var环境变量依然可以调用123将本地变量转换成环境变量[root@localhost~]#var=234定义本地变量[root@localhost~]#exportvar转换成环境变量查看变量(只需会查看即可)set:查看所有变量(包括环境变量和本地变量)Export:查看环境变量env:查看环境变量(只查看环境变量)关于变量需要掌握的:会设置变量,调用变量,查看变量通配符与特殊符号通配符*代表0个或者任意多个字符?代表一个任意字符(一定有一个字符)。[]代表有且只有一个中括号内的字符[-]代表编码顺序内的所有字符,如[0-9]代表0到9之间所有的数字[^]代表反向选择,如[^abc]表示一定匹配一个字符,但非a、b、c这三个字符特殊符号:#注释,用在文件中\转义字符,将“特殊字符或通配符”还原成一般字符;也有换行的意思。|管道(pipe);将前一个命令的标准输出作为后面的命令参数;连续命令执行分隔符~用户的家目录$使用变量前导符,引用变量(解析变量)&作业控制,将程序放到后台运行!逻辑运算中“非”的意思/目录分隔符,数据流重定向,输出导向,分别是“覆盖”和“追加”,数据流重定向‘’单引号,不具有变量置换的功能“”具有变量置换的功能``两个“``”中间为可以先执行的命令,也可以使用$(){}中间为命令块的组合[root@localhostopt]#lsadirfindrhtest1.txttest2.txttestoo.txttesto.txttest.txt[root@localhostopt]#lstest[123456].txttest1.txttest2.txt[root@localhostopt]#touchtest12.txt[root@localhostopt]#lstest[123456].txttest1.txttest2.txt[root@localhostopt]#lstest[123456]?.txttest12.txt[root@localhostopt]#lstest[123456][12].txttest12.txt[root@localhostopt]#lstest[a-z].txttesto.txt[root@localhostopt]#lstest[^a-z].txttest1.txttest2.txt[root@localhostopt]#lstest[^0-9][a-z].txt问号“?”root@localhostopt]#ls0.txtaaabc.txtacc.txtb.txtdir2hardtest1.txtabcd.txtab.txta.txtcjkd.txthard1xxdir[root@localhostopt]#ls?.txt0.txt1.txta.txtb.txtd.txt[root@localhostopt]#ls??.txtab.txt[root@localhostopt]#ls?b.txtab.txt[root@localhostopt]#ls???.txtabc.txtacc.txt[root@localhostopt]#lsa?c.txtabc.txtacc.txt数据流重定向标准输出(stdout):代码为1,使用或标准错误输出(stderr):代码为2,使用或单引号双引号和``[root@bogon~]#var=langis$LANG双引号不影响变量的引用[root@bogon~]#echo$varlangiszh_CN.UTF-8[root@bogon~]#var='langis$LANG'单引号中的变量不会被引用[root@bogon~]#echo$varlangis$LANG[root@bogon~]#var=`hostname`将反引号中的命令执行结果赋值给变量[root@bogon~]#echo$varlocalhost.localdomain[root@bogon~]#var=$(uname-r)同反引号的功能[root@bogon~]#echo$var2.6.18-238.el5[root@localhostopt]#touch{1,2,3,4,5,6}.txt[root@localhostopt]#ls1.txt3.txt5.txtafindtest12.txttest2.txttesto.txt2.txt4.txt6.txtdirrhtest1.txttestoo.txttest.txt逻辑比较/判断数值的比较:-gt大于-ge大于等于-lt小于-le小于等于-eq等于–ne不等于字符比较:====!=使用test命令进行数值的比较:[root@bogonopt]#aa=3[root@bogonopt]#bb=4[root@bogonopt]#test$aa-gt$bb[root@bogonopt]#echo$?1[root@bogonopt]#test$aa-lt$bb[root@bogonopt]#echo$?0使用[]命令进行数字的比较[root@bogonopt]#[$aa-lt$bb][root@bogonopt]#echo$?0命令执行结果的判断依据:“$?”$?(命令的返回值):返回值为0,表示最近一次执行的命令执行正确返回值非0,表示最近一次执行的命令没有正确执行有条件的运行多个命令:“&&”和“||”cmd1&&cmd2:如果cmd1执行正确(即命令返回值为0),则执行cmd2,否则不执行cmd2cmd1||cmd2:如果cmd1执行正确,则不执行cmd2,否则执行cmd2不考虑命令相关性的连续命令执行:“;”cmd;cmd多个比较的连接符&&和||[root@bogonopt]#[$aa-lt$bb]&&echoOK&&前的比较结果如果为真,则执行后面的命令OK[root@bogonopt]#[$aa-gt$bb]&&echoOK&&前的比较结果为假,则不执行后面的命令[root@bogonopt]#[$aa-lt$bb]||echoOK与&&相反,下同[root@bogonopt]#[$aa-gt$bb]||echoOKOK[root@bogonopt]#[-fa.txt][root@bogonopt]#echo$?0[root@bogonopt]#[-da.txt][root@bogonopt]#echo$?1几个特殊的系统变量:$nn是一个整数,从1开始,表示参数的位置,例如$1表示第一个参数$*以参数1,参数2…的形式将所有的参数通过一个字符串返回$#命令行参数的个数$0当前shell脚本的名称$?前一个命令的返回值$$返回本程序的pid(进程号)[root@bogonopt]#cat1.sh#!/bin/bashecho总共的参数个数为:$#echo当前脚本的名称是:$0echo参数分别为:$*echo第一个参数为:$1echo第十一个参数为:${11}[root@bogonopt]#./1.shabcdefghigk总共的参数个数为:11当前脚本的名称是:./1.sh参数分别为:abcdefghigk第一个参数为:a第十一个参数为:k***Read命令讲解简单的脚本for循环添加用户的脚本#!/bin/bashforiin12345douseradduser$iecho123|passwd--stdinuser$idoneif判断的示例1、[root@localhostshell]#cat2.sh#!/bin

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功