linux学习手册


从今天开始每周都会更新linux的学习日记


常用命令

1
2
3
gouxin@navi ~> cd /

gouxin@navi />
移动命令, cd + 路径
移动到 / 目录下
1
2
gouxin@navi ~> pwd 
/home/gouxin
显现当前所在的路径位置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
gouxin@navi Document> ls
C/ document_stm32/ git/ Linux/ python/ rust/ STM32/ Study/

gouxin@navi Document> ls -a
./ ../ C/ document_stm32/ git/ Linux/ python/ rust/ STM32/ Study/

gouxin@navi Document> ls -l
总计 0
drwxr-xr-x 1 gouxin gouxin 28 12月11日 16:36 C/
drwxr-xr-x 1 gouxin gouxin 18 12月19日 23:27 document_stm32/
drwxr-xr-x 1 gouxin gouxin 72 12月22日 22:01 git/
drwxr-xr-x 1 gouxin gouxin 0 12月11日 16:26 Linux/
drwxr-xr-x 1 gouxin gouxin 46 12月11日 19:34 python/
drwxr-xr-x 1 gouxin gouxin 0 12月11日 16:26 rust/
drwxr-xr-x 1 gouxin gouxin 30 12月11日 16:44 STM32/
drwxr-xr-x 1 gouxin gouxin 0 12月11日 16:26 Study/

ls 显示当前目录的文件
ls -a 显示所有文件包括隐藏文件
ls -l 显示所有文件的属性与权限

1
2
3
4
5
6
gouxin@navi ~/Document> mkdir abab
gouxin@navi ~/Document> ls
abab/ C/ document_stm32/ git/ Linux/ python/ rust/ STM32/ Study/
gouxin@navi ~/Document> rmdir abab
gouxin@navi ~/Document> ls
C/ document_stm32/ git/ Linux/ python/ rust/ STM32/ Study/

mkdir + [parameter] 新建文件夹
rmdir + [parameter] 删除文件夹

1
2
3
4
5
6
gouxin@navi Document> touch linux_1.txt 
gouxin@navi Document> ls
C/ document_stm32/ git/ Linux/ linux_1.txt python/ rust/ STM32/ Study/
gouxin@navi Document> rm ./linux_1.txt
gouxin@navi Document> ls
C/ document_stm32/ git/ Linux/ python/ rust/ STM32/ Study/

touch + [parameter] 新建文件
rm + [parameter] 删除文件

1
2
3
4
5
6
gouxin@navi ~/D/g/g/s/movies> cat index.md
---
title: movies
date: 2025-12-23 00:26:47
type: movies
---

cat 命令 将文件内容显示在终端中

环境变量与shell

SHELL中所有的命令都会去 PATH路径下查找
我们使用echo $PATH去查看路径:

1
2
gouxin@navi ~> echo $PATH
/home/gouxin/.config/Code/User/globalStorage/github.copilot-chat/debugCommand /home/gouxin/.config/Code/User/globalStorage/github.copilot-chat/copilotCli /home/gouxin/.config/Code/User/globalStorage/github.copilot-chat/debugCommand /home/gouxin/.config/Code/User/globalStorage/github.copilot-chat/copilotCli /usr/local/bin /usr/bin /usr/bin/site_perl /usr/bin/vendor_perl /usr/bin/core_perl

如果我们想加入临时路径
我们使用下面的命令

1
gouxin@navi ~> export PATH:$PATH: 程序的绝对路径

永久添加路径:
通过修改~/.bashrc

1
export PATH=$PATH: 程序的绝对路径

或者修改etc/envirment

1
: 程序的绝对路径

文件权限与属性

了解权限

Linux有一套严格且完整的权限管理系统
我们使用命令

1
gouxin@navi Document> ls -l 
来查看当前文件夹下所有文件的权限
1
2
3
4
5
6
7
8
drwxr-xr-x 1 gouxin gouxin 28 12月11日 16:36 C/
drwxr-xr-x 1 gouxin gouxin 18 12月19日 23:27 document_stm32/
drwxr-xr-x 1 gouxin gouxin 72 12月22日 22:01 git/
drwxr-xr-x 1 gouxin gouxin 0 12月11日 16:26 Linux/
drwxr-xr-x 1 gouxin gouxin 46 12月11日 19:34 python/
drwxr-xr-x 1 gouxin gouxin 0 12月11日 16:26 rust/
drwxr-xr-x 1 gouxin gouxin 30 12月11日 16:44 STM32/
drwxr-xr-x 1 gouxin gouxin 0 12月11日 16:26 Study/

第一个字母 d表示 文件夹 如果是 - 表示一般文件格式
然后三个字母 rwx 表示,拥有者的权限, 然后三个字母 r-x 表示, 相同用户组的权限, 最后三个字母表示,其他用户的权限

r w x 三个字母分别是
    r readable 可读
    w writeable 可写
    x  可执行 (~绝对不是因为不会写所以没有~)

所以这个文件的权限是
所有者 可读 可写 可执行
相同用户组 可读 不可写 可执行
其他用户是 可读 不可写 可执行

更改权限

chmod 改变文件权限
这里我只介绍一种方式,数字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
gouxin@navi ~/D/g/gouxinblog> ls -l 
总计 288
-rw-r--r-- 1 gouxin gouxin 29842 12月23日 13:36 _config.butterfly.yml
-rw-r--r-- 1 gouxin gouxin 0 12月22日 22:01 _config.landscape.yml
-rw-r--r-- 1 gouxin gouxin 2672 12月23日 13:37 _config.yml
-rw-r--r-- 1 gouxin gouxin 118685 12月27日 17:49 db.json
drwxr-xr-x 1 gouxin gouxin 5354 12月23日 13:32 node_modules/
-rw-r--r-- 1 gouxin gouxin 834 12月23日 13:32 package.json
-rw-r--r-- 1 gouxin gouxin 133954 12月23日 13:32 package-lock.json
drwxr-xr-x 1 gouxin gouxin 110 12月27日 17:49 public/
drwxr-xr-x 1 gouxin gouxin 44 12月22日 22:01 scaffolds/
drwxr-xr-x 1 gouxin gouxin 64 12月23日 00:26 source/
drwxr-xr-x 1 gouxin gouxin 16 12月22日 22:01 themes/
gouxin@navi ~/D/g/gouxinblog> chmod 775 _config.landscape.yml
gouxin@navi ~/D/g/gouxinblog> stat _config.landscape.yml
文件:_config.landscape.yml
大小:0 块:0 IO 块大小:4096 一般空文件
设备:0,45 Inode: 174120 硬链接:1
权限:(0775/-rwxrwxr-x) Uid: ( 1000/ gouxin) Gid: ( 1000/ gouxin)
访问时间:2025-12-22 22:02:35.760994136 +0800
修改时间:2025-12-22 22:01:56.086003364 +0800
变更时间:2025-12-30 17:40:44.763373853 +0800
创建时间:2025-12-22 22:01:56.086003364 +0800

在这里我们用数字代表权限
7是全权限 可读,可写,可执行
5是没有写入权限
1是只有执行权限

find grep 命令

find

find 是在当前目录下查找文件
1
gouxin@navi ~> find Document/git paru 

find + 目录 + 文件的名字,也可以使用通配符

grep

网络命令

ifconfig

查看网络, 设置ip

此时我的这个网络是有线网络 我们来试一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
gouxin@navi ~> ifconfig

enp3s0f4u1c2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.4 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::8e97:66a6:e23c:162 prefixlen 64 scopeid 0x20<link>
inet6 240e:30a:146:9300:2134:e8bf:54cb:dc8e prefixlen 64 scopeid 0x0<global>
ether 9c:69:d3:10:5d:2b txqueuelen 1000 (Ethernet)
RX packets 811604 bytes 1120551826 (1.0 GiB)
RX errors 0 dropped 3080 overruns 0 frame 0
TX packets 292219 bytes 38728563 (36.9 MiB)
TX errors 0 dropped 14 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

wlp1s0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether d6:1f:b7:f4:86:b2 txqueuelen 1000 (Ethernet)
RX packets 4481 bytes 664432 (648.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 539 bytes 98781 (96.4 KiB)
TX errors 0 dropped 46 overruns 0 carrier 0 collisions 0

第一个是 有线网络接口 此时显示我在局域网内的ip为 192.168.1.4 子网掩码 255.255.255.0还有很多很多的东西,比如ipv6地址,网关等等,不过对我而言只需要了解ip地址即可

第三个是 无线网络接口 此时他并没有使用
让我们连接到 我的手机个人热点试试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
gouxin@navi ~> ifconfig
enp3s0f4u1c2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.4 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::8e97:66a6:e23c:162 prefixlen 64 scopeid 0x20<link>
inet6 240e:30a:146:9300:2134:e8bf:54cb:dc8e prefixlen 64 scopeid 0x0<global>
ether 9c:69:d3:10:5d:2b txqueuelen 1000 (Ethernet)
RX packets 821045 bytes 1128459614 (1.0 GiB)
RX errors 0 dropped 3206 overruns 0 frame 0
TX packets 299442 bytes 40546187 (38.6 MiB)
TX errors 0 dropped 14 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 10 bytes 540 (540.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 10 bytes 540 (540.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

wlp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.79.73 netmask 255.255.255.0 broadcast 192.168.79.255
inet6 fe80::4325:31ca:cc05:e2d prefixlen 64 scopeid 0x20<link>
ether 5c:61:99:49:dd:cd txqueuelen 1000 (Ethernet)
RX packets 4499 bytes 666718 (651.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 569 bytes 102821 (100.4 KiB)
TX errors 0 dropped 46 overruns 0 carrier 0 collisions 0

此时我们看到无线网口上也有了网络连接

啊,由于我对计算机网络的理解有限所以我只能说这些有兴趣的可以看一下下面的up主的视频,他主要做一些网络相关知识的科普
网络小白_Uncle城
或者学习伟大的计算机网络这本书
购买链接
课程

ping命令

ping命令可以查看你和一些网站的连接情况,不过我们一般使用这个命令查看自己是否连接到了公网

1
2
3
4
5
6
7
8
9
10
11
12
13
14
gouxin@navi ~> ping www.bilibili.com
PING www.bilibili.com (240e:b1:9801:206:10::16) 56 字节的数据
64 字节,来自 240e:b1:9801:206:10::16: icmp_seq=1 ttl=52 时间=26.0 毫秒
64 字节,来自 240e:b1:9801:206:10::16: icmp_seq=2 ttl=51 时间=25.8 毫秒
64 字节,来自 240e:b1:9801:206:10::16: icmp_seq=3 ttl=51 时间=26.0 毫秒
64 字节,来自 240e:b1:9801:206:10::16: icmp_seq=4 ttl=51 时间=25.9 毫秒
64 字节,来自 240e:b1:9801:206:10::16: icmp_seq=5 ttl=51 时间=25.9 毫秒
64 字节,来自 240e:b1:9801:206:10::16: icmp_seq=6 ttl=51 时间=26.2 毫秒
64 字节,来自 240e:b1:9801:206:10::16: icmp_seq=7 ttl=51 时间=25.9 毫秒
64 字节,来自 240e:b1:9801:206:10::16: icmp_seq=8 ttl=51 时间=25.9 毫秒
^C
--- www.bilibili.com ping 统计 ---
已发送 8 个包, 已接收 8 个包, 0% packet loss, time 7009ms
rtt min/avg/max/mdev = 25.845/25.960/26.222/0.106 ms

嗯,如果大家理解了,ip地址,局域网和域名的关系
我想你应该想到了一点事情,对,去找一下你手机的ip
这里的东西我们以后有机会再详细探讨

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
wlp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 192.168.79.73 netmask 255.255.255.0 broadcast 192.168.79.255
inet6 fe80::4325:31ca:cc05:e2d prefixlen 64 scopeid 0x20<link>
ether 5c:61:99:49:dd:cd txqueuelen 1000 (Ethernet)
RX packets 6191 bytes 3031099 (2.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 842 bytes 157906 (154.2 KiB)
TX errors 0 dropped 46 overruns 0 carrier 0 collisions 0
gouxin@navi ~> ping 192.168.0.104
PING 192.168.0.104 (192.168.0.104) 56(84) 字节的数据。
64 字节,来自 192.168.0.104: icmp_seq=1 ttl=64 时间=509 毫秒
64 字节,来自 192.168.0.104: icmp_seq=2 ttl=64 时间=9.22 毫秒
64 字节,来自 192.168.0.104: icmp_seq=3 ttl=64 时间=741 毫秒
64 字节,来自 192.168.0.104: icmp_seq=4 ttl=64 时间=8.96 毫秒
64 字节,来自 192.168.0.104: icmp_seq=5 ttl=64 时间=4.35 毫秒
^C
--- 192.168.0.104 ping 统计 ---
已发送 5 个包, 已接收 5 个包, 0% packet loss, time 4004ms
rtt min/avg/max/mdev = 4.354/254.559/740.833/311.299 ms

Linux 的文件属性

linux文件系统框架图片

1
2
gouxin@navi /> ls
bin@ boot/ dev/ etc/ home/ lib@ lib64@ mnt/ opt/ proc/ root/ run/ sbin@ srv/ sys/ tmp/ usr/ var/