版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Shell基础四川大学计算机学院 左劼常见的几种ShellPOSIX Shell: shKorn Shell: kshBourne Shell: shBourne Again Shell: bash几个基本概念命令、参数和选项文件、目录工作目录、主目录替换功能别名shell变量、环境变量使用命令shell中可以使用内部命令和外部命令有些命令,如cd、set等是内建在shell中的,是内部命令大多数命令是以单独的可执行文件的形式分布在文件系统中的,是外部命令使用别名给常用的命令,一个简短的名字alias ll=ls -l如果键入ll那么执行ls -l别名的定义可以递归,但展开的时候不会无穷展开自
2、动补全自动补全功能可以让使用者只键入前面若干字符,通过自动搜索,补全整个命令或者文件名可以使用在命令或者文件名上键入命令或者文件名前几个字符后,按tab键(也可以按esc键两次)命令的历史大部分shell都会保存命令的历史,bash中,这些历史信息保存在.bash_history中通过使用history命令可以查看历史命令通过上下键也可以翻查历史命令按Ctrl+R可以在历史中查找命令Shell的变量Unix系统中,常使用变量来对系统进行配置变量分为shell变量和环境变量shell变量只在当前shell中有效环境变量会传递到子进程中,影响子进程几个常用的环境变量PATH: 查找命令位置的目录列
3、表HOME: 当前用户的主目录路径TERM, COLUMNS, LINES: 指示终端类型DISPLAY: 在XWindow中指示输出位置LANG: 指示当前使用的语言USER: 指示当前登录的用户PS1: 指定提示符号的形式定义变量可以在需要的时候定义变量格式:name=value注意,在等号的两边都不能有空格变量名必须由字母开始,可包含字母、数字、下划线使用变量set命令显示所有shell变量和环境变量及它们的值env命令显示所有环境变量及它们的值unset命令用于删除指定变量set, unset是内部命令,而env是外部命令shell变量和环境变量shell变量只能在当前的shell环境
4、中被访问,不能对子进程产生影响环境变量不但能被但前的shell环境所访问,也能够被继承到子进程中,从而对子进程产生影响shell变量是shell内部的概念,而环境变量是Unix操作系统级别的概念使用export命令可以将一个shell变量输出到环境中,成为一个环境变量shell的替换功能替换功能是shell最强大的功能之一替换功能是工作在文本层面上的替换功能是在命令被执行的时候进行的文件名替换shell执行命令之前,会根据命令行上的参数形式,对文件的通配符进行展开替换命令在执行的过程中看到的参数是展开之后的每一个符合通配符的文件名# lsabc ddd ertg# cp * /tmp# cp
5、abc ddd ertg /tmp变量替换当使用$VAR方式引用一个名为$VAR的变量时,shell会进行变量替换,在实际执行的命令行中,用变量VAR的值代替出现$VAR的地方,如果变量没有定义,则替换为空字符串# MYHOME=/home/zuojie# less $MYHOME/abc.txt# less /home/zuojie/abc.txt变量替换可以出现在几乎所有的地方,包括命令和参数# MAND=echo# $ MAND abc dddabc ddd 如果变量名和后面的字符连在一起,shell就不能区分哪个是变量名,于是不能正确进行变量替换# VAR=abc# echo resu
6、lt: $VARdefresult:可以使用来明确指定变量的名字,以便和周围的文本区分开来# VAR=abc# echo result: $VARdefresult: abcdef波浪号替换波浪号替换是一种特殊的变量替换 表示$HOME,即当前用户的主目录+ 表示$PWD,即当前工作目录- 表示$OLDPWD,即刚才的工作目录zuojie 表示用户zuojie的主目录命令替换利用命令替换,可以用一个命令的执行结果(标准输出)进行替换方式使用圆括号将命令括起来(命令可能包含参数)# pwd/root# echo My work directory is $(pwd).My work direct
7、ory is /root.命令替换的另外一种兼容格式使用反引号将命令括起来# pwd/root# echo My work directory is pwd.My work directory is /root.shell中的引号当shell解释一个命令时,会以空格作为分隔符来切分token然后将每个token作为一个参数传递给命令如果我们希望传递给命令的某一个参数中包含空格,那么就需要使用引号将其括起来引号有两种,双引号和单引号双引号由双引号括起来的字符串被shell解释的时候会进行替换(包括变量替换、命令替换、波浪号替换等)# echo abc def abc def /root# ech
8、o “abc def $HOME”abc def /root# echo “here: $(pwd)”here: /root单引号使用单引号引起来的字符串在被shell解释的时候将不会进行替换动作,而保持原样# echo abc def $(pwd) abc def $(pwd)# echo is my home is my home特殊字符对于shell来说,有一些字符是具有特殊意义的符号,如果这些字符需要出现在字符串中被传递给命令,那么就需要对他们进行转义转义的方法是在特殊字符前添加 常见的特殊字符有:# $ ” ; ( ) &如果它们出现在引号中,有些就不用转义当一串字符被多次解释有的时
9、候一串字符可能要被多次解释,这就需要深刻理解shell解释字符串的原理# VAR=“abc def”# echo $VARabc def# echo “$VAR”abc defshell环境的初始化shell在启动的过程中需要读取并执行一些初始化脚本文件,以便创造一个合适的环境交互式激活:指其标准输入和输出都连接在终端上,一般直接和用户打交道登录shell非登录shell非交互激活:用于解释执行脚本文件登录shell (交互)当系统登录的时候,执行完/bin/login之后就会调用该模式/bin/bash -login当bash作为登录shell被激活时,它将依次读取并执行以下文件:/etc/
10、profile/.bash_profile, /.bash_login, /.profile 中的第一个文件非登录交互shell以非登录的方式启动一个交互shell的时候/bin/bash -i当Bash作为非登录交互shell被激活时,它将读取并执行 /.bashrc非交互shell非交互shell主要用于解释执行脚本文件Bash检查$BASH_ENV变量,若定义,则执行该变量指定文件中包含的命令输入输出重定向命令从标准输入读入数据,从标准输出、标准错误输出数据shell支持对命令的输入、输出进行重定向重定向到管道重定向到文件重定向到管道使用 | 将两个命令连接起来,就实现了将前一个命令的标
11、准输出内容作为后一个命令的标准输入“|”是shell的控制符号# ls l | wc l以行方式列出当前目录文件,并计算行数,即计算文件数量重定向到文件 将标准输出定向到文件 将标准输出定向到文件,如果文件存在,则将输出内容添加到文件末尾# cat abc.txt def.txt将文件abc.txt的内容合并到def.txt文件重定向任意文件描述符n n 将文件描述符n定向到文件主要应用在重定向标准错误# cat dddcat: ddd: 没有那个文件或目录# cat ddd 2 /dev/null更多重定向方法# command file1 2 file2分别重定向标准输出和标准错误# co
12、mmand 2&1将标准错误发送到标准输出同样的位置# command file 2&1将标准错误发送到标准输出同样的位置,然后再重定向到file# command 2&1 | tee file将命令的标准输出、标准错误都发送到文件file,同时输出到终端here文档重定向技术一般针对文件,如果想要将固定的一段文本作为标准输入输入到一个命令,可以使用here文档技术格式: abc.c _EOF_abcefgdddddd_EOF_here文档中的一些问题对here文档中的内容,shell是否进行参数和命令替换?要!但是可以将label用单引号或者双引号括起来,阻止shell对here文件的内容进行替换能不能使用一种更好的格式来编写here文档?可以!将重定向符号写成 -label,shell就会将文档中的前导tab字符删除(但不删除前导空格)命令控制如果希望在一行上写多条命令,可以使用分号将命令隔开,命令将依次执行如果命令以 & 结束,则将该命令放在后台执行# fine name “abc” &子shell调用另外一个脚本程序,自动产生一个新的shell环境如果希望定义并使用一些变量,但不影响当前环境
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中医护理与现代护理技术结合
- 儿科护理评估工具
- 1型糖尿病患者教育的重要性
- 2026年清廉金融知识测试题及答案
- 2026年上海知识测试题及答案
- 2026年河北地基检测试题及答案
- 2026年众测技能测试题及答案
- 2026年中学 基线测试题及答案
- 2026年《小河男孩》测试题及答案
- 2026年小学语文积累运用测试题及答案
- 门窗厂安全生产管理制度
- 2025年中国品牌在东南亚市场的崛起报告-增长机遇及对区域竞争者的影响-欧睿国际
- 河道治理工程质量管理制度
- 中学实验技能赛方案
- T/CNSS 018-2023预包装食品血糖生成指数标示规范
- 2025内蒙古赤峰林西县招聘社区工作者74人备考考试试题及答案解析
- 城市污水管网沿线绿化与恢复方案
- 新疆保密管理办法
- 肝性脑病合并糖尿病护理
- 方太电烤箱KQD50F-C2说明书
- 纵隔肿瘤手术麻醉管理
评论
0/150
提交评论