指尖上的魔法:优雅高效的Linux命令手册

一、Linux基础指令

1. ls

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

-a:列出目录下的所有文件,包含以.开头的隐藏文件
-l:列出文件的详细信息
-d:将目录像文件一样显示,而不是显示目录下的文件
-i:输出文件的索引信息

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这些选项也可以混合使用
在这里插入图片描述

2. pwd

pwd显示用户当前所在的目录

在这里插入图片描述

3. cd

在了解cd命令之前,需要对路径有一个初步的认识。

路径:绝对路径、相对路径

/代表根目录

家目录/home/username或~(一般是这样,root用户除外),指定用户登录的时候,默认所处的路径叫做家目录

绝对路径一般从/(根目录)开始,不依赖于其他目录定位文件的方式

相对路径相对于当前用户所处目录位置,定位文件的路径方式

路径存在的意义树状组织方式,为了保证快速定位查找到指定的文件,而定位文件就需要具有唯一性的方案来实现。其中任何一个节点(目录/文件)都只有一个父节点(父目录)并且在同一目录下不能有同名文件,所以,从根目录开始,路径具有唯一性

使用场景:绝对路径一般在配置文件中使用,相对路径在命令行中使用较多

.表示当前目录

..表示上一级目录

cd改变工作目录。将当前工作目录改变到指定目录下

目录名:绝对路径/相对路径
-:直接回退到最近一次所处的目录
~:快速进入家目录

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

跳转至最近一次路径
在这里插入图片描述

4. touch

touchtouch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件

-a:修改access time
-m:修改modify time
-c:修改modify time
文件名:创建文件

不同的系统会有差别。
access time包括访问文件内容和文件属性
在这里插入图片描述

修改modify time,所以change time也会修改,modify time也属于文件属性,所以access time也会修改
在这里插入图片描述
在这里插入图片描述

5. mkdir

mkdir:在当前目录下创建目录

-p:可以是一个路径名称。此时若路径中的某些目录不存在,加上此选
项后,系统将自动建立好那些不存在的目录,即一次可以创建多个目
录。

在这里插入图片描述

6. rmdir

rmdir删除空目录

适用对象:具有当前目录操作权限的所有使用者

-p:当子目录被删除后,如果父目录也变成空目录,就连带父目录一起
删除。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7. rm

适用对象:所有使用者

rm删除文件或目录

-f:直接删除
-i:删除前逐一确认
-r:删除目录及其下所有文件

在这里插入图片描述

8. man

man查看手册(就像字典一样)。

用法:man -k 查找内容

简单介绍一下man手册,分为9章:

1.普通命令
2.系统调用
3.库函数
4.特殊文件
5.文件格式

在这里插入图片描述

9. cp

cp复制文件或目录

用法:cp  选项  源文件/目录  目标文件/目录
-f:强制复制文件或目录
-i:覆盖文件之前先询问
-r:递归处理,将指定目录下的文件与目录一并处理

在这里插入图片描述

如果目标文件存在就覆盖
在这里插入图片描述

递归强制拷贝整个目录
在这里插入图片描述

10. mv

mv用来移动文件或者将文件改名,经常用来备份文件或者目录

用法:mv  选项  源文件/目录  目标文件/目录
-f:如果目标文件已存在,不会询问直接覆盖
-i:若目标文件已存在,就会询问是否覆盖

在这里插入图片描述

若存在相同文件,改名即覆盖
在这里插入图片描述
在这里插入图片描述

11. cat

cat:查看目标文件的内容

cat  选项  文件
-b:对非空输出行编号
-n:对输出的所有行编号
-s:不输出多行空行(多行空行压缩成一行空行)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

12. more

more功能类似于cat,查看大文件,只能往下翻,不能往上翻

-n:指定输出行数
q:退出

在这里插入图片描述

13. less

less与more类似,但less可以随意浏览文件,而且less在查看之前不会加载整个文件

-i:忽略搜索时的大小写
-N:显示每行的行号
/关键词:向下搜索
?关键词:向上搜索
n:重复前一个搜索
N:反向重复前一个搜索
q:退出

在这里插入图片描述
在这里插入图片描述

14. head

head用来显示文件的开头至标准输出中,默认head命令打印其相应文件的开头10行

-n:显示的行数

在这里插入图片描述

15. tail

tail用来显示指定文件末尾内容。不指定文件时,作为输入信息进行处理,常用来查看日志文件

-f:循环读取
-n:显示行数

在这里插入图片描述
在这里插入图片描述

16. date

date显示时间

%Y:年份
%m:月份
%d:日期
%H:小时
%M:分钟
%S:秒数
%X:相当于%H:%M:%S
%F:相当于%Y:%m:%d
%s:时间戳

在这里插入图片描述

17. cal

cal用来查看日历等时间信息,如只有一个参数,则表示年份,如有两个参数,则表示月份和年份

-3:显示系统前一个月,当前月,下个月的日历
-j:显示在当年中的第几天(一年日期按天算,从一月一号开始算起,默
认显示当前月在一年中的天数)
-y:显示当前年份的日历

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

18. find

find在文件树中查找文件,并做出相应处理
在这里插入图片描述

查找小于1M的文件
在这里插入图片描述

查找大于1M的文件
在这里插入图片描述

19. which

which搜索系统指定的命令
在这里插入图片描述

20. whereis

whereis用于找到程序的源,二进制文件或手册
在这里插入图片描述

21. alias

alias设置命令的别名
在这里插入图片描述

22. grep

grep在文件中搜索字符串,将找到的行打印出来

-i:忽略大小写的不同
-n:输出行号
-v:反向匹配

在这里插入图片描述

23. top

top查看和管理系统的进程资源占用情况

-d:刷新的时间间隔
-n:刷新的次数
q:退出

24. zip、unzip

zip将目录或文件压缩成zip格式

-r:递归处理,将指定目录下的所有文件和子目录一并处理。

unzip解压
在这里插入图片描述
在这里插入图片描述

25. lsb_release

-a:查看当前操作系统发行版详细信息

在这里插入图片描述

26. rzsz

sz从远程服务器下载文件到本地计算机

用法:sz 文件名

rz从本地计算机上传文件到远程服务器

用法:rz

27. tar

tar打包/解包

-c:建立一个压缩文件
-z:是否同时具有gzip的属性(即是否需要用gzip压缩)
-v:压缩的过程中显示文件
-f:使用档名,f之后要立即接档名,不要再加参数
-x:解开一个压缩文件
-C:解压到指定目录

在这里插入图片描述
在这里插入图片描述

28. bc

bc进行浮点运算
在这里插入图片描述

29. uname

uname获取操作系统和电脑的相关信息

-a:详细输出所有信息。

在这里插入图片描述

二、重要的几个热键

Tab按键具有命令补全和档案补齐的功能
Ctrl+c按键让当前的进程停掉

三、shell命令及运行原理

在这里插入图片描述

命令的本质Linux系统中指定目录下的可执行文件
在这里插入图片描述

举一个简单的例子来理解一下外壳程序和操作系统的关系。

故事:有一个内向的男人小张,他喜欢一个女人如花,但是他并不善于和异性打交道,因此,需要一个媒婆去帮他说媒,所以,媒婆带着小张的需求去询问如花,媒婆说小张不仅条件好,而且长得帅,但是如花说不喜欢小张。于是媒婆带着结果找到了小张,告诉了小张。

在这里插入图片描述
看到这里,大家应该会有些问题。

1.为什么要有外壳?

小张是真心喜欢如花的,所以他还不想就这样放弃,于是让王婆再一次去帮他说媒,但是当王婆走到如花家门口的时候,看到如花家里坐着另一个男人李四,王婆一看到这个情况,连门都没进去直接就回去了,这样就保护了如花和李四的感情。

总结为了保护操作系统

从这里就可以看出,小张虽然不善于和异性打交道,但是和王婆打交道还是可以的。

总结方便用户操作,减少用户使用操作系统的成本

2.外壳是怎么工作的?

王婆一再将小张的要求搞砸了,这样下去会影响王婆的口碑啊,以后谁还敢找王婆说媒呢!于是王婆成立了一个媒婆婚介所,招了一批实习生,让实习生去说媒,这样即使搞砸了也不会影响自己的口碑。

总结shell的子进程去解释执行的

shell是外壳程序的统称,在linux中叫做bash

3.什么是操作系统?为什么要有操作系统?

先给结论操作系统是一款进行软硬件资源管理的软件
在这里插入图片描述

计算机的软硬件体系结构是层状的,最底层往往是硬件,包括鼠标,硬盘,网卡,内存,cpu等各种设备,这些硬件都是需要对应的驱动程序的。举个例子,鼠标在连接计算机时,在一两秒内你去动鼠标可能会没有反应,等一会可能会在计算机右下角显示某某驱动程序已安装好,这个时候你去动鼠标他就会有反应。驱动程序就是用来控制硬件工作的操作系统扮演的角色是管理者,它要进行内存管理,进程管理,文件管理,硬件管理等。操作系统为什么要进行管理呢?比如说,你在玩游戏时,总是动不动就黑屏,卡退,刷抖音时,总是闪退,重启,那么就会造成非常不好的体验,所以,操作系统进行管理就是为了给用户提供一个良好的运行环境。所以为什么要有操作系统呢对下要做好软硬件的管理工作(手段),对上要提供一个良好的运行环境(目的)

如何定义什么是良好的运行环境呢?

1.稳定 2.高效 3.安全

四、Linux权限

在谈Linux权限之前,先来看看Linux中文件类型。

1.文件类型

在windows中,区分文件类型是根据文件名后缀来进行区分的

Linux区分文件类型,是用文件的属性列区分的
在这里插入图片描述
-代表普通文件

d代表目录/文件夹

除此之外。还有许多文件类型。

在这里插入图片描述

软链接
在这里插入图片描述

块设备支持随机读取,以块为单位(磁盘)。
在这里插入图片描述

字符设备不支持随机读取,按照字符为单位(显示器,键盘)。
在这里插入图片描述

管道文件用来实现进程间的通信
在这里插入图片描述

2.Linux用户

任何一款操作系统都叫做多用户操作系统

那么,这些用户也有区分,Linux中用户被分为两类,root(Linux管理员,只能有一个),普通用户(可以有多个)

说到这里了,就不得不说一下,用户登录和切换问题了?

先来看以下几个命令。

adduser username:添加用户,创建家目录
userdel -r username:删除用户,并删除家目录
id username:检查用户是否被删除

在这里插入图片描述

用户切换

root用户切换普通用户,直接切换,不需要密码(root用户拥有操作Linux的最高权限)
在这里插入图片描述

普通用户不能直接切换普通用户(需要密码)
在这里插入图片描述

su username:单纯的进行身份切换,但不会改变家目录

在这里插入图片描述

如果我要做一件提高权限的事情,但是不想变成root,怎么办呢?

sudo指令提权功能,以root身份运行该命令

sudo cp myfile.txt /usr/bin失败了是因为默认新增的用户,无法执行sudo,不受系统信任。那么该怎么办呢?这就相当于你进入了好友的黑名单了,你要在白名单里才可以使用sudo命令。这个时候就要以root身份去将你添加到系统的白名单里(/etc/sudoers)才可以
在这里插入图片描述

将新增的用户添加到白名单里。
在这里插入图片描述

3.权限的理论理解

结论权限 = 人 + 事物属性

举个简单的例子:你想在爱奇艺上写代码,这是不可能的,爱奇艺是用来看电影的,它并不具备写代码的属性。

在linux上,一切皆文件

那么,文件权限 = 用户 + 文件权限属性

文件的权限属性包括r(读),w(写),x(可执行)

文件权限决定的是能不能干这件事情

用下面的一张图来认识一下权限。

在这里插入图片描述
可以看到,文件权限拥有九个字符,而文件权限也就只包含了r(读),w(写),x(可执行),按理来说只需要三个字符就可以了呀,这是为什么呢这是因为系统要对文件权限进行管理,一个文件可能会有很多用户去使用,系统对这些用户进行了管理,分为拥有者,所属组,other。而文件权限被划分为三组,三个为一组,分别代表拥有者,所属组,other。那么在上面的图中,为什么没有显示other组呢?这是因为用户太多了,系统记不全,所以只要是除了拥有者,所属组之外的用户都属于other组的

注:

r(具有读权限) / -(不具有读权限)
w(具有写权限) / -(不具有写权限)
x(具有可执行权限) / -(不具有可执行权限)

拥有者,所属组,other是三种角色,而root , lc等属于具体的人。是由具体的人来扮演角色的。

4.权限的操作实验

文件权限 = 用户 + 文件权限属性。所以,操作实验就是从两个方面来进行论证的。用户或者文件权限属性。

4.1 改变文件权限属性

方法一:

改变拥有者权限
在这里插入图片描述

改变所属组的权限
在这里插入图片描述

改变other的权限
在这里插入图片描述

同时对多人进行修改权限。
在这里插入图片描述
在这里插入图片描述

方法二:

有权限用1来表示,无权限用0来表示,所以也可以用8进制的方式来修改权限
在这里插入图片描述
在这里插入图片描述

普通用户无法进入到root的目录里
在这里插入图片描述

root用户可以进入到普通用户的目录里
在这里插入图片描述

root用户(既不属于拥有者也不属于所属组)只有 r 权限,却可以向test.txt文件里写内容。这是为什么呢?因为root用户可以无视权限的约束
在这里插入图片描述
在这里插入图片描述

即使是拥有者自己,没有相应的权限也不允许执行相应的动作
在这里插入图片描述

看到这里,大家应该会有一个问题。lc既是拥有者也是所属组,虽然拥有者没有相应的权限,但是所属组有权限啊,为什么还是会执行失败呢

这是因为匹配身份的时候只会匹配成功一次,一旦匹配成功,执行失败,也不会再去匹配下一个角色身份了

4.2 改变用户

直接改变拥有者是不被允许的

举个简单的例子:你有一个东西想要给别人,你可以给,但是别人有权利拒绝不要。所以,这种直接切换用户的操作是不被允许的。我们可以使用sudo来进行提权
在这里插入图片描述

文件权限的修改只有root用户和文件拥有者可以修改,其他人不允许。可以使用sudo提权(相当于是以root的身份)来修改
在这里插入图片描述
在这里插入图片描述

更快捷的改变拥有者,所属组。
在这里插入图片描述
以上都是基于普通文件的权限实验。那如果是一个目录呢?

要进入目录,需要什么权限呢?
在这里插入图片描述

结论通过对比可以得出,进入目录需要x权限

那么,r 权限和 w 权限又是影响什么的呢?

在这里插入图片描述

结论是否允许查看指定目录下的文件信息,需要r权限

在这里插入图片描述

结论指定目录下新建文件、删除文件,修改文件名需要w权限

大家此时有没有疑问呢?若是没有的话,我来提几个问题吧!

1.为什么新建一个文件或者目录的时候,缺省的权限,刚好是我们看到的样子

这是因为权限掩码的缘故
在这里插入图片描述
不同的系统,权限掩码默认值可能不一样。

普通文件的起始权限是666,目录的起始权限是777

什么是权限掩码?

权限掩码过滤掉在权限掩码中出现的权限

所以,最终权限 = 起始权限 & (~umask)

如何证明呢?

我们只需要更改一下umask值,查看文件的最终权限是否和我们所预想的一致就可以得到答案了。
在这里插入图片描述

2.为什么普通用户可以删除root用户创建的文件呢?
在这里插入图片描述

文件可以读可以写是取决于文件本身的权限那么普通用户为什么可以删除root用户创建的文件呢这是因为该文件是否可以被删除依赖于所处的目录是否具有w权限
在这里插入图片描述

到了这里,我们就能发现一个现象。root账号,凭什么在我的路径下新建文件

普通用户的家目录,只有root和自己能进入

那如果我想让多个普通账号之间,进行文件或者数据共享呢那就只能放在root账号公共目录下了,因为普通用户之间是无法进入到另一个普通用户的家目录去的,更无法进入到其它路径下
在这里插入图片描述

这种方法可以实现数据共享,但是也会存在互删的情况,避免引起混乱,所以有了粘滞位
在这里插入图片描述

粘滞位只能对目录进行设置,设置了粘滞位的目录,其下的文件只能由1.超级管理员删除 2.该目录的所有者删除 3.该文件的所有者删除

file命令:查看文件更详细的信息

在这里插入图片描述

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

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

相关文章

《磁力下载工具实测:资源搜索+高速下载一站式解决方案》

嘿,朋友们!我是阿灿,今天给大家带来一个超实用的看片神器,特别适合老司机们使用,保证让你眼前一亮!推荐一款比某雷更好用的下载工具,搭配资源搜索神器,轻松获取资源不限速。超强磁力…

Go网络编程基础:网络模型与协议栈概述 - 从理论到实践的完整指南

1. 引言 在当今的互联网时代,网络编程已经成为后端开发的核心技能。Go语言以其出色的并发性能和简洁的语法,在网络编程领域展现出了强大的优势。从Docker、Kubernetes到众多微服务框架,Go已经成为构建高性能网络应用的首选语言之一。 你是否…

Web攻防-SSTI服务端模版注入利用分类语言引擎数据渲染项目工具挖掘思路

知识点: 1、WEB攻防-SSTI-利用分类&功能点 2、WEB攻防-SSTI-利用项目&挖掘思路 SSTI(Server Side Template Injection) 服务器模板注入, 服务端接收了用户的输入,将其作为 Web 应用模板内容的一部分,在进行目标编译渲染的过程中&…

李沐动手学深度学习Pytorch-v2笔记【07自动求导代码实现】

文章目录前言自动求导实现非标量变量的反向传播分离计算Python控制流的梯度计算前言 关于走动求导的理论知识个人有点难以理解,推荐大家去看https://blog.csdn.net/weixin_42831564/article/details/135658138这篇文章,讲的很好。 自动求导实现 impor…

strchr 与 strstr 函数详解

一.strchr - 字符查找函数1.函数原型char *strchr(const char *str, int c);2.核心功能在字符串中查找特定字符的第一次出现位置3.参数说明参数 类型 说明str const char* 要搜索的字符串c int 要查找的字符(自动转换为char)4.返回值…

jakes信道模型

Jakes 模型 前面我们介绍了多径信道合成信号可表示为: r(t)Re{∑i0N(t)−1ai(t)u(t−τi(t))ej2πfc(t−τi(t))ϕDi(t)} r(t)Re \left\{\sum_{i0}^{N(t)-1}a_{i}(t)u(t-\tau_{i}(t))e^{j2\pi f_{c}(t-\tau_{i}(t))\phi_{D_{i}}(t)} \right\} r(t)…

JVM类加载机制解析

什么是类加载器? 类加载器是JVM的核心组件之一,负责将Java字节码文件(.class文件)加载到JVM内存中。由于JVM只能执行二进制字节码,类加载器的作用就是将编译后的.class文件转换为JVM可以理解和执行的格式,使…

用Python和OpenCV从零搭建一个完整的双目视觉系统(二)

本系列文章旨在系统性地阐述如何利用 Python 与 OpenCV 库,从零开始构建一个完整的双目立体视觉系统。 本项目github地址:https://github.com/present-cjn/stereo-vision-python.git 项目架构设计:蓝图、分工与工作流 在上一篇文章中&#…

亿级流量下的缓存架构设计:Redis+Caffeine多级缓存实战

亿级流量下的缓存架构设计:RedisCaffeine多级缓存实战 一、为什么需要多级缓存? 在亿级流量场景下,单纯依赖Redis会遇到三大瓶颈:网络延迟:Redis远程访问通常需要1-5ms,QPS超过10万时成为瓶颈资源成本&…

AI基建还能投多久?高盛:2-3年不是问题,回报窗口才刚开启

高盛表示,尽管AI商业化变现仍处早期阶段,但基于成本削减的第一阶段回报已经显现。预测到2030年AI自动化可为财富500强企业节省约9350亿美元成本。分析师认为,这一早期收益足以支撑当前AI基础设施投资水平,尽管增长率可能放缓。虽然…

【mac】快捷键使用指南

在Mac上,根据选择对象的不同,在选择时移动的方法也有所不同,以下是具体介绍: 移动文件或文件夹:可通过拖放操作移动。打开“访达”(Finder),找到要移动的文件或文件夹,按…

CS144 lab2 tcp_receiver

1. 实验目的 lab2 的目的是实现tcp的接收端。 主要包括两方面 (1) 从发送端接收消息,使用Reassembler聚合字节流(Bytestream) (2)将确认号(ackno)和window size发回对端 …

【论文笔记】A Deep Reinforcement Learning Based Real-Time Solution Policy for the TSP

《基于 DRL 和 DCNN 的实时 TSP 求解策略》IEEE TRANSACTIONS ON INTELLIGENT TRANSPORTATION SYSTEMS, VOL. 24, NO. 6, JUNE 2023一段话总结本文提出了一种基于深度强化学习(DRL) 和深度卷积神经网络(DCNN) 的实时旅行商问题&am…

MMaDA:多模态大型扩散语言模型

集众家之所长,成大一统。普林斯顿大学、北京大学、清华大学、字节跳动的研究者将“文本推理、多模态分析、图像生成”三大方向融合在一个单一扩散模型里,并用恰当的优化策略来提升模型在各个方向的性能。 研究动机 研究人员致力于开发一个能够处理多种模…

容器技术入门与Docker环境部署

容器技术入门与Docker环境部署Docker概述什么是 DockerDocker 的优势Docker 的应用场景Docker 核心概念(1)镜像(2)容器(3)仓库Docker 安装1.关闭系统防火墙和内核2.下载Docker的repo文件3.替换仓库地址4.更新索引文件并安装Docker5.添加国内镜像站6.开启Docker服务7.优化内核参…

【01】MFC入门到精通—— MFC新建基于对话框的项目 介绍(工作界面、资源视图 、类视图)

文章目录1 创建工程2 运行3 工作界面介绍3. 1 类视图 Class View3.2 如何打开 类视图3.3 资源视图1 创建工程 选择菜单项 文件->新建->项目,弹出 “新项目” 对话框。 选择 MFC,点击下一步,然后键入工程名称,本例取名“Add…

2025!在Windows的Python中安装GDAL包(小白能成!)

最近更新 在2025.06.05日,GDAL发布预告:新版本将适配pipeline和向量读写功能。 直到2025.06.25日,最新的版本才算发行出来。 有朋友催我赶紧更新教程,我上次更新是3月份的时候了,恰好是GDAL上一个版本出来的时间。 前…

Python第一次作业

# 1.技术面试题**(1)TCP与UDP的区别是什么?****答:TCP 是 “可靠但较慢” 的协议,适合对数据完整性要求高的场景;UDP 是 “快速但不可靠” 的协议,适合对实时性要求高的场景。两者互补&#xff…

Linux【大数据运维】下制作Redis绿色免安装包(一)

linux下安装Redis比较繁琐,遇到内网部署环境更是麻烦。根据经验将Redis打包一个绿色版进行使用。 大体思路,在一台正常的机器上面制造好安装包,然后上传到内网服务器,解压使用。 下载: wget https://download.redis…

89104 PCIe Switch芯片国产替代 - PCIE5.0国产AI服务器高性能扩展,支持海光/龙芯/飞腾等

以下是针对89104 PCIe Switch芯片国产替代的高性能PCIe 5.0 AI服务器扩展方案的详细分析:一、核心国产替代芯片:TL63104控制器‌技术规格‌支持PCIe 5.0全速率(32 GT/s),提供968 Lanes配置,聚合双向带宽达1…