保障班4-0402预习和课堂笔记

 8.1shell介绍

1.shell脚本在日常Linux系统管理中用得非常好。也是我们运维工程师一个必备技能。

2.shell是系统跟计算机硬件交互使用的中间介质,它是系统的一个工具。它是一个命令解释器,并且支持特定的语法,每个用户都有自己特定的shell,centos默认的shell是bash.

8.2命令历史

我们执行的命令都有记录下来,默认可以记录1000条历史命令。这些命令都会保存在用户家目录的.bash_history文件中。

只有当用户正常退出当前shell时,在当前shell运行的命令才会保存至.bash_history中 

保障班4-0402预习和课堂笔记

history -c:清空历史命令

!与命令历史有关的一个特殊字符,该字符常用的应用有以下3个。

!!:连续两个!表示执行上一条命令。

#pwd

/root

#!!

PWd

/root

!n:这里的n是数字,表示执行命令历史中的第n条指令。

!:字符串(字符串大于等于1)

#!pw

pwd

/root

!pw:表示执行命令历史中最近一次以pw开头的命令。

8.3命令补全和别名

tab键可以帮助我们(tab键敲击一下)补全一个指令,一个路径或者一个文件名。

tab键连续敲击两下,系统则会把所有命令或者文件名都列出来。

别名alias,它是bash功能之一。可以通过alias把一个常用的并且很长的指令另取名为一个简单好记的指令。

直接执行alias命令,会看到目前系统预设的别名

查看系统中存在的别名

保障班4-0402预习和课堂笔记

命令格式alias 【命令别名】=【’具体命令‘】

#alias aming= 'pwd'

#aming

/root

取消别名使用unalias命令

保障班4-0402预习和课堂笔记

8.4 通配符 

在bash ,我们可以使用*来匹配零个或者多个字符,用?匹配一个字符

保障班4-0402预习和课堂笔记

还有“{} 【】”这两个是集合的匹配 


保障班4-0402预习和课堂笔记

8.5输入输出重定向

1)输入重定向用于改变命令的输入,命令是<

保障班4-0402预习和课堂笔记

2)输出重定向用于改变命令的输出命令是>,它经常用于命令的结果输入到文件中。追加重定向,命令是> > 

保障班4-0402预习和课堂笔记

 8.6 管道符和作业控制

1)管道符“|”,它用于将前一个指令的输出作为后一个指令的输入

保障班4-0402预习和课堂笔记

2)作业控制

当运行进程时,你可以使它暂停ctrl+z,然后使用fg命令恢复它,或者利用bg命令使它到后台运行。还可以终止ctrl+c.可以使用jobs查看被暂停或者在后台运行的任务

使用&把任务放到后台运行

保障班4-0402预习和课堂笔记

8.7/8.8shell变量 

shell变量就是使用一个比较简单是字符串来替代某些具有特殊意义的设定以及数据。如下常见环境变量

HOSTNAME:表示主机的名称。

SHELL:表示当前用户的shell类型。

PATH:该变量决定了shell将到那些目录中寻找命令或者程序。

LANG:这是与语言相关的环境变量,多语言环境可以修改此环境变量。

LOGNAME:表示当前用户的登录名。

HOME:表示当前用户的家目录。

命令env

使用env命令,可以列出系统预设的全部环境变量。

保障班4-0402预习和课堂笔记

命令set

set可以查看系统全部预设变量都显示出来,包括用户自定义的变量。

保障班4-0402预习和课堂笔记

前面都是系统变量,其实我们还可以自定义变量,定义变量的规则是:

变量名规则:字母,数字下划线,首位不能为数字

变量值有特殊符号时需要用单引号括起来。

变量的累加,需要加双引号

保障班4-0402预习和课堂笔记

全局变量export就是声明一下这个变量,让该shell的子shell也知道这个变量。

保障班4-0402预习和课堂笔记 

取消变量 unset a

8.9环境变量配置文件

/etc/profile:用户环境变量,交互,登录才执行。这个文件预设了几个重要变量。

PATH ,USER,LOGNAME, MAIL,INPUTRC ,HOSTNAM

/etc.bashrc:这个文件主要预设umask以及PS1.用户不用登录,执行shell.

bash_profile:这个文件定义了用户的个人化路径与环境变量文件名称

bashrc:该文件属于自己的shell的bash信息,当登录或每次打开新的shell时,该文件会被读取。
课堂笔记

扩展
bashrc和bash_profile的区别   http://ask.apelearn.com/question/7719

source:不会产生新的pid会把子脚本里面的变量带出来。

exec>/tmp/1.log:记录日志