终端指令后续和shell脚本编程

news/2025/2/26 6:30:44

终端指令后续

1.磁盘指令

  • 常用命令
    • n 新建分区
    • d 删除分区
    • p 显示分区表
    • w 保存并退出
    • q 不保存退出
  • 注意事项
    • 操作前需卸载设备
    • 分区后需格式化才能使用

1.2 mkfs(格式化工具)

  • 功能:创建文件系统
  • 格式
     

    bash

    sudo mkfs.文件系统类型 分区设备
  • 常用类型
    • mkfs.ntfs:Windows兼容格式
    • mkfs.ext4:Linux常用格式
    • mkfs.vfat:FAT32通用格式
  • 示例
     

    bash

    sudo mkfs.ntfs /dev/sdb1

2. 挂载管理

2.1 mount(挂载)

  • 功能:将存储设备关联到目录
  • 格式
     

    bash

    sudo mount 设备路径 挂载点
  • 示例
     

    bash

    sudo mount /dev/sdb1 /mnt/usb
  • 注意事项
    • 推荐使用绝对路径
    • 挂载点需为空目录

2.2 umount(卸载)

  • 功能:解除设备关联
  • 格式
     

    bash

    sudo umount 设备路径|挂载点
  • 强制卸载
     

    bash

    sudo umount -l 强制卸载

3. 磁盘状态查看

3.1 df(磁盘空间)

  • 功能:显示磁盘使用情况
  • 常用选项
    • -h 人性化显示(自动转换单位)
    • -a 显示所有文件系统
  • 示例
     

    bash

    df -h /dev/sdb1

3.2 lsblk(设备列表)

  • 功能:显示块设备树状图
  • 常用选项
    • -f 显示文件系统类型
    • -o 自定义显示列
  • 示例
     

    bash

    lsblk -f

4. U盘完整处理流程

  1. 检测设备

     

    bash

    ls /dev/sd*  # 查看新增设备
  2. 分区操作

     

    bash

    sudo fdisk /dev/sdb
  3. 格式化

     

    bash

    sudo mkfs.vfat /dev/sdb1
  4. 挂载使用

     

    bash

    mkdir ~/usb_drive
    sudo mount /dev/sdb1 ~/usb_drive
  5. 卸载设备

     

    bash

    sudo umount ~/usb_drive

5. 高级操作

5.1 永久挂载

  • 编辑fstab
     

    bash

    sudo vim /etc/fstab
  • 添加格式
     

    markdown

    /dev/sdb1  /mnt/usb  ntfs  defaults  0  0

5.2 分区恢复

  • testdisk工具
     

    bash

    sudo apt-get install testdisk
    sudo testdisk

6. 注意事项

  1. 操作前务必备份重要数据
  2. 卸载失败常见原因:
    • 有进程正在访问设备
    • 当前位于挂载目录中
  3. NTFS格式需要安装额外驱动:

    bash

    sudo apt-get install ntfs-3g

shell脚本编程

1.基本概念

 

1.什么是shell

shell: 贝壳,本质是指针的集合,但是在使用时需要满足一定的逻辑

2.shell的功能

shell是用于用户和操作系统的交互核心接口

3.语言分类

c:属于编译型语言,需要使用gcc进行编译,当文件不改变时,不需要重新编译,直接连接即可,执行速度快

shell:属于解释性语言,使用解析器bash,无论文件是否改变,每次都需要重新解析,相对来说效率低

二、创建shell脚本

1.shell脚本:使用文件***.sh

vim ***.sh

2.补全脚本文件

#! 后面敲一个tab键

#!/bin/bash ---->表示使用的时bash解析器

#! ---->表示这是一个脚本文件

/bin/bash --->表示使用的解析器的路径

3.使用shell

.单行注释
    #    ---》单行注释
2.shell不存在多行注释,但是可以使用指令模拟多行注释,注意在使用过程中有可能出现报错
    <<CONMEND
    COMMEND
    
    COMMEND:类似标识符

三、认识解析器

1.查看解析器

1)echo $SHELL -->打印SHELL变量的值

2)cat /etc/shells

2.认识相关解析器

bash: 在Linux\debian默认使用的就是 bash

sh :最早期的解析器,交互性差

dash:是轻量级的sh,类似sh

csh:类似C语言

ksh:兼容sh csh

3.运行一个脚本文件

1.执行脚本文件
    bash ****.sh        默认在当前终端下的子终端运行,把运行结果返回到当前终端
2.执行脚本文件,具备可执行权限
    chmod 777 ***.sh      默认在当前终端下的子终端运行,把运行结果返回到当前终端
    ./***.sh    
3.执行脚本文件
     source ***.sh  直接在当前终端运行

四、环境变量

1.查看环境变量

env

环境变量:系统已经定义的变量,并表示一定的含义

SHELL=/bin/bash
LOGNAME=ubuntu
HOME=/home/ubuntu
USERNAME=ubuntu
USER=ubuntu
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/

如果文件类似指令执行,那么就需要把文件的路径添加到PATH环境变量里面

2.如何修改PATH路径

2.1 只对当前终端有效
1.修改PATH里面的值,
    export PATH=$PATH:/home/ubuntu/24121C高级/day2/
    |        |    |           |
    |        |    |     需要添加的文件路径
    |        |  展开PATH的值
    |     环境变量的路径
    类似extern,导出环境变量

    注意可以使用echo $PATH查看PATH里面的内容
2.给文件添加可执行权限
    chmod 777 ***.sh
3.执行使用文件名执行脚本即可
    ****.sh
2.2 对当前用户有效~/.bashrc
1.打开vim ~/.bashrc文件,在最后添加以下语句
    export PATH=$PATH:/home/ubuntu/24121C高级/day2/
    |        |    |           |
    |        |    |     需要添加的文件路径
    |        |  展开PATH的值
    |     环境变量的路径
    类似extern,导出环境变量
2.使文件生效
    source ~/.bashrc   或者 重启
3.给文件添加可执行权限
    chmod 777 ***.sh
4.执行使用文件名执行脚本即可
    ****.sh
2.3 对所有用户有效
1.打开sudo vim /etc/bash.bashrc文件,在最后添加以下语句
    export PATH=$PATH:/home/ubuntu/24121C高级/day2/
    |        |    |           |
    |        |    |     需要添加的文件路径
    |        |  展开PATH的值
    |     环境变量的路径
    类似extern,导出环境变量
2.使文件生效
    source /etc/bash.bashrc   或者 重启
3.给文件添加可执行权限
    chmod 777 ***.sh
4.执行使用文件名执行脚本即可
    ****.sh
2.4 对所有用户有效
1.打开sudo vim /etc/environment文件,在最后添加路径
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/ubuntu/24121C高级/day2/"

2.使文件生效
    source /etc/environment   或者 重启
3.给文件添加可执行权限
    chmod 777 ***.sh
4.执行使用文件名执行脚本即可
    ****.sh

五、shell的变量

5.1 shell变量的格式

1,shell的不变量不存在类型,默认都是字符串

2.shell的变量默认都是全局变量

1.shell变量的格式
    变量       error,因为shell认为是指令类似ls
    变量=        定义了变量值为空
    变量=初始化的值
2.例如
    a            error
    a=            √
    a=hello       √

5.2 shell变量的初始化

1.shell初始化时等号的左右两端不允许存在空格

2.shell中不需要加分号

a = hello ---> ls -l -h 1.sh

1.格式
    变量=初始化的值
    变量='初始化的值'
    变量="初始化的值"
2.当初始化的值不存在空格时
    var=hello
    var='hello'
    var="hello"
3.当初始化的值存在空格
    var=hello world    error
    var='hello world'  √
    var="hello world"
4.当一个变量给另一个变量赋值的时候
    a=hello
    b=$a        --->b=hello
    b='$a'      --->b=$a
    b="$a"      ---b=hello
    
    c=$aworld   -->认为aworld是一个变量,得不到helloworld
    c=${a}world -->c=helloworld    
5.变量的连接
    a=hello
    b=world
    c=$a$b        -->c=helloworld
    c='$a$b'      --->c=$a$b
    c="$a$b"      --->c=helloworld

练习:定义a赋值 b赋值,实现ab的交换

a=2
b=3
t=$a
a=$b
b=$t

5.3 引用shell的变量的值

方式1:
    $变量名     ---》echo $SHELL
方式2:
    ${变量}

5.4 位置变量

1.位置变量类似C语言的argc argv

2.位置变量多用于shell中的函数传参

$0    终端输入的文件名
$1    终端输入的第一个字符串
$2    终端输入的第二个字符串
$3    终端输入的第三个字符串
...
$10   终端输入的第一个字符串后面加0
${10} 终端输入的第10个字符串
$n    终端输入的第n个字符串

六、输出

6.1 echo

注意:在shell中使用变量时不建议使用'',原因时因为单引号引起来以后不会展开结果

echo 字符串        ---》echo hello
echo '字符串'       ---->echo 'hello'
echo "字符串"      ---->echo "hello"

输出变量:
    a=1
    b=2
    c=3
    echo a=$a    --->a=1
    echo a=$a b=$b c=$c -->a=1 b=2 c=3
    echo 'a=$a b=$b c=$c' -->a=$a b=$b c=$c
     echo "a=$a b=$b c=$c" -->a=1 b=2 c=$3


http://www.niftyadmin.cn/n/5868209.html

相关文章

嵌入式硬件篇---各种插头介绍

文章目录 前言1. XH插头&#xff08;JST-XH系列&#xff09;结构优点缺点适用场景 2. T插头&#xff08;Tamiya Connector&#xff0c;田宫插头&#xff09;结构优点缺点适用场景 3. DC插头&#xff08;直流电源插头&#xff09;结构优点缺点适用场景 4. XT插头&#xff08;XT6…

34.Java 阻塞队列(阻塞队列架构、阻塞队列分类、阻塞队列核心方法)

一、阻塞队列概述 java.util.concurrent 包下的 BlockingQueue 接口很好的解决了多线程中如何高效安全传输数据的问题&#xff0c;可以使用这些高效并且线程安全的队列类快速搭建高质量的多线程程序 阻塞队列通过一个共享的队列&#xff0c;使得数据由队列的一端输入&#xff…

OpenCvSharp编译

前言 算法部分我们使用opencv4.10作为开发&#xff0c;那么我们在.net winform做UI界面开发时&#xff0c;需要进行相关调用。比较简单的方式是直接从NuGet中直接搜索OpencvSharp进行安装。OpecvSharp对Opencv进行了二次封装&#xff0c;在.net中可以快速操作相关对象和算子&am…

网络安全学习-WEB安全常见漏洞

注入类漏洞 SQL注入漏洞 定义 sql注入漏洞&#xff0c;就是将用户可控的数据拼接到了sql语句当中&#xff0c;一起提交到了数据库执行。 攻*击者通过注入语句&#xff0c;改变sql执行的逻辑&#xff0c;通过控制部分sql语句&#xff0c;攻击者可以查询到数据库钟任何自己需…

【Uniapp-Vue3】导入uni-id用户体系

在uniapp官网的uniCloud中下载uni-id用户体系 或者直接进入加载&#xff0c;下载地址&#xff1a;uni-id-pages - DCloud 插件市场 进入以后下载插件&#xff0c;打开HbuilderX 选中项目&#xff0c;点击确定 点击跳过 点击合并 右键uniCloud文件夹下的database文件夹&#x…

React进阶之React核心源码解析(三)

React核心源码解析 diff多节点比较diff两轮遍历比较第一轮比较第二轮比较Update 状态更新Concurrent Modediff 多节点比较diff isArray方法比较 节点更新// 更新前 <ul><li key="0" className="before">0<li><li key=

【二值图像与手动/自动阈值的详解】

二值图像与手动/自动阈值的详解 目录 二值图像与手动/自动阈值的详解一. 什么是二值图像&#xff1f;二. 二值图像的特点三. 二值图像的生成四.二值图像中的阈值作用及使用方法1. 阈值的概念2. 阈值的作用3. 阈值的类型4. 阈值的选择方法4. 阈值的使用方法5. 阈值的选择对结果的…

在股市交易的强化学习中寻找最佳交易历史

“Finding Optimal Trading History in Reinforcement Learning for Stock Market Trading” 论文地址&#xff1a;https://arxiv.org/pdf/2502.12537 摘要 本文探讨了在金融深度强化学习模型中优化时间窗口的方法&#xff0c;并采用了二维卷积神经网络&#xff08;CNN&#x…