您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

完全掌握Linux系统的Shell编程

2025/8/16 5:45:42发布19次查看
本篇文章给大家带来了linux系统中shell编程的相关知识,在学习shell编程之前,我们应该要先知道什么是shell,还有什么是shell脚本,希望对大家有帮助。
一. 什么是shell        1. 在学习shell编程之前,我们应该要先知道什么是shell        用户、shell、linux内核、硬件的关系如下图:
shell是一个应用程序,也可以说是一个命令解释器,它是用户和linux内核之间的桥梁,可以将用户在图形界面上的操作或在终端输入的命令传递给linux内核,然后linux内核再调度各个硬件及其他资源来完成用户的操作。
        什么是linux的内核?在linux操作系统中,真正能够操作计算机硬件完成某个用户功能的那一部分被称为linux系统的内核。用户在使用linux系统时,是不可以直接操作内核的,而是通过shell来间接的操作内核的。shell不属于内核的一部分,而是在linux内核之外开发的应用程序,它将接收到的用户鼠标点击操作或输入的命令传递给内核,而内核再去调度硬件去完成指定的操作。这样用户就不需要直接操作内核,而是通过shell间接地操作内核,内核也不会被直接的暴露于外部,保障了内核的安全性,也简化了用户的操作。
        shell这个应用程序是开机即启动的,我们在操作linux系统时,无时不刻都在直接或者间接地通过shell去操作linux内核。其实,在没有图形化界面之前,用户是通过终端或者控制台直接地去调用shell这个应用程序,然后通过输入命令来操作linux系统的。用户在控制台或者终端上看到的 $ 和 # 其实就是shell的命令提示符,这表明用户已经进入了shell这个程序,只需要输入命令,即可通过shell来操作linux内核。只不过root用户登录显示$,而普通用户登录显示#。
另外,shell在将用户的操作传递给内核的过程,就是在调用内核提供的api接口的过程。比如,用户在图形界面或者终端命令行做了一个打开文件的操作,而这个用户的操作shell接收到后,就会去调用内核提供的相应的函数,然后内核再去调度硬件资源来完成用户的操作。
        2. 常见的shell        我们知道,linux 是一个开源的操作系统,它是由世界各地的多个组织机构或个人共同开发完成的,每个组织机构或个人负责一部分功能,最后组合在一起,就构成了现在我们使用的 linux。也正是这个原因,这些不同的组织机构或者个人都会开发出可以在linux系统中使用的应用程序,而这些应用程序的功能可能是类似的,各有优缺点,至于使用哪一个由用户选择。而shell就是这样的一个应用程序,所以shell有很多个版本,目前linux的大多数发行版默认使用的shell是 bash shell。其他常见的shell版本如下:
        (1) sh:sh 的全称是 bourne shell,是 unix 上的标准 shell,很多 unix 版本都配有 sh。sh 是第一个流行的 shell。
        (2) csh:这个 shell 的语法有点类似c语言,所以才得名为 c shell ,简称为 csh。
        (3) tcsh:tcsh 是 csh 的增强版,加入了命令补全功能,提供了更加强大的语法支持。
        (4) ash:一个轻量级占用资源少的 shell,适合运行于低内存环境,与 bash shell 完全兼容。
        (5) bash:bash shell 由 gnu 组织开发,保持了对 sh shell 的兼容性,是各种 linux 发行版默认配置的 shell。
        3. 查看linux系统的shell       在linux系统中,一般默认使用的shell是bash shell。shell是一个应用程序,一般都是放在/bin或者/user/bin目录下,而当前 linux 系统可用的 shell 都记录在/etc/shells文件中。
(1) 查看系统当前可用的shell,执行命令【cat -n /etc/shells】:
(2) 查看系统当前默认使用的shell,执行命令【echo $shell】:
(3) 查看各个用户使用的shell,执行命令【cat -n /etc/passwd】:
二. 什么是shell编程        1. 什么是shell编程语言        我们已经知道,shell是一个应用程序,而这个应用程序不单单只是可以将用户的操作命令传递给linux内核,它也支持编程。shell都会对应一套编程语言的语法,而这套语言就被称为shell编程语言或是shell脚本语言。shell编程语言和javascript语言一样是一种脚本语言,它不需要编译,而它的解释器就是shell应用程序本身。
        我们平时工作中所说的shell,大多数情况指的是shell脚本语言,而不是shell应用程序。
        2. 什么是shell脚本         我们在使用shell脚本语言时,可以和linux系统的其他操作命令结合使用(如 ls、grep等等),而我们使用shell脚本语言和其他命令结合编写能够完成某个特定功能的扩展名为.sh的文本,就叫做shell脚本程序。
        3. 第一个shell脚本        我们已经知道,shell有很多个版本,而每个版本支持的shell脚本语言语法可能是有差异的,而下面的关于shell脚本的所有例子都是针对于bash shell这个版本而言。
(1)在根目录下新建一个hello.sh脚本:【vim hello.sh】
(2)然后输入以下内容:
#!/bin/bash     echo hello world 
第一行:#! 是一个约定标记,它可以告诉系统这个脚本要使用哪个shell版本作为解释器,后面紧跟的/bin/bash则是shell的所在路径,所以【#!/bin/bash 】表示声明使用bin目录下的 bash shell 作为这个脚本的解释器;
        第二行:【echo hello world 】表示输出文本 hello world !;
(3)然后保存退出:【!wq】;
(4)这样,一个能够输出 hello world !的脚本就编写完成。
补充说明:
       上面我们已经说过,shell程序就是shell脚本语言的解释器,而我们在使用终端时(例如通过xshell连接linux服务器的终端),其实就是已经进入了shell这个程序,所以其实我们是可以在终端直接输入shell编程语言的代码来运行的,而不需要写在脚本里再去运行。例如,声明一个变量并打印这个变量的值:
        (1)输入代码:【name=张三】,表示定义了一个变量name,它的值为张三;
        (2)输入代码:【echo $name】,表示打印变量name的值。
当然,这种方式只适合去执行逻辑简单只有一两句代码的情况,大多数情况下我们还是将shell编程代码写在.sh脚本中再去执行。
         4. 运行shell脚本的方式        上面我们已经编写了一个能够输出 hello world !的shell脚本运行,而现在我们就要执行 hello.sh 这个脚本。而shell脚本的执行方式有两种:
         第一种:给予.sh文本可执行权限,然后执行文本:
        (1)先给予shell脚本可执行权限:【chmod +x hello.sh】;
        (2)直接执行:绝对路径:【/hello.sh】 或者   相对路径:【./hello.sh】
注意,这里执行时如果使用的是相对路径,必须要以./开头,表示当前目录,否则系统会找不到脚本,从而导致执行失败。
         第二种:将 shell 脚本作为参数传递给 bash shell 解释器:
        (1)这里使用bash shell来作为解释器,那么我们直接调用bash shell 这个程序,然后把hello.sh这个脚本作为参数传给shell即可:【/bin/bash hello.sh】或 【bash hello.sh】
(2)这里需要注意,使用这种方式执行shell脚本时,在shell脚本的第一行中就不需要声明使用哪个版本的shell来作为解释器,也就是不需要这行代码【#!/bin/bash】,因为我们运行脚本的命令中【/bin/bash hello.sh】,就已经指明了使用哪个版本的shell作为解释器。
                注意,这种方式执行脚本文件时,如果使用的是相对路径,那么【/bin/bash ./hello.sh】和【/bin/bash hello.sh】是一样的,并无使用第一种执行方式中的区别。
相关推荐:《linux视频教程》
以上就是完全掌握linux系统的shell编程的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product