Shell 简介
shell 是用户和Linux 操作系统之间的接口。Linux 中有多种shell,其中缺省使用的是bash。
Linux 系统的shell 作为操作系统的外壳为用户提供使用操作系统的接口。它是一个命令语言解释器,拥有自己内建的shell 命令集。shell 也能被系统中其他应用。程序所调用用户在提示符下输入的命令都由shell 先解释然后传给Linux 核心。
Linux 中的shell 有多种类型其中最常用的几种是Bourne shell(sh)C shell(csh)和Korn shell(ksh)三种shell 各有优缺。
Bourne shell 是UNIX 最初使用的shell,并且在每种UNIX 上都可以使用。Bourne shell 在shell 编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种shell。Linux 操作系统缺省的shell 是Bourne Again shell,它是Bourne shell 的扩展,简称bash。与Bourne shell 完全向后兼容,并且在Bourne shell 的基础上增加增强了很多特性。它还包含了很多C shell 和Korn shell 中的优点,有灵活和强大的编程接口同时又有很友好的用户界面。
Redhat Linux 系统默认的shell 是bash ,对普通用户用$作提示符,对超级用户root 用#作提示符一旦出现了shell 提示符,就可以键入命令名称及命令所需要的参数。
用户在登录到 Linux 时,由/etc/passwd 文件来决定要使用哪个shell 。例如,该文件中含有类似如下一行:
myself:x:500:500:Linux User:/home/myself:/bin/bash
用户使用的 shell 被列每行的末尾(/bin/bash)。
Shell的特性:
1.别名:通过使用alias命令可以为命令设置别名,提供用户个性设置。如:alias 'll=ls -l'
2.命令替换``。如:执行命令ls `cat myfile` -l 将cat myfile地执行结果传递给ls进行替换
3.后台处理,将任务放在后台进行处理,前台可以继续进行操作。nohup tar -czf filename &将压缩操作放置在后台执行。
4.变量(下一次详细介绍)
5.管道 |。将一个命令的输出作为另一个命令的输入。如:ls -l / |more
6.重定向。使用操作符<>进行输入输出的重定向。
7.模式匹配。通过正则表达式进行模式匹配。
Shell脚本
Shell脚本类似于批处理可以方便的执行大量命令,同时由于Shell脚本是一种程序设计语言,功能非常强大。
一个简单的例子:
#!/bin/bash
#注释,第一行格式固定
#定义变量
printstring="Hello Shell";
#输出变量内容
echo ${printstring};
编写shell脚本存储在文件中,需要设定用户对文件的执行权限,才可以执行,一下简介以下文件权限的设置命令chmod。
umask
创建文件和目录的时候系统根据umask的值,设定模人的权限。对应入下表所示:
umask 文件 目录
0 6 7
1 5 6
2 4 5
3 3 4
4 2 3
5 1 2
6 0 1
7 0 0
系统在/etc/profile中设定umask值,可以通过umask命令改变默认值。一般为022建议不要改动,影响系统的安全性
shell 的分类
查看命令
ls -l /bin/*sh
env :查看当前系统的环境变量
shell的修改,对命令的解释方式发生变化。。。
chsh -s shell名称:如chsh -s /bin/csh
history 查看命令历史
!number 即重复该命令