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

《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,也称为软链接)是两种不同类型的链接方式,用于创建文件之间的关联。它们之间有一些重要的区别:

  1. 硬链接

    • 硬链接是指多个文件目录项指向相同的索引节点(inode),这意味着硬链接实际上是同一个文件的不同名称。

    • 硬链接只能在同一个文件系统内创建,因为它们都指向相同的inode。

    • 删除原始文件并不会影响硬链接文件,因为它们实际上都指向相同的数据块。

    • 硬链接无法指向目录。

    • 对硬链接的更改会影响所有指向同一inode的文件,因为它们实际上是同一个文件。

  2. 符号链接

    • 符号链接是一个特殊的文件,它包含指向另一个文件的路径。

    • 符号链接可以跨越文件系统边界,因为它们只是指向另一个路径。

    • 如果原始文件被删除或移动,符号链接将失效,因为它只是指向文件的路径而非文件本身。

    • 符号链接可以指向目录。

    • 对符号链接的更改不会影响原始文件,因为它们只是指向文件的路径。

对于文件操作,我们知道这个文件的所有者是谁,他的权限是什么,什么人可以操作他就可以了。

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修改文件的权限之后,我们就可以正式进入编写代码环节了。还是那句话,一时间记不住没关系,后续随着使用次数的变多会慢慢成为一种肌肉记忆,刻到大脑里面。

相关文章:

《Linux系统编程篇》认识在linux上的文件 ——基础篇

前言 Linux系统编程的文件操作如同掌握了一把魔法钥匙,打开了无尽可能性的大门。在这个世界中,你需要了解文件描述符、文件权限、文件路径等基础知识,就像探险家需要了解地图和指南针一样。而了解这些基础知识,就像学会了魔法咒语…...

Qt:22.鼠标相关事件(实例演示——鼠标进入/离开某控件的事件、鼠标按下事件、鼠标释放事件、鼠标双击事件)

目录 1.实例演示——鼠标进入/离开某控件的事件: 2.鼠标按下事件: 3.鼠标释放事件: 4.鼠标双击事件: 1.实例演示——鼠标进入/离开某控件的事件: 首先创建一个C类文件 Label,填写好要继承的父类 QLabe…...

笔记 4 :linux 0.11 中继续分析 0 号进程创建一号进程的 fork () 函数

(27)本条目开始, 开始分析 copy_process () 函数,其又会调用别的函数,故先分析别的函数。 get_free_page () ; 先 介绍汇编指令 scasb : 以及 指令 sstosd :…...

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…...

LeetCode --- 134双周赛

题目 3206. 交替组 I 3207. 与敌人战斗后的最大分数 3208. 交替组 II 3209. 子数组按位与值为 K 的数目 一、交替组 I & II 题目中问环形数组中交替组的长度为3的子数组个数&#xff0c;主要的问题在于它是环形的&#xff0c;我们要考虑首尾相接的情况&#xff0c;如何…...

快速读出linux 内核中全局变量

查问题时发现全局变量能读出来会提高效率&#xff0c;于是考虑从怎么读出内核态的全局变量&#xff0c;脚本如下 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,…...

postman录制设置

一、前言&#xff1a; ​ postman是一个很好接口调试或是测试工具&#xff0c;简单方便&#xff0c;不需要很复杂的流程与技术&#xff0c;并且也具备录制条件。对于接口不了解&#xff0c;没有明确对应的说明&#xff0c;但又想通过接口进行一些测试使用其录制是一个不错的办…...

redis消息队列

redis 的list类型实现消息队列&#xff1a; list结构实现的优缺点&#xff1a; 2、pubsub模式&#xff08;消息发布订阅&#xff09;实现消息队列 pubsub的优缺点&#xff1a; 命令行实现&#xff1a; pub:第一次发送有两个接收&#xff0c;第二个只有一个接收 sub接收&#x…...

Linux vim的使用(一键安装则好用的插件_forcpp),gcc的常见编译链接操作

vim 在Linux系统上vim是个功能还比较完善的软件。但是没装插件的vim用着还是挺难受的&#xff0c;所以我们直接上一款插件。 我们只需要在Linux上执行这个命令就能安装(bite提供的) curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh …...

css基础(1)

CSS CCS Syntax CSS 规则由选择器和声明块组成。 CSS选择器 CSS选择器用于查找想要设置样式的HTML元素 一般选择器分为五类 Simple selectors (select elements based on name, id, class) 简单选择器&#xff08;根据名称、id、类选择元素&#xff09; //页面上的所有 …...

高并发线程池设计Nginx线程池源码剖析

为什么我们需要线程池?Why? 省流&#xff1a; 为了解决: 1.访问磁盘速度慢 2.等待设备工作 3..... 我们使用多线程技术&#xff0c;在IO繁忙的时候优先处理别的任务 为了解决多线程的缺陷: 1.创建、销毁线程时间消耗大 2.创建线程太多使系统资源不足或者线程频繁切换…...

SEO:6个避免被搜索引擎惩罚的策略-华媒舍

在当今数字时代&#xff0c;搜索引擎成为了绝大多数人获取信息和产品的首选工具。为了在搜索结果中获得良好的排名&#xff0c;许多网站采用了各种优化策略。有些策略可能会适得其反&#xff0c;引发搜索引擎的惩罚。以下是彭博社发稿推广的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.…...

全栈物联网项目:结合 C/C++、Python、Node.js 和 React 开发智能温控系统(附代码示例)

1. 项目概述 本文详细介绍了一个基于STM32微控制器和AWS IoT云平台的智能温控器项目。该项目旨在实现远程温度监控和控制,具有以下主要特点: 使用STM32F103微控制器作为主控芯片,负责数据采集、处理和控制逻辑采用DHT22数字温湿度传感器,精确采集环境温湿度数据通过ESP8266 W…...

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…...

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…...

数据结构(4.2)——朴素模式匹配算法

字符串模式匹配 在主串中找到模式串相同的子串&#xff0c;并返回其所在的位置。 子串和模式串的区别 子串&#xff1a;主串的一部分&#xff0c;一定存在 模式串&#xff1a;不一定能在主串中找到 字符串模式匹配 朴素模式匹配算法 主串长度为n&#xff0c;模式串长度为…...

git切换远程仓库地址

git 更换远程仓库地址三种方法总结 一、前言 由于之前项目管理使用私服的 gitlab &#xff0c;现在换成了Gitea&#xff0c;需要修改远端仓库地址。 二、环境 windows 10git version 2.34.0.windows.1 三、帮助文档 GitHub文档 四、三种修改方法 方法一&#xff1a;不删除远程仓…...

同步与异步:.NET 中的 Task.WaitAll 和 Task.WhenAll

在 C# 中&#xff0c;异步编程通常涉及同时运行多个任务。处理多个任务的两种常见方法是 Task.WaitAll 和 Task.WhenAll。虽然它们看起来很相似&#xff0c;但它们的用途不同&#xff0c;并且用于不同的场景。本文探讨了 Task.WaitAll 和 Task.WhenAll 之间的区别&#xff0c;并…...

在Linux系统实现瑞芯微RK3588部署rknntoolkit2进行模型转换

一、首先要先安装一个虚拟的环境 安装Miniconda包 Miniconda的官网链接:Minidonda官网 下载好放在要操作的linux系统,我用的是远程服务器的linux系统,我放在whl这个文件夹里面,这个文件夹是我自己创建的 运行安装 安装的操作都是yes就可以了 检查是否安装成功,输入下面…...

【人工智能】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…...

Jenkins中Node节点与构建任务

目录 节点在 Jenkins 中的主要作用 1. 分布式构建 分布式处理 负载均衡 2. 提供不同的运行环境 多平台支持 特殊环境需求 3. 提高资源利用率 动态资源管理 云端集成 4. 提供隔离和安全性 任务隔离 权限控制 5. 提高可扩展性 横向扩展 高可用性 Jenkins 主服务…...

Leetcode3200. 三角形的最大高度

Every day a Leetcode 题目来源&#xff1a;3200. 三角形的最大高度 解法1&#xff1a;模拟 枚举第一行是红色还是蓝色&#xff0c;再按题意模拟即可。 代码&#xff1a; /** lc appleetcode.cn id3200 langcpp** [3200] 三角形的最大高度*/// lc codestart class Solutio…...

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文件…...

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…...

代码随想录算法训练营第29天|LeetCode 134. 加油站、135. 分发糖果、860.柠檬水找零、406.根据身高重建队列

1. LeetCode 134. 加油站 题目链接&#xff1a;https://leetcode.cn/problems/gas-station/description/ 文章链接&#xff1a;https://programmercarl.com/0134.加油站.html 视频链接&#xff1a;https://www.bilibili.com/video/BV1jA411r7WX 思路&#xff1a; 贪心&#xff…...

代理模式(大话设计模式)C/C++版本

代理模式 C #include <iostream> using namespace std;class Subject // Subject 定义了RealSubject和Proxy的共用接口..这样就在任何使用RealSubject的地方都可以使用Proxy { public:virtual void func(){cout << "Subject" << endl;} };class R…...

本人学习保存-macOS打开Navicat提示「“Navicat Premium”已损坏,无法打开。 你应该将它移到废纸篓。」的解决方法

新安装了macOS Ventura&#xff0c;打开Navicat Premium&#xff0c;发现会提示&#xff1a; “Navicat Premium”已损坏&#xff0c;无法打开。 你应该将它移到废纸篓。 遇到这种情况&#xff0c;千万别直接移到废纸篓&#xff0c;是有办法解决的。在这里记录一下解决方案。 …...

《Cross-Image Pixel Contrasting for Semantic Segmentation》论文解读

期刊&#xff1a;TPAMI 年份&#xff1a;2024 摘要 研究图像语义分割问题。目前的方法主要集中在通过专门设计的上下文聚合模块(如空洞卷积、神经注意力)或结构感知的优化目标(如iou样损失)挖掘"局部"上下文&#xff0c;即单个图像中像素之间的依赖关系。然而&…...

技术周总结 2024.07.08~07.14(算法,Python,Java,Scala,PHP)

文章目录 一、07.13 周六1.0&#xff09;算法题&#xff1a;字符串中的单词反转1.1&#xff09; 问题01:可靠性计算中的MTTR MTTF MTBF 分别指什么&#xff1f;他们之间有什么联系&#xff1f;MTTR (Mean Time to Repair)MTTF (Mean Time to Failure)MTBF (Mean Time Between F…...

广东品牌网站建设968/seo关键词推广怎么做

2019独角兽企业重金招聘Python工程师标准>>> Redis单点时&#xff0c;当一台机器挂机了&#xff0c;redis的服务完全停止&#xff0c;这时就会影响其他服务的正常运行。下面利用redis sentinel做一个主从切换的集群管理。 下面两段官方的说辞&#xff1a; Redis Sen…...

网站建设招代理/上海sem

three.js 是一款WebGL框架&#xff0c;WebGL可以让我们在canvas上实现3D效果。实现3D效果在国内来说还算是比较新的东西&#xff0c;可供查阅的资料也不多。这篇文章仅是一个入门篇&#xff0c;介绍如何绘制一个3D正方体。介绍完毕&#xff0c;首先奉上实现的效果图&#xff1a…...

有哪些网站做外贸的/seo网站推广建站服务商

WPS中如何快速消除硬回车(转)在通常情况下&#xff0c;我们在WPS中用软回车表示换行&#xff0c;用硬回车标记段落结束。但有时&#xff0c;当我们用WPS 打开一个TXT文件或者从网上复制了一些文本后&#xff0c;发现段落中间也是用硬回车来表示换行&#xff0c;这样的文本编辑起…...

网站建设价格/青岛网络优化哪家专业

搬到了gipsyh.icu...

闵行区做网站/淘宝怎么设置关键词搜索

一&#xff0e;Core标签库 • 核心标签库主要包括通用标签、条件标签、迭代标签和与URL相关的标签。 • 在使用Core标签库的JSP文件的开始部分&#xff0c;添加代码&#xff1a; <%taglib uri"http://java.sun.com/jsp/jstl/core" prefix"c"…...

益阳购物网站开发设计/沈阳seo按天计费

字符串的构造函数和析构函数以及赋值函数的重载&#xff0c;是面试中经常考到的问题&#xff0c;意在考察应聘者对于重载以及构造函数、析构函数的理解。 程序如下&#xff1a; #include<iostream> #include<string.h> using namespace std;class String { public:…...