Linux基础知识

Linux系统下的目录结构以及各个目录的存放数据

指令行前缀的含义

gec:用户名称

ubuntu:主机名称

:~表示当前所处的路径(~表示是家目录)

$:普通用户 #:表示超级用户


普通用户-->超级用户

使用命令:sudo -s

变化: 用户名:gec(自己的名字) --> root 用户标识: $ --> #

超级用户才能在根目录里创建修改文件


超级用户-->普通用户

使用命令:su 自己的用户名

变化: 用户名:root --> gec(自己的名字) 用户标识: # --> $


目录构成

目录核心作用备注 / 存放内容
/bin基础工具目录存放系统最基本的命令(如ls,cp),所有用户均可执行。
/sbin管理员工具目录存放系统管理命令(如fdisk,mount),通常仅root用户可使用。
/dev设备文件目录存放硬件设备(如硬盘、键盘、鼠标)的抽象文件,/dev/null就在这里。
/proc进程信息目录虚拟文件系统,存放内核与进程的状态信息(如内存、CPU),是系统运行时的“画像”。
/sys内核与驱动信息类似/proc,更侧重于硬件设备、驱动及内核对象的实时信息。
/etc系统配置文件存放系统及大部分软件的配置文件(如passwd,fstab),相当于系统的“注册表”。
/var动态数据目录存放经常变化的数据,如系统日志 (/var/log)、邮件、打印队列。
/boot系统启动文件存放开机引导加载程序(BootLoader)及 Linux 内核文件 (vmlinuz)。
/lib基础库文件存放/bin/sbin命令所需的共享库文件(类似于 Windows 的.dll文件)。
/root管理员家目录超级管理员root的个人主目录,普通用户无权访问。
/home普通用户家目录存放所有普通用户的个人文件夹(如/home/gec)。
/mnt临时挂载目录通常用于手动挂载外部设备(如 U 盘、网络共享文件夹)。
/tmp临时文件目录存放程序运行时的临时文件,系统重启后通常会清空。
/cdrom光驱挂载目录早期的光驱默认挂载点,现在多为/media目录下。
/usr用户程序目录存放用户安装的应用程序、库及文档,是 Linux 中最大的目录之一。

Linux常用命令

1、pwd:打印当前所在的路径

2、ls:

ls -a:查看当前路径下的所有文件(把隐藏文件(以‘.’开头的文件)显示出来)

'.':当前文件目录

'..':上一个文件目录

在文件前面带.的表示隐藏文件e.g .bashrc

ls -l:以列表的形式罗列当前路径下的文件大小

也可以组合起来使用

ls -al(显示所有文件,包括隐藏文件,并且显示所有详细信息)

解析:

-rw-rw-r-- 1 gec gec 189 Jul 18 2021 a.cpp

-rw-rw-r--

第1位数据:

-:普通存储文件(存储在硬盘的文件)

d:目录文件(文件夹)(蓝色字体)

l:软链接文件(类似快捷方式,点击之后就会跳转到对应的东西)

第2-4位:文件拥有者的权限rwx

第5-7位:同组用户的权限rwx

第8-10位:其他用户的权限rwx

硬链接:可以被访问的个数

a.cpp:数字为1--只能有一个访问的位置

大小:189 Byte

更新日期:Jul 18 2021

3、cd:change dirctory(改变路径)

cd 需要前往的目标路径

cd ..回到上一级目录

cd .当前目录

cd -:退回到上一次的路径

cd只能切换路径,但是无法打开文件

4、cp:copy(复制拷贝)

cp 需要拷贝的文件(复制谁) 需要拷贝到的路径(到哪里去)

cp 文件夹 目标路径 -r:将文件夹里面的所有东西一起拷贝过去

cp 目标 不存在的文件:将目标文件夹重新命名然后保存在路径下(备份)

5:mv:move(移动)

mv 目标文件 目标路径:将目标文件移动到目标路径中(如果存在的话原来的文件就会被覆盖掉)

mv 目标文件 不存在的文件:将目标文件重命名

6、rm:remove(删除)

对单个文件进行删除时:

rm 要删除的文件名称

文件夹进行删除时需要加上 -rf:(其中 r表示递归f表示强制):

rm 要删除的文件夹 -rf

解释:

7.echo

用途:在终端上输出

8.sudo

sudo 可以用于切换为超级用户

sudo -s

也可以让普通用户临时拥有超级用户的权限

在根目录下创建文件

9.mv

1.剪切/移动

mv 被移动的文件路径 需要移动到的路径

2.重命名

mv 需要修改名称的文件 修改名称后的文件

10.chmod

用于修改文件的权限

chmod 文件的权限 需要修改的文件名称

chmod 文件夹的权限 文件夹名称 -R (注意,这里是R)

11.连接

软链接(符号链接):可以理解为Windows里的快捷方式。它是一个独立的文件,但内容只存储了“指向目标文件的路径”。如果原文件被删,软链接就会失效(变成红色闪烁状态)。

硬链接:可以理解为给同一个文件数据起了个别名。它和原文件完全平级,指向硬盘上同一块数据区域。删除原文件,硬链接依然可以正常访问数据,直到所有硬链接都被删除,数据才会真正被释放。

创建软连接

ln -s 原文件 软连接的名字

创建硬连接

ln 原文件 硬连接的名字

举例

echo "Hello" > file.txt
ln -s file.txt soft_link # 创建软链接
ln file.txt hard_link # 创建硬链接

rm file.txt # 删除原文件
cat soft_link # ❌ 报错:软链接失效
cat hard_link # ✅ 输出 "Hello":硬链接依然有效

对比维度软链接硬链接
本质独立的文件,存储路径文件数据的另一个名字(别名)
依赖原文件依赖,原文件删则失效不依赖,删原文件仍有效
文件类型l开头(链接文件)与原文件类型相同(如-普通文件)
指向目录可以指向目录不可以指向目录(防止循环递归)
跨文件系统✅ 可以跨分区❌ 不能跨分区(inode 仅在本分区有效)
inode 编号与原文件不同与原文件相同

12.压缩文件

参数全称作用
-cCreate创建新的打包文件(压缩包)
-xeXtract解包(解压)
-tlisT查看压缩包内的文件列表
-jbzip2使用bzip2算法压缩/解压(生成.tar.bz2,压缩率更高,速度较慢)
-zgzip使用gzip算法压缩/解压(生成.tar.gz,压缩率适中,速度较快,最常用)
-fFile必须放在最后,指定压缩包的文件名。后面紧跟文件名
-CChange directory解压时指定目标路径(大写 C)
-vVerbose(可选)显示过程详细信息(你的笔记未提,但推荐加上)

在linux中常见的2种压缩包格式

.bz2 和 .gz

特性.tar.bz2(bzip2).tar.gz(gzip)
压缩率更高(文件更小)适中
速度较慢(更耗 CPU)较快
使用场景对空间要求苛刻的归档(如大量文本日志)日常使用、软件分发(最常用

常用的压缩命令

tar -jcf xxx.tar.bz2 文件名1 文件名2 ....... (压缩为bzip2类型)

tar -zcf xxx.tar.gz 文件名1 文件名2 ....... (压缩为gzip类型)

常用的解压命令

tar -jxf xxx.tar.bz2 -C 你要解压到的路径

tar -zxf xxx.tar.gz -C 你要解压到的路径

查看压缩包内的内容

tar -tf 压缩包的名字

13.查找以及搜索

find:用于寻找文件

find 指定路径(必须) 匹配条件(可选) 执行动作(可选)

对于匹配条件,可以有很多种

类别条件格式示例说明
文件名-name "模式"-name "*.c"区分大小写
-iname "模式"-iname "stdio.h"忽略大小写
文件类型-type 类型-type f(普通文件)
-type d(目录)
-type l(链接文件)
筛选文件或目录
文件大小-size [±]大小-size +100M(大于 100MB)
-size -1k(小于 1KB)
单位:c(字节)、k、M、G
修改时间-mtime [±]天数-mtime -3(3 天内修改)
-mtime +30(30 天前修改)
以天为单位
权限-perm 权限值-perm 0644(精确匹配)
-perm -0644(至少包含这些权限)
八进制权限
用户/组-user 用户名
-group 组名
-user root按所有者筛选
多个条件-a(与,默认)
-o(或)
!(非)
-name "*.c" -a -size +1k
-name "*.txt" -o -name "*.log"
逻辑组合
grep:用于寻找文件中的内容

grep [选项] "搜索模式" [目标文件......]

常见的选项

选项英文全称作用示例
-nNumber显示匹配行的行号grep -n "error" log.txt
-HHeader显示文件名grep -H "main" *.c
-rRecursive递归搜索目录下的所有文件grep -r "TODO" ./src/
-iIgnore case忽略大小写grep -i "warning" log.txt
-vInvert反向匹配(显示不含模式的行)grep -v "debug" log.txt
-wWord只匹配整个单词(不匹配单词的一部分)grep -w "main" *.c(不会匹配maintain
-cCount只统计匹配的行数,不显示内容grep -c "error" log.txt
-lList只显示文件名(不显示匹配行内容)grep -l "main" *.c
-EExtended regex使用扩展正则表达式(支持|+等)grep -E "error|warning" log.txt
-A nAfter显示匹配行后面 n 行grep -A 3 "error" log.txt
-B nBefore显示匹配行前面 n 行grep -B 2 "error" log.txt
-C nContext显示匹配行前后各 n 行grep -C 3 "error" log.txt
--color高亮显示默认在终端自动高亮匹配的关键词grep --color=auto "error" log.txt

14.查看文件的内容

cat

cat [选项](可选) [文件名1] [文件名2] ......

cat适合查看短文件,不适合查看大文件。

场景推荐工具原因
文件只有几行cat快速查看,非常方便
文件有几百行cat会刷屏,推荐lesshead内容太多,看不全,翻不到开头
文件有几万行绝对不要用cat会卡死终端,大量无用信息滚动

如果需要查看大文件

less file.txt # 分页查看(按空格翻页,q 退出)
head file.txt # 查看文件前 10 行
tail file.txt # 查看文件后 10 行

15.别名

alias就是让你给 Linux 命令取"小名",unalias 删除命令的别名

创建别名

alias 要取的别名='命令'

取消别名

unalias 需要取消的别名

16.重启ubuntu

reboot

17.查看或修改ubuntu的ip地址

查看ip

ifconfig

典型输出

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet192.168.2.200netmask255.255.255.0broadcast192.168.2.255
inet6 fe80::20c:29ff:fe12:3456 prefixlen 64 scopeid 0x20
ether00:0c:29:12:34:56 txqueuelen 1000 (Ethernet)
RX packets12345 bytes 9876543 (9.4 MB)
TX packets6789 bytes 1234567 (1.2 MB)

字段含义
ens33网卡名称(Ubuntu 虚拟网卡)
inetIP 地址(192.168.2.200
netmask子网掩码
broadcast广播地址
etherMAC 地址(物理地址)
UP网卡已启用(如果是DOWN表示禁用)
RX packets接收数据包统计
TX packets发送数据包统计

临时修改IP地址(想要修改必须是超级用户/借用超级用户权限)

sudo ifconfig 网卡名 IP地址

18.查看文件大小

du 文件名 [选项]

选项含义单位示例
-bBytes字节(精确)du -b file.txt
-kKilobytesKB(1024 字节)du -k file.txt
-mMegabytesMB(1024 KB)du -m file.txt
-hHuman readable自动选择 KB/MB/GB(最常用!du -h file.txt
-sSummary只显示总计,不列出子目录du -sh /home
-aAll显示所有文件(含子目录下的)du -ah /home
-cCombine显示总计(最后一行输出总和)du -ch *.log
--exclude=pattern排除匹配的文件跳过某些文件du -sh --exclude=*.mp4
-d n显示深度为n控制查看目录层级du -hd 1 /home