版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第11章 认识与学习bash什么是shellvshell是用户和Linux操作系统之间的接口。什么是shellv如果把如果把Linux内核想象成一个球体的中心,内核想象成一个球体的中心, shell就是围绕内核的外层。当从就是围绕内核的外层。当从shell或其他程序向或其他程序向Linux传递命令时,内核会做出相应的反应。传递命令时,内核会做出相应的反应。什么是shellvshell是一个命令语言解释器,它拥有自己内建的是一个命令语言解释器,它拥有自己内建的shell命令集,命令集,shell也能被系统中其他应用程序所也能被系统中其他应用程序所调用。用户在提示符下输入的命令都由调用。用户在提示
2、符下输入的命令都由shell先解先解释然后传给释然后传给Linux核心。核心。shell的种类vLinux中有多种shell,其中缺省使用的是bash。vBourne shell(简称sh)vC shell(简称csh)vKorn shell(简称ksh)vBourne Again shell(即bash)l 在/etc/shells文件中列出了系统所有支持的shell程序。1.每个用户登录的时候都会取得自己的shell程序,该程序记录在/etc/passwd文件中。bash shell的功能l 命令记忆的能力(history)l 命令与文件补全功能(tab键)l 命令别名设置功能(alias
3、)l 程序脚本(shell script)l 通配符(wildcard)v type commandv 内部命令:v有一些命令,比如改变工作目录命令cd,是包含在shell内部的。v 外部命令:v还有一些命令,例如拷贝命令cp和移动命令mv,是存在于文件系统中某个目录下的单独的程序。命令的类型v 如果命令串太长,如何使用两行输出v 利用”Enter”来将Enter这个按键转义,让Enter按键不再具有开始执行的功能。命令的执行v 变量:指一段命名的内存空间,可以暂存数据,让我们多次重复使用的,必要时还可以进行修改。v shell变量分为两类:l 标准shell变量,用户登录时shell为建立用
4、户工作环境而注册的变量,也称环境变量;l 用户自己定义的变量,即用户变量(本地变量)。shell变量v 变量定义 变量名=值 (特别注意:赋值号两边没有空格)。 变量命名:以字母或下划线开头,其后可以是字母、数字和下划线。 若变量内容中有空格,需要用或者”将变量内容结合起来。注意:双引号里的特殊字符保有原本的特性,单引号则解释为普通字符。 可以用反斜杠 将特殊字符(如Enter字符,$字符,字符,字符,”字符,空格等等)转换为普通字符。用户变量v 变量的取用可通过以下方式来操作 echo $varname /直接使用 echo “$varname” echo $varname /建议这种方式v
5、注意:要作为左值直接使用varname增加变量的内容,采用后面两种方式:book=$books用户变量v 在一串命令中,若需要通过其他的命令提供的信息,可以使用反单引号command或$(command)来将命令进行替换。l 举例:v dirname=“your working directory is pwd”v echo $dirnamev 取消变量的方法使用:unset varnamev 若变量需要在其他子进程执行,则需要以export来使变量变成环境变量:export varname用户变量v 环境变量是shell为了维护用户的使用环境而定义的一些变量。Linux环境(shell环境)
6、由许多变量组成,这些变量决定了用户环境的外观。环境变量是被导出的变量。v 环境变量可以被当前shell下启动的子进程(子shell) 所继承,而本地(用户)变量不被继承;而且子进程的环境变量独立于父进程,子进程中对环境变量的修改不影响父进程变量的值。环境变量v 用户变量的设置用“=”直接赋值,而环境变量的设置用export命令。v export variable 本地变量转成环境变量v export variable=10v 仅执行export而没有接变量时,显示环境变量。v 环境变量的查看用env命令。v 所有变量的查看用set命令(含环境变量与用户变量)。环境变量定义uHOME: 用户主文
7、件夹的全路径名。如/home/ghli16uPWD:用户当前工作目录的路径。uPATH: shell查找命令的目录列表,目录名用冒号隔开 用户可以设置它,如:PATH=$PATH:$PWDuSHELL:当前使用shell的类型,默认值是/bin/bashuHISTSIZE:历史命令的记录条数。uLANG:语系数据。uMAIL:系统信箱的路径。uRANDOM:随机数的变量。常用环境变量v PS1:定义shell的命令提示符,bash默认的提示符一般为 uh W$v PS1常用转义符d 可以显示出星期 月 日的日期格式H 完整的主机名h 仅取主机名的第一个小数点之前的名字u 目前使用者的帐号名称w
8、 完整的工作目录名称W 利用basename函数取得的工作目录名称$ 提示字符,如果是root,提示字符为#,否则就是$字符命令提示符变量v $本身也是个变量 代表目前这个shell的PID(Process ID)v echo $打印出当前shell程序的PID号码v ?也是一个特殊的变量 代表上一个执行的命令所回传的值。 一般来说,如果命令成功执行,则回传一个0值,否则以非0的数值代替。v echo $?打印出上一个命令执行的返回代码$和?变量v 举例v echo $SHELLv echo $?v 12name=Tomv echo $?v echo $??变量v read:从键盘读取用户输入
9、的数据到指定变量中v 格式:read -pt variablev 选项: -p 后面可以直接接提示信息,该提示信息给用户提示用; -t 后面可以接等待的秒数。v 举例:v read atestv read p “please input your name:” -t 30 namedv read -赋值给默认变量REPLY输入命令输入命令v 格式:read 变量名列表变量个数与给定数据个数相同,则依次对应赋值;变量个数少于数据个数,则从左至右对应赋值,但最后一个变量被赋予剩余的所有数据;变量个数多于给定数据个数,则依次对应赋值,而没有数据与之对应的变量取空串。例:M=N MN$ read x
10、y zToday is Monday$ echo $z $x $yMonday Today is$ read n1 n2 n3First Second Third 1234 abcd$ echo $n3Third 1234 abcd$ echo $n2 $n1Second First$ read n1 n2 n31 2 $ echo $n3$ echo $n1 $n21 2输出命令uecho:显示其后变量值或直接显示其后字符串格式:echo option string 将string的内容按照option指定的方法送到屏幕上进行显示l-n输出后不换行输出后不换行l-e如果echo命令带有选项“
11、-e”,那么在其后的参数中可以有以下转义字符:a响铃,n换行,t跳格, b, c,e,f,r,v,等l举例:$ echo -e Enter the file name -c Enter the file name -$ v 格式:declare -aixr variablev 选项: -a 将后面的variable的变量定义为数组类型 -i 将后面的variable的变量定义为整数数字类型 -x 将后面的variable的变量定义为环境变量 -r 将变量定义为readonly类型,该变量不能被改动内容声明变量类型declarev 举例:注意:bash中变量类型默认为字符串声明变量类型decla
12、rev 环境变量的设置与取消:注意:将-换成+号可以将变量的对应的属性取消声明变量类型declare数组( array)变量类型u数组:数组:Bash只提供一维数组,下标从只提供一维数组,下标从0开始,大小无限定开始,大小无限定u声明数组:声明数组:declare -a 数组名数组名(其实不用声明,按数组方式直接赋值给变量即可,其实不用声明,按数组方式直接赋值给变量即可,BASH就知道那是数组就知道那是数组)u数组赋值:数组赋值:(1) array=(var1 var2 var3 . varN)(2) array=(0=var1 1=var2 2=var3 . n=varN)(3) array
13、0=var1 arrya1=var2 . arrayn=varN数组( array)变量类型u读取数组元素:$数组名下标如:# echo $city0u用*或作下标表示数组中所有元素:$数组名*/ ,元素之间用空格分开u计算数组元素个数:$#array 或者 $#array*u删除数组元素:unset 数组下标 清除相应的元素;unset 数组 不带下标,清除整个数据。命令别名设置valias name=command 设定command的别名为name;valias: 查看所有的命令别名;vunalias name:撤销别名;v举例:alias cls=clearalias dir=ls -
14、l历史命令v在默认的情况下,bash会将历史命令更新到/.bash_history当中。v默认保存1000条,也可以更改这个值。u改变存放历史命令的文件:改变存放历史命令的文件: 通过重新为环境变量通过重新为环境变量HISTFILE赋值来改变,如:赋值来改变,如: HISTFILE=/home/ghli16/.myhistoryu改变保存命令的条数:改变保存命令的条数:通过重新为环境变量通过重新为环境变量HISTSIZE赋值来改变,如:赋值来改变,如: HISTSIZE=600历史命令历史命令v使用格式:vhistory nvhistory -cv选项: n 列出最近的n笔命令 -c 将目前s
15、hell中所有的history内容都清除历史命令历史命令v执行历史命令格式:以字符“!”开头、后随一个或多个字符来定义用户所需的某种类型的历史命令。 格格 式式 意意 义义 ! 重复上一条命令,也就是“!-1” !n 重新执行第n条历史命令 !-n 重新执行倒数第n条历史命令。!-1就等于! ! !string 重新执行以字符串string开头的最近的历史命令行。!?string? 重新执行最近的、包含字符串string的那条历史命令 !# 到现在为止所输入的整个命令行 说明:如果在“!”前加上反斜线“,或者在其后跟着空格、制表符、换行符、等号或开括号,那么“!”就作为普通字符对待。命令查找的
16、顺序v以相对/绝对路径执行命令,例如“/bin/ls”或“./ls”;v由alias找到该命令来执行;v由bash内置的(builtin)命令来执行;v通过$PATH这个变量的顺序找到的第一个命令来执行。l 举例:l lsl type -a ls #查看ls命令执行顺序通配符v* 代表0个到无穷多个任意字符;v? 代表一定有一个任意字符;v代表一定有一个在中括号内的字符,如abcd;v-代表在编码顺序内的所有字符,如a-z代表a到z之间的所有字母;v如果中括号第一个字符为指数符号,那么表示反向选择;举例v 列出/etc/下面以cron为开头的文件: ls -ld /etc/cron*v 列出/
17、etc/下面文件名刚好是五个字母的文件名: ls -ld /etc/?v 列出/etc/下面文件名含有数字的文件: ls -ld /etc/*0-9*v 列出/etc/下面文件名开头不是小写字母的文件名: ls -ld /etc/a-z*数据流重定向v 标准输入(stdin),默认对应终端的键盘;v 标准输出(stdout),默认对应终端的屏幕;v 标准错误输出(stderr),默认对应终端的屏幕。v 数据流重定向: 输出重定向:将某个指令执行后应该在屏幕上出现的数据,传输到其他的地方比如文件或者设备。 输入重定向:将原本需要由键盘输入的数据改由文件内容来替代。输出重定向v 标准输出(stdo
18、ut),代码为1,使用或者;u命令命令 文件名文件名 如:如:$ date datefile注意:如果原文件存在,新的执行结果会把原文件内容注意:如果原文件存在,新的执行结果会把原文件内容覆盖。覆盖。u命令命令 文件名文件名 如:如:$ date datefile这种形式是附加到指定文件的后面,不会破坏文件原内这种形式是附加到指定文件的后面,不会破坏文件原内容容输出重定向v 标准错误输出(stderr),代码为2,使用2或者2。u命令命令 2 文件名文件名 u命令命令 2文件名文件名 如:如:$ xxxxxx 2 erroru标准输出和标准错误输出可以重定向到同一个文件,一般标准输出和标准错误
19、输出可以重定向到同一个文件,一般形式是:形式是:命令命令 & 文件名文件名如:如:$ find /home -name .bashrc & listudate 2 error 1&2 right 2&1 =错误的像正确的一样导入错误的像正确的一样导入输入重定向v 标准输入(stdin),代码为0,使用或者。u命令命令 catfileu文件内容替代键盘输入 cat catfile catfile eof命令执行的判断依据u1顺序执行:顺序执行: 各条命令之间以分号(;)隔开,从左到各条命令之间以分号(;)隔开,从左到右依次执行。右依次执行。 例:例:$ pwd ;
20、 ls -l; cd /usr/binu2逻辑与:逻辑与: 命令命令1 & 命令命令2 其功能是:先执行命令其功能是:先执行命令1,如果执行成功,才执行命令,如果执行成功,才执行命令2; 否则,若命令否则,若命令1执行不成功,则不执行命令执行不成功,则不执行命令2。 例:例:$ ls /tmp/testdir & touch /tmp/testdir/aau3逻辑或:逻辑或:命令命令1 | 命令命令2 其功能是:先执行命令其功能是:先执行命令1,如果执行不成功,则执行命令,如果执行不成功,则执行命令2; 否则,若命令否则,若命令1执行成功,则不执行命令执行成功,则不执行命令2。
21、 例:例:$ ls /tmp/testdir | mkdir /tmp/testdir命令执行的判断依据v 举例: 用ls测试/tmp/testdir是否存在,若存在则显示”exist”,若不存在,则显示”not exist”。 # ls /tmp/testdir | echo “not exist” & echo “exist” # ls /tmp/testdir & echo “exist” | echo “not exist”管道命令v 管道命令:由竖杠“”隔开的若干命令组成的序列。 执行时,前一个命令的输出正好是下一个命令的输入。v 管道命令必须要能够接受到前一个指令的数据作为stdinput才可以执行,如:less,more,head、tail等;v 管道命令仅仅能够处理标准输出,不会处理标准错误输
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 进产房要签什么协议书
- 超声检查常规操作流程
- 物业接管验收协议书
- 天丝五十年协议书
- 文明礼貌行为规范
- 精神疾病患者居家护理与康复指南
- 2026四川泸州龙马潭区人民医院招聘3人备考题库附参考答案详解(模拟题)
- 肺源性心房纤颤预防措施
- 2026山西晋中市寿阳县国有资本运营有限公司及下属公司中高层管理人员招聘12人备考题库附参考答案详解(完整版)
- 2026江苏苏州高新区实验初级中学招聘1人备考题库及参考答案详解(满分必刷)
- 白塞病口腔溃疡的护理对策
- 2026年山西单招旅游大类文化素质模拟卷含答案语数英合卷
- DB31∕T 634-2020 电动乘用车运行安全和维护保障技术规范
- 《光伏材料检测技术》课件-太阳电池生产过程中光学性能检测
- 焦油事故应急预案(3篇)
- 2025年智联招聘国企笔试题库及答案
- 专升本生物专业2025年分子生物学测试试卷(含答案)
- 不锈钢管常用标准及规格参考表
- 铝锭交易居间合同范本
- 铁路轨枕防腐施工方案
- 2026年淮南师范学院单招职业适应性考试题库1
评论
0/150
提交评论