1.用户通过Shell与核心(kernel)沟通。计算机自里向外依次是:硬件,核心,Shell,用户
2.KDE,GNOME之类的图形操作界面也可以视作广义的Shell
3.为了与自定义变量区别,环境变量通常以大写字母来表示,如PATH,MAIL
4.变量就是以一组文字或符号,来替换一些设置或是一串保留的数据
5.可以用echo命令显示变量,获取变量内容要前加$,如
echo $MAIL
6.变量赋值
myname=tae
等号左右不能有空格
7.对于含空格的赋值,采用双引号,如下
name=”how are you”
单引号类似,区别在于:双引号仍然可以保持变量的内容,但单引号内只能是一般字符
8.若追加变量内容,需用到双引号和$,如下
PATH=”$PATH”:/home
即在PATH环境变量内容中追加了:/home
9.设置变量的好处:
1)类似于别名,譬如
name=/home/tae/work/vim
则
cd $name
等价于
cd /home/tae/work/vim
2)脚本中方便维护,类似于C中的宏#define
10.本次登录所进行的变量设置,如果没有更改设置文件,那么这次设置的变量在下次登录时将被取消。所以如果想要变量每次都能在登录时自动设置好,就必须将设置写入登录时加载的设置文件,用alias设置的别名也一样
11.自定义变量与环境变量的区别在于:自定义变量不能存在于别的bash程序(即子程序)中
12.export [自定义变量]:将自定义变量转换为环境变量,使得其可以存在于子程序中
因此,在两个脚本文件(.sh)间传递变量时,需要使用export命令
13.上面提到的变量赋值都是通过=在命令行里赋值,另外一种方法使用read命令交互式赋值(类似于scanf)
read [-pt] [要赋值的变量名]
-p后跟提示符字符串,-t后跟等待接收的秒数
14.declare [-aixr] [变量名]
声明变量的类型和属性
-a:定义为数组
-i:定义为整型
-x:定义为环境变量,类似于export
-r:设置为只读,不能更改,也不能取消设置(unset)
15.引用数组变量方式,如
${ary[0]}
16.可以使用env命令或export命令查看环境变量
17.各环境变量意义如下:
HOME:家目录,即~
SHELL:当前环境使用的shell程序,默认为/bin/bash
PATH:执行文件的搜索路径,目录间以:分隔
18.bash配置文件(设置PATH,alias)是~/.bashrc
更改完配置文件后,可用命令
source ~/.bashrc
使配置立刻生效
否则,只能logout后重新login到bash内使之生效
19.数据流重导向:”将某个命令执行后应该要出现在屏幕上的数据,传输到其他地方“或”将原本需要由键盘输入的数据,通过文件来读入“
传送命令如下:
标准输入:使用<或<<
标准输出:使用>或>>
标准错误输出:使用2>或2>>
>与>>的区别在于:>是将文件清空后再输出,而>>是累加输出
如果不要输出信息,可将数据输出到/dev/null中,这是个相当于”黑洞“的垃圾桶
20.命令执行的条件判断
;可以一次执行多个命令,如
sync; sync; shutdown -h now
&&表示若前一个命令执行成功,则执行后一个命令,如
ls /tmp && touch /tmp/test
||表示若前一个命令执行失败,则执行后一个命令,如
ls /tmp/test || touch /tmp/test
进行分叉判断时,&&必须在||的前面,即
command1 && command2 || command3
21.
等待故人的归来。山上的树,大多数是松树比较突出。