一.硬件,内核与shell
硬件:指的是电脑主板一类的东西,电脑系统中的实体工作者
内核:控制硬件进行工作,可以形象理解为cpu的大脑,在硬件之上
shell:人机交互界面,用于将人输入的指令传送给内核,让其工作
shell存在的意义:linux操作系统是一组软件,负责管理整个和监测整个系统,如果用户操作不当,容易造成计算机的一系列问题,所以用shell保护计算机,人通过shell来指挥计算机。
合法的shell存放在了/etc/shells的文件里,为什么要放到这个文件中?是因为系统在运行某些服务的时候,会去检查用户所能够使用的shell,而这些shell就放在了/etc/shells这个目录里。
用户什么时候可以使用shell?用户在登录的时候,系统会给一个shell来让用户工作,登录取得的shell存在与/etc/passwd这个文件里.
二.bash shell的功能
命令记忆的功能:
在主文件.bash_history中,会存放这上几次登录所使用的命令,本次所使用的命令都被放在了临时缓存中,等到本次登录注销后才会放到~/.bash_history
命令补全的功能:tab键所提供的功能
命令别名重置功能(alias):
可以听过alias命令给一个命令起名字,有点类似与C语言中的typedef的功能,
格式:alias 新名字=旧名字
alias myls=ls
脚本程序的编写:shell等脚本语言
通配符:正则表达式进行筛选文件内容
三命令的分类
命令分为外部命令和内部命令
外部命令:bash没有提供的命令
内部命令:bash提供的命令
可以通过type查看文件命令:
[root@westos etc]# type cd
cd is a shell builtin
命令
可以分行执行,我们必须在每一行的末尾写入\[Enter],此时命令行自动跳转到下一行,等待我们的输入
[root@westos etc]# ls \
> /
backups boot dev etc lib lost+found misc net proc sbin selinux sys tmp var
bin cgroup dvd home lib64 media mnt opt root SD srv test1 usr
总结shell变量执行的过程:
1.我们成功登录
2.此时操作系统根据/etc/passwd的设置给我们一个shell
3.我们可以输入命令执行
四shell的变量功能
变量非为自定义变量和环境变量,自定义变量小写字母表示,环境变量大写字母表示。
什么是环境变量?当我们执行一条命令的时候,计算机就会根据PATH变量的里面设置的路径去看是否有该命令存在,如果该命令存在,则则行,否则就输出命令没有找到。PATH就是环境变量,当我们登录用户之前,系统需要载入的一些值进行初始化,这些值就叫做环境变量。
输出一个变量:echo ${变量名字}或者 echo $变量名字
[root@westos etc]# ls \
> /
backups boot dev etc lib lost+found misc net proc sbin selinux sys tmp var
bin cgroup dvd home lib64 media mnt opt root SD srv test1 usr
初始化一个变量:变量=内容(注意不能有空格)
[root@westos etc]# my=woyaoqufeizhou
[root@westos etc]# echo $my
woyaoqufeizhou
变量名使用的规则:
1.变量名是数字和字符组成,且不能是数字开头
2.若给变量名赋值时,其中有特殊符号时,需要用双引号或者单引号将其括起来
双引号和单引号的区别:
单引号仅仅表示一串字符,双引号内容若含有$符,则会执行后将相关的数据输出
3.通过export 变量名 可以将用户变量变成环境变量
4.可以通过转义字符输出引号‘ 空格等特殊字符
变量名的取消: unset 变量名
在变变量名后添加变量:
[root@westos Desktop]# name="name"
[root@westos Desktop]# name=${name}:yes
[root@westos Desktop]# echo $name
name:yes
[root@westos Desktop]#
引用变量的方式:${变量名}或者$变量名
单引号和双引号的区别:
[root@westos Desktop]# name2="$name"
[root@westos Desktop]# echo name2
name2
[root@westos Desktop]# echo $name2
name:yes
[root@westos Desktop]# name3='$name'
[root@westos Desktop]# echo name3
name3
[root@westos Desktop]# echo $name3
$name
反单引号:在一串命令中,反单引号其中的命令最先执行