Linux Shell编程基础

本文详细介绍Linux Shell的基础知识,包括Shell的历史背景、基本格式、执行方式及变量使用。Shell作为用户与Linux系统的桥梁,掌握其编程对于系统管理和自动化任务至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux Shell编程基础

1. Shell 简介

1.1 Shell概述

  Shell 本身是一个用 C 语言编写的程序,它是用户使用 Unix/Linux 的桥梁,用户的大部分工 作都是通过 Shell 完成的。Shell 既是一种命令语言,又是一种程序设计语言: 作为命令语言,它交互式地解释和执行用户输入的命令; 作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结 构,包括循环和分支。
  Shell 它虽然不是 Unix/Linux 系统内核的一部分,但它调用了系统核心的大部分功能来执行程 序、建立文件并以并行的方式协调各个程序的运行。Shell 是用户与内核进行交互操作的一 种接口,目前最流行的 Shell 称为 bash Shell(Bourne Again Shell)
  Shell 是一门编程语言(解释型的编程语言),即 shell 脚本(就是在用 linux 的 shell 命令编程), Shell 脚本程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一 行一行敲到 Shell 提示符下执行
  Shell 是一种脚本语言,那么,就必须有解释器来执行这些脚本 Unix/Linux上常见的 Shell 脚本解释器有bash、sh、csh、ksh等,习惯上把它们称作一种 Shell。 我们常说有多少种 Shell,其实说的是 Shell 脚本解释器,可以通过 cat /etc/shells 命令查看系 统中安装的 shell,不同的 shell 可能支持的命令语法是不相同的
  sh 是 Unix 标准默认的 shell,由 Steve Bourne 开发,是 Bourne Shell 的缩写。 bash 是 Linux 标准默认的 shell,本教程也基于 bash 讲解。bash 由 Brian Fox 和 Chet Ramey 共同完成,是 Bourne Again Shell 的缩写。
  vShell 本身支持的命令并不多,内部命令一共有 40 个,但是它可以调用其他的程序,每个程 序就是一个命令,这使得Shell命令的数量可以无限扩展,其结果就是Shell的功能非常强大, 完全能够胜任 Linux 的日常管理工作,如文本或字符串检索、文件的查找或创建、大规模软 件的自动部署、更改系统设置、监控服务器性能、发送报警邮件、抓取网页内容、压缩文件 等。

1.2 Shell基本格式

  代码写在普通文本文件中,通常以.sh 结尾,虽然不是强制要求,但希望大家最好这么做
例子:
[root@hadoop02 bin]# vi helloworld.sh
在这里插入图片描述在这里插入图片描述
保存退出即可.
在这里,我们就写好了一个 shell 脚本,第一行是固定需要的表明用哪一种 shell 解析器来 执行我们的这个脚本程序。本质上,shell 脚本里面的代码都是就是一些流程控制语句加一 些特殊语法再加 shell 命令组成。其中,我们可以当做每一个命令就是 shell 编程当中的关键字

1.3 Shell 执行方式

  1. sh 方式或者 bash 方式
    sh helloworld.sh
    bash helloworld.sh ## 直接指定用系统默认的 bash shell 解释执行
  2. source 方式或者.方式 source 命令也称为“点命令”,也就是一个点符号(.),是 bash 的内部命令。 功能:使 Shell 读入指定的 Shell 程序文件并依次执行文件中的所有语句 source 命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。 用法:
    source filename

    .(空格)filename
    在这里插入图片描述
  3. 直接执行该脚本文件
    可以有两种方式,不过这两种方式的执行,都需要该文件有执行权限 所以在执行之前,我们要更改他的执行权限
    在这里插入图片描述在这里插入图片描述

1.4 Shell 注释

单行注释:Shell 脚本中以#开头的代码就是注释
多行注释:Shell 脚本中也可以使用多行注释:

:<<!
echo “dd” ## 这句话是注释,也就是说在 :<<! 注释语句 ! 中间的都是注释
!

Shell 基本语法

2.1、变量

2.1.1 系统变量

  Linux Shell 中的变量分为“系统变量”和“用户自定义变量” 系统变量可以通过 set 命令查看,用户环境变量可以通过 env 查看
在这里插入图片描述在这里插入图片描述

2.1.2 自定义变量

在这里插入图片描述
单引号和双引号总结:
在这里插入图片描述
3. 变量高级用法 撤销变量:unset ABC 声明静态变量:readonly ABC= ‘abc’ 特点是这种变量是只读的,不能 unset
请先看一个例子,我现在写两个脚本,在 a.sh 中调用 b.sh 执行,那我们想知道 a 脚本能 不能获取到 b 脚本的变量,b 脚本能不能获取到 a 脚本的变量?
在这里插入图片描述在这里插入图片描述在这里插入图片描述
【注】:反引号位 (`) 位于键盘的Tab键的上方

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod命令举例 5 1.4.3 绝对模式 5 1.4.4 chmod命令的其他例子 6 1.4.5 可以选择使用符号模式或绝对模式 7 1.5 目录 7 1.6 suid/guid 7 1.6.1 为什么要使用suid/guid 8 1.6.2 设置suid/guid的例子 8 1.7 chown和chgrp 9 1.7.1 chown举例 9 1.7.2 chgrp举例 9 1.7.3 找出你所属于的用户组 9 1.7.4 找出其他用户所属于的组 10 1.8 umask 10 1.8.1 如何计算umask值 10 1.8.2 常用的umask值 11 1.9 符号链接 12 1.9.1 使用软链接来保存文件的多个映像 12 1.9.2 符号链接举例 12 1.10 小结 13 第2章 使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 16 2.1.3 忽略某个目录 16 2.1.4 使用user和nouser选项 16 2.1.5 使用group和nogroup选项 16 2.1.6 按照更改时间查找文件 17 2.1.7 查找比某个文件新或旧的文件 17 2.1.8 使用type选项 17 2.1.9 使用size选项 18 2.1.10 使用depth选项 18 2.1.11 使用mount选项 18 2.1.12 使用cpio选项 18 2.1.13 使用exec或ok来执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 23 3.1.4 创建一个新的crontab文件 24 3.1.5 列出crontab文件 24 3.1.6 编辑crontab文件 24 3.1.7 删除crontab文件 25 3.1.8 恢复丢失的crontab文件 25 3.2 at命令 25 3.2.1 使用at命令提交命令或脚本 26 3.2.2 列出所提交的作业 27 3.2.3 清除一个作业 27 3.3 &命令 27 3.3.1 向后台提交命令 28 3.3.2 用ps命令查看进程 28 3.3.3 杀死后台进程 28 3.4 nohup命令 29 3.4.1 使用nohup命令提交作业 29 3.4.2 一次提交几个作业 29 3.5 小结 30 第4章 文件名置换 31 4.1 使用* 31 4.2 使用? 32 4.3 使用[...]和[!...] 32 4.4 小结 33 第5章 shell输入与输出 34 5.1 echo 34 5.2 read 35 5.3 cat 37 5.4 管道 38 5.5 tee 39 5.6 标准输入、输出和错误 40 5.6.1 标准输入 40 5.6.2 标准输出 40 5.6.3 标准错误 40 5.7 文件重定向 40 5.7.1 重定向标准输出 41 5.7.2 重定向标准输入 42 5.7.3 重定向标准错误 42 5.8 结合使用标准输出和标准错误 43 5.9 合并标准输出和标准错误 43 5.10 exec 44 5.11 使用文件描述符 44 5.12 小结 45 ... ...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值