Shell和Vi编辑器
变量的定义和引用
变量定义的语法格式: 变量定义的语法格式: name=string 其中:name是变量名称 它的值是string 是变量名称, string, 其中:name是变量名称,它的值是string,“=”是赋值 符号。变量名是以字母或者下画线开头的字母、 符号。变量名是以字母或者下画线开头的字母、数字和下 画线字符组合。 画线字符组合。 通过变量名(name)前加$字符( $name) 通过变量名(name)前加$字符(如$name)引用变量 的值,引用的结果就是用字符串string代替$name,称为 的值,引用的结果就是用字符串string代替$name, string代替$name 变量替换。 变量替换。 string中包含空格 Tab和换行符 中包含空格、 和换行符, string必须 若string中包含空格、Tab和换行符,则string必须 string’或者“string”的形式;双引号允许变量替换, 用’string’或者“string”的形式;双引号允许变量替换, 而单引号则不可以。 而单引号则不可以。
字符表达式: 字符表达式: 匹配单个任意字符; .:匹配单个任意字符; [list]:匹配字符串列表中的其中一个字符 匹配字符串列表中的其中一个字符; [list]:匹配字符串列表中的其中一个字符; [range]:匹配指定范围中的一个字符 匹配指定范围中的一个字符; [range]:匹配指定范围中的一个字符; ]:匹配指定字符串中或者指定范围中以外的一个字符 匹配指定字符串中或者指定范围中以外的一个字符; [^ ]:匹配指定字符串中或者指定范围中以外的一个字符; 例如: 例如: ...:匹配包含 个字母的行。 匹配包含3 ...:匹配包含3个字母的行。 [at]:匹配包含a或者t [at]:匹配包含a或者t的行 [a-z]: [a-z]:匹配含有一个小写字母的行 path的行 [^path]:匹配 含有path的行; 匹配不 [^path]:匹配不含有path的行;
第4章 Shell和Vi编辑器 Shell和Vi编辑器
4.1 Shell 4.2 Vi编辑器
学习目标
了解Shell的强大功能和Shell的命令解释过程 学会使用重定向和管道 掌握正则表达式的使用方法 学会使用Vi编辑器
本章难点
正则表达式 Vi编辑器的3种模式及各模式下面的常用命令
4.1.1 4.1.2 4.1.3 4.1.4 4.1.5
环境设置文件
2.个人环境配置文件: 2.个人环境配置文件: 个人环境配置文件
系统环境配置文件对所有用户对会起作用,只有root 系统环境配置文件对所有用户对会起作用,只有root 用户才有权对其进行修改。 用户才有权对其进行修改。普通用户如果想定制自己的工 作环境。可以编辑自己的个人环境设置文件。 作环境。可以编辑自己的个人环境设置文件。个人环境设 置文件主要有二个: 置文件主要有二个: $HOME/.bash_profile $HOME/.bashrc
量词: 量词: 匹配前一个字符零次或多次; *:匹配前一个字符零次或多次; {n\}:匹配前一个字符 匹配前一个字符n \{n\}:匹配前一个字符n次; {n,\ :匹配前一个字符至少 匹配前一个字符至少n \{n,\}: :匹配前一个字符至少n次; {n,m\ :匹配前一个字符 次至m 匹配前一个字符n \{n,m\}: :匹配前一个字符n次至m次; 例如: 例如: [a-z][0-9]\{1\}[a-z]:匹配包含中间是数字、 [a-z][0-9]\{1\}[a-z]:匹配包含中间是数字、前后是字 母的3个字符串行; 母的3个字符串行; [0-9]\{1, 匹配包含数字的行; [0-9]\{1,\}:匹配包含数字的行; PATH\{1,2\ 匹配包含含有1 path或者 或者2 path的行 的行; PATH\{1,2\}:匹配包含含有1个path或者2个path的行;
常用Shell环境变量说明 常用Shell环境变量说明 Shell
环境变量 LOGNAME PATH PS1 PWD SHELL TERM 说明 登陆名,也就是账户名 命令搜索路径 命令提示符 用户的当前目录 用户的shell类型 终端类型
HOME
用户主目录的位置,通常是 /home/用户名
环境设置文件
1.系统环境配置文件: 1.系统环境配置文件: 系统环境配置文件
/etc/profile和 /etc/profile和/etc/bashrc profile文件在每个用户登陆系统时都会被执行, profile文件在每个用户登陆系统时都会被执行,把其中 文件在每个用户登陆系统时都会被执行 的设置加入到用户的环境中. 的设置加入到用户的环境中. bashrc文件用于对subshell的环境进行设置 文件用于对subshell的环境进行设置。 bashrc文件用于对subshell的环境进行设置。比如新启动 了一个shell 此时启动的shell就是subshell shell, shell就是subshell, 了一个shell,此时启动的shell就是subshell,新的 shell会从/etc/bashrc文件中读取环境配置 会从/etc/bashrc文件中读取环境配置. shell会从/etc/bashrc文件中读取环境配置.
Shell的基本概念 Shell的基本概念 Shell环境变量 Shell环境变量 正则表达式 输入输出重定向与管道 Shell脚本 Shell脚本
什么是Shell? 什么是Shell? Shell
Shell是linux的一个外 Shell是linux的一个外 它包在linux内核的外面, linux内核的外面 壳,它包在linux内核的外面, 为用户和内核之间的交互提 供了一个接口。当用户下达 供了一个接口。 指令给操作系统的时候, 指令给操作系统的时候,实 际上是把指令告诉shell,经 际上是把指令告诉shell, shell shell解释 解释, 过shell解释,处理后让内核 作出相应的动作。 作出相应的动作。而系统的 回应和输出的信息也由shell 回应和输出的信息也由shell 处理, 处理,然后显示在用户的屏 幕上. 幕上.
控制字符: 控制字符: 只在行头匹配正则表达式; ^:只在行头匹配正则表达式; $:只在行末匹配正则表达式 只在行末匹配正则表达式; $:只在行末匹配正则表达式; 转义字符,引用特殊字符; \ :转义字符,引用特殊字符; 例如: 例如: ^[0-9]: ^[0-9]:匹配以数字开头字符的行 ^[0-9][a-z]$:匹配以数字开头、以字母结尾字符的行; ^[0-9][a-z]$:匹配以数字开头、以字母结尾字符的行; ..$:匹配倒数第二个字符是句点的行 匹配倒数第二个字符是句点的行; \..$:匹配倒数第二个字符是句点的行;
正则表达式字符可以包含某些特殊的模式匹配字符。 正则表达式字符可以包含某些特殊的模式匹配字符。 通常用来表示特定要求的模式匹配。 通常用来表示特定要求的模式匹配。 例如: 例如: 句点表示匹配任意一个字符; .:句点表示匹配任意一个字符; .*:点和星号组合匹配零个或者多个任意字符; .*:点和星号组合匹配零个或者多个任意字符;
Shell的功能 Shell的功能
命令解释 Shell环境变量 Shell环境变量 正则表达式 输入输出重定向 命令记忆 命令和文件补全 命令别名设置
Shell的版本 Shell的版本 sh: sh:sh 就 是 Bourne Shell 的 缩 写 , 是 UNIX 系 统 最 早 的
shell。 shell。 bash: bash:bash 就 是 Bourne Again Shell 的 简 称 , 是 Bourne Shell的扩展 完全兼容Bourne Shell。 的扩展, Shell的扩展,完全兼容Bourne Shell。 csh: Shell是一种比 是一种比Bourne shell更适于编程的 shell, 更适于编程的shell csh:C Shell 是一种比 Bourne shell 更适于编程的 shell , 是美国加州大学Berkeley分校开发出来的,具有核C Berkeley分校开发出来的 是美国加州大学Berkeley分校开发出来的 , 具有核C 语言 相似的语法,但和sh不兼容。 sh不兼容 相似的语法,但和sh不兼容。 tcsh:tcsh是 Shell, Shell的一个增强 tcsh:tcsh 是 Enhanced C Shell , 是 C Shell 的一个增强 版。 ksh是 Shell的缩写 集合了C shell和 的缩写, ksh:ksh是Korn Shell的缩写,集合了C shell和Bourne shell的优点并且和Bourne shell完全兼容。 shell的优点并且和Bourne shell完全兼容。 的优点并且和 完全兼容 其它:ash, 其它:ash,zsh
4.1.4 输入输出重定向与管道
重定向
重定向:不使用系统的标准输入、 重定向:不使用系统的标准输入、标准输出或标准错误端 而进行重新指定,通常是重定向到一个文件中。 口,而进行重新指定,通常是重定向到一个文件中。 重定向包括:输入重定向、 重定向包括:输入重定向、输出重定向和错误重定向
如何在文件中查找只含有字母的电子邮件? 如何在文件中查找只含有字母的电子邮件? 如何在文件中查找只含有字母的行? 如何在文件中查找只含有字母的行? `\ grep `\..$` /etc/profile 这条命令是什么意思? 这条命令是什么意思? grep `^[0-9]\{3\}[^0-9] /etc/profile `^[0-9]\{3\}[^0这条命令又是什么意思? 这条命令又是什么意思? …… ………. ………. ……………
Shell的两种命令 Shel来自的两种命令1.内置命令:
包含在shell自身当中的,在编写shell的时候就已经 包含在shell自身当中的,在编写shell的时候就已经 shell自身当中的 shell 包含在内了。比如cd cd。 包含在内了。比如cd。