[Shell编程] 零基础入门 Shell 编程:从概念到第一个脚本

目录

一、什么是 Shell?—— 连接用户与系统的 "桥梁"

二、常见的 Shell 类型 —— 不同系统的 "操作面板"

三、Shell 能做什么?—— 不止于 "输入命令"

1️⃣命令行操作:这是最基础的功能。通过ls(查看文件)、cd(切换目录)、rm(删除文件)等命令,直接控制电脑的文件、进程等资源。

2️⃣系统管理:系统管理员的 "利器"。比如通过 Shell 命令查看 CPU 使用率、配置网络参数、管理用户账号等,无需图形界面就能完成复杂的系统配置。

3️⃣脚本编程:将一系列命令写进文本文件(脚本),让系统按顺序执行。比如你每天需要备份文件、清理缓存,只需写一个脚本,一键就能完成所有操作。

4️⃣自动化任务:解放双手的关键。通过脚本实现重复性工作的自动化,比如批量重命名文件、定时运行程序(结合crontab工具)等,大幅提升工作效率。

四、Linux 中的 Shell—— 深入了解 "命令解释器"

五、第一个 Shell 脚本:Hello World!

步骤 1:创建脚本文件

步骤 2:编写脚本内容

步骤 3:添加可执行权限

步骤 4:执行脚本

执行结果

六、Shell 编程规范:写出易读、易维护的脚本

总结:从入门到实践


一、什么是 Shell?—— 连接用户与系统的 "桥梁"

简单来说,Shell 是一个命令解释器,它站在用户和操作系统内核之间,充当 "翻译官" 的角色:用户输入命令,Shell 负责解析并传递给内核执行,再将结果返回给用户。

  • 形象点说,操作系统的核心(内核)就像一台精密的机器,普通用户无法直接操作;而 Shell 就是这台机器的 "操作面板",让我们能用简单的命令控制复杂的系统。
  • 类比 Windows 系统:我们常用的cmd.exe(命令提示符)就是一种 Shell;更强大的 PowerShell 也是 Shell 的进阶版本。

二、常见的 Shell 类型 —— 不同系统的 "操作面板"

不同的操作系统有不同的 Shell,常见的主要有以下几种:

<1> Windows 系统

  • cmd.exe:最基础的命令行 Shell,继承了早期 DOS 系统的功能,适合简单的文件操作、程序启动等。
  • PowerShell:微软推出的高级 Shell,不仅能执行命令,还支持脚本编程,适合系统管理和自动化任务(比如批量配置 Windows 服务器)。

<2> Linux 系统

  • bash(/bin/bash):目前绝大多数 Linux 发行版(如 Ubuntu、CentOS)的默认 Shell,全称为 "Bourne Again Shell"。它功能强大、易用且免费,是 Linux 用户的首选,也是我们学习的重点

三、Shell 能做什么?—— 不止于 "输入命令"

Shell 的用途远不止 "输入命令" 这么简单,它是系统管理和自动化的核心工具:

1️⃣命令行操作:这是最基础的功能。通过ls(查看文件)、cd(切换目录)、rm(删除文件)等命令,直接控制电脑的文件、进程等资源。

2️⃣系统管理:系统管理员的 "利器"。比如通过 Shell 命令查看 CPU 使用率、配置网络参数、管理用户账号等,无需图形界面就能完成复杂的系统配置。

3️⃣脚本编程:将一系列命令写进文本文件(脚本),让系统按顺序执行。比如你每天需要备份文件、清理缓存,只需写一个脚本,一键就能完成所有操作。

4️⃣自动化任务:解放双手的关键。通过脚本实现重复性工作的自动化,比如批量重命名文件、定时运行程序(结合crontab工具)等,大幅提升工作效率。

四、Linux 中的 Shell—— 深入了解 "命令解释器"

在 Linux 系统中,Shell 是一个特殊的应用程序,它的核心作用是 "解释命令":

  • 当你输入ls -l时,Shell 会解析这个命令的含义("查看当前目录下文件的详细信息"),然后告诉内核执行相应操作,最后将结果显示在屏幕上。

  • 查看系统支持的 Shell:Linux 系统可以同时支持多种 Shell,通过/etc/shells文件可以查看所有可用的 Shell 类型。执行以下命令即可:

    bash

    cat /etc/shells
    
     

    通常会看到/bin/bash/bin/sh等,其中/bin/bash是最常用的默认 Shell。

五、第一个 Shell 脚本:Hello World!

学习编程的第一步往往是 "Hello World",Shell 编程也不例外。下面我们一步步写出第一个 Shell 脚本,感受 Shell 编程的魅力。

步骤 1:创建脚本文件

首先,新建一个名为HelloWorld.sh的文件(.sh是 Shell 脚本的常用后缀,方便识别)。可以用vimnano等文本编辑器创建:

bash

vim HelloWorld.sh

步骤 2:编写脚本内容

在文件中输入以下内容,然后保存退出:

bash

#!/bin/bash
# 这是我的第一个Shell脚本(注释行)
pwd  # 显示当前目录
echo "Hello World!"  # 输出Hello World

  • 第一行#!/bin/bash是脚本声明,告诉系统:这个脚本需要用/bin/bash程序来解释执行(必须放在脚本第一行)。
  • #开头的行是注释(除了第一行的#!/bin/bash),用于说明脚本功能,方便自己和他人理解(好习惯一定要养成!)。
  • pwd命令:显示当前所在目录。
  • echo命令:输出后面的字符串(类似其他语言的 "打印" 功能)。

步骤 3:添加可执行权限

Shell 脚本默认没有 "执行权限",需要用chmod命令添加。进入脚本所在目录,执行:

bash

chmod +x ./HelloWorld.sh

  • chmod +x给文件添加 "可执行" 权限(x代表 execute)。
  • 执行后,用ll命令可以看到文件权限中多了x(表示可执行)。

步骤 4:执行脚本

现在,我们可以运行这个脚本了。有三种常见的执行方式:

  1. 通过./执行(推荐):

    bash

    ./HelloWorld.sh
    
     
    • 为什么要用./?因为 Linux 会在PATH环境变量指定的目录(如/bin/usr/bin)中查找可执行程序,而当前目录通常不在PATH中。./表示 "当前目录",告诉系统:就在这里找这个脚本。
  2. 通过bashsh执行:

    bash

    bash ./HelloWorld.sh  # 或 sh ./HelloWorld.sh
    

    这种方式不需要脚本有执行权限,因为是直接调用bash程序来解释脚本。
  3. 通过source.执行:

    bash

    source HelloWorld.sh  # 或 . HelloWorld.sh(注意.后面有空格)
    
     
    • 这种方式会在当前 Shell 环境中执行脚本(其他方式会启动一个 "子 Shell"),适合需要修改当前环境的脚本(比如设置环境变量)。

执行结果

无论用哪种方式,你都会看到类似以下的输出:

plaintext

/root  # pwd命令的结果(当前目录)
Hello World!  # echo命令的结果

六、Shell 编程规范:写出易读、易维护的脚本

好的脚本不仅能运行,还要让别人(包括未来的自己)看得懂。以下是初学者必须掌握的编程规范:

  1. 开头必须有脚本声明:第一行#!/bin/bash不能少,明确指定解释器。

  2. 添加注释:

    • 脚本开头用注释说明脚本的功能、作者、创建时间等。
    • 复杂逻辑处用注释解释思路(比如 "这里是判断文件是否存在的逻辑")。
    • 注释用#开头,单行注释即可(Shell 不支持多行注释)。
  3. 输出友好信息:多用echo命令输出关键步骤的提示(比如 "开始备份文件..."、"脚本执行完毕"),让执行过程更清晰。

  4. 示例:规范后的 HelloWorld 脚本

    bash

    #!/bin/bash
    # 脚本名称:HelloWorld.sh
    # 功能:输出当前目录和Hello World信息
    # 作者:初学者echo "当前的目录位于:"  # 提示信息
    pwd  # 显示当前目录
    echo "Hello World!"  # 输出问候语
    echo "脚本执行完毕"  # 结束提示
    
     

    执行后输出更清晰:

    plaintext

    当前的目录位于:
    /root
    Hello World!
    脚本执行完毕
    

总结:从入门到实践

Shell 编程是 Linux 系统操作和自动化的基础,它不难学,但能大幅提升工作效率。本文我们从 Shell 的概念讲到第一个脚本的编写,核心要点包括:

  • Shell 是用户与内核之间的命令解释器;
  • bash 是 Linux 中最常用的 Shell;
  • 脚本的核心是 "按顺序执行命令",#!/bin/bash和注释是基础规范;
  • 执行脚本的三种方式及区别需要牢记。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/94343.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/94343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】排序(sort) -- 插入排序

目录 一、插入排序 二、直接插入排序&#xff08;straight insertion sort&#xff09; 1. 思路介绍 2. 代码实现 3. 特性总结 三、希尔排序&#xff08;Shell sort&#xff09; 1. 思路介绍 2. 代码实现 3. 特性总结 四、总结 一、插入排序 常见的排序算法有&…

水面垃圾清扫船cad【6张】三维图+设计说明书

海洋吸尘器结构设计 摘 要 近年来&#xff0c;随着经济的快速发展&#xff0c;海洋产业及海上活动的增加&#xff0c;导致海洋漂浮垃圾越来越多&#xff0c;对沿岸的居民和海洋的生物的生命安全造成了很大的威胁&#xff0c;严重破坏海洋生态平衡。针对海洋垃圾污染这一主要问…

03-List列表数据类型

1.特点&#xff1a; 原属是字符串类型 列表头尾增删块&#xff0c;中间慢&#xff0c;增删元素是常态 元素可重复 最多包含2^32-1个元素 索引通python列表2.常用命令 ------增------ 1.从列表头部压入数据LPUSH key value1 value22.从列表尾部压入数据RPUSH key value1 value23…

防火墙认证用户部署

文章目录1、配置vlan2、防火墙配置&#xff08;1&#xff09;配置安全区域&#xff08;2&#xff09;接口加入安全区域(3)fw配置DHCP(4)地址组&#xff08;5&#xff09;管理员(6)用户认证1、配置vlan vlan batch 10 20 [Huawei-GigabitEthernet0/0/2]port link-type access …

Vue.js之监听器

watch侦听器&#xff1a;作用:监视数据变化&#xff0c;执行一些 业务逻辑 或 异步操作。 语法:简单写法→简单类型数据&#xff0c;直接监视完整写法 → 添加额外配置项 (1)deep:true 对复杂类型深度监视(2)immediate:true 初始化立刻执行一次handler方法//1.简单写法 data: {…

25电赛e题杂乱环境稳定识别矩形框(附源码)

​ 识别并跟踪矩形目标 识别视频中符合矩形轮廓的目标区域&#xff0c;并标记中心点位置。 实现思路 **图像预处理&#xff1a;灰度 二值化**闭运算消除孔洞二值化处理查找并筛选矩形轮廓解算中心点目标筛选结果绘制 环境 使用 OpenCV 和 python&#xff1a; 图像预处理…

【前端安全】聊聊 HTML 闭合优先级和浏览器解析顺序

【前端安全】聊聊浏览器解析顺序和 HTML 闭合优先级 最近在研究 XSS 的时候&#xff0c;发现一个特别容易被忽略的问题 —— 浏览器到底是怎么解析 HTML 的&#xff1f;为什么有些 payload 成功了&#xff0c;有些却怎么试都不行&#xff1f;其实这跟标签的闭合优先级还有解析顺…

PHP-分支语句、while循环、for循环

分支语句 无论在何种编程语言中&#xff0c;流程控制都是很重要的内容。由于 PHP 的大部分语法都继承了C语言的特点&#xff0c; 因此在流程控制方面&#xff0c;PHP 有着和C语言类似的流程控制。 if else 语句是流程控制中根据条件判断执行的一种。该语句执行时先对条件进行判…

并发编程常用工具类(下):CyclicBarrier 与 Phaser 的协同应用

在并发编程中&#xff0c;除了CountDownLatch和Semaphore&#xff0c;CyclicBarrier和Phaser也是实现多线程协作的重要工具。它们在处理多阶段任务同步、动态调整参与线程等场景中展现出独特价值。本文作为并发工具类系列的第二篇&#xff0c;将深入解析CyclicBarrier和Phaser的…

机器人焊接节气装置

在摩托车制造过程中&#xff0c;精密部件的焊接质量直接影响整车的安全性和操控性能。以发动机缸体焊接为例&#xff0c;传统手工焊接容易出现焊缝不均匀的问题&#xff0c;而采用六轴弧焊机器人后&#xff0c;焊接精度能控制在0.1毫米以内。日本川崎重工的生产数据显示&#x…

使用yolo11训练食物浪费检测数据集VOC+YOLO格式6734张32类别步骤和流程

【数据集介绍】数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数)&#xff1a;6734标注数量(xml文件个数)&#xff1a;6734标注数量(txt文件个数)&#xff1…

掌握PowerPC架构与编程技巧:技术资料详解

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;PowerPC是一种高性能的RISC架构&#xff0c;最初由IBM、Motorola和Apple联合开发&#xff0c;被设计用于高端工作站和服务器&#xff0c;同时广泛应用于嵌入式系统、航空电子设备、游戏主机和超级计算机等领域。…

VR 企业展厅:开启数字化展示新时代

在当今数字化浪潮席卷各行各业的时代&#xff0c;企业的展示与宣传方式也在不断革新。VR&#xff08;虚拟现实&#xff09;技术的出现&#xff0c;为企业展厅带来了全新的变革&#xff0c;使其从传统的实体展示空间&#xff0c;转变为具有无限可能的数字化虚拟空间。一、VR 企业…

测试用例颗粒度全解析

引言&#xff1a;为什么颗粒度是测试团队的“隐形门槛”&#xff1f;在软件测试领域&#xff0c;测试用例颗粒度&#xff08;即测试用例的详细程度&#xff09;看似是一个基础问题&#xff0c;却常常成为团队协作的“隐形门槛”。某电商平台测试团队曾出现过这样的窘境&#xf…

分布式锁的基本原理和基于lua脚本的实现(Redisson)

为了确保分布式锁可用&#xff0c;我们要确保锁的实现同时满足以下四个条件&#xff1a;- 互斥性。在任意时刻&#xff0c;只有一个客户端能持有锁。- 不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁&#xff0c;也能保证后续其他客户端能加锁。- 解铃还须系…

智慧园区数字孪生全生命周期交付体系:从虚拟建模到全域智联的快速交付新常态

在数字经济与绿色低碳转型的双重驱动下&#xff0c;智慧园区建设正经历从“物理空间堆砌”到“数据智能驱动”的范式革命。数字孪生技术作为核心引擎&#xff0c;通过构建物理园区的虚拟镜像&#xff0c;实现虚实空间的毫秒级同步与智能协同&#xff0c;推动园区管理向全要素感…

电脑忘记开机密码怎么办?【图文详解】5种方法重置/更改/取消/设置开机密码?

一、问题背景谁都有马虎的时候&#xff0c;要是突然忘了电脑开机密码&#xff0c;就只能对着登录界面干着急&#xff0c;没法打开电脑处理工作、查看文件&#xff0c;太影响效率了。别慌&#xff0c;其实有不少简单实用的办法能解除或重置密码&#xff0c;下面就来一一介绍&…

Go语言select

select是什么select是Go语言层面提供的一种多路复用机制&#xff0c;用于检测当前goroutine连接的多个channel是否有数据准备完毕&#xff0c;可用于读或写。Go语言的select语句&#xff0c;是用来起一个goroutine监听多个Channel的读写事件&#xff0c;提高从多个Channel获取信…

VUE+SPRINGBOOT从0-1打造前后端-前后台系统-整体示例

一、注册、登录、密码找回二、VUE前台系统三、VUE后台系统

深入解析SmolVLA:VLM与动作专家间的注意力机制交互

在机器人学习领域&#xff0c;如何有效地将视觉语言模型&#xff08;VLM&#xff09;的强大感知能力与低级动作控制相结合&#xff0c;是实现通用机器人智能的关键挑战。SmolVLA&#xff08;Small Vision-Language-Action&#xff09;架构正是在这一背景下应运而生&#xff0c;…