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

计算机科学基础知识第二节讲义

课程链接
运行环境:WSL Ubuntu OMZ终端
PS:看到老师终端具有高亮和自动补全功能,我连夜肝出oh-my-zsh安装教程,实现了此功能。

这节课主要讲变量的语法、控制流程、shell功能等内容。

修改终端用户名,输入密码后重启终端。

sudo hostname xxx //XXX为新用户名

定义一个变量foo并赋值

foo=bar
echo $foo //查看foo 的值

在终端中,对空格很敏感。
如果输入foo = bar则显示错误。
系统会默认调用foo程序,=``bar为其两个参数。

  • 定义字符串
    使用"",''单引号定义字符串,但''无法引用变量
    在这里插入图片描述

  • 定义函数
    这时老师举例mcd()函数,vi在普通用户下无法写入文件,我们可以利用sudo vi来创建mcd()函数

sudo vi mcd() //进入vi界面

vi基本用法
键入ai即为写入模式,可以敲入代码

mcd() {sudo mkdir -p "$1"cd "$1"
}

按下Esc退出写入模式,:wq保存退出vi
source mcd.sh 运行脚本
mcd test 测试脚本

在这里插入图片描述
后面是关于$0$1$?的用法,不再赘述。

  • 逻辑字符
    || 相当于数学中的逻辑字符,前一个表达式为真,则不再运行后面的表达式,前面表达式为否,则运行第二个表达式。
false || echo "Hello world"
true || echo "will not be printed"

在这里插入图片描述&&相当于

true && echo "things go well"
false && echo "this will not print"

在这里插入图片描述$(表达式) 将表达式结果作为字符串输出

foo=$(pwd)
echo $foo
echo "we are in $foo"

在这里插入图片描述·流程控制
<(等方向字符,可以将为命令提供文件句柄,提供临时文件至父文件夹,因为某些函数希望来自具有某些参数的命令。

cat <(ls) <(ls ..)

在这里插入图片描述```

convert image.jpg image.png
touch foo{,1,2,10}
mkdir joo kar
touch {joo,kar}/{a..c}
touch joo/x kar/y
diff <(ls joo) <(ls kar) ##比较两者区别

vim script.py编写脚本,实现与机器交互

import sys
for arg in reserved(sys.argv[1:]):print(arg)

其中,sys.argv[1:]类似于$1$#等参数变量
退出vi后,运行程序

python3 script.py a b c

在这里插入图片描述
shell本身debug程序比较鸡肋,可以采用shellcheck来调试程序。

shellcheck mcd.sh

ls -l 以详细列表显示当前路径文档
man conmond 查看某命令使用方法
find . -name src -type d 在当前文件夹查找命名中src的文件夹
find . -path '**/*.py' -type f 查找某个路径下所有py类型的文佳
locate XXX 定位某类文件

相关文章:

计算机科学基础知识第二节讲义

课程链接 运行环境&#xff1a;WSL Ubuntu OMZ终端 PS&#xff1a;看到老师终端具有高亮和自动补全功能&#xff0c;我连夜肝出oh-my-zsh安装教程&#xff0c;实现了此功能。 这节课主要讲变量的语法、控制流程、shell功能等内容。 修改终端用户名&#xff0c;输入密码后重启…...

openssl genrsa 命令详解

文章目录一、openssl genrsa 命令介绍二、openssl genrsa 命令的语法及选项三、实例1、生成512位的 RSA 秘钥&#xff0c;输出到屏幕。2、生成512位 RSA 私钥&#xff0c;输出到指定的文件 genrsa.txt3、生成 1024 位 RSA 秘钥&#xff0c;采用 des 算法加密&#xff0c;加密密…...

C语言标准 —— C89(C90)、C99、C11、C17、C2X

C语言主要的三个标准&#xff1a;C89&#xff08;C90&#xff09;、C99、C11、K&#xff06;R C 指的是 C 语言的原始版本。1978年&#xff0c;C 语言的发明者丹尼斯里奇&#xff08;Dennis Ritchie&#xff09;和布莱恩柯林&#xff08;Brian Kernighan&#xff09;合写了一本…...

基于Java+Dubbo设计的智能公交查询系统

一、项目背景 随着经济的飞速发展,人们的生活质量有了较大的提高,城市居民的出行变得越来越频繁,城市交通也面临越来越多的挑战。城市公共交通具有客流量大、成本低、效率高、节约资源等优势,因此,如何大力发展公交产业,鼓励人们乘坐公交出行,进而改善交通状况,是一个值得思考…...

go语言的并发编程

并发编程是 Go语言的一个重要特性,而 go语言也是基于此而设计出来的。 本文将会介绍如何使用go-gc中的“runtime”方法实现 go语言中的并发编程。 在之前的文章中,我们已经对 runtime方法进行了详细介绍,这次文章将对 runtime方法进行深入分析,并讲解如何在go-gc中使用该方…...

亚马逊要求UL94防火测试阻燃测试标准及项目

UL94认证是什么&#xff1f;分几个等级?是如何表示各等级?带电的产品上架亚马逊都需要相关的UL报告&#xff0c;需要有ISO 17025资质的实验室出具的测试报告才能正常销售和恢复链接&#xff0c;UL94防火测试则是其中一项。UL94试验共有五种&#xff1a;1.B级的水平燃烧试验2.…...

ClickHouse 合并树表引擎 MergeTree 原理分析

目录 前言 MergeTree 存储 MergeTree思想 MergeTree存储结构 MergeTree查询 索引检索 数据Sampling 数据扫描 建表​ 数据存储​...

用YOLOv8推荐的Roboflow工具来训练自己的数据集

YOLOv8是Ultralytics公司开发的YOLO目标检测和图像分割模型的最新版本&#xff0c;相较于之前的版本&#xff0c;YOLOv8可以更快速有效地识别和定位图像中的物体&#xff0c;以及更准确地分类它们。 作为一种深度学习技术&#xff0c;YOLOv8需要大量的训练数据来实现最佳性能。…...

三层交换机【实验】

目录 1、要求&#xff1a; 2、拓扑&#xff1a; 3、创建vlan和端口定义并划入vlan&#xff1a; 4、创建以太网中继Eth-Trunk使sw1和sw2的相互冗余并且不浪费链路&#xff1a; 5、使用mstp定义组和对应的根&#xff1a; 6、配置网关冗余&#xff1a; 7、核心层的路由的IP配…...

Anolis 8.6 部署 Kafka 3.3.1 安装和测试(二)

动态初始化Kafka消费者实例一.Kafka 环境搭建二.动态初始化消费者1.Topic定义2.方法处理器工厂3.参数解析器&#xff08;Copy SpringBoot 源码&#xff09;4.消费接口和消费实现5.动态初始化1.关键类简介2.动态初始化实现一.Kafka 环境搭建 参考&#xff1a;Kafka搭建和测试 …...

sed和awk

文章目录1、sed的简单介绍2、sed的使用方法2.1 命令行格式2.2 案例2.3 sed结合正则使用2.4 脚本格式3、awk的简单介绍4、awk的使用方法4.1 命令行模式4.2 脚本模式5、awk内部相关变量5.1 案例6、awk工作原理7、awk进阶使用8、awk脚本编程8.1 案例1、sed的简单介绍 sed是流编辑…...

使用STM32 CUBE IDE配置STM32F7 用DMA传输多通道ADC数据

我的使用环境&#xff1a; 硬件&#xff1a;STM32F767ZGT6、串口1、ADC1、16MHz晶振、216MHz主频 软件&#xff1a;STM32 CUBE IDE 优点&#xff1a;不用定时触发采样&#xff0c;ADC数据是不停的实时更新&#xff0c;ADC数据的更新频率根据采样时钟和采样周期决定&#xff0c;…...

linux 学习(持续更新)

一&#xff1a;初识linux 新装操作环境&#xff1a; mac intel电脑 CentOS系统版本&#xff1a;CentOS-8.1.1911 在这里解释一下[chenllocalhost /]$这句话的含义&#xff1a; chenl是用户名&#xff0c;也就是你自己起的名字。 是分割的符号 localhost是主机名&#xff0c;也…...

Nacos【一】Nacos集群部署配置

系列文章目录 暂无 文章目录系列文章目录前言一、Nacos集群架构1.ip直连2. SLB3. 域名-SLB二、集群部署准备2.1 机器准备2.2 Nginx安装配置1.安装2.负载均衡配置2.3 nacos安装配置1.nacos节点2. MySQL准备1.Docker安装MySQL2. nacos对应数据库初始化三、 集群启动1.失败原因汇…...

“亚洲一号”也能上市?REITs背后的物流设施风起云涌

京东最近发生了两件大事&#xff0c;两件都与物流基础设施有关。 一件是2月8日&#xff0c;嘉实京东仓储物流封闭式基础设施证券投资基金&#xff08;简称“京东仓储REIT”&#xff09;正式登陆上交所&#xff0c;投资者获得了机会&#xff0c;去分享京东三处物流园区的收益&a…...

2023养老展,CBIAIE第十届中国北京国际老年产业博览会

8月招商季&#xff0c;第十届中国&#xff08;北京&#xff09;国际老年产业博览会再次盛大举办&#xff1b; CBIAIE北京国际老年产业博览会位域优势&#xff1a; ——北京&#xff0c;中国首都&#xff0c;世界一线城市&#xff0c;地处中国北部、华北平原北部&#xff0c;东…...

【Android -- 每日一问】现在 Android 怎么学?学什么?

不管在任何行业&#xff0c;任何岗位&#xff0c;初级技术人才总是供大于求&#xff1b;不管任何行业、岗位&#xff0c;技术过硬的也都是非常吃香的&#xff01; 这几年 Android 新技术的迭代明显加速了&#xff0c;有来自外部跨平台新物种的冲击&#xff0c;有去 Java 化的商…...

JVM垃圾回收

概述 Java是支持自动垃圾回收的&#xff0c;有些语言不支持自动垃圾回收&#xff08;C&#xff09;自动垃圾回收不是Java的首创 垃圾是什么&#xff1f; 在 JVM 中垃圾是指在运行程序中没有任何指针指向的对象&#xff0c;这个对象就是需要被回收的垃圾。 哪些区域需要回收…...

clickhouse集群安装

单机安装 yum install yum-utilsrpm --import https://repo.clickhouse.com/CLICKHOUSE-KEY.GPGyum-config-manager --add-repo https://repo.clickhouse.com/rpm/clickhouse.reposudo yum install clickhouse-server clickhouse-client 配置文件 vim /etc/clickhouse-serve…...

Zookeeper入门

Zookeeper入门概述特点结构应用场景选举机制节点信息监听原理写数据原理分布式锁概述 Zookeeper是一个开源的分布式的&#xff0c;为分布式框架提供协调服务的Apache项目。 Zookeeper 从设计模式的角度来开&#xff1a;是一个基于观察者模式设计的分布式服务管理框架&#xf…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...