c高级day2shell指令

news2024/9/23 7:28:32

一编程语言

编程语言
面向过程c面向对象c++
编译型语言c\c++解释性语言shell脚本\python 需要解析器

二shell脚本

2.1操作系统的结构

应用层:app\代码            应用层通过shell解析器完成和内核层的交互
---------------------------------------
内核层:
    内核的五大功能:
        1、设备管理
        2、网络管理
        3、内存管理
        4、文件管理
        5、进程管理
--------------------------------------- 
硬件层:外部设备  

在这里插入图片描述

1.2第一个shell脚本

C文件后缀是.c,C++是.cpp,shell脚本是.sh

#!/bin/bash
echo hello world   
#输出一行hello world

shell中#表示注释

#!----->shabang  /she-bang
作用:指明脚本使用的解析器,如果不写系统会自动推导,只要写了就一定要写对 

ubuntu使用的python解析器:/usr/bin/python

1.3执行脚本的三种形式

执行shell脚本三种形式
bash(常用)bash 文件名.sh
执行过程:在后台打开一个终端,处理脚本,把结果返回到当前终端
sourcesource 文件名.sh
执行过程:在当前终端执行,结果也在当前终端返回
修改文件的权限,可以直接运行chmod 777 脚本名
./脚本名.sh

三、修改环境变量

3.1查看系统的特殊的环境变量

env

3.2修改PATH环境变量

查看原有的PATH路径:echo $PATH

export   PATH        =        $PATH          :添加的路径
 |        |         |         |               |
对变量赋值 要赋值的变量 赋值运算符   展开原有的PATH路径 路径分割 
只对当前用户生效

修改当前用户的配置文件
sudo vim ~/.bashrc ----->打开文件后,使用export表达式添加新的路径
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-56RtZg38-1691075563475)(evernotecid://3E0E4EC3-DFE7-4A43-A61C-6137F75331C6/appyinxiangcom/14761362/ENResource/p1451)]
让配置文件生效:
重启(永久生效)
source ~/.bashrc (source和.是同一个指令,都是只能临时生效)
. ~/.bashrc

对所有用户都生效(常用)

修改/etc/bash.bashrc文件
sudo vim /etc/bash.bashrc
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ispoSi7B-1691075563475)(evernotecid://3E0E4EC3-DFE7-4A43-A61C-6137F75331C6/appyinxiangcom/14761362/ENResource/p1452)]

让配置文件生效:

  • 重启(永久生效)
  • source /etc/bash.bashrc (source和.是同一个指令,都是只能临时生效)
  • ./etc/bash.bashrc
对所有用户生效

修改配置文件/etc/environment
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sVfps0JJ-1691075563475)(evernotecid://3E0E4EC3-DFE7-4A43-A61C-6137F75331C6/appyinxiangcom/14761362/ENResource/p1453)]

以冒号作为分隔,添加自己的PATH路径
让配置文件生效:

  • 重启(永久生效)
  • source /etc/environment (source和.是同一个指令,都是只能临时生效)
  • ./etc/environment ----->.是shell一个内置指令

四、shell中的变量

在shell脚本中,没有数据类型的概念,全部当作字符串处理

4.1复习

C语言中定义变量
存储类型 数据类型 变量名;
存储类型:6种
数据类型:基本数据类型 构造数据类型

4.2定义

指令的格式
指令 参数 操作数

变量名=变量的值
变量名='变量的值'   ---->用于变量的值中间有空格
变量名="变量的值"   ---->用于使用已有变量给新的变量赋值,并且使用有空格字符串拼接时
''内,$变量名 不会被展开
""内,$变量名 会展开

变量的注意事项:

  • =两侧一定不能加空格
  • 如果使用有空格的字符串给变量赋值,需要加单引号
  • 如果使用已有变量给新的变量赋值,需要使用${},使用双引号,展开变量

4.3使用变量的值

$变量名
${变量名}:{}用于区分变量的范围

4.4修饰变量的关键字

unset:清空变量的值,但是,不能清空readonly变量的值
readonly:只读,值不能修改
local:定义局部变量,只能在函数中使用

练习:
1、写一个1.sh脚本,将以下内容放到脚本中:
在家目录下创建目录文件,dir
在dir下创建dir1和dir2
把当前目录下的所有文件拷贝到dir1中,
把当前目录下的所有脚本文件拷贝到dir2中
把dir2打包并压缩为dir2.tar.xz
再把dir2.tar.xz移动到dir1中
解压dir1中的压缩包
使用tree工具,查看dir下的文件

#!/bin/bash
mkdir ~/dir/dir1 ~/dir/dir2 -p
cp * ~/dir/dir1
cp *.sh ~/dir/dir2
tar -cvJf ~/dir/dir2.tar.xz ~/dir/dir2
mv ~/dir/dir2.tar.xz ~/dir/dir1
tar -xvf ~/dir/dir1/dir2.tar.xz
tree ~/dir 

4.5外部传参/位置变量

$0 ---->脚本名
$1 ---->第一个参数
$2 ---->第二个参数
····
$n ---->第n个参数
9以上需要加{},${n}

获取外部参数的个数:$#  ---->不包含脚本名
获取所有的外部参数:$*/$@  ----->不包含脚本名

练习:
1、写一个脚本,输出脚本的所有外部参数,及第11个参数
echo $*
echo ${11}

4.6输出

echo 字符串/$变量名    ------>会自动换行
echo默认不解析转义字符
echo -e 可以解析转义字符
echo -n 取消换行

指令的格式:
指令 参数 操作数 ---->标准格式中参数要求在操作数之前
但是随着解析器的更新有些指令也支持:
指令 操作数 参数

c语言复习

段错误
1访问野指针
2数组越界,可能段错误
3指针赋值为字符常量, 因为字符在静态区的RO段
4

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

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

相关文章

Django的FBV和CBV

Django的FBV和CBV 基于django开发项目时,对于视图可以使用 FBV 和 CBV 两种模式编写。 FBV,function base views,其实就是编写函数来处理业务请求。 from django.contrib import admin from django.urls import path from app01 import view…

SIT3232E——高静电防护 3.3V 单电源供电双通道 RS232 收发器,可替代MAX3232

SIT3232E 是一款 3.0V~5.5V 供电、双通道、低功耗、高静电防护 ESD 保护,完全满足 TIA/EIA-232 标准要求的 RS-232 收发器。 SIT3232E 包括两个驱动器和两个接收器,具有增强形 ESD 保护功能,达到 15kV 以上 HBM ESD 、 8kV …

64 # 实现一个 http-server

准备工作 上一节实现了通过 commander 的配置获取到用户的参数,下面完成借用 promise 写成类的方法一节没有完成的任务,实现一个 http-server,https://www.npmjs.com/package/http-server,http-server 是一个简单的零配置命令行静…

centos7 yum安装mysql5.7

卸载mysql 以下指令查看是否安装过 rpm -qa | grep -i mysql 如果发现已经安装,需要卸载了再安装(据说,这样的卸载是不彻底的。) rpm -e mysql 卸载 mariadb yum -y remove mariadb-libs-1:5.5.68-1.el7.x86_64 下载和安装mys…

Liunx:进程

冯诺依曼体系结构: 目前我们使用的计算机,包括笔记本,台式电脑,或者后端服务器,都是一堆硬件的集合,他们不是无序的组合在一起,首先它们要有协同能力,要求它们有协同能力,这就意味着它们之间一定要组织好,构成一个系统,他们才能对外输出,提供计算服务. 当代计算机都是由冯诺依曼…

漏洞扫描工具-goby(九)

什么是Goby? Goby是一款基于网络空间测绘技术的新一代网络安全工具,它通过给目标网络建立完整的资产知识库,进行网络安全事件应急与漏洞应急。 Goby可提供最全面的资产识别,目前预置了超过10万种规则识别引擎,能够针对…

Unity CanvasGroup组件

文章目录 1. 简介2. 组件属性2.1 Alpha(透明度)2.2 Interactable(是否为可交互)2.3 Blocks Raycasts(是否接受射线监测)2.4 Ignore Parent Groups(忽视上层的画布组带来的影响) 1. 简介 CanvasGroup(画布组) 组件,可集中控制整组 UI 元素(自身和所有子物体)的某些属…

Microsoft Message Queuing Denial-of-Service Vulnerability

近期官方公布了一个MSMQ的拒绝服务漏洞,可能因为网络安全设备的更新,影响业务,值得大家关注。 漏洞具体描述参见如下: Name: Microsoft Message Queuing Denial-of-Service Vulnerability Description: Microsoft Message Queuing…

jar命令的安装与使用

场景: 项目中经常遇到使用WinR软件替换jar包中的文件,有时候存在WinRAR解压替换时提示没有权限,此时winRAR不能用还有有什么方法替换jar包中的文件。 方法: 使用jar命令进行修改替换 问题: 执行jar命令报错jar 不…

Macbook恢复出厂设置2023详细步骤

Macbook随着用户的使用时间增长,文件的不断添加和各种应用程序的安装之后可能会开始变得迟缓卡顿,这时候选择将设备还原为默认出厂设置可以有效的解决Macbook的使用卡顿以及缓慢的问题。那么Macbook怎么恢复出厂设置?Macbook如何恢复出厂设置?一起来了…

【雕爷学编程】MicroPython动手做(37)——驱动LCD与图文显示4

MixPY——让爱(AI)触手可及 MixPY布局 主控芯片:K210(64位双核带硬件FPU和卷积加速器的 RISC-V CPU) 显示屏:LCD_2.8寸 320*240分辨率,支持电阻触摸 摄像头:OV2640,200W像素 扬声器&#…

卸载本机已安装的node.js(v.16.13.0版本)

因为要用多版本的node,准备安装一个nvm管理,所以需要先卸载掉原来安装的v.16.13.0版本。 记录一下卸载过程 1、在系统设置-应用里卸载node 妈蛋这样卸载报错。。找了下根本没有这个路径 那就只能最简单的方法了,全部删掉 1、删除node的安装…

Tensorflow2-初识

TensorFlow2是一个深度学习框架,可以理解为一个工具,有谷歌的全力支持,具有易用、灵活、可扩展、性能优越、良好的社区资源等优点。 1、环境的搭建 1.1 Anaconda3的安装 https://www.anaconda.com/ Python全家桶,包括Python环境和…

python爬虫(六)_urllib2:handle处理器和自定义opener

本文将介绍handler处理器和自定义opener,更多内容请参考:python学习指南 opener和handleer 我们之前一直使用的是urllib2.urlopen(url)这种形式来打开网页,它是一个特殊的opener(也就是模块帮我们建好的),opener是urllib2.OpenerDirectory的…

网络安全之原型链污染

目录: 目录: 一、概念 二、举例 三、 实操了解 总结 四、抛出原题,历年原题复现 第一题: 五、分析与原理 第二题: 八、分析与原理 九、具体操作,payload与结果 结果: 一、概念 Java…

Spring接口InitializingBean的作用和使用介绍

在Spring框架中,InitializingBean接口是一个回调接口,用于在Spring容器实例化Bean并设置Bean的属性之后,执行一些自定义的初始化逻辑。实现InitializingBean接口的Bean可以在初始化阶段进行一些必要的操作,比如数据的初始化、资源…

Unity 引擎做残影效果——3、顶点偏移方式

Unity实现残影效果 大家好,我是阿赵。 继续讲Unity引擎的残影做法。这次的残影效果和之前两种不太一样,是通过顶点偏移来实现的。 具体的效果是这样: 与其说是残影,这种效果更像是移动速度很快时造成的速度线,所以在移…

Java对象创建回收全过程

目录 1 前言 2 Java对象创建 2.1 类加载检查 2.1.1 谁来加载 2.1.2 如何加载 2.2 分配内存 2.3 初始化零值 2.4 设置对象头 2.5 执行clinit 3 对象回收 4 补充Tomcat打破双亲委派机制 在讲java创建之前,我们先来了解下Java虚拟机内存组成,当Java虚拟机启动后,会…

RabbitMQ(一) - 基本结构、SpringBoot整合RabbitMQ、工作队列、发布订阅、直接、主题交换机模式

RabbitMQ结构 Publisher : 生产者 Queue: 存储消息的容器队列; Consumer:消费者 Connection:消费者与消息服务的TCP连接 Channel:信道,是TCP里面的虚拟连接。例如:电缆相当于TCP,信道是一条独立光纤束&…

动手学深度学习(二)线性神经网络

推荐课程:跟李沐学AI的个人空间-跟李沐学AI个人主页-哔哩哔哩视频 目录 一、线性回归 1. 线性模型 2. 损失函数(衡量预估质量) 3.梯度下降算法(优化算法) 3.1 梯度下降公式 3.2 选择学习率 3.3 小批量随机梯度下…