Shell、Shell脚本、Shell命令:
一:Shell是什么?
在计算机中,Shell俗称壳(用来区别于核),
是指:为使用者提供操作界面的软件(命令解析器)。
Shell是Linux和Unix下的命令解析器。
类似于DOS和Windows下的命令解析器:command.com、cmd.exe。
这个Shell(命令解析器)的作用: 用于接收用户命令,然后调用相应的应用程序。
(将用户输入的命令加以解释并传给Linux/Unix操作系统)
用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。
————————————————
二:Shell用图形来解释(了解就好)
最底下是计算机硬件,然后硬件被系统核心包住,在linux/unix系统核心外层的就是shell,然后shell外层的就是我们最容易理解的应用程序,我们平时接触最多的就是应用程序了。
看图可知:shell其实是一个命令解释器,它的作用是解释用户输入的命令和程序。
我们在系统的终端中输入一条命令,可以立马看到一条或者几条系统回复我们的信息,其实就是shell在帮我们回复,所以shell可以称之为命令解释器。这种从键盘一输入命令,就可以立马得到相应的回复信息,叫作交互的方式,相当于我们在和电脑交流。Shell存在于系统的最外层,所以算作操作系统(linux/unix)的外壳,它之外的应用程序就不能算作操作系统了。我们从输入系统的账户密码开始,到登录系统以后的所有操作都是shell在帮我们解释执行的。
三:Shell的类型(命令解释器的类型)
在UNIX中主要有:
Bourne shell (包括 sh,ksh,and bash)
Bourne shell ( sh)
Korn shell ( ksh)
Bourne Again shell ( bash)
POSIX shell ( sh)
C shell (包括 csh and tcsh)
C shell ( csh)
TENEX/TOPS C shell ( tcsh)
四:shell脚本是什么?
了解了shell之后,我们再来了解下shell脚本。
如果我们的命令或者应用程序不在命令行直接执行,而是通过一个程序文件来执行时,这个程序就被称之为shell脚本。Shell脚本里面通常内置了多条命令,有的还包含控制语句,比如if和else的条件控制语句,for和select的循环控制语句等。这些内置在一个shell脚本中的命令通常是一次性执行完成,不会不停的返回信息给用户,这种通过文件执行脚本的方式称之为非交互方式。Shell脚本 类似于Windows/Dos下的批处理(batch脚本)。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高。
【补充:现在windows下有一个叫做power shell的功能可以和linux下的shell功能媲美。】
更明白地来说,linux/unix操作系统下面的shell脚本。(.sh)
就像DOS/Windows操作系统下面的批处理脚本。(.bat)
五:shell脚本一般怎么写?
一、例如:新建一个文件test.sh。
文件里面,输入一些代码,第一行一般是这样:
#!/bin/bash
echo "Hello World !"
“#!” 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。(例子中的命令解释器是 bash类型 )
(再比如说/bin/csh脚本,/bin/perl脚本,/bin/awk脚本,/bin/sed脚本,甚至/bin/echo等等。)
echo 命令用于向窗口输出文本。
二、常用命令(Linux/Unix环境)
1. ps -ef
ps -ef 表示查看全格式的全部进程。如下图:
ps是linux下最常用的也是非常强大的进程查看命令,常配合管道命令 | 和查找命令 grep 同时执行来查看特定进程。
参数含义:
-e 显示所有进程。
-f 全格式。
-h 不显示标题。
-l 长格式。
-w 宽输出。
a 显示终端上的所有进程,包括其他用户的进程。
r 只显示正在运行的进程。
x 显示没有控制终端的进程。
进程状态:
R 运行,正在运行或在运行队列中等待。
S 中断,休眠中, 受阻, 在等待某个条件的形成或接受到信号。
D 不可中断,收到信号不唤醒和不可运行, 进程必须等待直到有中断发生。
Z 僵死 ,进程已终止, 但进程描述符存在,直到父进程调用wait4()系统调用后释放。
T 停止,进程收到SIGSTOP, SIGSTP, SIGTIN,SIGTOU信号后停止运行运行。