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

C高级(Day22)

一、学习内容

  1. shell指令

    1. 文件相关的指令

      1. 重定向 > >>
        1. echo :打印字符串

        2. cat: 在终端打印文件的内容

    2. 链接文件

      1. 硬链接文件:文件的inode号是一样的。
      2. 查看文件inode号: ls -i
      3. 格式:ln 被链接的文件 创建硬链接文件
      4. 1 硬链接的文件类型是普通文件 -
        2 修原文件时,硬链接文件也被会修改,反之也一样
        3 原文件和硬链接文件的inode号一样
        4 创建硬链接文件时, 硬链接文件的个数会增加
        5 修改硬链接文件的路径时, 链接关系依然生效
        6 不允许对目录创建硬链接文件

    3. 软链接文件

      1. 软链接:类似与快捷方式。可以对目录进行链接
      2. 格式: ln -s 绝对路径下被链接的文件 绝对路径下创建的链接文件
      3. 1 软链接的文件类型是链接文件 l
        2 修原文件时,软链接文件也被会修改,反之也一样
        3 原文件和软链接文件的inode号不一样
        4 创建软链接文件时, 硬链接文件的个数不会增加
        5 在创建软链接文件时需要使用绝对路径,原因,防止修改链接文件路径时失效
            修改软链接文件的路径时, 链接关系不生效
        6 允许对目录创建软链接文件

    4. 压缩\解压缩\归档\拆包

      1. 压缩\解压缩
        1. 压缩、解压缩:原文件会消失,且只能对文件操作

        2. Linux的压缩格式: xz\gz\bz2
          
          压缩:
             bzip2 要压缩的文件    ----->XXXX.bz2
             gzip  要压缩的文件    ----->XXXX.gz
             xz    要压缩的文件    ----->XXXX.xz
          解压缩:
             bunzip2 解压的文件.bz2
             gunzip  解压的文件.gz
             unxz    解压的文件.xz
             
          压缩效率: xz > bz2 > gz

      2. 归档\拆包 tar
        1. 归档、拆包: 原文件存在,可以对多个文件或者目录操作

        2. -j     ---bzip2
          -J     ---xz
          -z     ---gzip
          -f     ---file
          -x     ---拆包
          -c     ---归档
          -v     ---显示详细过程
          
          归档:
              tar -cvf  XXX.tar   要归档的文件名\目录
          拆包:
              tar -xvf  XXX.tar  
              
              
          归档并压缩:
              tar -jcvf  XXX.bz2   要归档压缩的文件名\目录
              tar -Jcvf  XXX.xz   要归档压缩的文件名\目录
              tar -zcvf  XXX.gz   要归档压缩的文件名\目录
          拆包并解压缩:
              tar -jxvf  XXX.bz2
              tar -Jxvf  XXX.xz
              tar -zxvf  XXX.gz
              

        3. 归档、拆包

        4. 归档压缩 、 拆包解压

    5. 磁盘指令

      1. 磁盘连接ubuntu
        1. 方式1

        2. 方式2

      2. 查看是否连接成功
        1. 指令: ls /dev/sd*

      3. 查看磁盘的使用情况 df
        1. 指令:df (保证u盘未出现挂载点,否则后面创建分区等操作失败)

        2. 取消挂载点 指令: sudo umount 挂载点\挂载分区

      4. 磁盘实现 创建、删除 fdisk
        1. 从u盘h中拿取一点空间 ,进行相关操作

          1. 格式

            1. sudo fdisk 指定的磁盘路径 (创建分区)

            2. sudo fdisk /dev/sdc (u盘的主盘、而不是sdb1、2)

            3.   常规
                 d   删除分区
                 F   列出未分区的空闲区
                 l   列出已知分区类型
                 n   添加新分区
                 p   打印分区表
                 t   更改分区类型
                 v   检查分区表
                 i   打印某个分区的相关信息
              
              保存并退出
                 w   将分区表写入磁盘并退出
                 q   退出而不保存更改

      5. 格式化磁盘分区 mkfs
        1. 格式: sudo mkfs.ntfs /dev/sdc2

      6. 挂载
        1. 在ubuntu操作系统中,万物皆文件,所以认为u盘也是文件,把u盘挂载到一个目录下 操作目录等价于操作U盘

          1. 挂载: sudo mount 挂载分区 挂载点 取消挂载 sudo umount 挂载分区 挂载点

    6. 用户相关指令

      1. 查看用户名
        1. whoami

      2. 新建用户名
        1. sudo adduser 用户名

      3. 切换用户
        1. su 用户名

      4. 修改密码
        1. sudo passwd 用户名

      5. 删除用户
        1. sudo userdel 用户名

        2. sudo userdel 用户名 -r

    7. 开关机指令

      1. 关机指令:
            sudo shutdown 10:00    在10:00关机
            sudo shutdown +10      在10分钟后关机
            sudo shutdown now      立马关机
            
            shutdown -c   取消关机或重启
            
        重启指令:
            sudo shutdown -r 10:00    在10:00重启
            sudo shutdown -r +10      在10分钟后重启
            sudo shutdown -r now      立马重启

  2. shell脚本

    • 编程语言的分类

      • 面向过程:C
      • 面向对象:C++ java
      • 编译型语言:
        借助于编译器进行编译,在编译源文件时,只要不修改文件,只需要编译一次,后期可以直接运行,效率高。如果修改,则需要再次编译。
      • 解释型语言:
        shell 需要借助于解释器,每执行一个源文件则需要解释一次,效率低,但是可以和内核交互。
    • 什么是shell

      • shell: 贝壳 保护
      • 作用:保护内核,输入一个shell指令, 需要使用shell解释器解析shell脚本,操作内核。
    • 第一个shell

      • shell脚本是一个.sh文件
      • shell本质就是指令的集合, 但是指令需要满足一定的逻辑
      • 1. #!/bin/bash
           #!   表示这是一个脚本文件
           /bin/bash  表示使用的解析器
        2. shell中的注释
            # 单行注释
            <<名    ----->多行注释
            名
            eg :   <<a
                      注释内容
                   a

    • shell脚本的解析器

      • 查看shell脚本使用的解析器
        • echo $SHELL 或者 cat /etc/shells

      • 常见的解析器
        • bash 用于ubuntu和debian操作系统

        • sh 最早的解析器,和终端交互性差

        • dash 类似于sh

        • csh 类似于c语言,健壮性差

        • ksh 需要许可证

      • 运行.sh文件的方式
        • bash XXX.sh

        • chmod 777 XXX.sh ./XXX.sh

        • source XXX.sh

    • 修改环境变量

      • 可以将 f2.sh 直接类似于 ls 一样直接使用 ,那么需要修改环境变量
      • 查看环境变量
        • 指令: env

        • 环境变量=环境变量的值

        • PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/ubuntu/zsq/c/try/gg:/home/ubuntu/zsq/c/try/gg/
          
          【ls 就在这个路径  修改环境变量 --->方便 】

      • 在当前终端有效
        • 1. 在终端输入以下语句
              export PATH=$PATH:/home/ubuntu/81/zz
              |        |    PATH变量的值    添加的新路径
              |       环境变量
              类似extern,引用环境变量 
          
          2. 给文件添加可执行权限
             chmod 777 XXX.sh
          3. 运行
              XXX.sh

      • 对当前用户有效(常用)
        • 需要在 ~/.bashrc 文件添加语句

        • 1. 打开~/.bashrc 文件添加语句 
              export PATH=$PATH:/home/ubuntu/81/zz
              |        |    PATH变量的值    添加的新路径
              |       环境变量
              类似extern,引用环境变量 
              
          2. 需要文件生效
              source ~/.bashrc
          3. 添加权限:chmod 777 XXX.sh
          4. 运行
              XXX.sh

        • 查看

        • 打开修改

        • 使得文件生效

  3. 脑图

二、总结

学习内容概述

1. Shell编程基础:

介绍了Shell的基本概念、工作原理以及常见的Shell编程命令,如变量定义、条件判断、循环控制等内容。通过实战演练,学习如何编写Shell脚本来自动化任务。

2. Shell脚本实例:

使用Shell脚本解决具体问题,包括文件操作、字符串处理以及系统命令的调用。并通过案例演示了Shell脚本的常用结构和逻辑。

3. Linux文件系统:

学习Linux文件系统的层次结构,理解不同目录的用途,以及如何通过命令进行文件操作,如 `ls`、`cd`、`mkdir`、`rm` 等命令的使用。

4. 进程管理与控制:

学习了Linux系统中的进程控制命令,了解如何使用 `ps`、`top`、`kill` 等命令查看和管理系统中的进程。

5. 文件权限与用户管理:

学习文件权限的表示方式及其更改方法,掌握 `chmod`、`chown` 等命令对文件权限和用户的管理。

6. shell变量与函数:

深入学习Shell中的变量、环境变量以及函数定义与调用。理解局部变量和全局变量的区别,并学会如何在脚本中有效地使用函数。

学习难点

1. Shell脚本的逻辑编写:

编写复杂的Shell脚本时,逻辑控制(如条件判断、循环)的设计是难点,特别是在处理多个条件时需要考虑优先级和效率。

2. 权限管理与进程控制:

在多用户环境中,正确设置文件的权限及管理进程的优先级是难点,理解不同权限对文件操作和进程管理的影响尤为重要。

3. 环境变量与作用域:

Shell脚本中的变量作用域管理是学习难点,特别是全局变量和局部变量的使用与冲突的解决。

4. 进程的调度与优先级控制:

如何通过系统命令对进程进行调度与优先级管理,特别是在复杂任务执行时的进程调优和资源分配。

 主要事项

1. Shell脚本的编写:

掌握基本的Shell语法,包括变量、循环、判断结构。能够通过脚本自动化处理常见的系统操作,提升工作效率。

2. 文件系统操作与权限管理:

理解Linux文件系统的结构,掌握常见文件操作命令,同时正确设置文件的权限和用户组,确保文件的安全性。

3. 进程管理与调优:

通过 `ps`、`top`、`kill` 等命令有效监控系统进程,掌握进程优先级的调节方法,确保系统资源合理分配。

4. Shell函数的使用:

通过Shell函数将复杂的操作分解成小的功能模块,提高脚本的可读性和复用性,掌握函数传参和返回值的处理。

 未来学习的重点

1.高级Shell编程技巧:

继续深入学习Shell脚本的高级技巧,如正则表达式的使用、信号处理、并发编程等,提升脚本的复杂任务处理能力。

2. Linux系统安全管理:

进一步学习Linux的安全机制,特别是文件权限的精细化管理和用户权限的分配,提升对系统安全的掌控能力。

3. Shell脚本调试与优化:

学习如何对Shell脚本进行调试,排查错误,优化脚本的执行效率,特别是在处理大规模数据或复杂系统任务时的性能调优。

4. 多进程与并发控制:

学习在Shell中进行多进程管理的技术,特别是如何处理并发任务,确保系统资源的高效利用与任务执行的稳定性。


http://www.kler.cn/news/324235.html

相关文章:

  • 前端学习笔记-JS进阶篇-02
  • Note2024092801_python 日历信息获取
  • 【算法题】5. 最长回文子串-力扣(LeetCode)
  • 小波去噪MATLAB实现
  • TLV解码 - 华为OD统一考试(E卷)
  • Linux网络:网络编程套接字
  • 努比亚 Z17 NX563J Root 教程三方REC刷写工具教程
  • 软件测试人员发现更多程序bug
  • 828华为云征文|华为云弹性云服务器FlexusX实例下的Nginx性能测试
  • 分库分表方案中的数据倾斜问题及解决方案详解
  • Android Glide(一):源码分析,内存缓存和磁盘缓存的分析,实现流程以及生命周期
  • Llama 3.2:利用开放、可定制的模型实现边缘人工智能和视觉革命
  • AG-Pose 部署笔记
  • 会员办理--足浴店系统开发代码———未来之窗行业应用跨平台架构
  • 【病理图像】如何获取全切片病理图像的信息python版本
  • 企业IT安全重保服务:守护关键时刻的坚固防线
  • 安全运维类面试题
  • 滚珠丝杆如何安装滚珠?
  • Study--Oracle-09--部署Openfiler存储服务器
  • 15年408计算机网络
  • 记忆osi七层模型的口诀/方法/谐音
  • XML 编码
  • VGA/HDMI/DP接口和USB、串口通信协议
  • 了解 如何使用同快充充电器给不同设备快速充电
  • 机器人控制器设计与编程基础实验高效版本-ESP32等单片机实验报告
  • 深入理解 Java 中的 Switch 语句
  • WEB 编程:富文本编辑器 Quill 配合 Pico.css 样式被影响的问题之还是 iframe
  • C++黑暗迷宫
  • Zabbix Agent 监控 MySQL 进程状态
  • 关于frp Web界面-----frp Server Dashboard 和 frp Client Admin UI