版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章 Bash Shell目 录1 Bash 引言2 命令列表和脚本3 Bash变量4 命令行替换5 自定义Shell6 获得shell脚本和shell初始化本章所用到的命令1 Bash 引言1.1 Bash Shellshell是最常用的程序shell功能:侦听用户指令、启动这些命令所指程序、并将结果反馈给用户Linux最常用的shell是bash shell,也是红帽企业默认的shell1.2 交互式shell vs. Shell脚本交互式Shell:与用户有交互,一步一致性Shell:封装了大量执行语句,很少与用户交互1.3 启动ShellShell和子Shell(执行bash命令)/
2、.bashrc文件用户Shell启动时,先执行这个文件!修改文件,让用户进入Shell之后,显示本月日历1.4 键入命令交互式Shell不断地重复侦听命令行的循环、解析被请求的命令、执行任何被请求的操作,并且显示结果。Shell侦听键盘输入,用回车键确认输入结束。1.5 命令历史记录historybash历史记录替换语 法替 换!前一个命令!n命令号n!-n倒数第n个命令!cmd最后用来启动cmd的命令在会话之间保存历史记录命令行历史记录保存在/.bash_history文件中只有当shell退出时,才会将命令写入到文件中history命令的使用技巧Esc+.和alt+.输入之前键入的命令行的
3、最后一个标记,比如上一个命令行里最后用了一个很长的路径,下一个命令直接输入上边任意一个命令即可重复输入上一个很长的路径crtl+r模仿了!cmdfc默认打开vi编辑器,然后在里面输入命令,退出编辑器时,自动执行这个文件里面的命令示例1:使用历史记录缩短“编辑/编译/执行”循环示例2:使用alt+.示例3:禁用命令历史记录2 命令列表和脚本2.1 运行多个命令Bash Shell通过使用”;”隔开命令(独立的程序语句用分号隔开,这一点和英语很像)让用户在一个命令行中输入多个命令cd /etc/X11; ls 等同于cd /etc/X11 ls2.2 在子Shell中运行命令可以通过将命令扩在括号
4、里允许用户在子shell中简便的运行命令。(cd /etc/X11; ls )2.3 Shell脚本介绍脚本的第一行必须指定向哪个解释器发送指令,可以用一个名叫“shebang”(读作shuh-bang),即一般写作#!/bin/sh或者#!/bin/bash在运行脚本前,你必须赋予脚本可运行的权限脚本的位置一般用绝对路径或相对路径来引用脚本如/a.sh或者./a.sh(当前路径下的a.sh)一般把脚本放置/bin里,运行脚本时则直接输入脚本名称即可返回值程序返回0意味着无论它要完成什么都是“成功”的,而返回值是0以外的数值则意味着某种形式的失败$?存放着上一个命令的返回值有条件地运行多个命令
5、&:命令1 & 命令2 :只有第一个命令成功(非0值)时,才运行第2个命令| :命令1 | 命令2 :只有第一个命令失败(0)时,才运行第2个命令示例1:echo $?两次,首先运行ls -l /etc/password示例2:显示bash提示。修改/.bashrc,以后用户stu登录bash时,显示“hello Linux”3 Bash变量3.1 Shell变量基础知识Shell变量由局部变量和环境变量组成以下是局部变量的设置,局部变量只存在于创建它的shell中变量用VAR=value语法建立和设置,用$VAR语法解析注意“=”两边不要用空格!3.2 Shell变量详述变量名的构成(A-Z
6、,a-z,0-9)和下划线(_),但不能用数字开头Shell变量区分大小写示例1:变量值里有空格A=hello LinuxA=“helo Linux”示例2:变量名被最大解析A=appleecho “oh, I like them” $A_ode.txtecho “oh, I like them” $A_ode.txtunset取消变量名unset 变量名3.3 bash 变量常用的bash变量? 最新执行命令的退出状态$ 当前shell的进程id! 最新后台命令的进程idPPID shell父进程的进程idUID 当前用户的用户id3.4 环境变量export VAR 将已经设定好的VAR变
7、量“提升”为环境变量,使之有局部变量提升为全局变量su - 切换用户,不继承环境变量su 切换用户,继承环境变量unset 可以撤销环境变量3.5 列出变量set:列出了shell变量和与shell相关的环境变量env:只列出了已经被导出成为环境变量的变量3.6 常用的环境变量示例1:使用变量来引用常用字,比如: ,使之登录bash即可用示例2:给PATH环境变量附加目录/usr/sbin4 命令行替换4.1 命令行替换执行命令前,bash shell会对命令进行一些替换。有几个类型的bash替换,如:路径名替换(文件名匹配)和变量替换bash 中的命令行替换替 换语 法含 义历史(histo
8、ry)!前一个命令行大括号指定的文本代字号用户的主目录变量$,$Shell和环境变量算术$(.)算术运算命令替换,$()运行在子shell中的命令输出路径名*,?,.,.文件系统中匹配的文件名历史替换!n大括号替换大括号替换把一个单词展开为多个单词,一次一个,循环替换“大括号”中的元素mkdir chap01,02,03,04mkdir chap01,02,03,04/html,text代字号替换:表示当前的用户主目录username:表示username用户主目录变量替换$VAR:最简单的变量替换$VAR_df:变量名是整个单词一部分时,用括起来算术替换W=16H=82echo $( $W
9、* $H )bash只支持整数运算命令替换命令替换让用户在子shell中运行任意的命令,并把结果合并在命令行中mkdir report.$(date +%d%b%Y)或者 date +%d%b%Y mkdir report.$( !d )路径名替换(文件名匹配)*?.4.2 引用和转义字符bash shell 的引用和转义语 法作 用避免下一个字符被shell解释“”避免双引号内除了$,!和(反引号)字符以外的其他字符被shell解释避免单引号内的字符被shell解释错误语句CAR=covettesecho little red $CAR 修正1:echo “little red $CAR ”
10、结果?修正2:echo little red $CAR 结果?修正3: echo little red $CAR 修正4:echo little red $CAR 4.3 引号注意事项FOOD=Appleecho “wow! whoami sells $FOOD” for $!双引号:想照字面意思处理大多数标点,或者把字合并为单个标记,但是仍能使用变量替换、命令替换或历史替换单引号:想照字面意思处理所有的标点,包括变量替换和命令替换反引号:用来进行引号内命令输出替换4.4 命令行替换的微妙之处find /etc -name *.conftouch a.conf b.conffind /etc
11、-name *.conf (find /etc -name a.conf b.conf)find /etc -name *.conf如果当前目录下有yum.conf,则只能找到这个如果你要把一个特殊的字符追加到命令中,你应该用引号(或反斜线转义)来保护这个字符,否则,bash会先进行命令行替换!示例1:使用大括号替换。stu建立目录aa,bb,cc,dd,然后分别在目录里创建文件FF示例2:更多的tab补全。用户名,会自动补全用户名$变量名,会自动补全变量名示例3:引用拙劣的文件名touch make $ *fast* !touch make $ *fast* !5 自定义Shell5.1 s
12、hell的内置命令由shell本身实现的命令称作shell的内置命令help:返回有关shell的版本信息,以及最后列出内置命令help 内置命令:查看内置命令的详细说明5.2 别名alias 别名=valuealias 无参:显示系统当前定义的别名alias 别名1 别名2 :查看别名信息unalias 别名:取消别名别名替换何时别名替换?bash shell只需要命令(即命令行上的第一个词)就会寻找别名运行命令bash shell替换是别名吗,是的话展开别名是内置命令吗,是的话执行是可执行文件吗,是的话执行5.3 自定义bash提示符基本提示符:stustation stu$第二提示符:用
13、PS1和PS2自定义bash提示符PS1=“I m waiting”PS2=“Im still waiting”bash提示符中常用的转义序列序 列替 换a终端响铃d以“星期 月份 日期”格式显示日期h直到第一个“.”的主机名T以12小时制HH:MM:SS格式显示当前时间u当前用户的用户名W当前工作目录的最后一个目录名!命令历史记录号码$如果有效用户ID为0,那么提示符为#,否则提示$nnn与八进制数字nnn对应的字符5.4 bash shell标志和shell选项set:常用来修改使用单个字母标志的shell行为shopt:配置shell选项shell标记:set内置命令与命令行选项一起使用
14、时(通常是这种情况),用这个命令来设置或复位shell标志当不参加参数调用时,set命令显示所有shell变量和它们的值主要用于shell脚本set -fls /etc/*.confset +fls /etc/*.confshell选项:shopt内置命令shopt shell选项:查看shell选项状态,是否开启shopt -s shell选项:启动shell选项shopt -u shell选项:关闭shell选项示例1:红帽企业版Linux默认别名示例2:用别名创建更安全的rm,mv和cp命令。修改/.bashrc,添加下面2行alias ts=“touch $(date +timesta
15、mp.%H:%M:%S”alias tsc=“find . -newer”alias tsc=find . -newer #为什么选择这个?6 获得shell脚本和shell初始化6.1 获得脚本source 脚本 :执行脚本命令. 脚本:执行脚本命令当“.”作为一行中的第一个字单独出现时,它是source命令的同义词。当“.”单独出现在其他任何地方时,它是指当前目录。6.2 bash初始化登录shell:登录到一台机器上看到的第一个shell非登录shell:其他shell为非登录shell交互式shell:手动启动的子shell或者新打开的X终端中的shell都是交互式shell非交互式s
16、hell:由于命令替换而被调用的shell等是非交互式shellbash启动脚本登录shell/etc/profile /etc/profile.d/*.sh /.bash_profile /.bashrc /etc/bashrc非登录shell(交互式)/.bashrc /etc/bashrc非登录shell(非交互式)不获得任何启动文件为什么有登录和非登录shell之分登录shell在启动时已经完成了初始化工作,非登录shell没必要再重新初始化一次为什么有交互式和非交互shell非交互式shell是为了得到结果而启动的子shell,为了保持和“父”shell环境的一致,所以非交互式shell不获得启动脚本6.3 退出登录shell:退出时,登录shell会获得文件:/.bash_logout示例1:su命令su usrname:启动新的非登录shell,只改变文件/.bashrcsu - usrname:启动新的登录she
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 一年级下数学期中拔尖测试卷《青岛五四版》
- 慢性肾脏病高磷血症临床管理中国专家共识总结2026
- 2026年海南高考政治卷及答案(新课标卷)
- 护士核心素质与职业修养
- 工程就业指导认证
- 就业指导团队标识
- 变电站数字视频监控方案
- 历年汉语言文学 (军队文职)模拟考试(共四卷)
- 2026年国家心理咨询师真题卷及答案
- 2025年广西壮族自治区钦州市地理生物会考题库及答案
- 工业企业精益智造成熟度评价规范
- 工业燃气管道安装工程施工方案
- 海南省5年(2021-2025)高考物理真题分类汇编:专题09 热学与光学(原卷版)
- 云财务知识培训课件
- 2025年电力工程师高级职称评审要点与面试题库及答案
- 2025年空军军队文职技能岗考试文化活动复习题及答案
- 电力市场交易管理办法
- 【《人脸识别技术中个人信息保护的法律规制探析》10000字】
- 政府绩效管理(第二版)课件 方振邦 第1-4章 政府绩效管理概述-政府绩效监控
- 2026年高考数学一轮复习策略《指向深度学习的高中数学教学策略》讲座
- 生物质颗粒采购合同范本
评论
0/150
提交评论