指尖上的魔法:优雅高效的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命令:查看文件更详细的信息
相关推荐
bcbobo21cn12 分钟前
Linux命令的命令历史
linux·histsize·histfile
Andy杨32 分钟前
20250707-4-Kubernetes 集群部署、配置和验证-K8s基本资源概念初_笔记
笔记·容器·kubernetes
jingyu飞鸟1 小时前
linux系统源代码安装apache、编译隐藏版本号
linux·运维·apache
世事如云有卷舒1 小时前
Ubunt20.04搭建GitLab服务器,并借助cpolar实现公网访问
linux·服务器·gitlab
2401_858286112 小时前
OS15.【Linux】gdb调试器的简单使用
linux·运维·服务器·开发语言·gdb
UQI-LIUWJ3 小时前
李宏毅LLM笔记: AI Agent
人工智能·笔记
ouliten3 小时前
cuda编程笔记(6)--流
笔记
Love__Tay3 小时前
笔记/云计算基础
笔记·学习·云计算
李元豪4 小时前
【行云流水ai笔记】粗粒度控制:推荐CTRL、GeDi 细粒度/多属性控制:推荐TOLE、GPT-4RL
人工智能·笔记
zjw_rp4 小时前
centos停止维护后更换yum源
linux·运维·centos