Linux 学习记录36(C高级篇)

news2024/10/5 16:32:17

Linux 学习记录36(C高级篇)

在这里插入图片描述

本文目录

  • Linux 学习记录36(C高级篇)
  • 一、文件相关指令
    • 1. chmod 修改文件用户权限
      • (1. 权限字母表示法
      • (2. 权限8进制表示法
    • 2. 修改文件所属组
      • (1. chgrp
      • (2. chown 能够同时修改多个
      • (3. 创建链接文件
        • >1 ln创建硬链接文件
        • >2 ln -s 创建软链接文件
  • 二、开关机相关指令
    • 1. 关机
    • 2. 重启
  • 三、用户相关操作
    • 1. 创建用户
      • (1. 查看id
      • (2. 查看当前用户
      • (3. 创建用户
      • (4. 给新用户添加sudo权限
        • >1 修改sudoers文件
    • 2. 删除用户
    • 3. 修改用户名
  • 四、磁盘
    • 1. 保证ubuntu链接上U盘
      • (1. VM弹窗,选择链接到虚拟机
      • (2. 虚拟机---->可移动设备---->选择U盘---->链接
    • 2. 查看U盘是否成功连接
    • 3. 查看U盘的使用率
    • 4. 给U盘分区
    • 5. 格式化操作
    • 6. 挂起
  • 五、shell脚本
    • 1. 操作系统结构
    • 2. 编程语言
    • 3. 第一个shell脚本
    • 3. 第一个shell脚本
    • 4. 运行脚本的三种方式
      • (1. 给文件添加可执行权限
      • (2. 使用bash(常用)
      • (3. source
  • 六、修改环境变量
    • 1. 查看特殊的环境变量
    • 2. 修改特殊的环境变量
      • (1. 只对当前终端生效的方式
      • (2. 只对当前用户生效的方式
      • (3. 对所有用户都生效的方式(常用)
      • (4. 对所有用户都生效的方式
  • 七、变量
    • 1. C语言中定义变量
    • 2. shell中定义变量
    • 3. 变量的访问
    • 4. 修饰变量的关键字
  • 思维导图

一、文件相关指令

1. chmod 修改文件用户权限

(1. 权限字母表示法

1. 权限的字母表示:r可读、w 可写、 可执行
2. 用户的字母表示: u所属用户 g所属组用户 o其他用户 a所有用户

(2. 权限8进制表示法

指令: chmod 八进制数 文件名
指令: chmod 0三位八进制数 文件名
指令: chmod u/g/0/a +/- 权限 文件名

例:

创建的默认权限
在这里插入图片描述

  1. 修改权限 chmod 八进制数 文件名
    在这里插入图片描述
  2. 修改权限 0三位八进制数 文件名
    在这里插入图片描述
  3. 修改权限 chmod u/g/0/a + 权限 文件名
    在这里插入图片描述

2. 修改文件所属组

(1. chgrp

指令:chgrp 所属组 文件名

例:

将 原所属组改为root
在这里插入图片描述

(2. chown 能够同时修改多个

chown 所属用户 文件名
chown :用户名 文件名 "将所属用户和所属组用户改为 用户名"
chown 用户名1:用户名2 文件名 "将所属用户改为用户名1 所属组用户改为用户名2"

原文件用户:
在这里插入图片描述
修改后:
在这里插入图片描述

(3. 创建链接文件

>1 ln创建硬链接文件

指令:ln 被链接文件的路径 创建的硬链接文件的路径

例:

创建硬链接文件
在这里插入图片描述
可以看到他们的inode号是一样的,说明他们占用的是同一片空间
可以理解为两个文件是同一个文件,只是文件名不同
当只删除源文件或链接文件时,不影响硬链接文件内的内容,要想彻底删除这个文件需要将所有硬链接的文件全部删除
硬链接个数如下
在这里插入图片描述

>2 ln -s 创建软链接文件

软连接文件可以理解为快捷方式

指令:ln -s 被链接文件的绝对路径 创建的软链接文件的觉绝对路径
"创建时可以使用相对路径,但是最好使用绝对路径"

创建软连接:不会增加 ls -al 中的链接个数
在这里插入图片描述
他们的inode号不同
在这里插入图片描述
当软连接没有可以链接的文件时会链接失败 如下:
在这里插入图片描述

ln -s 被链接文件的绝对路径  软链接文件的绝对路径
ln -s /home/ubuntu/23041C/day2/1.c /home/ubuntu/23041C/100.c
给/home/ubuntu/23041C/day2/1.c创建了一个路径为/home/ubuntu/23041C/100.c文件

1、创建软链接文件时,使用绝对路径
2、软链接文件可以理解为快捷方式
3、软链接文件的文件类型是l,他不会增加文件描述中的链接文件个数
4、软链接文件,如果源文件被删除,链接会断开,软链接文件会失效,如果重新创建一个同名的源文件,软链接文件会重新链接,并且链接到新创建的文件
5、软链接文件的修改会影响到源文件,源文件的修改也会影响软链接文件
6、wins下不支持软链接文件,Linux下的压缩包不要放到主机下解压

二、开关机相关指令

1. 关机

shutdown now 立即关机
shutdown 10:46 在10点46关机
shutdown +3 在3分钟后关机
shutdown -c 取消定时关机

2. 重启

shutdown -r 重启
shutdown -r 10:46 在10点46重启
shutdown -r +3 在3分钟后重启
shutdown -c 取消定时重启
reboot 立即重启

三、用户相关操作

1. 创建用户

(1. 查看id

id -g/u/o 

(2. 查看当前用户

whoami

(3. 创建用户

sudo adduser 用户名

在这里插入图片描述

(4. 给新用户添加sudo权限

>1 修改sudoers文件

先切换到能够执行sudo权限的用户或切换到root用户

sudo vim /etc/sudoers

在这里插入图片描述

修改文件建议提前拍摄虚拟机快照,防止修改出问题
在这里插入图片描述

2. 删除用户

sudo userdel 用户名 ---->默认不删除家目录
sudo userdel -r 用户名 ---->删除家目录

sudo deluser 用户名 ---->默认不删除家目录,也不能加-r参数

3. 修改用户名

前提:保证用户不在登陆状态,没有进程占用

可以开机后,就不登陆该用户
sudo usermod -c 描述信息 用户名   ---->修改用户的描述信息,图形化界面看到的和开机的显示
sudo usermod -l 新的用户名 原来的用户名  ---->修改用户名
sudo usermod -m -d 新的家目录的位置  用户名 ---->修改用户的家目录位置
-m   -MOVE    -d  -HOME_DIR

sudo usermod -g 目标组 用户名   ----->修改用户的所属组,目标组必须已经存在

sudo vim /etc/group   ---->存放所有组用户的信息

四、磁盘

1. 保证ubuntu链接上U盘

(1. VM弹窗,选择链接到虚拟机

在这里插入图片描述

(2. 虚拟机---->可移动设备---->选择U盘---->链接

在这里插入图片描述

2. 查看U盘是否成功连接

ls /dev/sd* 
如果ls的结果包含除sda外的其他内容说明U盘连接成功。
sda---->Ubuntu的磁盘,sda1表示Ubuntu只有一个分区
sdb---->外部设备/U盘,adb1表示U盘只有一个分区

在这里插入图片描述

3. 查看U盘的使用率

如果U盘,挂载到了Ubuntu中的具体文件夹下,可以使用df -h查看到
如果没有挂载点,查看不到

df -h

4. 给U盘分区

fdisk  ---->磁盘分区工具,如果没有fdisk工具,去使用apt下载
一定要使用sudo来完成fdisk相关的操作

fdisk常用的指令:
n:新建分区
d:删除分区
p:打印分区
q:退出
w:保存退出

5. 格式化操作

mkfs   ---->make file system

sudo mkfs.要格式化的文件类型 分区
按两下tab可以显示,mkfs可以格式化的所有文件系统,常用ntfs(wins),ext3,ext4(ubuntu)

如下说明操作成功
在这里插入图片描述

6. 挂起

sudo mount 要格式化的分区  挂载的目标路径

"取消挂起"
sudo umount 挂载的路径
sudo umount 分区名

五、shell脚本

1. 操作系统结构

应用层(app/代码):通过shell和内核层交互
---------------------------
内核层()
内核的五大功能:
	1. 文件管理
	2. 网络管理
	3. 进程管理
	4. 内存管理
	5. 设备管理
---------------------------
硬件层(设备)

2. 编程语言

	编译型语言:C,C++ 等通过编译,生成可执行程序再执行
	解释型语言:shell,python 等通过解释器

3. 第一个shell脚本

C语言是.c文件,shell是.sh文件

#!/bin/bash/
echo "hello world"
#first_shell

3. 第一个shell脚本

#!/bin/bash
#!/usr/bin/python   ----->Ubuntu使用的python解析器  
#shabang ---->#!
#!表明脚本使用的解析器,在给脚本添加可执行权限后,直接脚本时生效

要求#!后面的解析器和脚本语言完全一致的
如果不写,默认匹配对应的解析器

echo "hello world"
#shell终端指令
#表示注释
#第一个shell脚本

4. 运行脚本的三种方式

(1. 给文件添加可执行权限

chmod 0777 1.sh
./1.sh

(2. 使用bash(常用)

不需要脚本有可执行权限

bash 1.sh

执行过程:
在后台打开一个新的终端,运行脚本,再将运行结果返回到当前终端

(3. source

不需要脚本有可执行权限

source 1.sh
执行过程:
在同一个终端完成运行和返回结果

六、修改环境变量

1. 查看特殊的环境变量

echo $PATH

path是系统在执行指令时默认的查找路径
前面的a.out之所以不能够直接执行,需要加./,就是因为a.out的路径不在PATH检索的路径下。

2. 修改特殊的环境变量

就是把自己想添加的路径,追加到PATH中

(1. 只对当前终端生效的方式

export PATH=${PATH}:/home/ubuntu/23041C/day2
export             PATH=    ${PATH}:    /home/ubuntu/23041C/day2
 |                    |        |            |
给环境变量赋值    赋值的变量  展开PATH     追加的内容

(2. 只对当前用户生效的方式

修改家目录下的.bashrc文件,添加想要修改的路径
在这里插入图片描述

修改后让配置文件生效:
后两种都是临时生效的

重启(永久有效)
source ~/.bashrc 
. ~/.bashrc

(3. 对所有用户都生效的方式(常用)

修改/etc/bash.bashrc文件
在bash.bashrc的最后一行 ,使用exprot添加路径

修改后让配置文件生效:   改的是哪个文件,就运行哪个文件
重启
source /etc/environment
. /etc/environment

特殊的环境变量路径:只能对直接的子文件生效

(4. 对所有用户都生效的方式

修改/etc/environment文件
直接把路径添加到最后,以:作为分隔
修改后让配置文件生效: 改的是哪个文件,就运行哪个文件

重启
source /etc/environment
. /etc/environment

特殊的环境变量路径:只能对直接的子文件生效

七、变量

1. C语言中定义变量

存储类型  数据类型  变量名;
存储类型:
    auto    const   static    volatile   register    extern

2. shell中定义变量

shell是一个弱数据类型的语言,都是当作字符串处理的
shell脚本中定义变量时,等号两边不能有空格

变量名=变量的值
变量名='变量的值'
变量名="变量的值"

#!/bin/bash
#shell脚本就是指令的集合
var1=90
str='hello world'  #''一般用于,变量的值中间有空格时
#''内不能识别$变量名,不会展开变量,只会当成字符串处理
str1="hello world"
#使用已有的变量给新的变量赋值
str3="$str $str1"   #""一般用于,使用一个变量给另一个变量拼接赋值
str4=$str3
echo $str3

3. 变量的访问

$变量名  ---->拿到变量的值
${变量名}  ---->正确表明变量名的范围,建议都加${}

#!/bin/bash
#shell脚本就是指令的集合
var1=90
str1='hello '
#echo $str1world
#echo hello  world  ---->输出为hello world,空格被自动合并
#输出空行,把str1world识别为变量名
echo ${str1}world
#${}的作用,正确识别变量的范围

4. 修饰变量的关键字

readonly :只读
unset :清空变量,不能清空readonly的变量
local :定义局部变量,只能在函数中时使用
shell 脚本中,全部都是全局变量

思维导图

在这里插入图片描述

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

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

相关文章

7DGroup性能实施项目日记1

壬寅年 己酉月 丁丑日 2022年9月21日 晴 经过上周的7DGroup学员群内部沟通,我们决定启动一个性能实施项目。 在这个实施项目中,把RESAR性能工程的每个环节都落地一遍,让所有参与培训的学员都可以参与。 在这个项目实施过程中,我打…

苹果照片传输到电脑怎么传?批量传输的技巧!

苹果照片传输到电脑怎么传?照片是苹果手机和电脑之间传输比较频繁的内容。对于刚接触苹果手机的朋友,可能还不是很了解传输方法,鉴于此,我们在这里提供几种有效方法来帮助您完成此项任务。无论您想要使用或不使用 iTunes 将照片从…

CAN Frame详解

CAN Frame是CAN总线通信的基本单位,它有多种类型,其中最常见的是数据帧(Data Frame),用于传输数据。数据帧有标准格式(Standard Format)和扩展格式(Extended Format)&…

redhat 6.4安装oracle11g RAC (一)

(一)基础环境 虚拟机环境 :vmware workstation 12 操作系统 : redhat6.4 - 64bit 数据库版本 :11.2.0.4 Last login: Fri Jun 16 18:40:20 2023 from 192.168.186.1 [rootrhel64 ~]# cat /etc/redhat-release Red Ha…

项目描述1

学成在线- 6分片上传,8xxl-job 课程模块开发 分布式事务,消息表 spring-security oauth 用户认证授权 学成在线 学成在线认证授权 一些代码 黑马分布式事物 框架学习 - 若依 / RuoYi-Vue-Plus 统一数据权限 若依数据权限使用 数据权限表结构 1. 设备故…

音视频技术开发周刊 | 298

每周一期,纵览音视频技术领域的干货。 新闻投稿:contributelivevideostack.com。 AI艺术在北京798,展望人工智能与环境的未来 本文很有意思的提出了个假设,通过人工智能和艺术家协作与实践产生环绕地球的叙事,去开启置…

【事故致因】HFACS模型各层级中因素的具体含义及内容归纳

HFACS模型各层级中因素的具体含义及内容归纳 1 HFACS(2000版本)中英文结构图2 定义3 结构组成4 各层级因素及内容4.1 不安全行为4.2 不安全行为的前提条件4.3 不安全监督4.4 组织影响 5 HFACS框架的使用 1 HFACS(2000版本)中英文结构图 英文版本(论文首次提出原图&…

接口测试基础知识(使用 Fiddler 抓包、使用 Postman 发起请求、Postman汉化教程)

文章目录 一、 什么是接口二、接口测试的流程三、设计接口测试测试用例常见的点四、使用 Fiddler 进行抓包1. 一个重要设置2. 进行抓包 五、使用 Postman 发起 GET 请求1. 通过API文档得到调用信息2. 通过 Postman 构造 GET 请求 六、使用 Postman 发起 POST 请求1. 得到接口调…

机器学习——朴素贝叶斯(手动代码实现)

朴素的我,决定朴素地徒手实现贝叶斯算法! 摒弃sklearn 这个体贴善解人意把一切都打包封装好的妈妈 再见了sklearn 妈妈 我要自己手动实现 哪怕前方困难重重 哪怕我此刻还在发牢骚 但我还是要说,撒哟娜拉sklearn妈 看了知乎阿婆主的分析&#…

在 Maya、ZBrush 和 Substance 3D 中创建女枪手(P2)

今天瑞云渲染小编给大家带来了Ivan Lim 的Female Gunslinger 项目的细目,讨论了他在 Think Tank 的教育过程,并解释了他为什么选择虚幻引擎来呈现这个角色。这篇接着上篇继续拓扑UV、灯光材质、渲染等方面的分享 头发 我开始用一个块来处理头发&#xf…

看看人家那高并发秒杀系统,那叫一个优雅

618,大家剁手了么? 说起618,就不得不提其中较为复杂的秒杀环节了。虽说秒杀只是一个促销活动,但对技术要求不低。 秒杀作为618、双十一等电商活动不可缺少的一环,是一个非常典型的活动场景。秒杀场景的业务特点是限时…

并发知识学习

aqs中有2个队列,一个是同步队列,另外一个是条件队列简单记住:独占没有朋友,所以是null。共享就有朋友,所以是固定的node对象。nextWaiter就是表示节点的模式,在条件队列中指向下一个节点。 一个想要去获取锁…

车载测试范例,如何进行ADAS执行器性能测测试?

概述 执行器性能分为横向性能和纵向性能,横向性能主要指方向盘转向的响应性能,纵向主要包括油门加速性能及刹车减速性能。其中横向性能在ADAS中涉及的功能包括LKA、LDW,跟纵向加/减速性能相关的功能主要是ACC(自适应巡航&#xf…

C++数据结构【树状数组】

​ 树状数组 什么是树状数组?树状数组和线段树的区别 树状数组的结构什么是lowbitlowbit如何计算代码实现:补充知识——&,|,^运算&|^注意: 树状数组的基本操作单点修改while循环版代码for循环版代码 单点查询区…

pytest生成 junit-xml 测试报告

pytest 生成junit-xml 测试报告,那么生成的xml报告有什么用呢?可以集合一些持续集成工具(如jenkins…等)方便查看报告。 junit-xml 测试报告 命令行参数有2个跟 junit-xml 报告相关的参数 --junit-xmlpath create junit-xm…

2023年软件测试——精选金融银行面试真题

1、P2P你们也测试后台管理吗?个人芝麻信用积分是调取哪里的资料? 测试后台管理: 后台也测,但是我主要测试前台,我的关注点是前台,后台只是拿来用,能配合前台正常走完流程就行。 后台主要对前…

Linux线程同步(下)

文章目录 1. POSIX信号量2. 基于环形队列的生产消费模型2.1 代码实现2.1.1 构造函数和析构函数2.1.2 生产和消费2.1.3 测试 3. 线程池3.1 成员变量3.2 构造和析构3.3 push和pop3.4 启动线程池3.5 测试 4. 将线程池改成单例模式5. STL、智能指针和线程安全6. 其他常见的各种锁6.…

聊聊测试驱动开发

这是鼎叔的第六十四篇原创文章。行业大牛和刚毕业的小白,都可以进来聊聊。 欢迎关注本专栏和微信公众号《敏捷测试转型》,星标收藏,大量原创思考文章陆续推出。 本文观点参考自Lasse Koskela,他是《测试驱动开发的艺术》的作者。…

软件测试之【单元测试、系统测试、集成测试】

一、单元测试的概念 单元测试(Unit Testing)是对软件基本组成单元进行的测试,如函数(function或procedure)或一个类的方法(method)。当然这里的基本单元不仅仅指的是一个函数或者方法&#xff0…

揭秘跨部门沟通的秘密武器:让不归你管的人主动配合你的绝妙方法!

跨部门沟通,Edge对此有点胆怯:“我们自己内部进度,怎么着都好管。都是自己人,目标一致。可涉及跨部门合作,管起来就困难。人家又不归我们管,不可控因素太多了。如果在合作的过程中,出现啥问题&a…