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

Linux初启征程指南:攻克常见系统指令与权限初理解

有时候觉得,电脑就像一个高贵冷艳的妹纸。

400,是她冷冰冰地说:“我听不懂你在说什么”;

401,是她无情地转身:“我不认识你,别说那些奇怪的话”;

403,是她残酷的拒绝:“我听懂你的话,也认出你的脸,可我不爱你”;

404,是她紧闭心门:“我这儿没有你想要的东西”;

503,是“呵呵我去洗澡”。

前言:

Linux是一个基于UNIX的开源操作系统,其核心(Kernel)是由Linus Torvalds在1991年首次发布的。它的设计初衷是为个人计算机提供一个免费的、开源的操作系统,但由于其强大的性能和安全性,如今被广泛应用于服务器、超级计算机、嵌入式系统等多个领域。

因此对于我们这群程序员来说,学好Linux也自然是不可避免的事情。(糟糕,头发不保了!!!)下面就斗胆让作者我来给大家介绍一下Linux系统的常用指令啦。

注意,以下指令的演示都是通过Xshell,CentOS 7.6 64bit版本进行。

常用指令: 

1、ls指令

对于目录来说,ls的作用是列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。

具体的使用方法是:ls + 【选项】+【目录或者文件】

 当没有指定目录或者文件时,ls默认列出当前路径下的所有文件与目录

如图,当我们没有添加额外选项,没有指定目录与文件,就会罗列当前路径的目录与文件信息,倘若指定了112目录,就会罗列112目录下的文件与目录。

选项是看情况选择是否添加,这会对ls指令添加修改部分效果,例如ls -l,就可以详细的罗列出文件的信息。 由于ls -l指令真的太常用了,所以后面衍生除了简化形式:ll,我们只需要输入ll,就可以做到与ls -l相同的效果。

2、pwd指令

在Linux系统上,我们经常会分辨不清楚自己到了哪个目录,这个时候,就需要pwd来帮助我们了。

我们只需要输出pwd指令,系统就会打印出我们当前所在的路径信息。

3、cd指令

在Windows上我们想要进入一个文件夹,只需要鼠标点击就行了,但是在Linux上却没有鼠标来给你点击,这时候就需要用到cd指令了,语法:cd +【目录名字】,就可以让我们直接进入这个目录。

可以看见,在使用cd之后,我们的路径已经更改到了112里面。

4、touch与mkdir指令

touch指令通常用来创建一个新的文件,在有些时候,也能通过touch来可更改文档或目录的日期时间,包括存取时间和更改时间。使用方法为:touch +【选项】...  文件...

 mkdir通常是用来创建一个目录,在选项中使用-p时甚至可以递归建立多个目录。

例如:mkdir –p test/test1,当此目录不存在test时,会主动创建一个test目录,随后在test里面再次创建一个test1目录。

5、rmdir与rm指令

rmdir是一个与mkdir相对应的命令,可以删除一个空目录(为该命令发出者所拥有)。而rm可以同时删除一个文件或者目录,具体用法是:rm +【-f-i-r-v】+【文件或者目录名】

6、cp与mv指令

创建与删除已经学到了,那么复制剪切自然也不能落下。而cp指令就是我们在linux实现复制的关键。语法为:cp +【选项】 +【源文件或目录 目标文件或目录】 

cp命令如果同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录, 则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。
mv 命令是 move 的缩写,可以用来移动文件或者将文件改名( move (rename) files ),是 Linux 系统下常用的命令,经常用来备份文件或者目录。
具体用法是: mv + 【选项】 +【源文件或目录】+【 目标文件或目录】
注意:
1. mv 命令中第二个参数类型的不同(是目标文件还是目标目录), mv 命令将文件重命名或将其移至一个新的目录中。
2. 当第二个参数类型是文件时, mv 命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个, mv 命令将各参数指定的源文件均移至目标目录中。
将text.c拷贝到test目录内:

 

我们首先先将test中的text.c删除:

随后返回上级目录并将text.c移动到test里: 

7、cat指令

cat指令可跟猫没有任何关系,他的作用是查看目标文件的内容:

用法:cat+【选项】+【目标文件】

8、more指令

more的作用与cat类似,用法也差不多,所以在这里就不多赘述。

9、less指令

先前介绍了两个输出文件内容的指令,但实际上less才应该是linux正统的输出工具,他的功能极其强大。less 的用法比起 more 更加的有弹性。

 more 的时候,我们并没有办法向前面翻, 只能往后面看但若使用了 less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!

除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。

用法:less+【选项】+【文件】

 10、head与tail指令

head  用来显示档案的开头至标准输出中,默认 head 命令打印其相应文件的开头 10 行。 
用法为: head+【选项...】+【文件...】
而tail 命令从指定点开始将文件写到标准输出,用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。使用 tail 命令的 -f 选项可以方便的查阅正在改变的日志文件 ,tail -f filename会把 filename 里最尾部的内容显示在屏幕上 , 并且不但刷新 , 使你看到最新的文件内容 .
用法为 tail + 【必要选项】+【可选选项】+【文件】    

11、find指令

find在日常使用中非常重要,用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)。

Linux下的find1命令提供了相当多的查找条件,功能十分强大。由于find的功能强大性,所以自然它的选项也就十分多,但绝大部分选项都值得我们去学习记忆。

即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。
在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系 统可能会花费很长的时间(这里是指30G字节以上的文件系统)。

用法为:find +【文件】+【选项】

12、grep命令

grep命令主要用于在文本文件或命令输出中搜索特定的字符串或正则表达式,并显示匹配的行。

用法为:grep +【选项】+【搜索字符串】+【文件名】

13、zip与unzip指令

zip目的是将目录或文件压缩成zip格式,而unzip就是将压缩文件解压。

用法:zip +【压缩后的文件名.zip】+【目标文件与目标文件夹】

 

14、tar指令

tai指令是用于创建、解压缩和管理归档文件的工具。

用法:tar +【选项】 +【归档文件名】+【文件或目录】

Linux系统中的权限初识: 

Linux 下有两种用户:超级用户( root )、普通用户。
超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$
于是我们可以使用su +用户名字的方法切换用户,但是对于root用户来说,可以直接切换,但普通用户切换为root就需要输入对应的root密码。
在Linux下,文件访问者一共有三种:
1、文件的拥有者
2、文件拥有者所在的小组(group)
3、其他成员
对于一个文件来说,我们可以用ll来查看他的详细信息:

我们可以看见,在每个目录或者文件前面十格要么是-,要么是字母,这十格位置的字母究竟有什么含义呢?

事实上,第一个字母表示文件的类型,比如,d就表示目录,-就表示为普通文件。

另外九个分为三组,三三为一组,分别表示为:拥有者权限,拥有者所属组权限,陌生人权限。

文件权限使用三个字母来表示:rwx。每个字母对应不同的权限:

  • r (read) - 读取权限:允许查看文件内容或列出目录内容。
  • w (write) - 写入权限:允许修改文件内容或在目录中创建、删除、重命名文件。
  • x (execute) - 执行权限:允许将文件作为程序执行或进入目录。

对于文件来说,r权限代表能不能看见内容,w代表能不能改写,x是个别可执行程序你是否拥有执行他的权限。

  • r (读取)

    • 作用:允许用户查看文件的内容。
    • 示例:如果一个文本文件具有读取权限,用户可以使用 catlessmore 等命令查看其内容。
  • w (写入)

    • 作用:允许用户修改文件的内容。
    • 示例:如果一个文件具有写入权限,用户可以编辑文件、追加内容或删除内容。例如,使用 nanovi 编辑器来修改文件内容。
  • x (执行)

    • 作用:允许用户将文件作为程序执行。
    • 示例:如果一个文件具有执行权限,并且是一个脚本或可执行文件,用户可以通过命令行运行它,例如 ./script.sh./program

而对于目录就不同了:

  • r (读取)

    • 作用:允许用户列出目录中的文件和子目录。
    • 示例:如果一个目录具有读取权限,用户可以使用 ls 命令查看目录中的文件和子目录。
  • w (写入)

    • 作用:允许用户在目录中创建、删除和重命名文件和子目录。
    • 示例:如果一个目录具有写入权限,用户可以使用 touch 创建新文件,使用 rm 删除文件,或使用 mv 重命名文件。
  • x (执行)

    • 作用:允许用户进入目录并访问其中的文件和子目录(即改变工作目录到这个目录)。
    • 示例:如果一个目录具有执行权限,用户可以使用 cd 命令进入该目录,并访问目录中的文件(假设还有适当的读取权限),并且在该目录中用各种指令。

 我们通常可以用八进制来代表rwx三种权限,r为4,w为2,r为1:

在Linux中,我们有多种方法更改一个文件的对应访问者的对应权限。:

chmod:

功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:
R -> 递归修改目录文件的权限
(说明:只有文件的拥有者和root才可以改变文件的权限)

例如,我们可以使用chmod g+w +【对应文件】来修改group的权限。 

 或者,也可以实用之前说到的八进制数字代表相应的权限。

假设你想为某个文件或目录设置以下权限:

  • 用户(User)拥有 rwx 权限(7)。
  • 组(Group)拥有 rx 权限(5)。
  • 其他用户(Others)拥有 r-- 权限(4)。

这些权限的八进制表示法是 754

chown

功能 :修改文件的拥有者
格式 chown [ 参数 ] 用户名 文件名

chgrp

功能 :修改文件或目录的所属组
格式 chgrp [ 参数 ] 用户组名 文件名
常用选项 -R 递归修改文件或目录的所属组

 掩码:

在Linux系统中,掩码umask)用于设置默认的文件和目录权限。当用户创建新的文件或目录时,系统会根据当前的掩码值来决定这些文件或目录的默认权限。

掩码的工作原理

假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask,例如普通用户掩码为0002,创建文件的最终权限就为775,为了方便记忆,我们可以理解为777减去掩码的数。

我们可以用umask查看掩码或者修改掩码。

粘滞位:

由上文目录的权限可知,只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限.

这好像不太科学啊, 我创建的一个文件, 凭什么被你删掉?

为此,就诞生了粘滞位;

粘滞位(Sticky Bit)是Linux文件系统中的一种特殊权限位,通常用于目录,主要目的是控制用户对该目录下文件的删除权限。

粘滞位的作用

粘滞位通常用于公共目录(如 /tmp),其作用是:即使用户对目录有写权限,用户也只能删除或重命名自己拥有的文件,不能删除或重命名其他用户的文件。

粘滞位的使用场景

  • 公共目录:在诸如 /tmp 这样的公共目录中,多个用户可以创建文件。粘滞位确保用户只能删除或修改自己的文件,避免误操作或恶意删除其他用户的文件。

设置粘滞位

粘滞位可以通过 chmod 命令设置,方式有两种:符号方式和八进制方式。

1、chmod +t   +【目标文件】

2、chmod 1755 +【目标文件】(1就代表加了粘滞位)

当一个目录被设置为 " 粘滞位 "( chmod +t), 则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除

总结:

在Linux系统中,掌握常用指令和文件权限管理是每个程序员不可或缺的技能。这些指令不仅帮助我们在没有图形界面的环境中灵活操作文件和目录,还确保了系统的安全性与稳定性。

通过lspwdcd等基础指令,我们可以快速浏览目录内容、确认当前位置以及切换工作目录;利用touchmkdirrmdirrm等指令,轻松实现文件和目录的创建与删除操作;借助cpmv,我们能完成文件和目录的复制与移动,而catmoreless则提供了多样化的文件内容查看方式。

在权限管理方面,chmodchownchgrp等命令为我们提供了灵活的方式来调整文件和目录的访问权限,确保系统内的资源被合理使用。同时,理解和应用粘滞位(Sticky Bit)与掩码(umask)有助于我们更精细地控制目录和文件的访问和操作行为。

相关文章:

Linux初启征程指南:攻克常见系统指令与权限初理解

有时候觉得,电脑就像一个高贵冷艳的妹纸。 400,是她冷冰冰地说:“我听不懂你在说什么”; 401,是她无情地转身:“我不认识你,别说那些奇怪的话”; 403,是她残酷的拒绝&…...

第十九节、野猪受伤死亡逻辑动画

一、协程 在这个代码中,update更新非常快,不会有时间去addforce增加力 所以需要使用协程,同时开启 1、写法 WaitForSeconds(0.45f) 意思是等待时间0.45秒后 写完协程程序后,需要开启 ,固定写法如下 2、注意 dir是局…...

vue 开发工具 Hbuilder 简介及应用

一、简介 HBuilderX 是一款流行的前端开发工具,由DCloud公司开发。它支持多种编程语言,如HTML、CSS、JavaScript、Vue、UniApp等,非常适合用来开发Web应用、移动端应用和跨平台应用。 官网地址:https://www.dcloud.io/hbuilderx.…...

【杂谈】-MQTT与HTTP在物联网中的比较:为什么MQTT是更好的选择

MQTT与HTTP在物联网中的比较:为什么MQTT是更好的选择 文章目录 MQTT与HTTP在物联网中的比较:为什么MQTT是更好的选择1、什么是MQTT2、什么是HTTP3、MQTT和HTTP之间的差异 MQTT(消息队列遥测传输)和HTTP(超文本传输协议…...

冠豪猪优化算法(CPO)、卷积神经网络(CNN)与支持向量机(SVM)结合的预测模型(CPO-CNN-SVM)及其Python和MATLAB实现

### 一、背景 在现代数据挖掘和机器学习领域,特征选择与模型优化是两个重要的研究方向。随着深度学习的发展,卷积神经网络(CNN)在图像、视频等多媒体数据处理中的表现优异。然而,传统的CNN模型通常需要大量的标注数据和…...

【通信原理】

通信原理 二、频谱与随机信号2.1 频谱2.1.1 频谱or频谱密度函数2.1.2 幅度谱(幅频特性)or相位谱(相频特性) 2.2 能量信号2.2.1 什么是能量信号2.2.2 巴塞瓦尔定理2.2.3 维纳钦辛定理 2.3 功率信号2.3.1 功率信号2.3.2 巴塞瓦尔定理…...

有序数组的平方(LeetCode)

题目 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 解题 以下算法时间复杂度为 def sortedSquares(nums):n len(nums)result [0] * n # 创建一个结果数组,长度与 nums 相同le…...

Python配置镜像

1. 查看当前源 pip config get global.index-url 2. 临时变更源 pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple 3. 永久变更源 清华(推荐速度最快) pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 百…...

Python新手错误集锦(PyCharm)

# 自学Python,用Pycharm作环境。我这个手新到这时我学习的第一个编程软件,且本人专业是化学,以前对电脑最高级的使用是玩扫雷游戏。所以这里集合的错误都是小透明错误,大部分人请绕道。不断更新中...... 缩进错误 记住“indent”…...

CTFHUB-web-RCE-php://input

开启题目 网页显示源代码,判断如果参数以 php:// 开头,那么执行 include 函数将参数值作为文件包含进来。否则,输出字符串 Hacker 。 点击下面的 phpinfo 跳转之后发现了一个 php 版本页面 使用 file 查看 php://input, 感觉这个…...

Python网络爬虫核心面试题

网络爬虫 1. 爬虫项目中如何处理请求失败的问题?2. 解释HTTP协议中的持久连接和非持久连接。3. 什么是HTTP的持久化Cookie和会话Cookie?4. 如何在爬虫项目中检测并处理网络抖动和丢包?5. 在爬虫项目中,如何使用HEAD请求提高效率&a…...

DSL domain specific language of Kola

How we design Kola - ApiHugKola background, Kola a consumer driver tester frameworkhttps://apihug.com/zhCN-docs/kola/003_dsl_contract Concept 在 Kola 定位中 Kola 是什么, 是致力于提供一个让相关各方都能够理解共同创造的测试框架和工具。 同时 Kola 是建立于业界…...

【RISC-V设计-05】- RISC-V处理器设计K0A之GPR

【RISC-V设计-05】- RISC-V处理器设计K0A之GPR 文章目录 【RISC-V设计-05】- RISC-V处理器设计K0A之GPR1.简介2.设计顶层3.内部结构4.端口说明5.设计代码6.总结 1.简介 通用寄存器(General Purpose Register)是处理器设计中的重要组成部分,在…...

Linux/C 高级——shell脚本

1. shell脚本基础概念 1.1概念 shell使用方式:手动下命令和脚本 脚本本质是一个文件,文件里面存放的是特定格式的指令,系统可以使用脚本解析器翻译或解析指令并执行(它不需要编译)。 shell脚本本质:shell命…...

SpringBoot面试题整理(1)

面试整理 前置知识 ApplicationContextInitializerApplicationListenerBeanFactoryBeanDefinitionBeanFactoryPostProcessorAwareInitializingBean/DisposableBeanBeanPostProcessor 面试题 SpringBoot启动流程IOC容器初始化流程Bean声明周期Bean循环依赖SpringMVC执行流程…...

LVS原理及实例

目录 LVS原理 LVS概念 lvs集群的类型 lvs-nat 解释 传输过程 lvs-dr 解释 传输过程 特点 lvs-tun LVS(Linux Virtual Server)常见的调度算法 防火墙标记(Firewall Marking)结合轮询调度 实战案例 lvs的nat模式配置 …...

Spring统一功能处理:拦截器、响应与异常的统一管理

目录 一.拦截器 二.统一数据返回格式 三.统一异常处理 一.拦截器 拦截器是Spring框架提供的核⼼功能之⼀,主要⽤来拦截⽤⼾的请求,在指定⽅法前后,根据业务需要执⾏预先设定的代码。 也就是说,允许开发⼈员提前预定义⼀些逻辑…...

深入理解小程序的渲染机制与性能优化策略

一、小程序的渲染机制 小程序的渲染机制主要由两部分组成:渲染层和逻辑层。渲染层负责页面的渲染,逻辑层负责处理业务逻辑和数据处理。两者通过一个安全的、高效的通信机制进行数据传输和事件通知。 渲染层:在渲染层,WXML 模板会…...

Linux:多线程(二.理解pthread_t、线程互斥与同步、基于阻塞队列的生产消费模型)

上次讲解了多线程第一部分:Linux:多线程(一.Linux线程概念、线程控制——创建、等待、退出、分离,封装一下线程) 文章目录 1.理解Linux下线程——理解tid2. Linux线程互斥2.1相关概念2.2引入问题分析问题解决思路 2.3L…...

Pandas中`str`对象解析与应用实例

在数据科学领域,字符串操作是数据清洗和处理中不可或缺的一部分。Pandas的str对象为我们提供了一个强大而灵活的字符串操作方法集。本文将深入探讨str对象的各种应用,并通过代码示例和输出展示如何有效地处理字符串数据。 关键词 Pandas, 字符串操作, …...

电脑频繁黑屏怎么办

有没有遇到过这种糟心事儿:正兴致勃勃地打游戏、赶方案,或者追着喜欢的剧,电脑突然黑屏了!而且还频繁出现,简直让人抓狂。今天咱们就来好好聊聊,电脑频繁黑屏到底该怎么办。 硬件问题排查 检查显示器连接…...

保姆级Elasticsearch集群部署指导

一、环境准备 1. 硬件要求(单节点建议) CPU:至少2核(生产环境4核)内存:至少4GB(生产环境建议16GB,且为偶数,如8GB、16GB)磁盘:至少50GB SSD&…...

macOS 连接 Docker 运行 postgres,使用navicat添加并关联数据库

下载 docker注册一个账号,登录 Docker创建 docke r文件 mkdir -p ~/.docker && touch ~/.docker/daemon.json写入配置(全量替换) {"builder": {"gc": {"defaultKeepStorage": "20GB",&quo…...

前端常见错误

1. TypeError: Cannot read property xxx of undefined 错误原因:尝试访问一个 undefined 或 null 对象的属性 / 方法。 示例代码: const user { name: "John" }; console.log(user.address.street); // user.address 为 undefined 解决方…...

无人机螺旋桨平衡方法详解

螺旋桨平衡对于优化无人机性能、可靠性和使用寿命至关重要。不平衡的螺旋桨会产生过度振动,导致推力效率降低、噪音增大,并加速轴承和传感器的磨损。 螺旋桨平衡可通过三种方式实现:静态平衡、动态平衡和气动平衡。 静态与动态平衡是通过在…...

如何做好一份技术文档?(上篇)

如何做好一份技术文档?(上篇) 上篇:技术文档的基石设计 ——构建可持续迭代的文档体系 文档金字塔模型 [概念层] 为什么 —— 设计理念/适用场景 ▲ [指南层] 怎么做 —— 任务教程/最佳实践 ▲ [参考层] 是什么 ——…...

接口重试的7种常用方案!

前言 记得五年前的一个深夜,某个电商平台的订单退款接口突发异常,因为银行系统网络抖动,退款请求连续失败。 原本技术团队只是想“好心重试几次”,结果开发小哥写的重试代码竟疯狂调用了银行的退款接口 82次! 最终导致…...

【PCB工艺】绘制原理图 + PCB设计大纲:最小核心板STM32F103ZET6

绘制原理图和PCB布线之间的联系,在绘制原理图的时候,考虑到后续的PCB设计+嵌入式软件代码的业务逻辑,需要在绘制原理图之初涉及到 硬件设计流程的前期规划。在嵌入式系统开发中,原理图设计是整个项目的基础,直接影响到后续的: PCB 布线效率和质量 ☆☆☆重点嵌入式软件的…...

Redis最佳实践——性能优化技巧之缓存预热与淘汰策略

Redis在电商应用中的缓存预热与淘汰策略优化 一、缓存预热核心策略 1. 预热数据识别方法 热点数据发现矩阵: 维度数据特征发现方法历史访问频率日访问量>10万次分析Nginx日志,使用ELK统计时间敏感性秒杀商品、新品上线运营数据同步关联数据购物车关…...

AI生态警报:MCP协议风险与应对指南(下)——MCP Host安全

AI生态警报:MCP协议风险与应对指南(上)——架构与供应链风险https://blog.csdn.net/WangsuSecurity/article/details/148335401?sharetypeblogdetail&sharerId148335401&sharereferPC&sharesourceWangsuSecurity&spm1011.24…...