这一单元主要介绍一些shell变量的使用
set、env、export有什么区别
借用网上找到的一个例子
set:列出当前shell的变量,包括当前用户的变量
env:列出当前用户的变量
export:列出当前导出为用户变量的shell变量
介绍几个常接触的用户变量
SHELL:用户使用的shell
HISTSIZE:当前用户shell可记录的历史命令数,默认最大保留值为1000条
PATH:可执行程序或命令的搜索路径,多个路径间用“:”分隔,在这里列出目录中的程序可以直接执行,不用输入冗长的绝对路径
HOME:当前用户的家目录,使用cd或cd ~命令时就读取的这个变量
命令别名设置
alias、unalias分别为设置别名和取消别名,别名对于简化输入很有用,比如可以把常用的比较长的命令或者带很多参数的命令用一个好记的别名来代替,每次只要输入这个别名,系统将自动识别为真正的命令去执行
比如系统一般初装好的时候,vi编辑器打开文件是不带颜色的,对于编辑脚本或长篇幅的配置文件,界面不太友好,容易出错,我习惯每次装好系统后先设置一下让运行vi时调用vim,可以直接运行命令alias vi=vim
除了我自己设置的,系统默认还会有一些方便操作的别名,比如在cp/mv/rm后都加了-i确认参数,可以避免无意中执行了文件覆盖的误操作而导致数据丢失
但这样直接执行命令只是一种临时性的办法,想要让这个别名设置永久生效,就需要写在文件里,这里分全局设置和局部设置
全局设置:写在/etc/bashrc中,对所有用户生效
局部设置:写在用户主目录下的.bashrc中,只对当前用户生效,建议设置在这里
不过把命令写进文件后,还不能马上生效,还需要在运行一条命令
source ~/.bashrc,用source命令使该配置文件生效
命令行扩展
其实就是一些特殊符号在shell下的特殊用法和含义
上面三条命令用到了三种不同的特殊符号,同时也出现了不同的运行效果
\:和“/”根目录刚好相反,这个反斜杠叫做转义符,简单说就是忽略后面所跟的特殊字符的含义,只按普通字符处理,比如$符号通常是引用一个变量时会用到,但这里我们是希望把$符号显示出来,所以就需要忽略其本身所具有的含义,在前面加上“\”
”:单引号是注释符的一种,可以注释所有字符
“”:双引号也是注释符,但不能注释“$”、“\”、“!”以及反向单引号(live writer里打不出来这个符号),所以第三条命令系统会认为要调用$5这个变量的值,但实际上之前并未定义过这个变量,所以就只能显示后面的字符
内建变量
也被称作位置变量,比如写个小脚本test,然后用下面这种方式运行一下
系统默认
$0:表示所运行脚本的文件名
$1:运行脚本后面跟的第一个值
$2:运行脚本后面跟的第二个值
$*:以上所有的变量值
这样看懂了吧。。。
捕获用户输入
这种操作在平时的各种应用中都很常见,比如安装软件时,程序会提示可以使用用户输入的指定路径进行安装,或者其他一些需要用户输入的参数,实现了一种交互式操作方式
还是写一个小脚本,查看某台主机在网络上是否可达
首先提示让用户输入一个ip地址,并且将这个值赋予变量ip,再通过ping命令调用该变量进行连通性测试,通的话提示online,不通则提示不可连接
运行后首先会等待用户输入并确认,然后脚本再继续往下执行