Linux基础【Linux知识贩卖机】

偶尔的停顿和修整,对于人生是非常必要的。 --随记
文章目录
- Linux目录
- 目录结构
- 磁盘分区
- 相关命令
- 相对路径和绝对路径
- 文件权限
- 用户分类
- umask
- 创建文件权限计算方法
- 粘滞位
- 总结
Linux目录
目录结构
Linux 操作系统采用了一种层次化的目录结构,常被称为标准的 Linux 文件系统层次结构(Filesystem Hierarchy Standard,缩写为 FHS)。

Linux 目录结构的主要内容:
| 目录名 | 说明 |
|---|---|
| /(根目录) | Linux 文件系统的最顶层,包含了所有其他目录和文件。 |
| /bin | 存放系统可执行程序(二进制文件),如常用的命令(ls、cp、rm等)。 |
| /boot | 包含启动 Linux 系统所需的文件,如内核、引导加载程序和配置文件。 |
| /dev | 存放设备文件,Linux 将硬件设备视为文件的形式进行访问和管理,如磁盘、键盘、鼠标等。 |
| /etc | 存放系统的配置文件,包括网络配置、用户配置、服务配置等。 |
| /home | 每个用户的主目录,用户的个人文件和设置存放在这里。 |
| /lib | 存放系统所需的共享库文件,这些库文件被可执行程序使用。 |
| /media | 用于挂载可移动媒体设备(如光盘、USB 等)的挂载点。 |
| /mnt | 临时挂载点,用于临时挂载其他文件系统,如挂载网络共享目录。 |
| /opt | 用于存放可选的应用程序包,通常由第三方供应商提供,与系统自带的软件包分开。 |
| /proc | 虚拟文件系统,提供有关系统内核和进程的信息,用于访问和配置内核参数。 |
| /root | 超级用户(root)的主目录。 |
| /sbin | 存放系统管理员使用的系统管理程序,这些程序通常需要超级用户权限才能运行。 |
| /srv | 存放服务(如网站、FTP)提供的数据,用于存储由特定服务提供的数据。 |
| /tmp | 存放临时文件,系统或用户创建的临时文件将存放在这里。 |
| /usr | 存放用户程序和文件,包括用户安装的软件、库文件、文档等。 |
| /var | 存放经常变化的文件,如日志文件、邮件、数据库文件等。 |
这些是 Linux 文件系统中的一些主要目录,它们的用途和功能各不相同,有助于组织和管理系统的文件和配置。
注意,不同的 Linux 发行版(如 Ubuntu、CentOS)可能会有一些细微的差异,但总体上保持了相似的目录结构。
磁盘分区
在 Linux 下,磁盘分区是将物理硬盘划分为不同的逻辑部分,每个分区可以作为一个独立的文件系统进行使用。磁盘分区可以提供数据隔离、性能优化、安全性和灵活性等优势。在 Linux 系统中,常用的磁盘分区方案包括以下几种:
| 分区 | 说明 |
|---|---|
| 主分区 | 主分区是在硬盘上进行的最基本的分区类型。一个硬盘最多可以有四个主分区,其中一个可以设为扩展分区。 |
| 扩展分区 | 扩展分区是用来划分逻辑分区的容器。一个扩展分区可以容纳多个逻辑分区,以便充分利用硬盘空间。 |
| 逻辑分区 | 逻辑分区是在扩展分区内创建的分区。逻辑分区的数量没有限制,可以根据需要创建。 |
| 引导分区 | 引导分区是用于存放引导加载程序和引导配置文件的分区。通常位于硬盘的开头部分,并具有启动标志。 |
| 根分区 | 根分区是 Linux 系统的根文件系统所在的分区。它包含了操作系统的核心文件和目录结构。 |
| /home 分区 | /home 分区是用于存放用户主目录的分区。将用户数据和设置分离到独立的分区可以方便进行备份和恢复。 |
| /boot 分区 | /boot 分区是存放启动所需文件的分区,包括内核、引导加载程序和配置文件。 |
| 交换分区 | 交换分区是用于虚拟内存(Swap)的分区。当系统内存不足时,部分数据可以转移到交换分区以释放内存。 |
在实际使用中,可以根据需求和实际情况选择适当的磁盘分区方案。分区的大小、数量和布局应根据系统的需求、硬件配置和预期的用途来进行规划。可以使用一些工具如 fdisk、parted 等来进行分区的创建和管理。
相关命令
在 Linux 系统中,你可以使用以下几种命令来查看已经存在的磁盘分区,这些命令可以帮助你查看和了解系统中已存在的磁盘分区的信息。但是需要注意,在使用这些命令时,可能需要使用超级用户权限(使用 sudo 前缀)来访问有关硬件和分区的详细信息。
fdisk 命令:fdisk 是一个强大的命令行工具,用于分区表的创建和管理。你可以使用以下命令查看磁盘分区信息:
sudo fdisk -l上述命令将列出系统中所有硬盘的分区信息,包括设备名称、分区类型、起始和结束扇区等。
parted 命令:parted 是一个分区编辑器,提供了更高级的功能和交互界面。你可以使用以下命令启动 parted,然后检查分区信息:
sudo parted (parted) print all上述命令将打印出所有磁盘的分区信息,包括分区号、起始和结束扇区、文件系统类型等。
lsblk 命令:lsblk 命令用于列出块设备的信息,包括磁盘和分区。你可以使用以下命令查看磁盘和分区的层次结构:
lsblk上述命令将显示系统中所有块设备的层次结构,包括磁盘、分区和挂载点。
df 命令:df 命令用于显示文件系统的磁盘空间使用情况,包括分区的挂载点和可用空间。你可以使用以下命令查看分区的挂载点和空间使用情况:
df -h上述命令将显示已挂载的文件系统的使用情况,包括分区的挂载点、总空间、已用空间和可用空间。
相对路径和绝对路径

在计算机系统中,相对路径和绝对路径是用于定位文件或目录位置的两种不同方式。
- 相对路径:相对路径是相对于当前工作目录(当前所在位置)的路径。它描述了如何从当前位置导航到目标文件或目录的路径。相对路径没有以根目录(/)开头。
例如,假设当前工作目录是/home/user/,而目标文件位于同一目录下的documents/file.txt,那么相对路径就是documents/file.txt。相对路径的优点是简洁,但需要确保当前工作目录的正确性,因为更改工作目录可能会影响相对路径的解析。
- 绝对路径:绝对路径是从根目录(/)开始的完整路径,它提供了文件或目录在文件系统中的完整位置。
例如,一个文件的绝对路径可以是/home/user/documents/file.txt,其中/表示根目录,home是根目录下的子目录,依次类推。绝对路径的优点是确定性,不受当前工作目录的影响,可以准确地定位文件或目录。
无论是相对路径还是绝对路径,它们都用于在文件系统中定位文件或目录。选择使用哪种路径取决于具体的需求和使用场景。相对路径适用于在当前位置进行相对导航的情况,而绝对路径则提供了更确切和独立的位置信息。
文件权限
用户分类
在Linux中,文件权限包括了对文件的读取、写入和执行的权限。文件权限按照用户分类,主要分为以下三个类别:
-
用户(User):用户是文件的拥有者,即文件的创建者或所有者。用户权限通常表示为文件权限中的第一组,用于指定文件所有者对文件的访问权限。
-
组(Group):组是用户的集合,可以将多个用户归为同一组。每个文件都可以属于一个主要组。组权限通常表示为文件权限中的第二组,用于指定文件所属组中的用户对文件的访问权限。
-
其他人(Other):其他人是除了文件所有者和所属组的用户之外的所有用户。其他人权限通常表示为文件权限中的第三组,用于指定其他用户对文件的访问权限。
在文件权限中,每个类别都有自己的权限设置,通常用以下符号来表示:
- r(读取权限):表示可以读取文件内容。
- w(写入权限):表示可以修改或写入文件内容。
- x(执行权限):表示可以执行文件(对于可执行文件)或者进入该目录(对于目录)。
使用数字表示权限时,r、w、x 分别对应数字 4、2、1。通过将这些数字相加,可以表示不同类别的权限组合。例如,权限设置为 rwxr-x— 表示用户具有读取、写入和执行权限,组具有读取和执行权限,其他人没有任何权限。这种基于用户分类的文件权限系统,使得可以根据用户的身份和所属组来限制对文件的访问和操作,提供了一定的安全性和细粒度的权限控制。
umask
umask(用户文件创建掩码)在Linux中用于确定新创建文件或目录的默认权限的设置。它指定了在创建新文件或目录时,文件系统应该屏蔽的权限位。umask 的值是一个八进制数,用于表示禁止设置的权限位。它的计算方式是将所需的权限从完全权限(通常是 777)中减去。umask 的作用是确保新创建的文件和目录不会自动获得过于宽松的权限,从而提高系统的安全性。
默认情况下,umask 的值通常是 0002。这意味着在创建新文件时,其他人(其他用户)不会被授予写入权限,而对于新创建的目录,其他人没有写入和执行权限。

umask 值的具体设置可能因操作系统和用户环境而有所不同。某些系统可能使用不同的默认 umask 值,或者用户可能在其配置文件中自定义了 umask 值。要查看当前系统中的 umask 值,可以在终端中运行 umask 命令。它将显示当前的 umask 值。
如果需要更改 umask 值,可以使用 umask 命令。例如,要将 umask 设置为 0002,可以运行以下命令:
umask 0002
这将更改当前会话的 umask 值。如果要使更改永久生效,可以将 umask 值添加到 shell 的配置文件(例如 ~/.bashrc 或 ~/.profile)中。
创建文件权限计算方法
-
确定所需的权限。根据文件的需求,确定用户、组和其他人所需的权限,例如读取、写入和执行权限。
-
确定 umask 的值。
-
将所需权限转换为对应的八进制数。例如,读取权限(r)对应 4,写入权限(w)对应 2,执行权限(x)对应 1。
-
计算权限。对于每个权限位,将所需权限与 umask 的反码进行按位与操作,以获取最终的权限设置。
-
应用权限。使用
chmod命令将计算得到的权限应用于文件。
例如,假设要创建一个文件,用户需要读取、写入和执行权限,组需要读取和执行权限,其他人不需要任何权限,并且当前的 umask 值是 0002。
计算步骤如下:
用户权限:rwx = 4 + 2 + 1 = 7
组权限:r-x = 4 + 0 + 1 = 5
其他人权限:— = 0 + 0 + 0 = 0
umask 的反码:0002 的反码是 0775。
计算结果:
用户权限:7 & ~0 = 7
组权限:5 & ~0 = 5
其他人权限:0 & ~2 = 0
最终的权限设置为:rwxr-x—。
然后,可以使用 chmod 命令将权限应用于文件:
chmod 750 filename
请注意,umask 的默认值通常是 0002,这意味着默认情况下其他人(其他用户)无法进行写入和执行操作。这样可以确保新创建的文件对其他人是只读的。
粘滞位
粘滞位(Sticky Bit)是一种特殊的权限位,用于设置目录的权限。当粘滞位设置在目录上时,只有目录所有者、文件所有者和超级用户能够删除或重命名该目录下的文件,即使其他用户对该目录拥有写权限。
粘滞位通常用于公共目录,例如 /tmp 目录,以确保只有文件的所有者能够删除或修改自己的文件,而其他用户不能删除或修改他人的文件。粘滞位可以通过设置目录的权限来启用,使用数字形式权限设置时,粘滞位的权限位表示为 1,使用符号形式权限设置时,粘滞位的符号为 “t” 或 “T”。
- 当粘滞位设置为 “t” 时,表示粘滞位已启用,并且其他用户不能删除或重命名目录下的文件,即使他们对目录有写权限。
- 当粘滞位设置为 “T” 时,表示粘滞位已启用,但其他用户可以删除或重命名目录下的文件,前提是他们对目录有写权限。

要启用粘滞位,可以使用 chmod 命令和数字形式或符号形式来设置目录的权限。以下是一些示例:
使用数字形式设置粘滞位为 “t”:
chmod 1755 directory
使用符号形式设置粘滞位为 “t”:
chmod +t directory
使用符号形式设置粘滞位为 “T”:
chmod +T directory
要检查目录是否设置了粘滞位,可以使用 ls 命令并查看权限列表。在粘滞位启用的目录中,权限列表中的最后一位会显示为 “t” 或 “T”。
总结
文章首先介绍了Linux中的目录相关知识,例如目录结构、磁盘分区等,然后对文件的权限等细节进行介绍,例如用户的分类,文件掩码以及创建文件权限的计算方式和粘滞位。希望文章对你有帮助!

相关文章:
Linux基础【Linux知识贩卖机】
偶尔的停顿和修整,对于人生是非常必要的。 --随记 文章目录 Linux目录目录结构磁盘分区相关命令 相对路径和绝对路径 文件权限用户分类umask创建文件权限计算方法粘滞位 总结 Linux目录 目录结构 Linux 操作系统采用了一种层次化的目录结构,常被称为标…...
CSS 边框、轮廓线
一、CSS边框: CSS边框属性允许指定一个元素边框的样式和颜色。 1)、边框样式:border-style属性用来定义边框的样式,border-style值: 2)、边框宽度:border-width属性用于指定边框宽度。指定变宽…...
Transformer架构 完整的处理流程
Transformer 是由多层的 Encoder 和 Decoder 构成的。每一层的 Encoder 和 Decoder 都包含了多头自注意力机制(Multi-head Self Attention)、前馈神经网络(Feed Forward)和添加及归一化(Add & Norm)。特…...
git and svn 行尾风格配置强制为lf
git CLI配置: // 提交时转换为LF,检出时转换为CRLF git config --global core.autocrlf true // 提交时转换为LF,检出时不转换 git config --global core.autocrlf input // 提交检出均不转换 git config --global core.autocrlf f…...
达梦数据库答案
1、 创建数据库实例,到/dm8/data下,数据库名:DEMO,实例名DEMOSERVER(10分) [dmdbadmServer ~]$ cd /dm8/tool [dmdbadmServer tool]$ ./dbca.sh1、 簇大小32,页大小16,登录密码&…...
基于SSM的楼房销售系统设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...
Blender做一个小凳子学习笔记
文章目录 创建椅座椅子腿靠背渲染 本文是这个B站视频的学习笔记:【Blender】爆肝两个月!拜托三连了!这绝对是全B站最用心的(没有之一)Blender 3D建模零基础入门 创建椅座 首先,需要了解其左上角和右上角的…...
Maven简介
一、Maven模型 二、模型实现 三、对应代码项目介绍...
后端工程化 | SpringBoot 知识点
文章目录 [SpringBoot] 后端工程化1 需求2 开发流程3 RequestController 类(操作类)3.1 简单参数(形参名和请求参数名一致)3.2 简单参数(形参名和请求参数名不一致)3.3 复杂实体参数3.4 数组参数3.5 集合参…...
Oracle(15)Managing Users
目录 一、基础知识 1、Users and Security 用户和安全 2、Database Schema 3、Checklist for Creating Users创建用户步骤 二、基础操作 1、创建一个用户 2、OS Authentication 操作系统身份验证 3、Dropping a User 删除用户 4、Getting User Information 获取用户信…...
自动化测试(Java+eclipse)教程
webdriver环境配置 1.下载chromedriver到本地(一定要选择和自己浏览器相对应的版本chromedriver下载地址) 2.加入到环境变量path中 webdriver工作原理 创建web自动化测试脚本 1.Maven项目创建 File->New->project->(搜索maven)选择maven pr…...
ThreadFactory 实例创建方式
匿名内部类 private final Executor executor;{ThreadFactory threadFactory new ThreadFactory() {Overridepublic Thread newThread(Runnable r) {Thread t new Thread(r);t.setDaemon(true);return t;}};executor Executors.newFixedThreadPool(shops.size(), threadFac…...
【自动化测试】Pytest框架 —— 跳过测试和失败重试
1、Pytest跳过测试用例 自动化测试执行过程中,我们常常出现这种情况:因为功能阻塞,未实现或者环境有问题等等原因,一些用例执行不了, 如果我们注释掉或删除掉这些测试用例,后面可能还要进行恢复操作&#…...
python 时间加法 输出t分钟后的时间
题目: 现在时间是a点b分,请问t分钟后,是几点几分? 输入: 第一行包含一个整数a 第二行包含一个整数b 第三行包含一个整数t 其中,0≤a≤23,0≤b≤59,0≤t,t分钟后还…...
51单片机-串口通信
文章目录 前言1.基础介绍2.串口实战3.4. 前言 1.基础介绍 常见1,2,3,电源 常用方式1 fosc外部晶振 2.串口实战 3. 4....
JAVA微信端医院3D智能导诊系统源码
医院智能导诊系统利用高科技的信息化手段,优化就医流程。让广大患者有序、轻松就医,提升医疗服务水平。 随着人工智能技术的快速发展,语音识别与自然语言理解技术的成熟应用,基于人工智能的智能导诊导医逐渐出现在患者的生活视角中…...
考研408-计算机网络 第二章-物理层学习笔记及习题
第二章 物理层 一 通信基础 1.1 物理层基本概念 1.1.1 认识物理层 物理层目的:解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是具体的传输媒体。 物理层主要任务:确认与传输媒体接口有关的一些特性,需要进行定义标…...
鸿蒙开发工具的汉化
1、下载汉化包 汉化插件下载地址:Chinese (Simplified) Language Pack / 中文语言包 - IntelliJ IDEs Plugin | Marketplace 百度网盘下载地址:链接:百度网盘 请输入提取码 DevEco Studio是基于IDEA223版本,下载汉化包时请注意…...
14:00面试,14:06就出来了,问的问题有点变态。。。。。。
从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到5月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…...
如何使用 NFTScan NFT API 在 zkSync 网络上开发 Web3 应用
zkSync 是由 Matter Labs 创建的,是一个以用户为中心的 zk rollup 平台,它是以太坊的第 2 层扩展解决方案,使用 zk-rollups 作为扩展技术,与 optimistic rollups 一样,zk-rollups 将会汇总以太坊主网上的交易并将交易证…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...




