《Linux系统编程篇》认识在linux上的文件 ——基础篇
前言
Linux系统编程的文件操作如同掌握了一把魔法钥匙,打开了无尽可能性的大门。在这个世界中,你需要了解文件描述符、文件权限、文件路径等基础知识,就像探险家需要了解地图和指南针一样。而了解这些基础知识,就像学会了魔法咒语一样,让你能够在Linux系统中游刃有余地驾驭文件操作的魔力。
每一次努力都是一种投资,哪怕结果未必如愿,但你所获得的成长和经验都是无价的。坚持下去,你会看到那些投资最终会为你带来丰厚的回报。 ——家驹(Strange_Head)
文章目录
- 前言
- 在编程路上初始阶,Linux文件操作先了解
- 1. 基础知识
- 1.1 操作系统基础
- 2、文件的权限(ls -l)
- 3、更改文件权限`chmod` 命令
- 使用数字表示权限
- 使用符号表示权限
- 示例
- 通常使用方式
- 结束
在编程路上初始阶,Linux文件操作先了解
1. 基础知识
在开始Linux系统编程中的文件操作之前,初学者需要掌握一些基础知识。
1.1 操作系统基础
文件系统概念:理解文件系统的结构和工作原理,例如文件
、目录
、路径
等。
Linux基本命令:
熟悉一些基本的Linux命令,如ls
(列出目录内容)、cd
(更改目录)、pwd
(显示当前工作目录)、cat
(显示文件内容)、touch
(创建空文件)、mkdir
(创建目录)、rm
(删除文件/目录)等。
到了这里可以到自己的linux系统命令行去敲一敲啦!!~
新快捷键学习✨在linux虚拟机当中使用《CTRL+ALT+T》(直接启动一个新终端)————家驹(Strange_Head)
当然这里只是简单的带着大家示范的敲一下,有些命令还带有一些选项,(如果有必要的话)比如说我上面提到的命令读者可以到百度查一下。这里过于基础。我们的最终目的带着大家学会linux系统编程以及对应的知识点,如果展开讲的话是讲不完的。
随着学习linux时间越久,这些命令将会刻到大脑里,所以不必担心记不住,知道怎么使用即可。随着慢慢深入,知道的会越来越多。
2、文件的权限(ls -l)
在终端输入这个命令
ls -l
这个就是ls
命令的详细选项了,加了额外的选项-l
在Linux中,使用ls -l
命令可以列出文件的详细信息,包括文件的权限。每个文件的权限信息显示在列表的第一列。权限信息由10个字符组成,如下所示:
-
第一个字符表示文件类型:
-
表示普通文件,d
表示目录,l
表示符号链接等。 -
接下来的九个字符表示文件的权限,分为三组,每组三个字符,分别代表文件所有者的权限、文件所属组的权限和其他用户的权限。这三组权限分别是读(r)、写(w)和执行(x)权限。
例如,如果一个文件的权限信息为-rwxr-xr--
,那么它的含义是:
-
- rwx r-x r–
-
文件类型为普通文件
-
文件所有者具有读、写和执行权限
-
文件所属组具有读和执行权限
-
其他用户具有读权限
除了前面的权限的解读呢,后面这些又是什么呢。
有这样条信息。方便观察
-rwxr-xr-- 1 user1 group1 4096 Jul 13 14:25 file.txt
-
1
:表示链接到该文件的硬链接数。对于普通文件,通常为1。 -
user1
:表示文件所有者的用户名。 -
group1
:表示文件所属组的组名。 -
4096
:表示文件大小(以字节为单位)。 -
Jul 13 14:25
:表示文件的最后修改时间。
如果一个文件不是你可以操作的那么通常操作他会报错(no permission)
拓展一下:
在Linux系统中,硬链接(Hard Link)和符号链接(SymbolicLink,也称为软链接)是两种不同类型的链接方式,用于创建文件之间的关联。它们之间有一些重要的区别:
硬链接:
硬链接是指多个文件目录项指向相同的索引节点(inode),这意味着硬链接实际上是同一个文件的不同名称。
硬链接只能在同一个文件系统内创建,因为它们都指向相同的inode。
删除原始文件并不会影响硬链接文件,因为它们实际上都指向相同的数据块。
硬链接无法指向目录。
对硬链接的更改会影响所有指向同一inode的文件,因为它们实际上是同一个文件。
符号链接:
符号链接是一个特殊的文件,它包含指向另一个文件的路径。
符号链接可以跨越文件系统边界,因为它们只是指向另一个路径。
如果原始文件被删除或移动,符号链接将失效,因为它只是指向文件的路径而非文件本身。
符号链接可以指向目录。
对符号链接的更改不会影响原始文件,因为它们只是指向文件的路径。
对于文件操作,我们知道这个文件的所有者是谁,他的权限是什么,什么人可以操作他就可以了。
3、更改文件权限chmod
命令
知道了怎么看文件的权限之后,我们来修改文件的权限。
chmod [选项] 模式 文件名
其中:
选项
:可选参数,用于指定chmod
命令的特定选项。
模式
:用来指定权限的方式,可以采用数字表示或符号表示。
文件名
:需要更改权限的文件或目录名称。使用数字表示权限
在数字表示中,每种权限用一个数字表示,如下:
读权限:4
写权限:2
执行权限:1
然后,将所有权限相加得到想要设置的权限值。例如,读取和写入权限为6,读取、写入和执行权限为7。
使用符号表示权限
在符号表示中,可以使用符号来表示权限的改变,如下:
+
:添加权限
-
:移除权限
=
:设置权限符号表示权限的语法如下:
u
:表示文件所有者(user)
g
:表示文件所属组(group)
o
:表示其他用户(others)
a
:表示所有用户(all)例如,
chmod u+r file.txt
表示为文件所有者添加读权限。示例
为所有用户添加读取和写入权限:
chmod a+rw file.txt
移除文件所有者的执行权限:
chmod u-x file.txt
为文件所有者和所属组添加执行权限:
chmod ug+x file.txt
在使用
chmod
命令时,需要以超级用户(root)或文件所有者的身份来更改文件的权限。
通常使用方式
chmod 755 demo2.c
直接指定所属文件的权限,第一个7就是自己的权限,后面是组和其他用户的权限。
结束
这节我们知道了如何使用ls -l
查看文件的权限等信息(什么类型,所有者,所属组,文件大小,创建时间/修改时间),和chomd
修改文件的权限之后,我们就可以正式进入编写代码环节了。还是那句话,一时间记不住没关系,后续随着使用次数的变多会慢慢成为一种肌肉记忆,刻到大脑里面。
相关文章:
![](https://i-blog.csdnimg.cn/direct/c509b81030014413b01bfb4e2e626e40.png)
《Linux系统编程篇》认识在linux上的文件 ——基础篇
前言 Linux系统编程的文件操作如同掌握了一把魔法钥匙,打开了无尽可能性的大门。在这个世界中,你需要了解文件描述符、文件权限、文件路径等基础知识,就像探险家需要了解地图和指南针一样。而了解这些基础知识,就像学会了魔法咒语…...
![](https://i-blog.csdnimg.cn/direct/ea4f6c69b89143ed9688bb02dbb76ba2.png)
Qt:22.鼠标相关事件(实例演示——鼠标进入/离开某控件的事件、鼠标按下事件、鼠标释放事件、鼠标双击事件)
目录 1.实例演示——鼠标进入/离开某控件的事件: 2.鼠标按下事件: 3.鼠标释放事件: 4.鼠标双击事件: 1.实例演示——鼠标进入/离开某控件的事件: 首先创建一个C类文件 Label,填写好要继承的父类 QLabe…...
![](https://i-blog.csdnimg.cn/direct/99bf491d80dd4e06a916e074fc08309c.png)
笔记 4 :linux 0.11 中继续分析 0 号进程创建一号进程的 fork () 函数
(27)本条目开始, 开始分析 copy_process () 函数,其又会调用别的函数,故先分析别的函数。 get_free_page () ; 先 介绍汇编指令 scasb : 以及 指令 sstosd :…...
![](https://i-blog.csdnimg.cn/direct/406b9599dd2d410e8b80b269caa132e5.png)
Vue3 引入Vanta.js使用
能搜到这篇文章 想必一定看过demo效果图了吧 示例 Vanta.js - Animated 3D Backgrounds For Your Website (vantajs.com) 1. 引入 在根目录 index.html中引入依赖 <script src"https://cdnjs.cloudflare.com/ajax/libs/three.js/r134/three.min.js"></sc…...
![](https://i-blog.csdnimg.cn/direct/bb254161b24742619559b81d71ab41ba.png)
LeetCode --- 134双周赛
题目 3206. 交替组 I 3207. 与敌人战斗后的最大分数 3208. 交替组 II 3209. 子数组按位与值为 K 的数目 一、交替组 I & II 题目中问环形数组中交替组的长度为3的子数组个数,主要的问题在于它是环形的,我们要考虑首尾相接的情况,如何…...
![](https://i-blog.csdnimg.cn/direct/27785dc454a547f796bccc545eef984d.png)
快速读出linux 内核中全局变量
查问题时发现全局变量能读出来会提高效率,于是考虑从怎么读出内核态的全局变量,脚本如下 f open("/proc/kcore", rb) f.seek(4) # skip magic assert f.read(1) b\x02 # 64 位def read_number(bytes):return int.from_bytes(bytes, little,…...
![](https://i-blog.csdnimg.cn/direct/58693513d93541a8a699fad79fb239a5.png)
postman录制设置
一、前言: postman是一个很好接口调试或是测试工具,简单方便,不需要很复杂的流程与技术,并且也具备录制条件。对于接口不了解,没有明确对应的说明,但又想通过接口进行一些测试使用其录制是一个不错的办…...
![](https://i-blog.csdnimg.cn/direct/bc19d7fded664ca092f00ea8bbdc4cc9.png)
redis消息队列
redis 的list类型实现消息队列: list结构实现的优缺点: 2、pubsub模式(消息发布订阅)实现消息队列 pubsub的优缺点: 命令行实现: pub:第一次发送有两个接收,第二个只有一个接收 sub接收&#x…...
![](https://i-blog.csdnimg.cn/direct/1a498df91d0a401aa9e1f82c3ba02d41.png)
Linux vim的使用(一键安装则好用的插件_forcpp),gcc的常见编译链接操作
vim 在Linux系统上vim是个功能还比较完善的软件。但是没装插件的vim用着还是挺难受的,所以我们直接上一款插件。 我们只需要在Linux上执行这个命令就能安装(bite提供的) curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh …...
![](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=C%3A%5CUsers%5CaDMIN%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20240713150844844.png&pos_id=img-UDcJW3Ot-1720872886067)
css基础(1)
CSS CCS Syntax CSS 规则由选择器和声明块组成。 CSS选择器 CSS选择器用于查找想要设置样式的HTML元素 一般选择器分为五类 Simple selectors (select elements based on name, id, class) 简单选择器(根据名称、id、类选择元素) //页面上的所有 …...
![](https://i-blog.csdnimg.cn/direct/e3f247a8bb38412abdf00863f2ecc6c0.png)
高并发线程池设计Nginx线程池源码剖析
为什么我们需要线程池?Why? 省流: 为了解决: 1.访问磁盘速度慢 2.等待设备工作 3..... 我们使用多线程技术,在IO繁忙的时候优先处理别的任务 为了解决多线程的缺陷: 1.创建、销毁线程时间消耗大 2.创建线程太多使系统资源不足或者线程频繁切换…...
![](https://i-blog.csdnimg.cn/direct/94ee638781e147bb8884b20c0c3be4ee.jpeg)
SEO:6个避免被搜索引擎惩罚的策略-华媒舍
在当今数字时代,搜索引擎成为了绝大多数人获取信息和产品的首选工具。为了在搜索结果中获得良好的排名,许多网站采用了各种优化策略。有些策略可能会适得其反,引发搜索引擎的惩罚。以下是彭博社发稿推广的6个避免被搜索引擎惩罚的策略。 1. 内…...
STM32之六:SysTick系统滴答定时器
目录 1. SysTick简介 2. 时钟来源 3. SysTick寄存器 3.1 CTRL—SysTick控制及状态寄存器 3.2 RELOAD—SysTick重装载数值寄存器 3.3 CURRENT—SysTick当前数值寄存器 4. systick系统定时器配置 5. 延时函数实现 5.1 延时函数编写步骤 5.2 微秒级延时函数delay_us 5.…...
![](https://i-blog.csdnimg.cn/direct/02508da0900d4be2bd02fee89661be00.png)
全栈物联网项目:结合 C/C++、Python、Node.js 和 React 开发智能温控系统(附代码示例)
1. 项目概述 本文详细介绍了一个基于STM32微控制器和AWS IoT云平台的智能温控器项目。该项目旨在实现远程温度监控和控制,具有以下主要特点: 使用STM32F103微控制器作为主控芯片,负责数据采集、处理和控制逻辑采用DHT22数字温湿度传感器,精确采集环境温湿度数据通过ESP8266 W…...
![](https://i-blog.csdnimg.cn/direct/e7a5562ac8684b8d9e890816a8b3d746.png)
WPF学习(3) -- 控件模板
一、操作过程 二、代码 <Window x:Class"学习.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expressio…...
![](https://www.ngui.cc/images/no-images.jpg)
Netty Websocket SpringBoot Starter
netty websocket starter Quick Start Demo 项目 添加依赖 <!--添加源--> <repository><id>github</id><url>https://maven.pkg.github.com</url><snapshots><enabled>true</enabled></snapshots> </reposit…...
![](https://i-blog.csdnimg.cn/direct/798118bb4fda4ba9a34ee230cfad36a4.png)
数据结构(4.2)——朴素模式匹配算法
字符串模式匹配 在主串中找到模式串相同的子串,并返回其所在的位置。 子串和模式串的区别 子串:主串的一部分,一定存在 模式串:不一定能在主串中找到 字符串模式匹配 朴素模式匹配算法 主串长度为n,模式串长度为…...
![](https://www.ngui.cc/images/no-images.jpg)
git切换远程仓库地址
git 更换远程仓库地址三种方法总结 一、前言 由于之前项目管理使用私服的 gitlab ,现在换成了Gitea,需要修改远端仓库地址。 二、环境 windows 10git version 2.34.0.windows.1 三、帮助文档 GitHub文档 四、三种修改方法 方法一:不删除远程仓…...
![](https://www.ngui.cc/images/no-images.jpg)
同步与异步:.NET 中的 Task.WaitAll 和 Task.WhenAll
在 C# 中,异步编程通常涉及同时运行多个任务。处理多个任务的两种常见方法是 Task.WaitAll 和 Task.WhenAll。虽然它们看起来很相似,但它们的用途不同,并且用于不同的场景。本文探讨了 Task.WaitAll 和 Task.WhenAll 之间的区别,并…...
![](https://i-blog.csdnimg.cn/direct/bcc6b52baadc45a69bdf8c0afdd4c49b.png)
在Linux系统实现瑞芯微RK3588部署rknntoolkit2进行模型转换
一、首先要先安装一个虚拟的环境 安装Miniconda包 Miniconda的官网链接:Minidonda官网 下载好放在要操作的linux系统,我用的是远程服务器的linux系统,我放在whl这个文件夹里面,这个文件夹是我自己创建的 运行安装 安装的操作都是yes就可以了 检查是否安装成功,输入下面…...
![](https://i-blog.csdnimg.cn/direct/e8f2813d3f6a4f638c0d02689e7ff7e7.png)
【人工智能】Transformers之Pipeline(概述):30w+大模型极简应用
目录 一、引言 二、pipeline库 2.1 概述 2.2 使用task实例化pipeline对象 2.2.1 基于task实例化“自动语音识别” 2.2.2 task列表 2.2.3 task默认模型 2.3 使用model实例化pipeline对象 2.3.1 基于model实例化“自动语音识别” 2.3.2 查看model与task…...
![](https://i-blog.csdnimg.cn/direct/5b3ea622034a43608159cf0925ccd080.png)
Jenkins中Node节点与构建任务
目录 节点在 Jenkins 中的主要作用 1. 分布式构建 分布式处理 负载均衡 2. 提供不同的运行环境 多平台支持 特殊环境需求 3. 提高资源利用率 动态资源管理 云端集成 4. 提供隔离和安全性 任务隔离 权限控制 5. 提高可扩展性 横向扩展 高可用性 Jenkins 主服务…...
![](https://i-blog.csdnimg.cn/direct/c46a1c2c9bce4af9adb9e84a2a170417.png)
Leetcode3200. 三角形的最大高度
Every day a Leetcode 题目来源:3200. 三角形的最大高度 解法1:模拟 枚举第一行是红色还是蓝色,再按题意模拟即可。 代码: /** lc appleetcode.cn id3200 langcpp** [3200] 三角形的最大高度*/// lc codestart class Solutio…...
![](https://www.ngui.cc/images/no-images.jpg)
docker运行nginx挂载前端html页面步骤
1.常用docker命令 1.docker ps -a 查看所有容器 2.docker ps查看存活的容器 3.docker rm 删除容器 4.docker stop 停止容器运行 5.docker logs 容器id 查看容器日志 6.docker images 查看镜像 7.docker rmi 删除镜像 8.docker exec nginx nginx -s reload 重新加载conf文件…...
![](https://www.ngui.cc/images/no-images.jpg)
kafka部署以及常用命令详细总结
1环境准备 1.1ip规划 ip: 192.168.1.200 1.2配置主机名 #设置主机名 hostnamectl set-hostname node11.3配置hosts [rootnode1 ~]# cat >> /etc/hosts << EOF192.168.1.200 node1 EOF2部署 2.1安装包准备 将以下安装包从官网下载到本地 jdk-8u371-linux-x6…...
![](https://i-blog.csdnimg.cn/direct/b8d41ffc14f449ab91571c6460aa5ca0.png)
代码随想录算法训练营第29天|LeetCode 134. 加油站、135. 分发糖果、860.柠檬水找零、406.根据身高重建队列
1. LeetCode 134. 加油站 题目链接:https://leetcode.cn/problems/gas-station/description/ 文章链接:https://programmercarl.com/0134.加油站.html 视频链接:https://www.bilibili.com/video/BV1jA411r7WX 思路: 贪心ÿ…...
![](https://i-blog.csdnimg.cn/direct/d644106c2c2d4f0e906f01606a6f972a.png)
代理模式(大话设计模式)C/C++版本
代理模式 C #include <iostream> using namespace std;class Subject // Subject 定义了RealSubject和Proxy的共用接口..这样就在任何使用RealSubject的地方都可以使用Proxy { public:virtual void func(){cout << "Subject" << endl;} };class R…...
![](https://img-blog.csdnimg.cn/img_convert/5c3bfc88dd242f2d04166c514cea93ec.png)
本人学习保存-macOS打开Navicat提示「“Navicat Premium”已损坏,无法打开。 你应该将它移到废纸篓。」的解决方法
新安装了macOS Ventura,打开Navicat Premium,发现会提示: “Navicat Premium”已损坏,无法打开。 你应该将它移到废纸篓。 遇到这种情况,千万别直接移到废纸篓,是有办法解决的。在这里记录一下解决方案。 …...
《Cross-Image Pixel Contrasting for Semantic Segmentation》论文解读
期刊:TPAMI 年份:2024 摘要 研究图像语义分割问题。目前的方法主要集中在通过专门设计的上下文聚合模块(如空洞卷积、神经注意力)或结构感知的优化目标(如iou样损失)挖掘"局部"上下文,即单个图像中像素之间的依赖关系。然而&…...
![](https://img-blog.csdnimg.cn/img_convert/cc3a8ef80fcf3d4f15a87647ba3f127a.webp?x-oss-process=image/format,png)
技术周总结 2024.07.08~07.14(算法,Python,Java,Scala,PHP)
文章目录 一、07.13 周六1.0)算法题:字符串中的单词反转1.1) 问题01:可靠性计算中的MTTR MTTF MTBF 分别指什么?他们之间有什么联系?MTTR (Mean Time to Repair)MTTF (Mean Time to Failure)MTBF (Mean Time Between F…...
广东品牌网站建设968/seo关键词推广怎么做
2019独角兽企业重金招聘Python工程师标准>>> Redis单点时,当一台机器挂机了,redis的服务完全停止,这时就会影响其他服务的正常运行。下面利用redis sentinel做一个主从切换的集群管理。 下面两段官方的说辞: Redis Sen…...
网站建设招代理/上海sem
three.js 是一款WebGL框架,WebGL可以让我们在canvas上实现3D效果。实现3D效果在国内来说还算是比较新的东西,可供查阅的资料也不多。这篇文章仅是一个入门篇,介绍如何绘制一个3D正方体。介绍完毕,首先奉上实现的效果图:…...
![](/images/no-images.jpg)
有哪些网站做外贸的/seo网站推广建站服务商
WPS中如何快速消除硬回车(转)在通常情况下,我们在WPS中用软回车表示换行,用硬回车标记段落结束。但有时,当我们用WPS 打开一个TXT文件或者从网上复制了一些文本后,发现段落中间也是用硬回车来表示换行,这样的文本编辑起…...
![](/images/no-images.jpg)
网站建设价格/青岛网络优化哪家专业
搬到了gipsyh.icu...
![](/images/no-images.jpg)
闵行区做网站/淘宝怎么设置关键词搜索
一.Core标签库 • 核心标签库主要包括通用标签、条件标签、迭代标签和与URL相关的标签。 • 在使用Core标签库的JSP文件的开始部分,添加代码: <%taglib uri"http://java.sun.com/jsp/jstl/core" prefix"c"…...
![](/images/no-images.jpg)
益阳购物网站开发设计/沈阳seo按天计费
字符串的构造函数和析构函数以及赋值函数的重载,是面试中经常考到的问题,意在考察应聘者对于重载以及构造函数、析构函数的理解。 程序如下: #include<iostream> #include<string.h> using namespace std;class String { public:…...