Linux基础知识与实操-篇二:初识Linux目录管理与操作

news2024/11/25 2:54:37

文章目录

  • 文件与目录管理
    • 相对路径与绝对路径
    • 目录相关操作
    • 查阅文件相关操作
      • 文件预设权限
    • 搜索与文件
      • 文件的搜索
    • 基本权限与指令
  • 最后

在经过上篇 篇一:初识Linux文件权限与配置 后,我们已经基本熟悉并使用了Linux关于文件管理相关的内容,本篇则继续从文件深入,探究目录管理,这里一定要记住: 在Linux系统中,一切皆文件!

文件与目录管理

相对路径与绝对路径

  • 绝对路径:
    由 根目录/写起,例如 /usr/share/doc
    一般来说,如果是 shell脚本等类似的程序,务必使用 绝对路径的写法
  • 相对路径:
    不是由/写起,. 表示当前目录,.. 表示上一级目录(父目录)

关于目录的基本常识:
使用命令cd - 就可以回到上一个工作目录,实现直接跳回的操作了
image

在所有目录底下都会存在的两个目录,分别是『.』与『..』 分别代表此层与上层目录的意思

那么在Linux 的根目录下,是否也存在上层目录呢?
若使用『 ls -al / 』去查询,可以看到根目录下确实存在 . 与 … 两个目录,再仔细的查阅, 可发现这两个目录的 属性与权限完全一致,这代表根目录的上一层(…)与根目录自己(.)是同一个目录

目录相关操作

cd  	变换目录

pwd  	见识当前目录,pwd -P 可以取得正确的目录名称,而不是以链接文件的路径来显示

mkdir  	建立一个新目录
-m 选项,配置文件的权限,直接设定,不需要看预设权限
-p 选项,直接将所需要的多层目录,递归建立起来

rmdir  	删除一个空目录

image

执行文件路径的变量:
为什么在Linux系统的任何地方都可以执行 基础命令,比如 ls 命令

因为,我们在写入命令后,系统会按照 PATH 的设定去设定每个 PATH定义的目录下搜寻文件名为 ls 的可执行文件,如果在 PATH 定义的目录中含有多个文件名为 ls 的可执行文件,那么先搜寻到的同名指令先被执行。
image

因为基本都包含在 PATH 这个变量内了,所以基本在任何地方都可以使用 这些基本命令了

查看文件的基本操作:ls
更多选项如下:
image

复制文件或目录:cp
image

cp 指令在不同身份的人执行,会有不同的结果产生,而且差异很大
一般在备份文件的时候,如果使用cp 命令,默认 cp 的 来源档和目的档 的权限是不同的,目的档 的拥有者通常会是指令的操作者本身,就是说如果 root 用户 cp 了其他用户的目录,那么目的目录的拥有者就变为 root用了,不再是 其他用户了
所以在备份的时候,需要特别注意 特殊权限和文件,例如 密码文件(/etc/shadow), 需要 -a-p 选项才可以完整复制问价权限的选项

如果遇到 连接文件,cp 命令是默认 复制源文件,而不是复制 链接文件的属性,如果非要链接文件,就需要指定 -d 选项了

移除文件或目录:rm
image

rm 指令前 加上 \,可以忽略 alias 的指定选项

移动文件目录或更名:mv
image

重命名文件,也可以使用 rename 命令

查阅文件相关操作

查阅一个文件的命令,不仅仅是 cat 命令(这个是连续 c o n c a t e n a t e concatenate concatenate的简写

  • cat: 从第一行开始显示文件内容
    image
  • tac: 从最后一行开始显示,cat 命令的反写
  • nl: 显示的时候,可以输出行号
    image
  • more: 一页一页的显示文件内容
    image
  • less: 与 more 类似,但是可以向前翻页
    image
  • head: 只看开头几行,如果 n 是负数,那么就不列出从尾计算的n行,打印从头开始的剩余行
    image
  • tail: 只看后面几行,如果要获取 中间的几行,可以配合管道符,使用 headtail 实现
    image
  • od: 以二进制方式读取文件内容
    image

修改文件时间或创建文件:touch
image

要注意一点,我们在复制一个文件时,复制左右的属性,唯独无法复制 ctime 属性
image

文件预设权限

我们可以通过 chmod 更改权限,但是在建立目录 或 文件 的时候,默认会有一个权限,这个权限的赋予,就是通过 umask 命令实现的:

# 八进制数字表示权限,第一位表示特殊权限,可以先忽略,重点关注后面三个
[root@AliComputer william]# umask
0022
# -S 选项执行使用字母表示权限
[root@AliComputer william]# umask -S
u=rwx,g=rx,o=rx
[root@AliComputer william]# 

在默认权限属性上,umask 表示的是 该默认值需要减掉的权限,因为 r w x 可以分别用八进制数字 4 2 1 来表示,比如上面的 022, 就表示 当前用户拥有全部权限,同组其他用户被去掉了 写权限,其他组用户被去掉了 写权限

如果要修改默认权限, 只需要 umask num 就可以了,其中 num 为 八进制权限表示数字

配置文件隐藏属性:chattr
image

这个指令在 系统的数据安全上有很重要的作用,最重要的就是 +i+a 属性了

显示文件隐藏属性:lsattr
image

显示文件类型:file
image

搜索与文件

搜寻指令或文件:which
image

which 预设是找 PATH 内所规范的目录 , 所以有些 bash 命令是无法通过 which 命令找到的

文件的搜索

一般是不采用 find 命令搜索文件的,不仅仅是因为速度慢,也是因为 对硬盘操作很多,所以一般是使用 whereislocate 命令来获取 文件,实在找不到了,才会考虑使用 find 命令

在特定目录中寻找文件或文件名:whereis
image

因为 whereis 只找几个特定的目录而已~ 并没有全系统去查询之故。所以说, whereis 主要是针对 /bin /sbin 底下的执行档, 以及 /usr/share/man 底下的 man page 文件,跟几个比较特定的目录来处理而已。所以速度当然快的多!

文件的部分名称的搜索:locate
image

因为 locate 寻找的数据是由『已建立的数据库 /var/lib/mlocate/』 里面的数据所搜寻到的,所以不用直接在去硬盘当中存取数据, 速度就很快
但是一般该数据库是每天执行一次更新操作,所以入股还 没有更新数据库的话,就会找不到该文件,可以选择 手动更新数据库:updatedb 命令,updatedb 指令会去读取 /etc/updatedb.conf 这个配置文件的设定,然后再去硬盘里面进行搜寻文件名的动作, 最后就更新整个数据库文件(这里就会读取硬盘,所以会很慢)

  • updatedb:根据 /etc/updatedb.conf 的设定去搜寻系统硬盘内的文件名,并更新 /var/lib/mlocate 内的数据库
    文件;
  • locate:依据 /var/lib/mlocate 内的数据库记载,找出用户输入的关键词文件名

在硬盘中搜索文件:find
image

我们现在知道 atime(上一次访问该文件的时间[读取或执行该文件]), ctime(上一次修改该文件内容或访问权限等) 与 mtime(上一次修改文件内容[特指文件内容]) 的意义,如果你想要找出一天内被
更动过的文件名, 可以使用上述范例一的作法。但如果我想要找出『4 天内被更动过的文件档名』
呢?那可以使用『 find /var -mtime -4 』。那如果是『4 天前的那一天』就用『 find /var -mtime 4 』。有没有加上『+, -』差别很大!!

find 的其他用法:
image

还有更多用法:
image
image

find 的特殊功能:
image

find 命令可以实现 额外的动作,上面 范例八 的例子图解如下:
image

基本权限与指令

一、让用户能进入某目录成为『可工作目录』的基本权限为何:

  • 可使用的指令:例如 cd 等变换工作目录的指令;
  • 目录所需权限: 用户对这个目录至少需要具有 x 的权限
  • 额外需求:如果用户想要在这个目录内利用 ls 查阅文件名,则用户对此目录还需要 r 的权限。

二、用户在某个目录内读取一个文件的基本权限为何?

  • 可使用的指令:例如本章谈到的 cat, more, less 等等
  • 目录所需权限:用户对这个目录至少需要具有 x 权限;
  • 文件所需权限: 使用者对文件至少需要具有 r 的权限才行!

三、让使用者可以修改一个文件的基本权限为何?

  • 可使用的指令:例如 nano 或未来要介绍的 vi 编辑器等;
  • 目录所需权限:用户在该文件所在的目录至少要有 x 权限;
  • 文件所需权限: 使用者对该文件至少要有 r, w 权限

四、让一个使用者可以建立一个文件的基本权限为何?

  • 目录所需权限: 用户在该目录要具有 w,x 的权限,重点在 w 啦!

五、让用户进入某目录并执行该目录下的某个指令之基本权限为何?

  • 目录所需权限:用户在该目录至少要有 x 的权限;
  • 文件所需权限:使用者在该文件至少需要有 x 的权限

最后

一起提高,慢慢变强。

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

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

相关文章

CrossOver2023虚拟机软件安装双系统教程

您喜欢切换Windows系统吗?喜欢?好吧,您随意。对于其他人而言,想要不依赖于笨重的 Windows 模拟器就能在您的 Mac 系统上运行微软的应用程序,CrossOver是最简单的方式。讲真,您试过模拟器了吗?您…

如何使用Python访问和查询Google BigQuery数据

要使用Python查询Google BigQuery数据,需要将Python客户端连接到BigQuery实例。 将会云客户端库用于Google BigQuery API. 假设您已经设置了Python开发环境。(支持3.7-3.11版本)要安装该库,请在命令行中运行以下命令: pip install --upgrade…

【国际化Intl】Flutter 国际化多语言实践

目标:实现flutter国际化 提示:这里参考一下几个链接 例如: https://github.com/ThinkerWing/language https://juejin.cn/post/6844903823119482888 这篇也很详细,还有包括兼容中文的繁体简体… 可以看看 feat/use-Flutter-Int…

python函数进阶

一、函数多返回值 Q:如果一个函数内两个return,程序如何执行? A:只执行了第一个return,原因是因为return可以退出当前函数,导致return下方的代码不执行 但是如果一个函数需要有多个返回值,该如…

华为云数据库GaussDB(for Cassandra)揭秘:高性能低成本是什么样的体验?

在我们的日常理念中,追求性价比是最为常见的,但是你知道购买低配置还能享受高性能、低延时、超低价的数据库有哪些吗?今天我们就用数据说话,带你深入了解GaussDB(for Cassandra)挑战高性价比! 众所周知,有…

Android开发者们想想:到底是市场饱和?还是你们技术饱和?

根据我的不客观数据体验来看,最饱和的是iOS,同样发布一个职位iOS是其他技术岗位10倍的投递量。当然Android作为一个已经市场化将近十几年的技术门类,它必然早已经是成熟常态。这样的技术行业都不再会有爆炸式的增长。连同Android硬件、手机、…

Go学习之路:方法和接口(DAY 3)

文章目录前引方法和接口1.1、方法/声明方法1.2、方法/捆绑其他类型1.3、方法/方法常用指针传递1.4、方法/普通函数指针传递和方法指针传递区别2.1、接口/方法签名集合2.2、接口/接口断言2.3、接口/switch case练习题、接口/stringer实现字符串打印2.4、接口/错误前引 昨天终于算…

机器学习5数据归一化Feature Scaling

文章目录一、为什么要数据归一化?二、解决方案数据归一化,解决方案1:最值归一化normalization:解决方案2:均值方差归一化standardization;三、最值归一化处理normalization四、均值方差归一化Standardization一、为什么…

ICMP协议(3层网络层协议:IP、ARP、ICMP)

1、ICMP协议端口号? 没有端口号,向TCP/UDP这些都是没有端口号只有协议号,只有应用层才有端口号。 2、ICMP协议是干什么的? 网络探测与回馈机制 1)网络探测 2)路由跟踪,windows命令:…

ABP:内置logger and 第三方库serilog 之间的关系

今天在看项目的日志记录功能&#xff0c;比较疑惑为什么项目中有的地方使用 Logger< T > _logger 然后又在资源文件下看见日志的第三方库 Serilog 解答&#xff1a; ASP.NET Core Build-in Logging ASP.NET Core 提供了 Logging 的抽象接口, third party 都会依据抽象来…

DJ 12-3 程序控制指令

目录 1. 无条件转移指令 JMP &#xff08;1&#xff09;段内直接转移 &#xff08;2&#xff09;段内间接转移 &#xff08;3&#xff09;段间直接转移 &#xff08;4&#xff09;段间间接转移 2. 条件转移指令 3. 循环控制指令 &#xff08;1&#xff09;LOOP 指令 &…

R语言中不同类型的聚类方法比较

聚类方法用于识别从营销&#xff0c;生物医学和地理空间等领域收集的多变量数据集中的相似对象。我们围绕聚类技术进行一些咨询&#xff0c;帮助客户解决独特的业务问题。它们是不同类型的聚类方法&#xff0c;包括&#xff1a; 划分方法分层聚类模糊聚类基于密度的聚类基于模…

Qt Creator 的 Shadow build(影子构建)

目录 一、什么是影子构建 二、如何取消影子构建 一、什么是影子构建 做wpf项目时&#xff0c;项目里面会有bin文件夹&#xff0c;里面有debug和release文件夹&#xff0c;生成的exe就在debug或release里面&#xff0c;但第一次做qt时&#xff0c;发现项目文件夹里面只有源码文…

2022 JuiceFS 社区用户调研结果出炉

为了使 JuiceFS 的发展更贴合用户的真实需求&#xff0c;我们在三周前向社区发出了一份调研问卷。此次调研面向已经将 JuiceFS 应用于生产环境的用户&#xff0c;了解其在应用 JuiceFS 前和使用中的体验与评价。 参与此次调研的用户&#xff0c;大型企业占比最高&#xff0c;有…

李炎恢ECMAScript6 / ES6+(一)

01. ECMAScript6 简介和历史 学习要点&#xff1a; 1.ES6 简介 2.ECMAScript 历史 3.学习和创建 Demo 本节课我们来开始了解 ECMAScript6(简称 ES6)&#xff0c;着重了解它的标准和历史。 一&#xff0e;ES6 简介 ECMAScript6 简称 ES6&#xff0c;是 JavaScript 语言的下一…

Vue3项目引入 vue-quill 编辑器组件并封装使用

这是一款支持Vue3的富文本编辑器 GitHub地址&#xff1a;https://github.com/vueup/vue-quill/ VueQuill官网&#xff1a;https://vueup.github.io/vue-quill/ // 查看 vueup/vue-quill 版本 npm view vueup/vue-quill versions --json// 导入 vueup/vue-quill 依赖包 npm i v…

试编写算法(用C语言)打印值为x的结点的所有祖先,假设值为x的结点不多于一个。(递归实现和非递归实现)

&#xff08;一&#xff09;递归实现&#xff1a; 完整代码&#xff1a; #include<stdio.h> #include<stdlib.h> #include<iostream> using namespace std;#define MaxSize 100 typedef int ElemType; typedef struct BiNode {ElemType data;BiNode* lchil…

基于springboot摄影跟拍预定管理系统设计与实现的源码+文档

摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。…

最新版k8s 1.25版本安装

简介 Kubernetes&#xff08;k8s&#xff09;是自动化容器操作的开源平台。这些容器操作包括&#xff1a;部署、调度和节点集群间扩展。 具体功能&#xff1a; 自动化容器部署和复制。实时弹性收缩容器规模。容器编排成组&#xff0c;并提供容器间的负载均衡。 总而言之&…

PHP基于thinkphp的教材管理系统#毕业设计

教材是每个学生和学校都必须具备的教学资源之一,它是知识的载体,是学生汲取知识的土壤,好的教材可以做到事半功倍的效果。但是通常情况下教材都是批量进行购买和发放的,为了能够更好的对教材信息进行管理,我们通过PHP语言,thinkphp框架开发了本次的教材管理系统 教材管理系统,…