当前位置: 首页 > news >正文

shell 编程(1)——vim安装与使用

目录

  • 一、安装vim
    • 步骤 1:执行安装命令
    • 步骤 2:输入密码并确认
    • 步骤 3:验证安装
  • 二、安装报错解决办法
    • 步骤1:查看ubuntu系统版本
    • 步骤2:更新软件包列表
    • 步骤3:备份原有软件源配置
    • 步骤4:编辑软件源配置文件
    • 步骤5:再次更新软件包列表
    • 步骤6:重新安装 `vim`
  • 三、shell 脚本定义
  • 四、shebang
    • 1.$SHELL是什么
    • 2.注意事项:
  • 五、编写shell 脚本
    • 1. 创建并打开脚本文件
    • 2. 进入编辑模式
    • 3. 编写 Shell 脚本内容
    • 4. 保存并退出
    • 5. 赋予执行权限(推荐)
    • 6. 运行脚本(验证结果)

一、安装vim

使用vim命令报错Command ‘vim’ not found,系统在所有已知的命令路径中都找不到 vim 这个程序。
解决办法如下:

步骤 1:执行安装命令

在终端中输入以下命令,然后按回车:

sudo apt install vim

sudo:以管理员(root)权限执行命令。安装软件需要管理员权限。
apt:是 Debian/Ubuntu 系列 Linux 发行版的包管理工具,用于安装、卸载和更新软件。
install vim:表示安装名为 vim 的软件包。

步骤 2:输入密码并确认

系统会提示你输入当前用户的密码。输入时密码不会显示在屏幕上,输完后按回车即可。
之后,系统会计算需要下载和安装的文件大小,并询问你是否继续,会显示 [Y/n]。
直接按回车(默认选择 Y),或者输入 y 再按回车,开始安装。

步骤 3:验证安装

安装完成后,终端会返回到命令提示符。此时,可以再次尝试运行 vim 命令:

vim why.sh

Vim 编辑器应该能正常启动。

二、安装报错解决办法

步骤1:查看ubuntu系统版本

使用 lsb_release 命令,这是查看 Ubuntu 版本最标准、最直接的命令。

lsb_release -a

版本检查

根据系统版本为Ubuntu 24.04,Codename noble开展以下步骤

步骤2:更新软件包列表

执行 sudo apt update 刷新本地包索引:

sudo apt update

步骤3:备份原有软件源配置

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

步骤4:编辑软件源配置文件

使用 nano 编辑源文件,替换为阿里云的 noble 版本镜像:

sudo nano /etc/apt/sources.list

将文件内容全部替换为以下内容(适配 Ubuntu 24.04 noble):

deb https://mirrors.aliyun.com/ubuntu/ noble main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ noble-updates main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ noble-backports main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ noble-security main restricted universe multiverse

编辑完成后,按 Ctrl+X → 按 Y 确认保存 → 按 Enter 退出 nano

步骤5:再次更新软件包列表

sudo apt update

步骤6:重新安装 vim

sudo apt install vim

以上步骤就能解决软件源失效的问题,顺利完成 vim 的安装。
成功解决

三、shell 脚本定义

在 Linux 系统中,Shell 脚本 是一种由一系列 Shell 命令组成的文本文件,它可以按顺序自动执行这些命令,实现批量处理、自动化任务等功能。

简单来说,Shell 脚本就像是一个命令的集合—— 可以把平时在终端中手动输入的多条命令写进一个文本文件,然后让系统一次性执行这个文件里的所有命令。

Shell 脚本的核心特点:
文本文件:由纯文本组成,可直接用 vim、nano 等编辑器编写。
按顺序执行:命令从上到下依次运行,逻辑清晰。
支持编程特性:除了基础命令,还可以包含变量、条件判断(if-else)、循环(for、while)、函数等编程元素,实现复杂逻辑。
依赖 Shell 解释器:需要通过 Shell(如 bash、zsh 等)解释执行,通常通过脚本首行的 #!/bin/bash 指定解释器。

  • windows 中存在 *.bat 批处理脚本
  • Linux中常用 *.sh 脚本文件

在Linux系统中,shell 脚本或者称之为(bash shell程序)通常都是 vim 编程,有Linux 命令、bash shell 指令、逻辑控制语句和注释信息组成。

四、shebang

计算机程序中,shebang 指的是出现在文本文件的第一行前两个字符**#!**

vim hello.sh
  • #!/bin/sh 开头的文件,程序在执行的时候会调用 /bin/sh ,也就是bash解释器
  • #!/usr/bin/python 开头的文件,代表指定python解释器去执行
  • #!/usr/bin/env 解释器名称 ,是一种在不同平台上都能正确找到解释器的办法

1.$SHELL是什么

$SHELL 是一个环境变量,表示当前用户默认的登录 Shell。它的值通常是 /bin/bash。

  • 查看方法:echo $SHELL
  • 注意:它只表示 “默认” 的 Shell,不代表 “当前正在使用” 的 Shell

2.注意事项:

  • 如果脚本未指定 shebang ,脚本执行的时候,默认用当前shell去解释脚本,即 $SHELL
  • 如果 shebang 指定了可执行的解释器,如 /bin/bash /usr/bin/python ,脚本在执行时,文件名会作为参数传递给解释器
  • 如果#指定的解释程序没有可执行权限,则会报错“bad interpreter: Permission denied”。
  • 如果#指定的解释程序不是一个可执行文件,那么指定的解释程序会被忽略,转而交给当前的SHELL去执行这个脚本。
  • 如果#指定的解释程序不存在,那么会报错“bad interpreter: No such file or directory”。
  • #!之后的解释程序,需要写其绝对路径(如:#!/bin/bash),它是不会自动到$PATH中寻找解释器的。
  • 如果你使用bash test.sh这样的命令来执行脚本,那么#这一行将会被忽略掉,解释器当然是用命令行中显式指定的bash

五、编写shell 脚本

使用 vim 编写 Shell 脚本的步骤如下,包含从创建文件到保存退出的完整流程:

1. 创建并打开脚本文件

在终端中输入以下命令,创建并打开一个 .sh 后缀的脚本文件(例如 test.sh):

vim test.sh

此时会进入 vim命令模式

2. 进入编辑模式

在命令模式下按 i 键(insert 的缩写),进入插入模式,此时可以开始输入脚本内容。

3. 编写 Shell 脚本内容

在插入模式下,输入脚本代码,例如一个简单的示例:

#!/bin/bash
# 这是一个测试脚本
echo "Hello, Shell!"
echo "当前时间:$(date)"
  • 第一行 #!/bin/bash 是固定格式,指定脚本使用 bash 解释器
  • # 开头的行是注释
  • 其他行为具体命令

4. 保存并退出

完成编写后,按 Esc 键退出插入模式,回到命令模式,然后:

  • 输入 :wq 并按回车(w 表示保存,q 表示退出)
  • 若无需保存直接退出,输入 :q! 并按回车(! 表示强制)

5. 赋予执行权限(推荐)

脚本保存后,需赋予执行权限才能直接运行:

chmod +x test.sh

Linux 中,新创建的文件默认没有执行权限,即使内容是可执行的脚本,也需要手动赋予执行权限才能通过 ./脚本名 直接运行(否则需用 bash 脚本名 间接执行)。

默认权限:使用 vim 或 touch 创建的文件,默认权限通常是 -rw-r–r–(644),即:
所有者(u):可读、可写
所属组(g):可读
其他用户(o):可读
(无执行权限 x)

6. 运行脚本(验证结果)

./test.sh
http://www.dtcms.com/a/406337.html

相关文章:

  • 【后端】.NET Core API框架搭建(11) --对象映射
  • Django+FastAPI+Vue微服务架构指南
  • 今日策略:年化436%,回撤7%,夏普比5.28, deap因子挖掘重构,附python代码
  • 【openrouter.ai】截止2025年9月底 openrouter可用模型清单列表(包含free免费的模型)
  • (13)ASP.NET Core2.2 中的选项模式(Options)
  • 做公司网站需要准备什么苏州网站建设企业
  • giflib5.2.2 在Qt与VS C++中实现Gif缩放示例
  • 题解:AT_abc401_c [ABC401C] K-bonacci
  • 【OpenFeign】在 RuoYi 框架中优雅使用 OpenFeign:从原理到实践与踩坑总结
  • VMware虚拟机安装ubuntu
  • 因果推断落地:从CausalML到EconML,详解Uplift建模核心库
  • 备案个人网站做淘宝客wordpress能做企业站吗
  • 天玑与骁龙芯片:性能对决与选择指南
  • 【RustPython】 RustPython Cargo.toml 配置文件详解
  • 献县网站做映射后 内网无法通过域名访问网站
  • Go语言 对接全球股票K线API实战 - 以美股市场为例
  • Linux系统Nginx服务(四)
  • Linux to go Ubuntu 22.04 不匹配无线网卡 MT7925 的解决方法
  • Go语言在区块链开发中的应用场景详解
  • go的基础数据结构 slice源码阅读
  • 百度网盟推广 网站四川建设网有限责任公司官网
  • 破局渠道垄断:青蓝的流量入口变现路径
  • 【C++STL :string类 (二) 】从接口应用到内存模型的全面探索
  • 学做面包到什么网站网站点击按钮回到页面顶部怎么做
  • 领航 网站设计主机屋怎么做网站
  • 在VTK中实现相机自动绕轴旋转
  • 关于解决switch开关属性中active-value=“1“为数值形失败的问题
  • Seata 深度解析:微服务分布式事务管理的实践指南
  • LeetCode:53.课程表
  • 中国县域经济韧性(2006-2021)