一、Shell概念:
声卡是数字信号与声波模拟信号转换的一个硬件,扬声器接受声波模拟信号发出声音,内核处理声卡传来的数字信号,但是要让内核识别出声卡就需要声卡驱动程序,内核是被保护起来的,不让用户操作内核,避免用户随意操作,使得整个操作系统崩溃,但是用户总是要和内核沟通的,于是提供了shell应用程序,这个shell程序就提供用户与内核之间的一个沟通
shel(命令行界面)就是操作系统和用户进行交互操作的界面,类似于shell功能的还有KDE、application、X WINDOWS(图形化界面)
图形化界面缺点:虽然界面是图形化,非常的人性化,但是毕竟是将所利用到的软件都整合到一组的应用程序而已,所以当你升级或使用其他套件管理模块时候,就会操成配置的困扰了,
命令行界面:像这种文字接口传输速度一定比较快,且较不容易出现断线或者是信息外流的问题
二、Shell种类:
Bsh :70年代中期诞生于贝尔实验室,已经被/bin/bash所取代
Bash :Bsh的升级版,Linux系统中默认的Shell
Csh:80年代早期诞生于加利福利亚大学,使用C语言风格,已经被tcsh取代
tcsh: 整合C Shell ,提供更多的功能
Ksh:兼具Bsh的语法和Csh的交互特性(Bsh和Csh结合)
Zsh:基于ksh发展出来,功能更强大的shell
查看Linux支持的shell:
某些服务在运行的过程中,会去检查使用者要使用的shell是不是支持的,就在etc/shells文件里检查。
[root@desktop30 ~]# cat /etc/shells #在linux系统中,/etc/shells文件里记录了你的平台(系统)所有支持的shell环境,如果你的平台不支持Zsh环境,那么你需要去安装Zsh这个软件包,然后你就支持Zsh环境
[root@desktop30 ~]# chsh -l #使用chsl -l 也可以查看
Shell切换:
[root@desktop30 ~]# grep root /etc/passwd #每个用户使用什么shell环境,都会在login时读取/etc/passwd里定义的shell
root:x:0:0:root:/root:/bin/bash
[root@desktop30 ~]# chsh -s /bin/csh root #Chsh -s [shell] [username] shell环境切换命令
[root@desktop30 ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/csh
特殊的shell:/sbin/nologin
使用了/sbin/nologin的账号是无法登陆的,即使给了密码也不行,所谓“无法登陆”指的是这个用户无法使用bash或其他shell来登陆而已,并不是说这个账号无法使用系统资源,例如:www服务有apache这个账号在管理,他们都可以进行系统程序的工作,只是无法登陆主机。在比如邮件服务器,在这部主机上面的账号,大部分都是用来收主机的信件而已,并不需要登陆主机,使用的shell就应该是/sbin/nologin
三、Bash shell 功能
1、命令编修能力(history)
2、命令别名配置功能(alias)
3、bash快捷键
4、命令与文件补全功能:(tab)
5、工作公知、前景背景控制(job control,foreground,background)
6、程序化脚本(shell scripts)
7、通配符(Wildcard)
8、bash shell的内建命令(type)
用type可以查看这个命令属于内建命令还是外部命令
type
不加任何参数时,type会显示命令是外部命令还是bash内建命令
-t 当加入-t参数时,type会将显示出使用该命令时是通过别名还是内部命令,还是外部命令方式来使用的
-p 如果后面接的命令为外部命令时,才会显示完整的文件名
-a 列出使用该命令的全部方式
[root@desktop30 ~]# type ls
ls is aliased to ’ls --color=tty‘
[root@desktop30 ~]# type -t ls
alias
[root@desktop30 ~]# type -a ls
ls is aliased to ’ls --color=tty‘
ls is /bin/ls
[root@desktop30 ~]# type alias
alias is a shell builtin
注意:在我们写脚本的时候,你要判断你写的命令是外部命令还是内置命令,外部命令一定要写完全格式,cd的完全格式为/usr/bin/cd
敲enable命令,然后确定,你会发现enable后面可以敲的命令有这么多,enable -n alias关闭别名,关闭别名后,再敲enable,会发现没有alias那一项了,说明alias被关闭了,敲enable alias开启别名,再敲enable,会发现又有alias了,说明alias被开启了。
[root@desktop30 ~]# enable
enable alias
[root@desktop30 ~]# enable -n alias
[root@desktop30 ~]# enable
[root@desktop30 ~]# alias
[root@desktop30 ~]# enable alias
[root@desktop30 ~]# alias
alias cp='cp -i'
一些开发商开发系统会基于开源的系统内核上来开发系统,那么它会把系统内核的内置命令给关掉,然后自己开发外部命令让用户来使用
功能开关:
[root@desktop30 ~]# set -o noglob on #开启通配符功能
[root@desktop30 ~]# set -o #查看shell功能开关
noclobber off #重定向功能关闭
noglob on #通配符功能开启