快速了解Linux/Unix系统中最重要的概念——shell

什么是shell?

命令解释器

英文shell是外壳的意思,在计算机领域中,shell即操作系统的外壳。我们可以通过shell来操作和控制操作系统。

总的来说,shell是一个命令解释器,你在提示符下输入的每个命令都由shell先解释然后传给Linux内核。 说到底,shell是用户与内核进行交互操作的一种接口,用户通过shell命令来启动、暂停、停止程序的运行或对计算机进行控制。

脚本语言

所谓脚本语言就是不用编译就可以直接执行的语言。它通过解释器边解释边运行,所以速度相对来说比较慢。

shell还是一种解释执行的脚本语言,由一系列shell命令组成,这些命令都是可执行程序的名字。在shell中可以调用Linux系统命令。

shell程序设计语言支持在高级语言里所能见到的绝大多数程序控制结构,比如循环,函数,变量和数组。shell编程语言很易学,并且一旦掌握后它将成为你的得力工具。任何在提示符下能键入的命令都能放到一个可执行的shell程序里,这意味着用shell语言能简单地重复执行某一任务。

Linux中常见的shell

一个系统可以存在多个shell,可以通过 cat /etc/shells 命令查看系统中安装的shell,不同的shell可能支持的命令语法是不相同的,但是最常用的shell还是/bin/bash。

$ cat /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh

Demo(脚本文件.sh)

1. 先创建一个脚本文件script.sh, 后缀名是 .sh:

#!/bin/bash

echo "this is the first shell script"

注意:执行之前首先要为脚本文件添加可执行权限,不然就得用root权限才能执行!

2. 添加可执行权限:

chmod +x script.sh

3. 执行script.sh。

三种方式:

(1) sh script.sh  

(2) ./script.sh 

(3)指定脚本文件的绝对路径,即可执行。例如: /home/Min/script.sh 

区别:

第一种方式,使用/bin/sh所指向的shell解释器来执行脚本文件;

第二种方式,它默认使用/bin/sh所指向的shell解释器来执行脚本文件,前提是脚本文件中未指定解释器。但如果在脚本文件中指定了使用哪种脚本解释器,那么它就不管/bin/sh指向哪个脚本解释器,而是使用脚本文件中所制定的那个脚本解释器(本例的脚本文件中指定脚本解释器: #!/bin/bash);

第三种方式执行使用的脚本解释器和第二种相同

常用命令

cat 文件名  #输出文件内容到基本输出(屏幕 or 加>fileName 到另一个文件)
cb         #格式化源代码
chmod      #change mode,改变文件的权限
cp         #copy
date       #当前的时间和日期
echo $abc  #在变量赋值之后,只需在变量前面加一个$去引用.
lint       #语法检查程序
help 命令   #只能查询shell内置命令
man 命令    #即可以帮助查询linux内置命令,也可以查询linux外部命令。man查询的内容比help内容都多
ls         #显示目录内容,linux原装命令
dir        #也是显示Linux目录内容的命令,来自dos,Linux兼容
type       #显示指定命令的类型
du         #查看磁盘空间状况
ps         #查看当前进程状况
who        #你的用户名和终端类型
定义变量    name=abc (bash/pdksh) || set name = abc (tcsh)
mkdir      #创建目录
rmdir      #删除目录
cd         #进入目录
rm         #删除文件
more       #显示文件
echo       #显示指定文本
mv         #改文件名/移动文件
pwd        #显示目录路径命令

这里再推荐一篇从底层逻辑来介绍shell的文章,简明扼要,深入浅出:Shell是什么?1分钟理解Shell的概念!

有关shell编程的基础内容讲解还可以看看这篇:Linux——shell脚本的基础篇(变量定义、变量种类、变量操作)

(整理自网络)

参考资料:

https://blog.csdn.net/weixin_41122339/article/details/81078900

https://baike.baidu.com/item/shell/99702

posted @ 2020-12-16 16:01  箐茗  阅读(628)  评论(0编辑  收藏  举报