一、了解shell
管理整个计算机硬件的其实是操作系统的内核(Kernel),这个内核是需要被保护的,所以我们一般用户就只能通过shell来跟内核进行通信,以让内核达到我们所想要达到的工作。
那什么是shell呢?
操作系统其实是一组软件,由于这组软件在控制整个硬件与管理系统的活动监测,如果这组软件能被用户随意操作,若用户应用不当,将会使整个系统崩溃。因为操作系统管理的就是整个硬件功能,所以当然不能够随便被一些没有管理能力的终端用户随意使用。但是我们总要让用户操作系统的,所以就有了操作系统上面发展的应用程序。用户可以通过应用程序来指挥内核,让内核达成我们所需的硬件任务。如之前所写文章《Linux学习之计算机概论》 提供的操作系统原理图,我们可以发现应用程序其实是在最外层,就如同鸡蛋的外壳一样,因此这个也被称为shell。也就是说,只要能够操作应用程序的接口都能够称为shell。比如vi等命令,这些命令都是独立的应用程序,但是我们可以通过shell(就是命令行模式)来操作这些应用程序,让这些应用程序调用内核来运行所需的工作。
二、shell的变量功能
1、什么是变量
简单来说,就是让某一个特定字符串代表不固定的内容,比如说y=ax+b,等号左边的y就是变量,等号右边的ax+b就是变量内容。要注意的是,左边的是未知数,右边的是已知数。也就是说,我们可以用一个简单的字眼来替代另一个比较复杂或者是容易变动的数据。
2、变量的显示与设置
我们可以利用echo这个命令来显示变量,但是变量被显示时,前面必须要加上字符$才行。
现在我们知道了变量与变量内容之间的相关性了,那我要如何设置或者修改某个变量的内容呢?用等号连接变量与它的内容就好啦。
举例来说,我要把myname这个变量名称的内容设置为xhb,那么:
第一次echo $myname没有任何数据,是因为变量尚未设置,所以在bash当中,当一个变量名称尚未被设置时,默认的内容是“空”的。另外变量在设置时需要符合规定,否则会设置失败。规则如下:
变量的设置规则:
(1)变量与变量内容之间用=来连接,如“myname=xhb”
(2)等号两边不能直接接空格符,如“myname = xhb”是错误的
(3)变量名称只能是英文字母与数字,但是开头字符不能是数字,如“2myname=xhb”是错误的
(4)双引号内的特殊字符如$等可以保持原有的特性;单引号内的特殊字符仅为一般字符(纯文本)
(5)可以用转义字符“\”将特殊符号变成一般字符
(6)若该变量为了增加变量内容时,可用“$变量名称”或${变量}累加内容,如PATH=“$PATH”:/home/bin
(7)若该变量在其他子程序执行,则需要以export来使变量变成环境变量(详情请点此处)
(8)取消变量使用“unset 变量名称”,如“unset myname”
三、变量键盘读取与声明
1、read
要读取来自键盘输入的变量,就是用read这个命令。让我们来看看read的用法:
read 【-pt】 variable
-p:后面可以接提示符
-t:后面可以接等待的秒数,不会一直等用户
范例一:让用户由键盘输入内容,将该内容变成名为atest的变量
范例二:提示用户30秒内输入自己的大名,将该输入字符串作为名为named的变量内容
2、declare
declare和typeset是一样的功能,就是声明变量的类型。如果使用declare后面并没有接任何参数,那么bash就会主动将所有的变量名称与内容全部调出来,就好像set一样,接下来叫我们看一看declare如何使用吧:
declare 【-aixr】 variable
-a:将后面的变量定义成为数组类型
-i:将后面的变量定义为数组数字类型
-x:用法与export一样,就是将后面的变量变成环境变量
-r:将变量设置为readonly类型,该变量不可被更改内容,也不能重设
范例一:让变量sum进行100+50的累加结果
为什么第一次没有帮我计算累加结果呢?这是由于在默认的情况下,bash对于变量有几个基本的定义:
(1)变量类型默认为“字符串”,所以若不能指定变量类型,则100+50为一个“字符串”而不是“计算式”,所以上述第一个执行的结果才会出现那个情况的
(2)bash环境中的数值运算,默认最多仅能达到整数类型,所以1/3结果是0.
范例二:让sum变成只读属性,不可改动
范例三:将sum变成环境变量,再将sum从环境变量变为自定义变量
注:将“-”变为“+”就可以进行取消操作,-p可以单独列出变量的类型。
四、命令别名与历史命令
1、命名别名设置alias
用法:在alias后面加上你的{“别名”='命令参数'},比如alias rm='rm -i'
以后在使用rm时,就会问你是否确定要删除该文件。
如果想要知道目前都有哪些命令别名,可直接使用alias,如下图:
2、历史别名history
history的几种用法:
(1)history -n 列出最近的n条数据
(2)history -c 将history全部消除
(3)history -w 默认情况下,将历史记录写入~/.bash_history当中
(4)!66 执行第66条命令
(5)!! 执行上一条命令