1.linux目录结构
Linux 的文件系统遵循一种层次化的目录结构,这种结构有助于组织和管理操作系统中的文件和目录。以下是 Linux 常见的目录结构及其主要用途的简要介绍:
目录 | 描述 |
---|---|
/ | 根目录,整个文件系统的起点,包含了所有其他目录和文件。 |
/bin | 存放系统核心命令(二进制文件),如 ls、cp、mv 等,这些命令对于系统启动和修复很重要。 |
/boot | 包含用于启动 Linux 的文件,如内核镜像文件和引导加载程序(如 GRUB)的配置文件。 |
/dev | 包含设备文件,Linux 将设备视为文件,这里存放硬件设备文件和与设备通信的接口文件。 |
/etc | 存放系统的配置文件,包括系统启动时需要的配置文件和软件的配置文件。 |
/home | 用户的主目录,每个用户有一个单独的子目录,通常以用户名命名。 |
/lib | 存放系统和应用程序所需的共享库和内核模块。 |
/media | 用于挂载可移动媒体设备(如 USB 驱动器、光盘等)的挂载点。 |
/mnt | 临时挂载目录,用于手动挂载其他文件系统,通常不会自动挂载。 |
/opt | 可选应用程序包的安装目录,一些大型的第三方应用程序(如 Oracle 数据库)可能会安装在这个目录下。 |
/proc | 虚拟文件系统,提供当前运行进程和内核信息的访问点,可以通过读取特定文件获取系统状态和配置信息。 |
/root | 超级用户(root)的主目录。 |
/run | 用于存放系统运行时需要的临时文件(如 PID 文件和 socket 文件),此目录在系统启动时会自动清空。 |
/sbin | 存放系统管理员使用的系统管理命令,例如 fdisk、fsck 等,与 /bin 的区别在于这些命令通常只能由 root 用户执行。 |
/srv | 存放服务(services)的相关数据,如 HTTP 服务或 FTP 服务的数据。 |
/sys | 也是一个虚拟文件系统,包含了内核和设备的运行时信息,可以用来访问和配置内核的各种参数。 |
/tmp | 用于存放临时文件的目录,所有用户都可以访问,重启时会清空。 |
/usr | 存放用户安装的应用程序和文件,类似于 Windows 的 Program Files 目录,包含了大部分用户安装的软件。 |
/var | 存放经常变化的文件,如日志文件(/var/log)、缓存文件(/var/cache)、邮件(/var/mail)等。 |
这些目录和文件的组织方式使得 Linux 系统更加清晰和易于管理。通过了解这些目录的功能和用途,可以更有效地进行系统管理和维护。
2.linux文件基本属性
在 Linux 系统中,每个文件都有一些基本属性,这些属性决定了文件的类型、权限和其他重要信息。本文将详细介绍 Linux 文件的基本属性,包括文件类型、权限、所有者和大小等,并通过表格进行展示和解释。
2.1 Linux 文件的基本属性
每个文件在 Linux 中都具有以下基本属性:
-
文件类型:Linux 中的文件可以分为普通文件、目录、链接文件等不同类型。
-
权限:决定了对文件的访问权限,包括读(r)、写(w)、执行(x)权限,分别对应文件的所有者、所属组和其他用户。
-
所有者:文件的所有者和所属组,决定了文件的管理者和访问者。
-
文件大小:文件所占用的存储空间大小。
2.2 Linux 文件类型
Linux 中常见的文件类型包括:
类型 | 描述 | 示例 |
---|---|---|
普通文件 | 存储文本或二进制数据的标准文件 |
file.txt , program.bin
|
目录 | 存储其他文件或目录的容器 | /home/user/ |
符号链接 | 指向另一个文件或目录的符号链接 | file.txt -> file2.txt |
设备文件 | 代表系统硬件设备的文件,包括块设备和字符设备 |
/dev/sda , /dev/tty1
|
命名管道 | 用于进程间通信的特殊文件 | /tmp/my_pipe |
套接字 | 用于进程间通信的文件,主要用于网络通信 | /tmp/mysql.sock |
2.3 Linux 文件权限
Linux 中的文件权限由一组字符表示,如 -rwxr-xr--
,具体含义如下:
- 第一位表示文件类型
当为 d 则是目录
当为 - 则是文件;
若是 l 则表示为链接文档(link file);
若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。 - 后面三组(每组三位)分别表示所有者权限、所属组权限和其他用户权限(读、写、执行)。
2.4 文件属性示例
以下是一些文件的属性示例:
文件名 | 类型 | 权限 | 所有者 | 大小 |
---|---|---|---|---|
file.txt |
普通文件 | -rw-r--r-- |
user1 |
1024 B |
dir1 |
目录 | drwxr-xr-x |
user2 |
4096 B |
link.txt |
符号链接 | lrwxrwxrwx |
user1 |
7 B |
/dev/sda |
设备文件 | brw-rw---- |
root |
- |
/tmp/my_pipe |
命名管道 | prw-r--r-- |
user1 |
- |
2.5 如何查看和修改文件属性
-
查看文件属性:使用
ls -l
命令可以列出文件的详细属性。 -
修改文件权限:使用
chmod
命令可以修改文件的权限,例如chmod u+x file.txt
给文件所有者添加执行权限。
2.6 ls -l 命令
ls -l
是一个常用的 Linux 命令,用于显示目录或文件的详细信息。下面解释一下 ls -l
命令输出中的各个字段:
-
文件类型和权限:第一个字符表示文件类型,常见的类型包括
-
(普通文件)、d
(目录)、l
(符号链接)、c
(字符设备)、b
(块设备)等。 -
权限:接下来的九个字符表示文件的访问权限。分为三组,每组三个字符,分别代表文件所有者的权限、同组用户的权限和其他用户的权限。每组权限字符可以是以下几种之一:
-
r
表示可读权限 -
w
表示可写权限 -
x
表示可执行权限 -
-
表示无权限
例如,rwxr-xr--
表示所有者具有读、写、执行权限,同组用户具有读和执行权限,其他用户只有读权限。
-
- 连接数:表示文件或目录的硬链接数。硬链接数是指有多少个文件名指向同一个 inode 的数量。
- 所有者:文件或目录的所有者用户名。
- 所属组:文件或目录所属的用户组名。
- 文件大小:以字节为单位显示文件大小。对于目录,显示的是该目录下所有文件的大小总和。
- 修改时间:指文件或目录的最后修改时间。
-
文件名或目录名:最后显示的是文件名或目录名。
例如,一个典型的ls -l
输出可能是这样的:
-rw-r--r-- 1 user1 group1 1024 Jul 9 12:00 example.txt
在这个例子中:
-
-rw-r--r--
表示这是一个普通文件,所有者有读写权限,同组用户有读权限,其他用户有读权限。 -
1
表示这个文件的硬链接数。 -
user1
是文件的所有者用户名。 -
group1
是文件所属的用户组名。 -
1024
是文件的大小,单位是字节。 -
Jul 9 12:00
是文件的最后修改时间。 -
example.txt
是文件的名称。
通过ls -l
命令,可以快速查看文件或目录的详细信息,帮助用户了解和管理文件系统中的内容。
3.如何在 Linux 中更改文件属性
在 Linux 中,可以通过多种方式来修改文件的属性,包括文件权限、所有者和所属组。
3.1 修改文件权限
Linux 中的文件权限由读(r)、写(w)、执行(x)三种基本权限组合而成,分别对应文件的所有者、所属组和其他用户。可以使用 chmod
命令来修改文件的权限。
chmod
命令用法示例:
命令示例 | 描述 |
---|---|
chmod u+x file.txt |
给文件所有者添加执行权限。 |
chmod g-w file.txt |
删除文件所属组的写权限。 |
chmod o=r file.txt |
设置其他用户只有读权限,同时清除其他权限。 |
chmod a=rw file.txt |
给文件的所有用户(所有者、所属组、其他用户)添加读写权限。 |
3.2 修改文件所有者和所属组
文件的所有者和所属组可以使用 chown
和 chgrp
命令来更改。chown
命令用法示例:
命令示例 | 描述 |
---|---|
chown user1 file.txt |
将文件 file.txt 的所有者更改为 user1 。 |
chown user1:group1 file.txt |
将文件 file.txt 的所有者更改为 user1 ,所属组更改为 group1 。 |
chgrp 命令用法示例: |
命令示例 | 描述 |
---|---|
chgrp group1 file.txt |
将文件 file.txt 的所属组更改为 group1 。 |
4.文件与目录管理
4.1.处理目录的命令
在 Linux 系统中,有许多用于处理目录的常用命令,包括创建、删除、复制、移动等操作。
处理目录的常用命令
ls(英文全拼:list files): 列出目录及文件名
cd(英文全拼:change directory):切换目录
pwd(英文全拼:print work directory):显示目前的目录
mkdir(英文全拼:make directory):创建一个新的目录
rmdir(英文全拼:remove directory):删除一个空的目录
cp(英文全拼:copy file): 复制文件或目录
rm(英文全拼:remove): 删除文件或目录
mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称
4.1.1 创建目录
创建目录是日常文件系统管理中常见的操作,可以使用 mkdir
命令。
mkdir
命令用法示例:
命令示例 | 描述 |
---|---|
mkdir directoryname |
创建一个名为 directoryname 的新目录。 |
mkdir -p path/to/dir |
创建多级目录结构,递归创建 path/to/dir 目录。 |
4.1.2 切换目录
切换工作目录是在命令行中导航文件系统的基本操作,可以使用 cd
命令。
cd
命令用法示例:
命令示例 | 描述 |
---|---|
cd directoryname |
切换到名为 directoryname 的目录。 |
cd .. |
切换到父目录。 |
cd ~ |
切换到当前用户的主目录。 |
4.1.3 列出目录内容
列出目录的内容,包括文件和子目录,可以使用 ls
命令。
ls
命令用法示例:
命令示例 | 描述 |
---|---|
ls |
列出当前目录的文件和子目录。 |
ls -l |
列出详细信息,包括权限、所有者、大小等。 |
ls -a |
列出所有文件,包括隐藏文件(以 . 开头)。 |
4.1.4 复制、移动和删除目录
对目录进行复制、移动和删除是管理文件系统的关键操作,可以使用 cp
、mv
和 rm
命令。
cp
、mv
和 rm
命令用法示例:
命令示例 | 描述 |
---|---|
cp -r sourcedir destdir |
递归复制整个源目录到目标目录。 |
mv sourcedir destdir |
移动源目录到目标目录。 |
rm -r directoryname |
递归删除目录及其所有内容。 |
4.2 处理文件的命令
在 Linux 操作系统中,文件处理是日常操作的一个重要部分。无论是创建、查看、编辑还是管理文件,Linux 提供了丰富的命令和工具来帮助用户高效地进行文件处理。本文将介绍几个常用的 Linux 文件处理命令,涵盖文件的创建、查看、编辑、复制、移动和删除等操作。
4.2.1 创建文件和目录
-
touch: 创建空文件或者更新已存在文件的时间戳。
touch filename
4.2.2 mkdir创建新目录。
mkdir dirname
4.2.3 查看文件内容
-
cat: 用于连接文件并打印到标准输出设备上,常用于查看文件内容。
cat filename
-
more: 分屏显示文件内容,适合查看大文件。
more filename
-
less: 与
more
类似,但提供更多功能,如向前或向后滚动查看文件内容。less filename
-
head: 显示文件的头部内容,默认显示前 10 行。
head filename
-
tail: 显示文件的尾部内容,默认显示最后 10 行。
tail filename
4.2.4 编辑文件
-
nano: 基本文本编辑器,易于上手。
nano filename
-
vi / vim: 强大的文本编辑器,有多种模式和命令,学习曲线较陡。
vi filename
4.2.5 复制、移动和重命名文件
-
cp: 复制文件或目录。
cp source_file destination_file
-
mv: 移动文件或目录,也可用于重命名文件。
mv old_name new_name
4.2.6 删除文件和目录
-
rm: 删除文件或目录。
rm filename rm -r dirname # 递归删除目录及其内容
4.2.6 查找文件
-
find: 在文件系统中查找文件。
find /path/to/search -name "filename"
-
locate: 基于数据库快速查找文件。
locate filename
4.2.7 文件权限和属性
-
chmod: 修改文件或目录的权限。
chmod permissions filename
-
chown: 修改文件或目录的所有者。
chown owner:group filename
-
ls: 列出目录内容,显示文件的属性和权限。
ls -l
4.2.8 压缩和解压文件
-
gzip / gunzip: 压缩和解压文件。
gzip filename gunzip filename.gz
-
tar: 打包多个文件成一个文件,也可以用于解压缩。
tar -cvf archive.tar files # 打包文件 tar -xvf archive.tar # 解压文件
4.2.9 其他常用命令
-
stat: 显示文件或文件系统的详细信息。
stat filename
-
file: 确定文件类型。
file filename
-
ln: 创建链接(硬链接或符号链接)。
ln -s source_file link_name # 创建符号链接
5 用户和用户组管理
在 Linux 系统中,用户和用户组管理是系统管理员经常需要进行的任务之一。通过用户和用户组的管理,可以确保系统安全性和权限控制。以下是一些常用的用户和用户组管理命令,以表格形式展示其用法和效果。
1. 用户管理
对于用户管理,可以使用 useradd
、passwd
、usermod
、userdel
等命令。
用户管理命令用法示例:
命令示例 | 描述 |
---|---|
useradd username |
添加一个新用户 username 。 |
passwd username |
为用户 username 设置密码。 |
usermod -aG groupname username |
将用户 username 添加到用户组 groupname 。 |
userdel -r username |
删除用户 username ,同时删除用户的主目录和邮件箱等。 |
2. 用户组管理
对于用户组管理,可以使用 groupadd
、groupmod
、groupdel
等命令。
用户组管理命令用法示例:
命令示例 | 描述 |
---|---|
groupadd groupname |
添加一个新用户组 groupname 。 |
groupmod -n newname groupname |
将用户组 groupname 重命名为 newname 。 |
groupdel groupname |
删除用户组 groupname 。 |
gpasswd -a username groupname |
将用户 username 添加到用户组 groupname 。 |
3. 列出用户和用户组信息
列出用户和用户组的信息可以使用 cat
、getent
、id
命令。
列出用户和用户组信息命令用法示例:
命令示例 | 描述 |
---|---|
cat /etc/passwd |
列出系统中的所有用户信息。 |
getent group groupname |
列出用户组 groupname 的信息。 |
id username |
列出用户 username 的信息,包括用户 ID 和所属用户组。 |
4 useradd的使用
useradd
是在 Linux 系统中用于创建新用户的命令,它有许多可用的参数来设置用户的属性和配置。除了基本的 useradd username
外,以下是一些常用的 useradd
命令参数及其用法:
命令的其他参数和示例
-
设置用户主目录和默认 Shell:
-
-m
: 创建用户的同时,创建用户的主目录。 -
-d directory
: 指定用户的主目录路径。 -
-s shell
: 指定用户登录后默认使用的 Shell。
示例:
useradd -m -d /home/newuser -s /bin/bash newuser
这个命令会创建一个名为
newuser
的用户,同时创建/home/newuser
目录作为该用户的主目录,并设置/bin/bash
为其默认 Shell。 -
-
设置用户的UID和GID:
-
-u uid
: 指定用户的数字用户ID(UID)。 -
-g group
: 指定用户的初始用户组。
示例:
useradd -u 1001 -g users newuser
这个命令会创建一个UID为
1001
,初始用户组为users
的新用户newuser
。 -
-
设置账号的过期时间和创建日期:
-
-e YYYY-MM-DD
: 指定账号的过期日期,格式为年-月-日。 -
-f inactive_days
: 账号在密码过期后多少天自动禁用。
示例:
useradd -e 2025-01-01 -f 30 newuser
这个命令会创建一个账号
newuser
,并设置其账号的过期日期为2025年1月1日
,在密码过期后30
天自动禁用账号。 -
-
设置额外的组成员:
-
-G group1,group2
: 将用户添加到额外的用户组中,多个组名用逗号分隔。
示例:
useradd -G developers,sudo newuser
这个命令会创建一个用户
newuser
,并将其添加到developers
和sudo
这两个用户组中。 -
-
强制用户更改初始密码:
-
-p password
: 设置用户的初始密码(通常不推荐在命令行中使用明文密码)。
示例:
useradd -p password newuser
这个命令会创建一个用户
newuser
,并将其初始密码设置为password
。 -
-
显示帮助信息:
-
-h
: 显示useradd
命令的帮助信息。
示例:
useradd -h
-
6.linux磁盘管理
6.1 Linux 磁盘管理详解
在 Linux 系统中,有效管理磁盘是确保系统稳定性和性能的关键部分。本文将介绍几个重要的磁盘管理命令和相关信息,涵盖磁盘分区、文件系统创建与管理、磁盘空间监控等内容。
6.2 磁盘分区管理
磁盘分区是将硬盘划分成若干独立的逻辑单元,可以用于安装操作系统、存储数据等。Linux 下常用的分区工具是 fdisk
和 parted
。
-
fdisk: 命令行工具,用于创建、修改和删除分区。
fdisk /dev/sdX # sdX 是你的硬盘设备名,如 /dev/sda
fdisk 命令选项示例:
命令 描述 m
显示帮助信息 n
创建新分区 d
删除分区 p
显示分区列表 w
保存并退出 -
parted: 提供更多功能,支持更复杂的分区需求。
parted /dev/sdX
parted 命令选项示例:
命令 描述 mklabel
创建新分区表 mkpart
创建新分区 print
显示分区列表 resizepart
调整分区大小 quit
退出 parted
6.3 文件系统管理
文件系统是用来组织和管理文件的方法,Linux 支持多种文件系统类型,如 ext4、XFS、btrfs 等。
-
mkfs: 格式化磁盘并创建文件系统。
mkfs.ext4 /dev/sdX1 # 创建 ext4 文件系统
-
mount / umount: 挂载和卸载文件系统到指定的挂载点。
mount /dev/sdX1 /mnt # 将分区 /dev/sdX1 挂载到 /mnt umount /mnt # 卸载 /mnt
3. 磁盘空间管理
有效管理磁盘空间可以避免磁盘空间不足导致的问题。
-
df: 显示文件系统的磁盘空间使用情况。
df -h # 以人类可读的方式显示磁盘空间使用情况
df 命令选项示例:
命令选项 描述 -h
以人类可读的方式显示 -T
显示文件系统类型 -i
显示 inode 使用情况 -
du: 显示指定目录或文件的磁盘使用情况。
du -h /path/to/directory # 查看目录的磁盘使用情况
du 命令选项示例:
命令选项 描述 -h
以人类可读的方式显示 -s
显示汇总信息 -c
显示总计
6.4 磁盘管理工具
除了命令行工具外,还有一些图形化工具可以帮助管理磁盘,如 GNOME Disks(gnome-disks)等。
7. vi/vim 的使用
7.1 Vi/Vim:强大的文本编辑器
Vi 和 Vim 是 Unix 系统中最常用的文本编辑器之一,也是程序员和系统管理员必备的工具。尽管有一定的学习曲线,但它们提供了强大的编辑功能和高度的定制能力。本文将介绍 Vi/Vim 的基本使用方法和一些常用技巧,帮助初学者快速上手和提高效率。
7.2 Vi 和 Vim 的区别
Vi(Vi IMproved)是 Vim 的前身,Vim 在 Vi 的基础上增加了许多功能和改进,使得编辑更加便捷和高效。在大多数现代系统中,Vi 实际上是 Vim 的符号链接。
7.3 打开和退出
7.3.1 打开文件
vim filename
7.3.1 退出 Vim
保存并退出:按下 Esc
进入命令模式,输入 :wq
并按下 Enter
。
不保存并退出:按下 Esc
进入命令模式,输入 :q!
并按下 Enter
。
保存但不退出:按下 Esc
进入命令模式,输入 :w
并按下 Enter
。
7.4 三种模式
Vim 有三种基本工作模式:
命令模式(Command Mode):默认模式,可以执行命令如移动光标、复制粘贴等,按下 Esc
进入。
插入模式(Insert Mode):用于输入或编辑文本,按下 i
进入插入模式。
末行模式(Last Line Mode):在命令模式下输入 :
进入,用于执行保存、退出等命令。
7.5 基本移动和编辑
7.5.1 移动光标
-
h
,j
,k
,l
:左、下、上、右。 -
w
:按单词向前移动。 -
b
:按单词向后移动。 -
0
:移到行首。 -
$
:移到行尾。 -
gg
:跳到文件开头。 -
G
:跳到文件末尾。
7.5.2 编辑文本
-
i
:在光标处插入文本。 -
a
:在光标后插入文本。 -
o
:在当前行后插入新行并进入插入模式。 -
x
:删除当前光标处字符。 -
dd
:删除当前行。 -
yy
:复制当前行。 -
p
:粘贴。
7.6 搜索和替换
搜索
-
/keyword
:向下搜索keyword
。 -
?keyword
:向上搜索keyword
。 -
n
:跳到下一个搜索结果。 -
N
:跳到上一个搜索结果。
替换
-
:%s/old/new/g
:全文替换old
为new
。
7.7 多文件操作
打开多个文件
vim file1 file2
使用 :next
和 :prev
在多个文件间切换。
分割窗口:split
:水平分割窗口。:vsplit
:垂直分割窗口。
-Ctrl + w
,Ctrl + w
切换窗口。
8 yum命令
在 Linux 系统中,yam
并不是一个常见的标准命令。可能出现误解或打字错误。也许您想了解的是 yum
命令,它是用于管理软件包的工具,特别是在基于 RPM 的 Linux 发行版(如 CentOS、Red Hat Enterprise Linux)中广泛使用。
YUM 是一个命令行工具,用于管理 RPM 软件包,包括安装、更新、删除以及解析依赖关系等操作。以下是一些常用的 yum
命令及其功能:
8.1 安装软件包
yum install package_name
这条命令会安装指定名称的软件包及其依赖项。
8.2 更新软件包
yum update
更新系统中已安装的所有软件包到最新版本。
8.3 搜索软件包
yum search keyword
根据关键词搜索可用的软件包。
8.4 列出已安装的软件包*
yum list installed
列出当前系统中所有已安装的软件包。
8.5 删除软件包
yum remove package_name
从系统中删除指定的软件包。
8.6 清理旧的软件包及缓存
yum clean packages
yum clean all
清理已下载但尚未安装的软件包及其缓存。
8.7 显示软件包信息
yum info package_name
显示关于指定软件包的详细信息,包括版本、依赖关系等。
8.7 显示可用的软件仓库
yum repolist
显示系统中已配置的软件仓库列表。
8 apt命令
在 Linux 系统中,apt
命令是用于管理软件包的高级工具,主要用于 Debian 及其衍生发行版(如 Ubuntu)的软件包管理。apt
工具提供了一种便捷的方式来搜索、安装、更新和删除软件包,同时还能够处理依赖关系和软件源的管理。以下是一些常用的 apt
命令及其功能:
9.1更新软件包列表
sudo apt update
通过此命令,系统会从软件源更新已安装的软件包的最新版本信息,以保持软件列表是最新的。
9.2 搜索软件包
apt search <keyword>
通过此命令,可以在软件包索引中搜索包含指定关键字的软件包,以便了解是否有相关的软件包可供安装。
9.3 安装软件包
sudo apt install <package_name>
使用此命令安装指定的软件包,<package_name>
是要安装的软件包名称。apt
会自动处理软件包的依赖关系,并安装必要的软件包。
9.4 卸载软件包
sudo apt remove <package_name>
通过此命令可以卸载指定软件包,但保留其配置文件。
sudo apt purge <package_name>
通过此命令可以完全卸载指定软件包,包括其配置文件等。
9.5 更新已安装的软件包
sudo apt upgrade
此命令会升级已安装的所有软件包到其最新可用版本。它会下载新版本的软件包,并安装更新。
9.6 清理过时软件包
sudo apt autoremove
该命令会自动删除已经不再被任何软件依赖的过时软件包,以释放磁盘空间。
9.7 显示软件包的详细信息
apt show <package_name>
通过此命令可以显示特定软件包的详细信息,包括其描述、版本、大小、依赖关系等。
9.8 添加和删除软件源
sudo add-apt-repository <repository>
sudo apt-add-repository --remove <repository>
通过这些命令可以添加和删除软件源,以便获取更多软件包或使用其他软件源。
9.9 清理下载的软件包
sudo apt clean