第一章:linux目录结构
第一节:基本介绍
1. 文件系统根目录(/)
在 Linux 系统中,所有文件和目录都是从根目录 /
开始的。根目录是整个文件系统的起点,所有其他目录和文件都位于根目录下或其子目录中。
2. 目录结构
Linux 目录结构是层次化的,采用树状结构来组织文件和目录。每个目录可以包含子目录和文件,每个子目录又可以包含更多的子目录和文件。这样的结构便于管理和维护系统文件。
3. 磁盘挂载
在 Linux 系统中,除了根目录外,其他磁盘分区、设备和网络挂载点都被视为目录,并且它们都被挂载到某个目录下。例如,/mnt
和 /media
目录常用于挂载外部设备(如 USB 驱动器、CD-ROM 等)。
第二节:linux具体目录结构
-
/
(根目录)- 根目录是文件系统的起点。所有其他目录和文件都在这个目录下。
-
/bin
- 存放系统启动和运行所需的基本命令(如
ls
,cp
,mv
,cat
)。这些命令在系统启动时必须可用,因此存放在/bin
。
- 存放系统启动和运行所需的基本命令(如
-
/boot
- 包含启动加载程序(如 GRUB)的文件和内核映像。这个目录用于系统引导过程。
-
/dev
- 包含设备文件。这些文件代表系统中的各种硬件设备(如磁盘、终端、打印机)。例如,
/dev/sda1
代表第一块硬盘的第一个分区。
- 包含设备文件。这些文件代表系统中的各种硬件设备(如磁盘、终端、打印机)。例如,
-
/etc
- 存放系统配置文件和全局配置脚本。此目录下的文件通常控制系统和应用程序的配置,如
/etc/fstab
和/etc/passwd
。
- 存放系统配置文件和全局配置脚本。此目录下的文件通常控制系统和应用程序的配置,如
-
/home
- 用户主目录的默认位置。每个用户在
/home
下有一个子目录,例如/home/user1
。用户的个人文件、配置和数据通常存储在这个目录下。
- 用户主目录的默认位置。每个用户在
-
/lib
- 包含系统库文件,这些文件是系统和应用程序运行时所需的共享库。通常与
/bin
和/sbin
中的程序一起使用。
- 包含系统库文件,这些文件是系统和应用程序运行时所需的共享库。通常与
-
/media
- 用于自动挂载可移动媒体(如 USB 驱动器、CD-ROM 等)。系统插入设备时,这些设备会被挂载到
/media
下的子目录中。
- 用于自动挂载可移动媒体(如 USB 驱动器、CD-ROM 等)。系统插入设备时,这些设备会被挂载到
-
/mnt
- 通常用于临时挂载文件系统。系统管理员可以在这个目录下挂载不同的文件系统进行临时访问。
-
/opt
- 用于安装附加应用程序包。这个目录常用于存放第三方软件包和应用程序。
-
/proc
- 虚拟文件系统,提供系统内核和进程信息。
/proc
下的文件和目录不实际存在于硬盘上,而是由内核动态生成的。
- 虚拟文件系统,提供系统内核和进程信息。
-
/root
- 系统管理员(root 用户)的主目录。这个目录与普通用户的主目录(
/home/username
)不同,通常只有 root 用户可以访问。
- 系统管理员(root 用户)的主目录。这个目录与普通用户的主目录(
-
/sbin
- 存放系统管理命令和工具(如
fsck
,ifconfig
,reboot
)。这些命令通常需要系统管理员权限才能运行。
- 存放系统管理命令和工具(如
-
/srv
- 包含由系统提供的服务的数据。这个目录用于存放网站、FTP 服务器等服务的数据。
-
/tmp
- 用于存放临时文件。系统和应用程序在运行时可能需要创建临时文件,这些文件通常会在系统重启时删除。
-
/usr
- 包含用户程序和数据。这个目录通常包含系统中安装的大多数应用程序和库文件。例如,
/usr/bin
包含大多数用户命令,/usr/lib
包含库文件。
- 包含用户程序和数据。这个目录通常包含系统中安装的大多数应用程序和库文件。例如,
-
/var
- 包含变化的文件,如日志文件、邮件、缓存和其他经常变化的数据。常见目录有
/var/log
(日志文件)、/var/mail
(邮件)等。
- 包含变化的文件,如日志文件、邮件、缓存和其他经常变化的数据。常见目录有
第二章:linux常用命令
早知道:命令格式
在 Linux 中,命令通常有以下基本格式:
command [options] [arguments]
command
: 要执行的命令名称。[options]
: 可选的参数,用于修改命令的行为。例如,-l
、-a
等。[arguments]
: 命令的操作对象,例如文件或目录的名称。
例如,ls -l /home
命令中,ls
是命令,-l
是选项,/home
是参数。
第一节:目录处理命令
-
cd:切换目录
- 语法:cd 【目录】
- 参数:
- 目录:切换到对应目录
- ..:切换到上一级
- /:切换到下一级
-
pwd:显示当前目录
- 语法:pwd
- 功能:显示当前工作目录的绝对路径
-
ls:显示目录中的文件
- 语法:ls 【选项】【目录】
- 参数:
-l
: 以长格式显示文件信息,包括权限、所有者、大小和修改时间。(简化为ll)-a
: 显示所有文件,包括隐藏文件(以.
开头的文件)。-h
: 以人类可读的格式显示文件大小(与-l
一起使用)。-R
: 递归显示子目录中的内容。-t
: 按时间排序显示文件(最新的文件在前面)。
-
mkdir:创建目录
- 语法:mkdir 【选项】目录
- 常用参数:
-p
: 创建多级目录(即使中间目录不存在)。-v
: 显示每个目录创建的详细信息。
-
rmdir:删除目录
- 语法:rmdir 空目录
- 功能:删除指定空目录,如果目录不为空,将会报错
-
rm -r:递归删除目录及其内容
- 语法:rm 【选项】目录
- 常用参数:
-r
: 递归删除目录及其内容。-f
: 强制删除文件或目录,不提示确认。
-
lsblk:列出块设备
- 语法:lsblk 【选项】
- 常用参数:
-f
: 显示文件系统类型。-o
: 自定义输出列。
第二节:文件处理命令
-
cat:连接并查看文件内容
- 语法:cat 【选项】【文件】
- 常用参数:
-n
: 显示行号。-b
: 显示行号,但不为空行。-E
: 在行尾显示$
。
-
cp:复制文件或目录
- 语法:cp 【选项】源文件 目标文件
- 常用参数:
-r
: 递归复制目录及其内容。-i
: 提示确认覆盖文件。-u
: 仅在源文件比目标文件新时复制。
-
mv:移动或者重命名文件和目录
- 语法:mv 【选项】源文件 目标文件
- 常用参数:
-i
: 提示确认覆盖文件。-u
: 仅在源文件比目标文件新时移动。
-
rm:删除文件
- 语法:rm 【选项】文件
- 常用选项:
-r
: 递归删除目录及其内容。-f
: 强制删除文件,不提示确认。-i
: 删除前提示确认。
-
touch:创建新文件或更新文件的时间戳
- 语法:touch 【选项】文件
- 常用选项:
-c
: 不创建新文件,只更新文件的时间戳。
-
find:查找文件
- find 【路径】【选项】【条件】
- 路径:就是在对应目录内查找
- 条件:就是查找的特点
- 创建参数:
-name
: 根据名称查找文件。-type
: 根据文件类型查找(例如f
为普通文件,d
为目录)。-size
: 根据文件大小查找。(-、+数字单位表示小于或大于多少字节的文件)
- find 【路径】【选项】【条件】
-
head:显示文件的开头部分
- 语法:head 【选项】【文件】
- 常用参数:
-n
: 显示前 N 行。
-
tail:显示文件的结尾部分
- 语法:tail 【选项】【文件】
- 常用参数:
-n
: 显示最后 N 行。-f
: 实时跟踪文件内容的变化(常用于日志文件)。
-
chmod:修改文件权限
- 语法:chmod 【选项】模式 文件
- 模式:
- ugo表示对应用户,个人,组,其他,后跟+、-表示添加或删除权限
- all表示所有,就是ugo,后跟+、-表示添加或删除权限
- rwx表示文件权限,r读-4,w写-2,x执行-1。可以用数字替换
- 模式:
- 常用选项:
-R
: 递归更改目录及其内容的权限。
- 语法:chmod 【选项】模式 文件
第三节:链接命令
-
ln:创建连接
- 语法:ln 【选项】源文件 目标连接
- 常用参数:
-s
: 创建符号链接(软链接)。如果不指定此选项,将创建硬链接。-f
: 强制创建链接,覆盖已存在的目标链接。-i
: 提示确认覆盖目标链接。
-
ls -l:查看文件连接
- 语法:ls -l 【目录】
- 功能:
- 显示文件的详细信息,包括文件类型、权限、所有者、文件大小和修改时间。符号链接会显示为
->
后跟目标文件的路径。软连接才有。
- 显示文件的详细信息,包括文件类型、权限、所有者、文件大小和修改时间。符号链接会显示为
-
find:查找连接
- 语法:find 【路径】【选项】【条件】
- 常用参数:
-type l
: 查找符号链接(软链接)。-type f
: 查找普通文件。-type d
: 查找目录。
-
连接的区别
- 硬链接
- 硬链接是文件系统级别的链接,它直接指向文件的 inode(文件的存储结构),不同的硬链接实际上是相同文件的不同路径。
- 硬链接不能跨文件系统创建。
- 删除原文件不会影响硬链接,因为它们共享相同的 inode。
- 软链接(符号链接)
- 符号链接是一个特殊类型的文件,它包含对另一个文件或目录的路径引用。
- 符号链接可以跨文件系统创建。
- 如果原文件被删除,符号链接将成为一个无效的“悬挂链接”。
- 硬链接
第四节:权限管理命令
-
chmod:修改文件或目录权限
- 语法:chmod 【选项】模式 文件
- 模式:
u
: 文件所有者(user)。g
: 文件所在组(group)。o
: 其他用户(others)。a
: 所有用户(all)。r
: 读取权限(read)。w
: 写入权限(write)。x
: 执行权限(execute)。+
: 添加权限。-
: 移除权限。=
: 赋予权限(覆盖现有权限)。
- 模式:
- 常用参数:
-R
: 递归更改目录及其内容的权限。--reference=文件
: 使用指定文件的权限作为参考。
- 语法:chmod 【选项】模式 文件
-
chown:修改文件或目录拥有者
- 语法:chown 【选项】用户:组 文件
- 常用参数:
-R
: 递归更改目录及其内容的所有者和组。建议:root用户
-
chgrp:修改文件或目录拥有组
- 语法:chgrp 【选项】组 文件
- 常用参数:
-R
: 递归更改目录及其内容的组。建议:root用户
-
umask:设置与查看文件或目录默认权限
- 语法:umask 【掩码】
- 功能:
- 设置默认文件权限掩码,用于控制新创建文件和目录的默认权限。掩码是一个八进制数,指定了要从默认权限中去除的权限。不写掩码就是查看。
-
ls -l:查看文件或目录权限
- 语法:ls -l 【目录】
- 功能:
- 显示文件的详细信息,包括权限、所有者、组、大小和修改时间。
ls -l
命令的输出格式- 比如:-rwxr-xr-- 1 owner group size date time filename
- 文件权限(
-rwxr-xr--
)- 第一个字符表示文件类型:
-
:普通文件d
:目录l
:符号链接- 其他类型(例如,
c
代表字符设备,b
代表块设备)
- 接下来的九个字符表示权限:
- 前三位(
rwx
):文件所有者的权限r
:读权限(Read)w
:写权限(Write)x
:执行权限(Execute)
- 中间三位(
r-x
):文件所在组的权限r
:读权限-
:没有写权限x
:执行权限
- 最后三位(
r--
):其他用户的权限r
:读权限-
:没有写权限-
:没有执行权限
- 前三位(
- 第一个字符表示文件类型:
- 硬链接数(
1
)- 文件的硬链接数量。对于目录,表示该目录下的子目录数量(包括
.
和..
)。
- 文件的硬链接数量。对于目录,表示该目录下的子目录数量(包括
- 文件所有者(
owner
)- 文件的所有者用户名。
- 文件所属组(
group
)- 文件所在组的组名。
- 文件大小(
size
)- 文件的大小,单位为字节(bytes)。对于目录,这表示目录的大小(通常较小,因为它只存储目录项)。
- 修改日期(
date
)- 文件的最后修改日期,格式通常为
月 日 年
。
- 文件的最后修改日期,格式通常为
- 修改时间(
time
)- 文件的最后修改时间,格式通常为
小时:分钟
。
- 文件的最后修改时间,格式通常为
- 文件名(
filename
)- 文件的名称。对于目录,显示目录名称。对于符号链接,显示链接的目标。
第五节:文件搜索命令
-
find:查找文件与目录
- 语法:find 【路径】【选项】【条件】
- 常用参数:
-name
: 按文件名搜索,支持通配符。-iname
: 忽略大小写的文件名搜索。-type
: 按文件类型搜索。f
:普通文件d
:目录l
:符号链接
-size
: 按文件大小搜索。+100M
:大于 100 MB-10k
:小于 10 KB500
:等于 500 字节
-mtime
: 按文件修改时间搜索。+7
:修改时间超过 7 天-30
:修改时间在过去 30 天内0
:今天
-exec
: 对查找到的文件执行命令。-print
: 默认行为,输出找到的文件路径。
-
locate:快速查找文件
- 语法:locate 【选项】模式
- 常用参数:
-i
: 忽略大小写。-r
: 使用正则表达式。- 注意:
locate
依赖于预建的数据库,因此速度快,但可能不是最新的。可以使用updatedb
命令更新数据库。
-
grep:查找文件内容
- 语法:grep 【选项】 模式 【文件】
- 常用参数:
-r
: 递归搜索目录及其子目录。-i
: 忽略大小写。-l
: 仅输出包含匹配模式的文件名。-n
: 显示匹配的行号。
第六节:帮助命令
-
man:查看手册页
- 语法:man 【选项】【命令】
- 常见参数:
-k
: 搜索手册页中的关键字。-f
: 显示命令的简要说明。-a
: 显示所有匹配的手册页(通常按顺序显示)。
-
info:查看info文档
- 语法:info 【选项】【命令】
- 常用参数:
--apropos
: 搜索 Info 文档中的关键字。
-
--help:获取命令的帮助信息
- 语法:命令 --help
- 几乎所有的命令都支持
--help
选项,用于显示该命令的简要使用说明及选项说明
- 几乎所有的命令都支持
- 语法:命令 --help
-
whatis:显示命令的简要说明
- 语法:whatis 【命令】
-
apropos:搜索手册页中的关键字
- 语法:apropos 【关键字】
-
help:获取内置命令的帮助
- help 【内置命令】
第七节:用户管理命令(建议root)
-
useradd:添加用户
- 语法:useradd 【选项】用户名
- 常用参数:
-m
: 创建用户主目录(/home/用户名
),不写默认就有。-d
: 指定用户主目录。-s
: 指定用户的默认 Shell。-G
: 将用户添加到指定的组中(多个组用逗号分隔)。
-
usermod:修改用户属性
- 语法:usermod 【选项】用户名
- 常用参数:
-aG
: 将用户追加到指定的组中。- usermod -aG groupname username
-s
: 修改用户的默认 Shell。- usermod -s /bin/zsh username
-d
: 修改用户的主目录。- usermod -d /new/home/dir username
-
userdel:删除用户
- 语法:userdel 【选项】用户名
- 常用参数:
-r
: 删除用户的主目录及其内容。一定要用,不然不会删除目录
-
passwd:修改密码
- 语法:passwd 【选项】【用户名】
- 常用参数:
-d
: 删除指定用户的密码(使其无法登录)。-
passwd -d username
-
-l
: 锁定用户账户。-
passwd -l username
-
-u
: 解锁用户账户。-
passwd -u username
-
-
不演示了,因为改了密码我怕忘了,passwd不加任何命令就是为新用户添加密码
-
groups:显示用户所属组
- 语法:groups 【用户名】
- 不写用户名就是当前用户
-
id:显示用户uid和gid
- 语法:id 【用户名】
- 不写用户名就是当前用户
-
who:显示当前登录用户
- 语法:who
- 显示当前系统上所有登录用户
-
w:显示系统上当前登录用户及其活动信息
- 语法:w 【选项】【用户名】
- 常用参数:
-h
: 不显示标题行。-s
: 显示简洁的输出,不包括所有列。
- 输出字段说明
USER
: 当前登录的用户名。TTY
: 用户登录的终端设备(如tty1
,pts/0
等)。FROM
: 用户登录的源(IP 地址或主机名)。LOGIN@
: 用户登录的时间。IDLE
: 用户自上次活动以来的空闲时间。JCPU
: 当前终端的所有进程所消耗的 CPU 时间。PCPU
: 当前用户正在运行的进程所消耗的 CPU 时间。WHAT
: 用户当前正在执行的命令或程序。
-
su:用户切换
- 语法:su 【选项】【用户名】
- 常用参数:
-
或--login
: 启动一个登录 shell,模拟用户登录时的环境变量。这是最常用的选项,它会读取目标用户的登录环境设置,例如.profile
、.bash_profile
或.bashrc
文件。- su - 用户名
-c
: 执行指定的命令并退出。例如,使用 root 权限执行ls
命令:- su -c 'ls /root'
-s
: 使用指定的 shell。例如,使用/bin/bash
作为 shell:- su -s /bin/bash 用户名
第八节:用户组管理命令
-
groupadd:添加组
- 语法:groupadd 【选项】 组名
- 常用参数:
-g
: 指定组 ID(GID)。-
groupadd -g 1001 groupname
-
-
groupmod:修改组信息
- 语法:groupdel 【选项】组名
- 常用参数:
-g
: 修改组 ID(GID)。- groupmod -g 1002 groupname
-n
: 修改组名。- groupmod -n newgroupname oldgroupname
-
groupdel:删除组
- 语法:groupdel 组名
-
gpasswd:管理组成员
- 语法:gpasswd 【选项】组名
-
getent:获取组信息
- 语法:getent group 【组名】
- 最好是添加组名,不然一串我不知道的东西出来了
-
id:显示uid与gid
- 语法:id 【用户名】
第九节:压缩与解压
-
tar:归档与解归档
- 语法:tar 选项 【-zcf】 【归档后的文件】【要归档文件的目录】
- tar与gzip命令结合使用实现文件打包、压缩。 tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz。
- 常用参数:
- -c:打包
- -v:显示详细信息
- -f:指定文件名
- -z:打包同时压缩,用了z就可以不用gzip了,这是告诉tar调用gzip
- -x:解包,这个时候加z就是解包和解压
- 语法:tar 选项 【-zcf】 【归档后的文件】
-
gzip和gunzip:压缩于解压缩
- gzip:压缩
- 语法:gzip 【文件】
- 压缩后文件格式:.gz,不可以压缩目录、链接
- gunzip:解压
- 语法:gunzip 【文件.gz】
- gunzip=gzip -d用别名替换了
- gzip:压缩
-
zip与unzip:(源文件存在,复制+压缩)
- 语法:zip 【选项】 【压缩后的文件名】【文件或目录】
- 常用参数:
- -r:压缩目录
- unzip 【压缩后的文件名】
-
xz:
- 不写了,够用了
-
bzip2:
- 不写了,够用了
第十节:网络命令
-
ping:测试网络连通性
- 语法:ping 【选项】主机名或ip地址
- 常用参数:
-c
: 指定发送的请求数量。- ping -c 4 example.com
-i
: 设置发送请求的时间间隔(秒)。- ping -i 2 example.com
-
ifconfig:配置网络接口
- 语法:ifconfig 【接口】【地址】【选项】
- 常用参数:
up
::启用网络接口。- ifconfig 接口名 up
- down:禁用网络接口。
- ifconfig 接口名 down
-
ip:现代网络接口配置
- 语法:ip 【选项】【参数】
- 常用参数:
addr
: 显示或配置 IP 地址。- ip addr show
ip addr add 192.168.1.100/24 dev eth0
- ip addr show
link
: 显示或配置网络接口状态。- ip link show
ip link set eth0 up
- ip link show
- a:显示所有内容
-
netstat:网络统计
- 语法:netstat 【选项】
- 常见参数:
-t
: 显示 TCP 连接。-u
: 显示 UDP 连接。-l
: 显示监听的套接字。-a
: 显示所有连接和监听的套接字。
-
ss:更现代的网络统计工具
- 语法:ss 【选项】
- 常用参数:
-t
: 显示 TCP 连接。-u
: 显示 UDP 连接。-l
: 显示监听的套接字。-a
: 显示所有连接和监听的套接字。
-
traceroute:追踪网络路径
- 语法:traceroute 【选项】 主机名或ip地址
- 常用参数:
-m
: 设置最大跳数。- traceroute -m 20 example.com
-
curl:下载或发送数据
- 语法:curl 【选项】【url】
- 常用参数:
-O
: 保存到文件(O泡果奶不是零)。- curl -O http://example.com/file.txt
-I
: 仅获取 HTTP 头信息。- curl -I http://example.com
第十一节:关机重启命令
-
shutdown:关机或重启
- 语法:shutdown 【选项】【时间】【消息】
- 常用参数:
-h
: 关机。-r
: 重启。-P
: 在关机时关闭电源(通常为默认设置)。-c
: 取消计划的关机或重启。
-
reboot:重启系统
- 语法:reboot [选项]
- 没什么常用选项单独用reboot,不演示了
-
poweroff:
- 语法:poweroff [选项]
- 没什么常用选项单独用poweroff ,不演示了
-
halt:
- 语法:halt [选项]
- 没什么常用选项单独用halt ,不演示了
-
init:重启或关机
- 语法:reboot [选项]
- 语法:init 【级别】
- 常用参数:
0
: 关机。6
: 重启。