初识shell
计算机智能理解 0
和 1
组成的二进制语言。
早期计算机通过二进制语言来执行指令,对人类来说难以理解,读写都很不友好。后来,操作系统里提供了一种叫做shell的特殊的程序。shell接受你的英文格式(大多数情况下是英文)指令,如果指令有效,就会被传递给内核。
实际上,shell是一个提供给用户用来交互的软件,通过从标准输入设备(通常是键盘)或者文件读取指令,并且解释执行你的指令。
shell并不是内核的一部分,却通过系统调用来执行程序,比如创建文件等等。
Linux中包含各种不同版本的shell
Shell Name | Developed by | Where | Remark |
---|---|---|---|
BASH(Bourne-Again Shell) | Brian Fox and Chet Ramey | Free Software Foundation | Linux下最通用的shell |
CSH (C Shell) | Bill Joy | University of California(For BSD | 语法和用法都和C语言极为相似 |
KSH (Korn Shell) | David Korn | AT&T Bell Labs | |
TCSH | William Joy | TCSH是CSH的加强版本 |
输入下面的指令可以查看你的系统支持的shell:
$ cat /etc/shells
输入下面的指令可以查看当前正在使用的shell:
$ echo $SHELL
shell脚本
shell通常都是一些交互指令,你通过键盘输入指令,shell执行并且返回结果。当有大量命令需要执行时,一条一条交互就显得太没有效率,这时候就可以把这些指令存入文本文件,并且可以添加控制语句,像程序流程那样控制指令的运行。这就是shell script。
shell脚本类似于Windows下的批处理,但是比批处理强大的多。
如何写一个shell脚本
首先根据以下步骤我们来写一个shell脚本:
1. 使用编辑器,可以是vi, vim,emacs,当然也可以是gedit , sublime这一类的软件
2. 编辑好你的shell 脚本后,为你的脚本添加可执行权限:
语法格式:chmod 权限 脚本名称
例:
$ chmod +x your-script-name
$ chmod 755 your-script-name
Note: 755意味着user拥有读写执行的权限,group和other只拥有读和执行权限,更多有关的知识可查看Linux文件权限。
3. 执行shell脚本
语法格式:
bash your-script-name
sh your-script-name
./your-script-name
一般大家都是用 ./your-script-name
来执行, .
意味着当前文件夹内,但是如果仅仅使用 . your-acript-name
,shell不会另起一个进程执行你的命令,意味着执行完你的脚本后,shell就会退出,你可以在你的机器上试一下。
好吧,让我们开始写一个shell脚本吧!
使用vim新建一个脚本vim fisrt.sh
, 内容如下:
#
# My fisrt shell script
#
clear
echo "Hello,shell!"
执行 ./fisrt.sh
,很明显无法运行。添加执行权限:
$ chmod 755 fisrt.sh
$ ./fisrt.sh
脚本命令 | 含义 |
---|---|
My fisrt shell script | 在shell脚本里面起到注释的作用,单行注释 |
clear | 清屏命令 |
echo “Hello,shell!” | 向屏幕输出内容 |
下面写个更复杂的吧,vim ginfo
:
#
#
# Script to print user information who currently login , current date & time
#
clear
echo "Hello $USER"
echo -e "Today is \c ";date
echo -e "Number of user login : \c" ; who | wc -l
echo "Calendar"
cal
exit 0
添加可执行权限后,./ginfo
输出如图:
上面这段脚本输出当前用户,打印当前时间,输出日历信息。
这一节到此结束。
下一节将会补充 $USER
,echo -e
, who |wc -l
的知识。