B站 黑马程序员 的视频 BV1n84y1i7td 黑马程序员新版Linux零基础快速入门到精通,全涵盖linux系统知识、常用软件环境部署、Shell脚本、云平台实践、大数据集群项目实战等
增强自控力
- 冥想
- 慢呼吸
- 绿色锻炼
- 充分休息
- 减少决策次数
- 优先做重要的事情(早晨)
- 融入强自控群
- 控制冲动情绪,心理暗示自己
- 取消道德许可,牢记目标
- 自我原谅适度放松
文章目录
- Linux零基础快速入门到精通
- 第一章 初始Linux
- 1 初始Linux
- 2 VMware WorkStation安装
- 3 FinalShell远程Linux操作系统
- 4 快照
- 第二章 Linux基础命令
- 1 命令入门(ls cd mkdir)
- ls命令基本语法
- cd切换工作目录
- **相对路径和绝对路径**
- 创建目录命令(mkdir)
- 2 文件操作命令part1(touch、cat、more)
- 1. `touch` 命令
- 2. `cat` 命令
- 3. `more` 命令
- 总结对比
- 3 文件操作命令part2(cp、mv、rm)
- 1. `cp` 命令
- 2. `mv` 命令
- 3. `rm` 命令
- 命令对比总结
- 4 查找命令(which、find)
- 1. `which` 命令
- 2. `find` 命令
- `which` 和 `find` 的对比
- 5 grep、wc和管道符
- 1. grep 命令
- 2. wc 命令
- 3. 管道符(`|`)
- 总结
- 6 echo、tail和重定向符
- 1. echo 命令
- 2. tail 命令
- 3. 重定向符
- 总结
- 7 vi编辑器
- 1. 启动 `vi` 编辑器
- 2. vi 编辑器的基本操作
- 切换到插入模式
- 切换到命令模式
- 命令模式的基本操作
- 底行模式的基本操作
- 3. 退出 vi 编辑器
- 4. vi 的高级功能
- 5. 总结
- 补充
- 第三章 用户和权限
- 1 认识root用户
- 1 root用户
- 2. su命令
- 3. sudo命令
- 2 用户、用户组管理
- 1. 用户管理
- 设置用户密码
- 查看用户信息
- 删除用户
- 修改用户
- 2. 用户组管理
- 创建用户组
- 查看用户组信息
- 添加用户到用户组
- 删除用户组
- 删除用户组中的用户
- 3. 常用命令和文件
- 查看当前用户和组
- 文件权限与用户组
- 总结
- 3 权限控制
- 1 查看权限控制
- 2 修改权限控制 - chmod
- 文件权限的基本概念
- 基本语法
- 权限的表示方法
- 1. 符号模式
- 2. 数字模式
- 3. 修改目录权限
- 4. 常用选项
- 5. 权限的查看
- 总结
- 3 修改权限控制 - chown
- 基本语法
- 常用的选项
- 1. 修改文件或目录的所有者
- 2. 修改文件或目录的用户组
- 3. 修改文件的所有者和用户组
- 4. 递归修改目录及其内容的所有者和用户组
- 5. 使用参考文件设置所有者和用户组
- 6. 查看文件的所有者和用户组
- 7. 举例说明
- 总结
- 第四章 Linux实用操作
- 1 常用快捷键
- 2 软件安装
- 使用yum为CentOS系统安装软件
- 使用apt为Ubuntu安装软件
- 3 systemctl
- 4 使用ln创建软连接
- 1. 创建软链接到文件
- 2. 创建软链接到目录
- 5 日期、时区
- 1. 查看日期和时间(`date` 命令)
- 2. 修改 Linux 系统时区
- 3. 使用 NTP 进行时间同步和校准
- 6 IP地址、主机名
- ip地址
- 主机名
- 虚拟机配置固定IP
- 7 网络传输
- 1 下载和网络请求
- 1. 使用 `ping` 检查服务器是否可联通
- 2. 使用 `wget` 下载文件
- 3. 使用 `curl` 发起网络请求
- 2 端口
- 8 进程管理
- 1. 查看进程
- 2. 终止进程
- 3. 修改进程优先级
- 4. 后台进程管理
- 5. 查看和管理系统资源
- 6. 常用进程管理命令总结
- 9 主机状态
- 查看系统资源占用
- top命令选项
- top交互式选项
- 磁盘信息监控
- 1. `df` 命令:查看磁盘空间使用情况
- 2. `du` 命令:查看目录和文件的磁盘使用情况
- 3. `lsblk` 命令:显示磁盘分区信息
- 4. `fdisk` 和 `parted` 命令:查看磁盘分区
- 5. `iostat` 命令:查看磁盘性能
- 网络状态监控
- 1. `ifconfig` / `ip` 命令:查看网络接口信息
- 2. `netstat` / `ss` 命令:查看网络连接和端口
- 3. `ping` 命令:测试网络连通性
- 4. `traceroute` 命令:追踪网络路径
- 5. `nmap` 命令:端口扫描和网络安全
- 6. `iftop` 命令:实时流量监控
- 7. `tcpdump` 命令:抓包工具
- 8. `vnstat` 命令:带宽监控
- 10 环境变量
- 11 上传、下载
- 12 压缩、解压
- 2. 使用 `tar` 进行打包和解压
- 5. 使用 `zip` 和 `unzip` 压缩/解压
Linux零基础快速入门到精通
切换阿里云镜像
- 检查网络连接
- 确保您的系统能够连接到互联网:
ping -c 4 8.8.8.8
如果无法成功 ping 通,则说明网络配置有问题,需要检查网络接口配置。
- 检查 DNS 配置
- 确保
/etc/resolv.conf
文件中配置了有效的 DNS 服务器。例如:
cat /etc/resolv.conf
如果没有内容,或 DNS 配置无效,可以添加 Google 的公共 DNS:
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
- 切换镜像源
- 如果网络正常,但仍然无法访问
mirrorlist.centos.org
,可以切换到其他镜像源,如阿里云或清华大学的镜像源。
替换 YUM 源为阿里云
- 备份当前的 YUM 配置:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
- 下载阿里云的 CentOS 7 YUM 配置:
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
- 清除缓存并重新生成缓存:
yum clean all
yum makecache
替换为清华大学的镜像源
- 替换清华源:
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.tuna.tsinghua.edu.cn/repos/CentOS-7.repo
- 同样清除缓存并重新生成缓存:
yum clean all
yum makecache
- 更新系统
- 更新系统可能会修复一些潜在的配置问题:
yum -y update
大概等10分钟
如果以上步骤无法解决问题,请提供更多的网络环境信息(如 ifconfig
或 ip addr
输出),以便进一步排查。
第一章 初始Linux
1 初始Linux
Linux创始人:林纳斯 托瓦兹
Linux系统的组成 :
- 1 Linux系统内核(Kernel)
- 定义:Linux内核是Linux系统的核心部分,直接与硬件交互,并为上层应用程序提供基础服务。
- 功能:
- 硬件管理:如CPU、内存、I/O设备的管理。
- 进程管理:负责进程的创建、调度和终止。
- 文件系统管理:支持多种文件系统(如ext4、XFS)。
- 网络管理:提供网络协议支持(如TCP/IP)。
- 设备驱动:通过驱动程序管理外部设备。
- 2 系统级应用程序
- 定义:系统级应用程序是直接运行在操作系统上的程序,提供系统管理和用户交互功能。
- 组成:
- Shell(命令行解释器):如Bash、Zsh,用于用户与系统的交互。
- 实用工具:如文件操作命令(
cp
、mv
、rm
),文本处理工具(grep
、awk
)。 - 守护进程(Daemon):在后台运行的程序,如
cron
(计划任务)、sshd
(远程登录服务)。 - 包管理工具:如
apt
(Debian系)、yum
(Red Hat系),用于安装和管理软件包。
- 3 用户级应用程序(User Applications)
- 定义:用户直接使用的应用程序,包括桌面环境、浏览器、媒体播放器等。
- 特点:基于系统级应用和内核提供的服务运行
什么是虚拟机?
通过虚拟化技术,在电脑内,虚拟出计算机硬件,并给虚拟的硬件安装操作系统,即可得到一台虚拟的电脑,称之为虚拟机。
为什么要使用虚拟机?
学习Linux系统,需要有Linux系统环境。
我们不能给自己电脑重装系统为Linux,所以通过虚拟机的形式,得到可以用的Linux系统环境,供后续学习使用。
2 VMware WorkStation安装
或者通过快捷键:win + r输入ncpa.cpl回车即可打开网络连接
下载CentOS镜像
https://vault.centos.org/7.6.1810/isos/x86_64/
用户名:centos
密码:1234
3 FinalShell远程Linux操作系统
无论是企业开发亦或是个人开发,使用Linux操作系统,多数都是使用的:命令行
我们使用VMware可以得到Linux虚拟机,但是在VMware中操作Linux的命令行页面不太方便,主要是:
内容的复制、粘贴跨越VMware不方便
文件的上传、下载跨越VMware不方便
也就是和Linux系统的各类交互,跨越VMware不方便
4 快照
VMware虚拟机(Workstation和Funsion)支持为虚拟机制作快照。
通过快照将当前虚拟机的状态保存下来,在以后可以通过快照恢复虚拟机到保存的状态。
快照可以保存虚拟机的状态, 当虚拟机出现问题的时候, 可以通过预先制作的快照恢复到制作时候的状态, 用作备份用。
第二章 Linux基础命令
1 命令入门(ls cd mkdir)
Linux的目录结构是一个树型结构
Windows 系统可以拥有多个盘符, 如 C盘、D盘、E盘
Linux没有盘符这个概念, 只有一个根目录 /, 所有文件都在它下面
在Linux系统中,路径之间的层级关系,使用:/ 来表示 /usr/local/hello.txt
在Windows系统中,路径之间的层级关系,使用: \ 来表示 D:\data\work\hello.txt
Linux命令基础格式
无论是什么命令,用于什么用途,在Linux中,命令有其通用的格式:
command [-options] [parameter]
command: 命令本身
-options:[可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节
parameter:[可选,非必填]命令的参数,多数用于命令的指向目标等
ls
是 Linux 系统中用于列出目录内容的命令,常用于查看当前目录下的文件和子目录。
ls命令基本语法
ls [选项] [目录或文件路径]
常用选项
- 列出目录内容
ls
- 列出当前目录下的文件和子目录,按默认顺序显示(不显示隐藏文件)。
- 显示详细信息
ls -l
- 以长格式显示,包含权限、所有者、大小、修改时间等信息。
- 显示隐藏文件
ls -a
- 列出所有文件,包括隐藏文件(以 `.` 开头的文件)。
- 按人类可读方式显示文件大小
ls -lh
- 文件大小以人类可读的格式显示(如 KB、MB)。
- 递归显示子目录内容
ls -R
- 列出当前目录及其所有子目录的内容。
- 显示文件修改时间
ls -lt
- 按修改时间排序(最新的文件在最上面)。
- 只显示目录
ls -d */
- 列出当前目录下的所有子目录。
- 显示文件的inode号
ls -i
- 显示文件的inode编号(文件在文件系统中的唯一标识)。
- 按文件大小排序
ls -lS
- 按文件大小排序(从大到小)。
- 颜色显示
ls --color=auto
- 按不同颜色显示文件类型和权限(通常系统默认启用)。
组合使用
- 列出所有文件,详细信息,人类可读的大小
ls -alh
- 按时间排序显示隐藏文件
ls -lat
- 列出当前目录及所有子目录内容,详细信息
ls -lR
显示结果示例
$ ls -lh
-rw-r--r-- 1 user group 1.2K Jan 8 2025 example.txt
drwxr-xr-x 2 user group 4.0K Jan 8 2025 my_directory/
- 第一列:文件权限。
- 第二列:硬链接数。
- 第三列:所有者。
- 第四列:所属组。
- 第五列:文件大小。
- 第六列:最后修改日期。
- 第七列:文件或目录名称。
帮助与手册
- 查看命令的简要帮助:
ls --help
- 查看详细手册:
man ls
Linux系统的命令行终端,在启动的时候,默认会加载:
当前登录用户的HOME目录作为当前工作目录,所以ls命令列出的是HOME目录的内容
HOME目录:每个Linux操作用户在Linux系统的个人账户目录,路径在:/home/用户名
cd切换工作目录
cd
(change directory)命令是 Linux 和类 Unix 系统中用来切换工作目录的命令。它允许用户在不同目录间切换,以便访问或操作文件和目录。
基本语法
cd [目标目录路径]
- 目标目录路径:可以是绝对路径或相对路径。
常用操作
- 切换到指定目录
cd /path/to/directory
- 例如:`cd /home/user/documents`,切换到 `/home/user/documents` 目录。
- 切换到上级目录
cd ..
- `..` 表示当前目录的上一级目录。
- 切换到当前用户的主目录
cd ~
- 或直接使用 `cd` 不带任何参数。
- 主目录通常是 `/home/username`。
- 切换到上次访问的目录
cd -
- 切换到之前的工作目录,并显示该目录的路径。
- 使用相对路径切换目录
cd subdirectory
- 如果当前目录为 `/home/user`,运行 `cd documents` 则切换到 `/home/user/documents`。
- 切换到根目录
cd /
- `/` 是文件系统的根目录。
- 使用环境变量切换
- 切换到某个特定目录(示例:
**$HOME**
** 或自定义变量)**:
- 切换到某个特定目录(示例:
cd $HOME
- **环境变量可以指向常用的目录**,如:
export MYDIR=/path/to/mydir
cd $MYDIR
常见路径符号
符号 | 说明 |
---|---|
. | 当前目录 |
.. | 上一级目录 |
~ | 当前用户的主目录(如 /home/username ) |
/ | 文件系统根目录 |
查看当前目录
使用以下命令pwd(print work directory)可以查看当前工作目录:
pwd
示例操作
- 切换到
/etc
目录:
cd /etc
- 从
/etc
切换到其上一级目录/
:
cd ..
- 切换到主目录:
cd ~
- 切换回刚才的目录:
cd -
常见错误及解决方法
- 目录不存在
cd /nonexistent
错误:No such file or directory
解决:确认目标目录路径是否正确。
- 权限不足
cd /root
错误:Permission denied
解决:使用具有足够权限的账户(如sudo
)。
帮助与参考
- 查看帮助:
help cd
- 手册:
cd
通常是 Shell 内置命令,因此不在man
中显示,但可以查阅 Shell 文档或内置帮助系统。
相对路径和绝对路径
绝对路径:以根目录为起点,描述路径的一种写法,路径描述以/开头
相对路径:以当前目录为起点,描述路径的一种写法,路径描述无需以/开头
创建目录命令(mkdir)
mkdir
(makedirectory)是 Linux 系统中用来创建目录的命令。它可以创建一个或多个目录,支持指定权限或递归创建路径。
基本语法
mkdir [选项] 目录名称
常用选项
- 创建单个目录
mkdir directory_name
- 示例:`mkdir mydir`
创建名为 mydir
的目录。
- 递归创建多级目录
mkdir -p parent_directory/child_directory
- 示例:`mkdir -p /home/user/projects/myproject`
如果父目录不存在,-p
选项会自动创建所有必要的父目录。
- 指定权限创建目录
mkdir -m mode directory_name
- 示例:`mkdir -m 755 mydir`
创建目录并设置权限为 755
(用户可读写执行,组和其他用户可读执行)。
- 显示创建的目录路径
mkdir -v directory_name
- 示例:`mkdir -v mydir`
显示类似输出:mkdir: created directory 'mydir'
。
- 结合多个选项
mkdir -pv /home/user/newproject/subdir
- 创建多级目录,并显示创建过程。
目录权限说明
- 使用
-m
选项指定权限时,可以使用八进制模式(如777
)或符号模式(如u=rwx,g=rx,o=rx
)。 - 权限可以通过
chmod
命令修改。
常见示例
- 创建多个目录
mkdir dir1 dir2 dir3
- 同时创建 `dir1`、`dir2` 和 `dir3` 三个目录。
- 递归创建目录
mkdir -p /tmp/test/project
- 如果 `/tmp/test` 不存在,会自动创建。
- 创建目录并设置权限
mkdir -m 700 secure_dir
- 创建 `secure_dir`,并设置权限为仅用户可读写执行。
- 查看创建过程
mkdir -v mydir
- 输出创建过程:`mkdir: created directory 'mydir'`。
错误和解决方法
- 目录已存在
mkdir mydir
错误:mkdir: cannot create directory 'mydir': File exists
解决:确认目录是否已经存在,或使用 mkdir -p
。
- 权限不足
mkdir /root/newdir
错误:mkdir: cannot create directory '/root/newdir': Permission denied
解决:使用 sudo
提升权限:
sudo mkdir /root/newdir
查看帮助和手册
- 简要帮助:
mkdir --help
- 查看手册:
man mkdir
总结
mkdir
是一个简单而强大的工具,用于创建目录。结合 -p
和权限选项,可以适应大多数目录创建需求,是 Linux 文件系统管理的重要基础命令之一。
2 文件操作命令part1(touch、cat、more)
以下是 Linux 文件操作命令中的三个基本命令:touch
、cat
和 more
的详细介绍及其用法。
1. touch
命令
touch
命令主要用于创建空文件或更新文件的时间戳。
基本用法
- 创建空文件
touch filename
- 示例:`touch file1`
如果 file1
不存在,会创建一个空文件;如果文件已存在,仅更新其时间戳。
- 同时创建多个文件
touch file1 file2 file3
- 示例:`touch doc1 doc2 doc3`
创建 doc1
、doc2
和 doc3
。
- 更新文件时间戳
touch -c filename
- 示例:`touch -c file1`
如果文件存在,更新其访问和修改时间;如果文件不存在,不创建新文件。
- 设置特定时间
touch -t [[CC]YY]MMDDhhmm[.ss] filename
- 示例:`touch -t 202501081230 file1`
将 file1
的时间设置为 2025 年 1 月 8 日 12:30。
2. cat
命令
cat
命令用于查看文件内容、合并文件或创建文件。
基本用法
- 查看文件内容
cat filename
- 示例:`cat file1`
显示 file1
的内容。
- 显示行号
cat -n filename
- 示例:`cat -n file1`
为文件内容添加行号并显示。
- 将多个文件合并为一个文件
cat file1 file2 > merged_file
- 示例:`cat part1.txt part2.txt > combined.txt`
将 part1.txt
和 part2.txt
的内容合并到 combined.txt
。
- 创建文件
cat > filename
- 示例:`cat > file1`
输入内容后按 Ctrl+D
保存。
- 追加内容到文件
cat >> filename
- 示例:`cat >> file1`
向 file1
中追加内容,输入完成后按 Ctrl+D
。
3. more
命令
more
命令用于分页显示文件内容,适合查看较长文件。
基本用法
- 分页显示文件内容
more filename
- 示例:`more largefile.txt`
分页显示 largefile.txt
的内容,每次显示一页。
- 与管道结合使用
command | more
- 示例:`ls -l | more`
分页显示 ls -l
的输出。
- 常用快捷键
空格键
:显示下一页。Enter
:向下滚动一行。b
:返回上一页。q
:退出查看。
总结对比
命令 | 功能说明 | 常见场景 |
---|---|---|
touch | 创建文件或更新文件时间戳 | 创建新文件 |
cat | 查看文件内容,创建或合并文件 | 查看文件或合并多个文件 |
more | 分页查看文件内容 | 查看大文件内容,逐页显示 |
帮助与手册
touch
:man touch
或touch --help
cat
:man cat
或cat --help
more
:man more
或more --help
3 文件操作命令part2(cp、mv、rm)
以下是 Linux 文件操作命令中的三个重要命令:cp
、mv
和 rm
的详细介绍及用法。
1. cp
命令
cp
命令用于复制文件或目录。
基本用法
- 复制文件
cp source_file destination
- 示例:`cp file1.txt /home/user/`
将 file1.txt
复制到 /home/user/
目录。
- 复制多个文件到指定目录
cp file1.txt file2.txt /home/user/
- 示例:将 `file1.txt` 和 `file2.txt` 复制到 `/home/user/`。
- 递归复制目录
cp -r source_directory destination
- 示例:`cp -r mydir /home/user/`
将目录 mydir
及其内容复制到 /home/user/
。
- 提示覆盖文件
cp -i source_file destination
- 示例:`cp -i file1.txt /home/user/`
如果目标文件已存在,会提示用户是否覆盖。
- 保留文件属性
cp -p source_file destination
- 示例:`cp -p file1.txt /home/user/`
复制文件时保留原始权限、时间戳和所有者。
- 显示复制进度
cp -v source_file destination
- 示例:`cp -v file1.txt /home/user/`
显示文件复制过程。
2. mv
命令
mv
命令用于移动或重命名文件和目录。
基本用法
- 移动文件到指定目录
mv source_file destination
- 示例:`mv file1.txt /home/user/`
将 file1.txt
移动到 /home/user/
。
- 移动多个文件到指定目录
mv file1.txt file2.txt /home/user/
- 示例:将 `file1.txt` 和 `file2.txt` 移动到 `/home/user/`。
- 重命名文件或目录
mv old_name new_name
- 示例:`mv file1.txt file2.txt`
将 file1.txt
重命名为 file2.txt
。
- 提示覆盖文件
mv -i source_file destination
- 示例:`mv -i file1.txt /home/user/`
如果目标文件已存在,会提示用户是否覆盖。
- 强制覆盖文件
mv -f source_file destination
- 示例:`mv -f file1.txt /home/user/`
强制覆盖目标文件。
- 显示移动过程
mv -v source_file destination
- 示例:`mv -v file1.txt /home/user/`
显示文件移动的详细信息。
3. rm
命令
rm
命令用于删除文件或目录。
基本用法
- 删除文件
rm filename
- 示例:`rm file1.txt`
删除 file1.txt
。
- 删除多个文件
rm file1.txt file2.txt
- 示例:删除 `file1.txt` 和 `file2.txt`。
- 递归删除目录
rm -r directory_name
- 示例:`rm -r mydir`
删除目录 mydir
及其内容。
- 强制删除文件
rm -f filename
- 示例:`rm -f file1.txt`
强制删除文件,忽略不存在的文件和提示。
- 递归强制删除目录
rm -rf directory_name
- 示例:`rm -rf mydir`
强制删除目录 mydir
及其内容。
- 提示删除确认
rm -i filename
- 示例:`rm -i file1.txt`
删除前逐一提示用户确认。
命令对比总结
命令 | 功能说明 | 常见场景 |
---|---|---|
cp | 复制文件或目录 | 文件备份、复制目录内容 |
mv | 移动或重命名文件或目录 | 文件重命名、移动文件到指定目录 |
rm | 删除文件或目录 | 删除无用文件或清理目录内容 |
注意事项
**rm**
** 删除操作不可逆**:删除后无法恢复,使用时需小心,尤其是rm -rf
。- 检查路径:在使用
cp
或mv
时,确认目标路径正确,避免误操作。 - 权限问题:如果操作失败,可能需要使用
sudo
提升权限。
帮助与手册
cp
:man cp
或cp --help
mv
:man mv
或mv --help
rm
:man rm
或rm --help
恢复快照就行了
4 查找命令(which、find)
以下是 Linux 系统中两个常用的查找命令:which
和 find
的详细介绍及其用法。
1. which
命令
which
用于查找可执行文件的路径,它会在系统环境变量 $PATH
中查找命令的所在位置。
基本用法
- 查找命令的绝对路径
which command_name
- 示例:查找 `ls` 命令的路径
which ls
输出:/bin/ls
- 查找多个命令的路径
which command1 command2
- 示例:
which ls pwd
输出:
/bin/ls
/bin/pwd
- 查看某命令是否存在
- 如果命令不存在,
which
会返回空值。
- 如果命令不存在,
适用场景
- 确定某命令是否安装。
- 确认正在使用的命令路径(如检查是否是系统自带还是自定义安装的命令)。
2. find
命令
find
是功能强大的查找工具,用于在目录中查找文件或目录,支持基于名称、大小、时间等多种条件的搜索。
基本用法
- 按名称查找文件
find path -name filename
- 示例:在 `/home/user` 中查找名为 `test.txt` 的文件
find /home/user -name "test.txt"
- 按文件类型查找
find path -type file_type
- 文件类型说明:
* `f`:普通文件
* `d`:目录
* `l`:符号链接
- 示例:查找 `/var` 下的所有目录
find /var -type d
- 按大小查找
find path -size [+|-]size
- 示例:查找大于 10MB 的文件
find /home -size +10M
- 按修改时间查找
find path -mtime [+|-]days
- 示例:查找最近 7 天修改过的文件
find /home -mtime -7
- 执行操作
find path -name filename -exec command {} \;
- 示例:删除 `/tmp` 目录下的所有 `.log` 文件
find /tmp -name "*.log" -exec rm -f {} \;
- 查找并打印结果
- 使用
-print
显式打印查找结果(一般默认启用)。
- 使用
find /path -name "*.txt" -print
find
的高级选项
- 组合条件
- 逻辑与:
-a
或省略
- 逻辑与:
find /home -type f -size +1M -name "*.txt"
- **逻辑或**:`-o`
find /home -type f -name "*.txt" -o -name "*.log"
- 忽略大小写
find /home -iname "*.txt"
- `-iname` 用于忽略文件名大小写。
- 限制查找深度
find /home -maxdepth depth
- 示例:只在当前目录查找
find /home -maxdepth 1 -name "*.txt"
which
和 find
的对比
功能 | which | find |
---|---|---|
用途 | 查找命令的可执行路径 | 查找文件、目录或满足特定条件的对象 |
查找范围 | $PATH 环境变量中的路径 | 用户指定的目录范围 |
支持条件 | 无条件 | 支持多种条件(名称、大小、时间等) |
输出 | 可执行文件的路径 | 文件或目录的完整路径 |
使用场景 | 快速定位命令所在路径 | 灵活搜索文件、目录 |
帮助与手册
which
:
which --help
man which
find
:
find --help
man find
5 grep、wc和管道符
1. grep 命令
grep
是 Linux 中的强大工具,用于在文件或输入中搜索指定的字符串或模式,并输出匹配的行。
基本语法
grep [选项] "匹配模式" 文件
常用选项
- 搜索指定字符串
grep "关键字" 文件名
示例:搜索文件 test.txt
中包含 “error” 的行:
grep "error" test.txt
- 忽略大小写
grep -i "关键字" 文件名
示例:
grep -i "Error" test.txt
- 显示行号
grep -n "关键字" 文件名
示例:显示匹配行的行号:
grep -n "error" test.txt
- 递归搜索目录
grep -r "关键字" 目录
示例:递归搜索当前目录及其子目录中包含 “error” 的文件:
grep -r "error" .
- 使用正则表达式
grep -E "正则表达式" 文件名
示例:匹配包含数字的行:
grep -E "[0-9]+" test.txt
2. wc 命令
wc
用于统计文件的行数、单词数和字符数。
基本语法
wc [选项] 文件
常用选项
- 统计行数
wc -l 文件名
示例:统计文件 test.txt
的行数:
wc -l test.txt
- 统计单词数
wc -w 文件名
示例:统计文件 test.txt
的单词数:
wc -w test.txt
- 统计字符数
wc -c 文件名
示例:统计文件 test.txt
的字符数:
wc -c test.txt
- 同时显示行数、单词数和字符数
wc 文件名
示例:
wc test.txt
3. 管道符(|
)
管道符 |
用于将一个命令的输出作为另一个命令的输入,通常用于组合多个命令来处理数据。
管道符的用法
命令1 | 命令2
grep、wc 和管道符的组合示例
- 统计文件中包含关键字的行数
grep "关键字" 文件名 | wc -l
示例:统计 test.txt
中包含 “error” 的行数:
grep "error" test.txt | wc -l
- 统计当前目录下的文件数量
ls | wc -l
示例:统计当前目录下的文件和子目录数量:
ls | wc -l
- 查看系统日志中错误的行数
grep "error" /var/log/syslog | wc -l
- 结合正则表达式统计匹配的结果 示例:统计包含数字的行数:
grep -E "[0-9]+" test.txt | wc -l
- 动态过滤命令输出 示例:查看某个命令的输出并过滤包含特定关键词的行:
ps aux | grep "java"
总结
命令 | 功能 | 示例 |
---|---|---|
grep | 搜索文件内容 | grep "error" test.txt |
wc | 统计文件行数、单词数、字符数 | wc -l test.txt |
管道符 | 将一个命令的输出作为另一个命令的输入 | `ls |
通过组合使用 grep
、wc
和管道符,可以高效完成文本筛选、统计和分析任务,是 Linux 系统中处理数据的常用技巧。
6 echo、tail和重定向符
1. echo 命令
基本功能
echo
用于在终端输出字符串或变量的值,是 Linux 中最基础的输出命令之一。
基本语法
echo [选项] [字符串]
常用选项
- 输出字符串
echo "Hello, World!"
- 输出结果:`Hello, World!`
- 显示变量的值
name="Linux"
echo "Welcome to $name!"
- 输出结果:`Welcome to Linux!`
- 不换行输出
echo -n "Hello"
- 输出结果:`Hello`(不换行)
- 转义特殊字符
echo -e "Hello\nWorld!"
- 输出结果:
Hello
World!
- **常用转义字符**:
* `\n`:换行
* `\t`:水平制表符(Tab)
* `\\`:反斜杠
- 重定向输出到文件
echo "Hello, Linux!" > file.txt
2. tail 命令
基本功能
tail
用于显示文件的最后几行内容,常用于查看日志文件。
基本语法
tail [选项] 文件
常用选项
- 查看文件最后10行
tail file.txt
- 默认显示文件的最后10行。
- 指定显示行数
tail -n 行数 文件
- 示例:显示文件的最后5行:
tail -n 5 file.txt
- 动态监控文件变化
tail -f 文件
- 示例:实时查看日志文件的更新:
tail -f /var/log/syslog
- 查看从某一行开始的内容
tail -n +行号 文件
- 示例:从第3行开始显示文件内容:
tail -n +3 file.txt
3. 重定向符
基本功能
重定向符用于将命令的输出或输入重定向到文件或其他命令。
重定向符种类
- 输出重定向
- 覆盖写入:
echo "Hello, Linux!" > file.txt
* 将 `echo` 的输出写入 `file.txt`,如果文件已存在,会覆盖原内容。
- 追加写入:
echo "Append this line." >> file.txt
* 将内容追加到 `file.txt` 的末尾。
- 输入重定向
command < file.txt
- 示例:将 `file.txt` 的内容作为命令的输入。
- 错误输出重定向
- 重定向错误信息到文件:
command 2> error.log
* 将命令的错误输出写入 `error.log`。
- 同时重定向标准输出和错误输出:
command > output.log 2>&1
* 将命令的正常输出和错误输出都写入 `output.log`。
- 管道符结合使用
- 使用管道符和重定向符将多个命令组合处理:
command1 | command2 > output.txt
常见示例
- 将字符串写入文件并查看
echo "This is a test" > test.txt
tail test.txt
- 动态查看日志文件并保存更新
tail -f /var/log/syslog >> system_updates.log
- 过滤文件内容并写入新文件
echo -e "line1\nline2\nline3" > test.txt
tail -n 2 test.txt > last_two_lines.txt
总结
命令/符号 | 功能 |
---|---|
echo | 输出字符串或变量的值,常用于打印信息或写入文件 |
tail | 查看文件的最后几行内容,动态监控文件更新 |
> | 重定向输出到文件(覆盖写入) |
>> | 重定向输出到文件(追加写入) |
< | 将文件内容作为命令输入 |
2> | 将错误输出重定向到文件 |
` | ` |
通过灵活组合这些命令和符号,可以高效地处理文本、监控日志文件以及调试输出信息,是 Linux 系统中日常工作的基础工具。
7 vi编辑器
vi
是一个强大的文本编辑器,是 Linux 和 Unix 系统中最常用的编辑器之一。它功能强大,适用于编程、配置文件编辑等各种用途。
基本概念
vi
编辑器有三种模式:
- 命令模式:用于执行编辑命令(如删除、复制、粘贴等)。
- 插入模式:用于输入文本内容。
- 底行模式:用于执行特定命令(如保存、退出等)。
1. 启动 vi
编辑器
vi 文件名
如果文件存在,它将打开该文件。如果文件不存在,vi
会创建一个新文件。
2. vi 编辑器的基本操作
切换到插入模式
- 在 命令模式 下,按
i
进入 插入模式,可以开始输入文本。I
:在当前行的开头进入插入模式。a
:在光标后进入插入模式。A
:在当前行的末尾进入插入模式。o
:在当前行下方新开一行并进入插入模式。O
:在当前行上方新开一行并进入插入模式。
切换到命令模式
- 在 插入模式 下,按
Esc
键返回 命令模式。
命令模式的基本操作
- 移动光标
h
:向左移动一个字符。j
:向下移动一行。k
:向上移动一行。l
:向右移动一个字符。w
:跳到下一个单词的开头。b
:跳到上一个单词的开头。0
:跳到行的开头。$
:跳到行的末尾。
- 删除文本
x
:删除光标所在位置的字符。dd
:删除当前行。d$
:删除从光标位置到行尾的所有字符。dw
:删除当前单词。
- 复制与粘贴
yy
:复制当前行(yank)。p
:粘贴已复制的内容到光标后面。P
:粘贴已复制的内容到光标前面。
- 撤销与重做
u
:撤销上一步操作。Ctrl + r
:重做上一步撤销的操作。
- 查找与替换
/关键字
:在文件中查找关键字。n
:查找下一个匹配的关键字。N
:查找上一个匹配的关键字。:%s/旧字符串/新字符串/g
:在整个文件中替换旧字符串为新字符串。
- 跳转
G
:跳到文件的最后一行。gg
:跳到文件的第一行。数字G
:跳到指定行号。
底行模式的基本操作
在 命令模式 下,按 :
进入 底行模式,可以执行以下命令:
- 保存文件
:w
:保存文件但不退出。:w 文件名
:另存为指定的文件。
- 退出文件
:q
:退出编辑器。:q!
:强制退出,不保存文件。:wq
:保存并退出编辑器。ZZ
(大写):保存并退出编辑器。
- 查找与替换
:s/旧字符串/新字符串/
:替换当前行中的第一个匹配项。:s/旧字符串/新字符串/g
:替换当前行中的所有匹配项。:%s/旧字符串/新字符串/g
:替换整个文件中的所有匹配项。
- 跳转到指定行
:10
:跳到文件的第10行。
3. 退出 vi 编辑器
- 保存并退出:
Esc
→:wq
或ZZ
- 强制退出(不保存):
Esc
→:q!
- 仅退出(如果文件已保存):
Esc
→:q
4. vi 的高级功能
- 多文件编辑
- 打开多个文件:
vi file1.txt file2.txt
- 切换文件:
:n # 切换到下一个文件
:prev # 切换到上一个文件
- 剪切与粘贴
- 剪切一行:
dd
- 剪切多行:
数字dd
,例如:3dd
剪切3行。 - 粘贴到指定位置:
p
(光标后粘贴)、P
(光标前粘贴)。
- 剪切一行:
- 列操作
- 选择列并编辑:按下
Ctrl + v
进入可视模式,然后使用光标键选择文本。
- 选择列并编辑:按下
- 宏操作
- 录制宏:按
q
然后按一个字母(例如q
)开始录制,完成操作后按q
停止录制。 - 执行宏:按
@
后跟录制的字母(例如@q
)。
- 录制宏:按
5. 总结
操作 | 命令 |
---|---|
插入模式 | i , I , a , A , o , O |
命令模式 | h , j , k , l , w , b , $ |
删除操作 | x , dd , d$ , dw |
复制和粘贴 | yy , p , P |
查找和替换 | /关键字 , :%s/旧/新/g |
保存和退出 | :w , :q , :wq , :q! |
撤销与重做 | u , Ctrl + r |
vi
编辑器的学习曲线可能较陡,但一旦掌握,它将是一个非常强大的工具,适合用于各种文本编辑任务。
快速体验
使用:vim hello.txt,编辑一个新文件,执行后进入的是命令模式
在命令模式内,按键盘 i ,进入输入模式
在输入模式内输入:hello world.
输入完成后,按esc回退会命令模式
在命令模式内,按键盘 : ,进入底线命令模式
在底线命令内输入:wq
,保存文件并退出vi编辑器
补充
任何命令都支持:–help 选项, 可以通过这个选项,查看命令的帮助。
如:ls --help
, 会列出ls命令的帮助文档
如果想要查看命令的详细手册,可以通过man(manual, 手册)命令查看
比如:
man ls
,就是查看ls命令的详细手册
man cd
,就是查看cd命令的详细手册
第三章 用户和权限
1 认识root用户
1 root用户
无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。
在Linux系统中,拥有最大权限的账户名为:root(超级管理员)
前期,我一直使用的账户是普通的用户:centos
2. su命令
可以切换用户,语法:su [-] [用户名]
- 表示切换后加载环境变量,建议带上
用户可以省略,省略默认切换到root
在前面,我们接触过su命令切换到root账户。
su命令就是用于账户切换的系统命令,其来源英文单词:Switch User
语法:
- 符号是可选的,表示是否在切换用户后加载环境变量(后续讲解),建议带上
- 参数:用户名,表示要切换的用户,用户名也可以省略,省略表示切换到root
- 切换用户后,可以通过
exit
命令退回上一个用户,也可以使用快捷键:ctrl + d
- 使用普通用户,切换到其它用户需要输入密码,如切换到root用户
- 使用root用户切换到其它用户,无需密码,可以直接切换
3. sudo命令
可以让一条普通命令带有root权限,语法:sudo 其他命令
需要以root用户执行visudo
命令,增加配置方可让普通用户有sudo命令的执行权限
centos ALL=(ALL) NOPASSED:ALL
不用密码也能执行sudo
可以使用sudo命令,为普通的命令授权,临时以root身份执行。
语法:sudo 其他命令
在其它命令之前,带上sudo,即可为这一条命令临时赋予root授权
但是并不是所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证
2 用户、用户组管理
Linux系统中可以:
- 配置多个用户
- 配置多个用户组
- 用户可以加入多个用户组中
Linux中关于权限的管控级别有2个级别,分别是:
- 针对用户的权限控制
- 针对用户组的权限控制
在 Linux 系统中,用户管理和用户组管理是系统管理员常用的任务,旨在为系统中的各个用户分配权限并保持系统的安全性。用户可以被分配到一个或多个用户组中,通过组管理来更高效地控制文件和资源的访问权限。
1. 用户管理
创建用户
要在 Linux 系统中创建新用户,使用 useradd
命令。
sudo useradd [选项] 用户名
常见选项:
-m
:创建用户的家目录(如果没有的话)。-d
:指定家目录的位置。-s
:指定用户的登录 shell。-g
:指定主用户组。-G
:指定附加用户组。-p
:为用户设置密码(需要使用加密过的密码)。
示例:
sudo useradd -m -s /bin/bash -g users -G sudo,developers username
这将创建一个名为 username
的用户,指定默认 shell 为 /bin/bash
,主用户组为 users
,并将该用户添加到 sudo
和 developers
这两个附加用户组中。
设置用户密码
创建用户后,你通常需要为其设置密码。使用 passwd
命令:
sudo passwd 用户名
示例:
sudo passwd username
系统会要求输入两次密码,密码设置成功后,用户可以使用该密码登录。
查看用户信息
要查看当前系统中的用户信息,可以使用 cat
查看 /etc/passwd
文件。此文件包含了系统上所有用户的信息。
cat /etc/passwd
每行包括:
- 用户名
- 密码(通常已加密)
- 用户ID(UID)
- 用户组ID(GID)
- 用户描述(可选)
- 家目录路径
- 登录 shell
删除用户
要删除一个用户,使用 userdel
命令:
sudo userdel 用户名
要删除用户及其家目录(如果存在),使用 -r
选项:
sudo userdel -r 用户名
修改用户
要修改用户的信息(如修改用户名、用户组等),使用 usermod
命令。
示例:
- 修改用户名:
sudo usermod -l 新用户名 旧用户名
- 修改用户的主目录:
sudo usermod -d /新路径 -m 用户名
-m
选项会移动用户的文件到新的目录。
2. 用户组管理
创建用户组
要创建一个新用户组,使用 groupadd
命令:
sudo groupadd 用户组名
示例:
sudo groupadd developers
这将创建一个名为 developers
的新用户组。
查看用户组信息
要查看当前系统中的所有用户组,可以查看 /etc/group
文件:
cat /etc/group
每行包括:
- 用户组名
- 密码(通常为空)
- 用户组ID(GID)
- 用户组成员
添加用户到用户组
可以使用 usermod
命令将用户添加到现有的用户组。使用 -aG
选项来追加用户到附加用户组。
sudo usermod -aG 用户组名 用户名
示例:
sudo usermod -aG developers username
这将把 username
添加到 developers
用户组中。
删除用户组
要删除用户组,使用 groupdel
命令:
sudo groupdel 用户组名
示例:
sudo groupdel developers
删除用户组中的用户
如果你想从用户组中移除用户,而不是删除整个用户组,可以使用 gpasswd
命令:
sudo gpasswd -d 用户名 用户组名
示例:
sudo gpasswd -d username developers
这将把 username
从 developers
用户组中移除。
3. 常用命令和文件
查看当前用户和组
- 查看当前用户名:
whoami
或id -un
- 查看当前用户的 UID 和 GID:
id
- 查看当前用户的所有组:
groups
示例:
id username
输出结果:
uid=1001(username) gid=1001(username) groups=1001(username),1002(developers)
文件权限与用户组
Linux 使用三种权限(读、写、执行)来控制文件和目录的访问:
- r:读权限,表示可以读取文件内容。
- w:写权限,表示可以修改文件内容。
- x:执行权限,表示可以执行文件或访问目录。
权限是按用户(owner)、用户组(group)和其他用户(others)来设置的。
- 文件权限示例:
ls -l 文件名
输出示例:
-rwxr-xr-- 1 username developers 12345 May 1 12:34 filename
解释:
- `rwx`:文件所有者 (`username`) 有读、写、执行权限。
- `r-x`:文件所属用户组 (`developers`) 有读、执行权限。
- `r--`:其他用户有读权限。
- 修改文件权限: 使用
chmod
命令修改文件权限:
chmod 755 文件名
7
表示文件所有者的权限是读、写、执行(rwx),5
表示用户组的权限是读和执行(r-x),5
表示其他用户的权限是读和执行(r-x)。
- 修改文件所属的用户和组: 使用
chown
命令修改文件的所有者和所属用户组:
sudo chown 用户名:用户组 文件名
示例:
sudo chown username:developers file.txt
总结
命令 | 功能 |
---|---|
useradd | 创建新用户 |
passwd | 设置或修改用户密码 |
usermod | 修改现有用户的属性(如用户名、家目录等) |
userdel | 删除用户 |
groupadd | 创建新用户组 |
groupdel | 删除用户组 |
usermod -aG | 将用户添加到附加用户组 |
gpasswd -d | 从用户组中删除用户 |
id | 查看当前用户的 UID、GID 以及所属的所有组 |
groups | 查看当前用户所属的所有组 |
用户和用户组管理是系统管理员日常任务的重要组成部分。合理的用户组设计可以帮助简化权限管理,提高系统的安全性和可维护性。
3 权限控制
1 查看权限控制
通过ls -l 可以以列表形式查看内容,并显示权限细节
序号1,表示文件、文件夹的权限控制信息
序号2,表示文件、文件夹所属用户
序号3,表示文件、文件夹所属用户组
解析一下序号1,权限细节
权限细节总共分为10个槽位
举例:drwxr-xr-x,表示:
- 这是一个文件夹,首字母d表示
- 所属用户(右上角图序号2)的权限是:有r有w有x,rwx
- 所属用户组(右上角图序号3)的权限是:有r无w有x,r-x (-表示无此权限)
- 其它用户的权限是:有r无w有x,r-x
那么,rwx到底代表什么呢?
r表示读权限
w表示写权限
x表示执行权限
针对文件、文件夹的不同,rwx的含义有细微差别
r,针对文件可以查看文件内容
针对文件夹,可以查看文件夹内容,如ls命令
w,针对文件表示可以修改此文件
针对文件夹,可以在文件夹内:创建、删除、改名等操作
x,针对文件表示可以将文件作为程序执行
针对文件夹,表示可以更改工作目录到此文件夹,即cd进入
2 修改权限控制 - chmod
chmod
(Change Mode)是一个用来修改文件或目录权限的 Linux 命令。通过它,用户可以指定文件或目录的访问权限,从而控制谁能访问和操作该文件或目录。
文件权限的基本概念
每个文件或目录在 Linux 中都有三种类型的权限:
- 读(r):允许查看文件内容或列出目录中的文件。
- 写(w):允许修改文件内容或在目录中添加、删除文件。
- 执行(x):允许执行文件(如脚本、程序等)或进入目录。
文件权限分为三个类别:
- 用户(User):文件的拥有者。
- 用户组(Group):与文件拥有者属于同一组的用户。
- 其他用户(Others):不属于文件拥有者组和用户组的所有其他用户。
基本语法
chmod [选项] 权限 文件名
选项
:可选项,通常不需要。权限
:指定文件或目录的权限。文件名
:要修改权限的文件或目录。
权限的表示方法
chmod
有两种常见的权限表示方法:
- 符号模式(Symbolic Mode):使用字符表示权限。
- 数字模式(Numeric Mode):使用数字表示权限。
1. 符号模式
符号模式使用字符来表示权限:
- r:读权限
- w:写权限
- x:执行权限
- +:增加权限
- -:去除权限
- =:设置权限
格式:chmod [who][operator][permissions] 文件名
- who:表示要修改权限的用户类别:
u
:用户(文件的拥有者)g
:用户组o
:其他用户a
:所有用户(包括用户、组和其他用户)
- operator:表示权限的修改方式:
+
:添加权限-
:移除权限=
:设置精确的权限(覆盖现有权限)
例子:
- 给文件
**file.txt**
添加用户组的写权限:
chmod g+w file.txt
这将为文件 file.txt
添加用户组的写权限。
- 移除文件
**file.txt**
中其他用户的执行权限:
chmod o-x file.txt
- 将文件
**file.txt**
的权限设置为用户拥有读写权限,其他用户只能读权限:
chmod u=rw,go=r file.txt
- 为所有用户添加读权限:
chmod a+r file.txt
2. 数字模式
数字模式使用三个数字表示文件权限,每个数字由以下三种基本权限组成:
- 4:读权限(r)
- 2:写权限(w)
- 1:执行权限(x)
数字模式中的每个数字表示用户类别的权限:
- 第一个数字:用户(文件的拥有者)
- 第二个数字:用户组
- 第三个数字:其他用户
每个数字是这三个权限值的和:
- 读(r)权限为 4
- 写(w)权限为 2
- 执行(x)权限为 1
例如:
7
(4 + 2 + 1):rwx
读、写、执行权限6
(4 + 2):rw-
读、写权限5
(4 + 1):r-x
读、执行权限4
(4):r--
读权限3
(2 + 1):-wx
写、执行权限2
(2):-w-
写权限1
(1):--x
执行权限0
:---
无权限
例子:
- 设置文件
**file.txt**
的权限为用户读写执行,组用户读写,其他用户只有读权限:
chmod 764 file.txt
- `7`(用户:rwx)
- `6`(组:rw-)
- `4`(其他:r--)
- 设置文件
**file.txt**
的权限为所有用户都有读写执行权限:
chmod 777 file.txt
- 设置文件
**file.txt**
的权限为用户只有读权限,组和其他用户没有任何权限:
chmod 400 file.txt
将hello.txt的权限修改为: r-x–xr-x,数字序号为:
chmod 515 hello.txt
将hello.txt的权限修改为: -wx-w-rw-,数字序号为:
chmod 326 hello.txt
3. 修改目录权限
修改目录的权限和文件类似,但需要特别注意的是执行权限对于目录的作用:
- 如果没有 执行权限,用户就无法进入(
cd
)该目录。 - 只有 执行权限,用户才能进入目录。
- 需要 读权限 来列出目录中的文件。
例如:
- 为目录
**mydir**
设置权限:
chmod 755 mydir
- 用户有读、写、执行权限,组和其他用户只有读和执行权限。
4. 常用选项
**-R**
:递归地修改目录及其子目录中的文件权限。
示例:
chmod -R 755 mydir
这将递归地为 mydir
及其所有子目录和文件设置权限。
5. 权限的查看
使用 ls -l
命令查看文件或目录的权限:
ls -l 文件名
输出示例:
-rwxr-xr-- 1 user1 group1 1024 Apr 1 12:34 file.txt
**rwxr-xr--**
:权限(文件所有者:读、写、执行,组用户:读、执行,其他用户:只读)**1**
:链接数**user1**
:文件的拥有者**group1**
:文件的所属用户组**1024**
:文件大小**Apr 1 12:34**
:最后修改时间**file.txt**
:文件名
总结
命令 | 描述 |
---|---|
chmod 755 文件名 | 给文件设置权限:用户(rwx),用户组(r-x),其他用户(r-x) |
chmod -R 755 目录名 | 递归设置目录及其子目录和文件的权限 |
chmod u+x 文件名 | 为文件所有者添加执行权限 |
chmod g-w 文件名 | 从文件所属用户组移除写权限 |
chmod 644 文件名 | 文件权限:用户(rw-),组用户(r–),其他用户(r–) |
chmod 777 文件名 | 给所有用户设置读、写、执行权限 |
chmod
是管理文件和目录权限的重要工具,合理地设置权限能够有效地保护系统的安全性和数据的隐私性。
3 修改权限控制 - chown
chown
是 Linux 系统中用于修改文件或目录的所有者(user)和用户组(group)的命令。通过 chown
命令,系统管理员可以更改文件或目录的拥有者和所属组,从而管理文件的访问权限和控制哪些用户可以访问。
基本语法
chown [选项] 所有者:用户组 文件名
所有者
:指定新的文件拥有者。用户组
:指定新的文件所属组(可选)。文件名
:要修改的文件或目录。
常用的选项
**-R**
:递归地修改目录及其子目录和文件的拥有者和用户组。**--reference=文件**
:将目标文件的所有者和用户组设置为与参考文件相同。
1. 修改文件或目录的所有者
如果你只想修改文件的拥有者(用户),可以使用 chown
并指定新的所有者:
chown 用户名 文件名
例如:
sudo chown alice file.txt
这将把文件 file.txt
的拥有者改为 alice
。
2. 修改文件或目录的用户组
如果你只想修改文件的所属用户组(组),可以使用 chown
并指定新的用户组:
chown :用户组 文件名
例如:
sudo chown :staff file.txt
这将把文件 file.txt
的所属用户组改为 staff
。
3. 修改文件的所有者和用户组
如果你需要同时修改文件的拥有者和用户组,可以使用以下格式:
chown 用户名:用户组 文件名
例如:
sudo chown alice:admin file.txt
这将把文件 file.txt
的拥有者改为 alice
,所属用户组改为 admin
。
4. 递归修改目录及其内容的所有者和用户组
如果你想递归地修改一个目录及其所有子目录和文件的所有者和用户组,可以使用 -R
选项:
sudo chown -R 用户名:用户组 目录名
例如:
sudo chown -R alice:staff /home/alice
这将把目录 /home/alice
及其所有子文件和子目录的所有者改为 alice
,所属用户组改为 staff
。
5. 使用参考文件设置所有者和用户组
你还可以使用 --reference
选项,将目标文件的所有者和用户组设置为与参考文件相同:
sudo chown --reference=参考文件 文件名
例如:
sudo chown --reference=file1.txt file2.txt
这将把文件 file2.txt
的所有者和用户组设置为与 file1.txt
相同。
6. 查看文件的所有者和用户组
可以使用 ls -l
命令来查看文件或目录的所有者和用户组:
ls -l 文件名
示例输出:
-rw-r--r-- 1 alice staff 1024 Apr 1 12:34 file.txt
alice
:文件的所有者staff
:文件的用户组1024
:文件大小Apr 1 12:34
:文件的最后修改时间file.txt
:文件名
7. 举例说明
修改文件的所有者:
sudo chown john file.txt
这将把 file.txt
的所有者修改为 john
。
修改文件的用户组:
sudo chown :developers file.txt
这将把 file.txt
的用户组修改为 developers
。
修改文件的所有者和用户组:
sudo chown john:developers file.txt
这将把 file.txt
的所有者修改为 john
,用户组修改为 developers
。
递归修改目录及其内容的所有者和用户组:
sudo chown -R john:developers /home/john
这将把 /home/john
目录及其所有子目录和文件的所有者修改为 john
,用户组修改为 developers
。
总结
chown
命令是 Linux 系统中用于修改文件和目录所有者及用户组的工具。通过合理使用 chown
,你可以有效地管理文件的权限和安全性。
命令 | 功能 |
---|---|
chown 用户名 文件名 | 修改文件的所有者 |
chown :用户组 文件名 | 修改文件的用户组 |
chown 用户名:用户组 文件名 | 同时修改文件的所有者和用户组 |
chown -R 用户名:用户组 目录名 | 递归修改目录及其子文件的所有者和用户组 |
chown --reference=参考文件 文件名 | 将目标文件的所有者和用户组设置为参考文件相同 |
通过正确使用 chown
命令,系统管理员可以有效地管理文件和目录的所有权,从而保证系统的安全性和资源的适当共享。
第四章 Linux实用操作
1 常用快捷键
在 Linux 系统中,命令行界面(CLI)是一个非常强大的工具,使用各种快捷键可以大大提高工作效率。以下是一些常用的 Linux 快捷键,帮助你在终端中更高效地操作。
- 基本命令行快捷键
快捷键 | 功能 |
---|---|
Ctrl + C | 终止当前正在运行的命令或程序(强制停止进程)。 |
Ctrl + Z | 将当前进程挂起(暂停运行),并将其放到后台。 |
Ctrl + D | 退出当前终端会话,相当于输入 exit 命令。 |
Ctrl + L | 清屏,类似于输入 clear 命令。 |
Ctrl + U | 删除光标前面的所有字符。 |
Ctrl + K | 删除光标后面的所有字符。 |
Ctrl + W | 删除光标前一个单词。 |
Ctrl + Y | 恢复最后一次删除(如通过 Ctrl + U 或 Ctrl + W 删除的内容)。 |
Ctrl + A | 将光标移动到行的开头。 |
Ctrl + E | 将光标移动到行的结尾。 |
Ctrl + R | 启动历史命令搜索,可以快速查找之前执行过的命令。 |
Ctrl + P | 上一条历史命令。 |
Ctrl + N | 下一条历史命令。 |
- 文件与目录操作快捷键
快捷键 | 功能 |
---|---|
Tab | 自动补全文件名或命令。如果有多个补全选项,按两次 Tab 会列出所有选项。 |
Ctrl + F | 在命令行中向前查找字符。 |
Ctrl + B | 在命令行中向后查找字符。 |
Alt + . | 获取最后一个命令的最后一个参数。例如,执行 ls /home 后,按 Alt + . 会自动补全 /home 。 |
Ctrl + X | 在 nano 编辑器中剪切当前行。 |
Ctrl + V | 在 nano 编辑器中粘贴剪切的内容。 |
- 终端操作快捷键
快捷键 | 功能 |
---|---|
Ctrl + Alt + T | 打开一个新的终端窗口。 |
Alt + F4 | 关闭当前的终端窗口(与图形界面中的关闭窗口类似)。 |
Ctrl + Shift + T | 打开一个新的终端标签页(适用于支持标签页的终端,如 GNOME Terminal)。 |
Ctrl + Shift + C | 复制终端中的文本。 |
Ctrl + Shift + V | 粘贴终端中的文本。 |
- 文本编辑与命令行编辑快捷键
在命令行中输入和编辑命令时,这些快捷键非常有用:
快捷键 | 功能 |
---|---|
Ctrl + A | 将光标移到行的开始位置。 |
Ctrl + E | 将光标移到行的结束位置。 |
Ctrl + U | 删除光标前面的所有字符。 |
Ctrl + K | 删除光标后面的所有字符。 |
Ctrl + W | 删除光标前一个单词。 |
Alt + D | 删除光标后的一个单词。 |
Ctrl + Y | 恢复最近一次的剪切(删除)内容。 |
Ctrl + T | 交换光标前后两个字符。 |
Alt + B | 将光标向后移动一个单词。 |
Alt + F | 将光标向前移动一个单词。 |
Ctrl + Left Arrow | 将光标向左移动一个单词。 |
Ctrl + Right Arrow | 将光标向右移动一个单词。 |
- 进程控制快捷键
在终端中,控制进程时使用这些快捷键可以非常方便:
快捷键 | 功能 |
---|---|
Ctrl + C | 终止当前进程。 |
Ctrl + Z | 暂停当前进程并将其放到后台。 |
bg | 将暂停的进程从后台恢复到后台运行。 |
fg | 将暂停的进程从后台恢复到前台运行。 |
jobs | 显示当前的后台任务。 |
- 使用历史命令的快捷键
在 Linux 中,history
命令可以查看执行过的历史命令,快捷键让你更高效地使用历史命令:
快捷键 | 功能 |
---|---|
Up Arrow | 查找历史命令中的上一条命令。 |
Down Arrow | 查找历史命令中的下一条命令。 |
Ctrl + R | 启动反向搜索历史命令。 |
Ctrl + S | 启动正向搜索历史命令(某些系统需要先设置)。 |
history | 查看命令历史记录。 |
- 网络操作快捷键
在进行网络操作时,以下快捷键可以提高效率:
快捷键 | 功能 |
---|---|
Ctrl + C | 终止当前的网络命令或操作(例如 ping 或 wget )。 |
Ctrl + D | 退出当前的网络连接(例如 FTP)。 |
- 使用
man
页面的快捷键
查看帮助文档时,这些快捷键可以帮助你快速浏览和搜索:
快捷键 | 功能 |
---|---|
Up Arrow | 上滚一行 |
Down Arrow | 下滚一行 |
Page Up | 上滚一页 |
Page Down | 下滚一页 |
/ | 在 man 页面中进行搜索。输入搜索词后按 Enter 。 |
n | 跳转到下一个匹配的搜索结果。 |
q | 退出 man 页面。 |
-
ctrl + c 强制停止
-
ctrl + d 退出登出
-
history 查看历史命令
-
!命令前缀,自动匹配上一个命令
-
ctrl + r,搜索历史命令
-
ctrl + a | e,光标移动到命令开始或结束
-
ctrl + ← | →,左右跳单词
-
ctrl + l 或 clear命令 清屏
2 软件安装
操作系统安装软件有许多种方式,一般分为:
下载安装包自行安装
如win系统使用exe文件、msi文件等
如mac系统使用dmg文件、pkg文件等
系统的应用商店内安装
如win系统有Microsoft Store商店
如mac系统有AppStore商店
使用yum为CentOS系统安装软件
在 CentOS 系统上,yum
(Yellowdog Updater, Modified)是一个常用的包管理工具,用于从远程仓库下载和安装软件包、更新系统以及管理软件包依赖关系。以下是一些使用 yum
安装软件包的常见操作。
1**. 安装软件包**
使用 yum install
命令安装软件包:
sudo yum install 包名
例如,要安装 wget
工具:
sudo yum install wget
2. 安装多个软件包
你可以同时安装多个软件包,只需在命令中列出它们的名称即可:
sudo yum install 包名1 包名2 包名3
例如,要安装 wget
和 curl
:
sudo yum install wget curl
3. 安装指定版本的软件包
如果你想安装特定版本的软件包,可以在包名后面加上版本号:
sudo yum install 包名-版本号
例如,要安装 wget
的特定版本 1.20.3-3.el8
:
sudo yum install wget-1.20.3-3.el8
4. 查找可用的软件包
如果你不确定软件包的名称,可以使用 yum search
来查找软件包:
yum search 软件包名称
例如,搜索包含 wget
的所有软件包:
yum search wget
5. 查看软件包信息
如果你想查看某个软件包的详细信息(例如版本、描述、大小等),可以使用 yum info
命令:
yum info 包名
例如,查看 wget
软件包的详细信息:
yum info wget
6. 更新已安装的软件包
要更新已安装的软件包,可以使用 yum update
命令:
sudo yum update 包名
例如,更新 wget
:
sudo yum update wget
如果不指定软件包名,yum update
会更新所有可以更新的软件包。
sudo yum update
7. 升级所有软件包
使用 yum upgrade
命令,可以升级所有安装的软件包到最新版本:
sudo yum upgrade
8. 删除软件包
如果你不再需要某个软件包,可以使用 yum remove
命令卸载它:
sudo yum remove 包名
例如,删除 wget
:
sudo yum remove wget
9. 清理缓存
yum
会在本地缓存已下载的软件包和元数据,以便在下次使用时加快速度。如果你需要清理缓存,可以使用 yum clean
命令:
- 清理软件包缓存:
sudo yum clean packages
- 清理所有缓存(包括元数据和软件包):
sudo yum clean all
10. 列出已安装的软件包
要查看系统上已安装的软件包列表,可以使用 yum list installed
命令:
yum list installed
11. 启用或禁用特定的软件仓库
CentOS 使用仓库来提供软件包。如果你需要启用或禁用某个仓库,可以修改仓库配置文件,或者在使用 yum
命令时指定:
- 启用特定仓库:
sudo yum --enablerepo=repo_name install 包名
- 禁用特定仓库:
sudo yum --disablerepo=repo_name install 包名
12. 获取帮助
如果你需要获取 yum
命令的帮助,使用以下命令:
yum --help
使用apt为Ubuntu安装软件
后续补充到Ubantu部分
3 systemctl
Linux系统很多软件(内置或第三方)均支持使用systemctl命令控制:启动、停止、开机自启
能够被systemctl管理的软件,一般也称之为:服务
语法:systemctl start | stop |status | enable | disable 服务名
start 启动
stop 关闭
status 查看状态
enable 开启开机自启
disable 关闭开机自启
系统内置的服务比较多,比如:
NetworkManager,主网络服务
network,副网络服务
firewalld,防火墙服务
sshd,ssh服务(FinalShell远程登录Linux使用的就是这个服务)
systemctl
是一个用于管理系统服务的命令行工具,适用于基于 systemd
的 Linux 系统。它可以用于启动、停止、重启服务,查看服务的状态,启用或禁用服务,管理开机启动等。
以下是一些常见的 systemctl
命令用法:
- 查看服务状态
systemctl status <服务名>
例如,查看 nginx
服务的状态:
systemctl status nginx
- 启动服务
systemctl start <服务名>
例如,启动 nginx
服务:
systemctl start nginx
- 停止服务
systemctl stop <服务名>
例如,停止 nginx
服务:
systemctl stop nginx
- 重启服务
systemctl restart <服务名>
例如,重启 nginx
服务:
systemctl restart nginx
- 重新加载服务配置(不重启服务)
systemctl reload <服务名>
例如,重新加载 nginx
服务的配置:
systemctl reload nginx
- 启用服务开机自启动
systemctl enable <服务名>
例如,设置 nginx
开机自启动:
systemctl enable nginx
- 禁用服务开机自启动
systemctl disable <服务名>
例如,禁用 nginx
开机自启动:
systemctl disable nginx
- 查看所有正在运行的服务
systemctl list-units --type=service
- 查看已启动的服务及其状态
systemctl is-active <服务名>
例如,检查 nginx
是否处于激活状态:
systemctl is-active nginx
- 查看服务日志
systemctl
与 journalctl
配合使用,可以查看服务的日志:
journalctl -u <服务名>
例如,查看 nginx
的日志:
journalctl -u nginx
- 查看所有服务的日志
journalctl
- 关闭并关闭所有服务(仅对管理系统时有用)
systemctl poweroff
- 重启系统
systemctl reboot
这些是常用的 systemctl
命令,用于管理和控制服务。如果你需要更多的帮助,可以通过 man systemctl
来查看 systemctl
的手册页面,获取更详细的用法。
4 使用ln创建软连接
ln
命令用于在 Linux 系统中创建文件的硬链接或软链接(符号链接)。如果你希望创建软链接(即符号链接),可以使用 -s
选项。
创建软连接的基本语法:
ln -s <目标文件/目录> <链接文件/目录>
- 目标文件/目录:你要创建软链接的原始文件或目录。
- 链接文件/目录:你希望创建的软链接的名称或位置。
什么是软连接?
可以将文件、文件夹链接到其它位置
链接只是一个指向,并不是物理移动,类似Windows系统的快捷方式
例子:
1. 创建软链接到文件
假设你有一个文件 original.txt
,你想在当前目录中创建一个名为 link.txt
的软链接。
ln -s /path/to/original.txt link.txt
这样,你就在当前目录下创建了一个指向 original.txt
的软链接 link.txt
。
2. 创建软链接到目录
假设你有一个目录 /home/user/old_dir
,你想在当前目录中创建一个名为 new_dir
的软链接。
ln -s /home/user/old_dir new_dir
这样,你就创建了一个指向 /home/user/old_dir
目录的软链接 new_dir
。
查看软链接
你可以使用 ls -l
命令查看软链接的详细信息。软链接会显示出其指向的目标:
ls -l link.txt
输出类似:
lrwxrwxrwx 1 user user 20 Jan 9 12:34 link.txt -> /path/to/original.txt
l
开头表示这是一个符号链接。->
后面显示链接的目标路径。
删除软链接
要删除软链接,可以使用 rm
命令:
rm link.txt
注意:删除软链接只会删除链接本身,不会影响原始文件或目录。
注意事项
- 软链接 只是指向目标文件或目录的路径,并不包含目标内容。删除软链接不会删除目标文件,但如果目标文件被删除,软链接将失效,显示为 “坏链接”。
- 如果目标是目录,软链接仍然可以作为目录使用。
希望这些能帮助你更好地理解和使用 ln
命令创建软链接。
5 日期、时区
1. 查看日期和时间(date
命令)
date
命令用于显示当前的系统日期和时间。使用它时,您可以看到格式化的输出信息,也可以进行自定义输出。
基本命令:
date
输出示例:
Mon Jan 9 12:34:56 CST 2025
这表示:星期一,2025年1月9日,时间是12:34:56,时区是 CST(中国标准时间)。
自定义格式:
您可以使用 +
选项来指定输出格式,常用的格式化选项有:
%Y
:年份(4位数字)%m
:月份(01-12)%d
:日期(01-31)%H
:小时(00-23)%M
:分钟(00-59)%S
:秒(00-59)
例如,显示 YYYY-MM-DD HH:MM:SS
格式的日期时间:
date "+%Y-%m-%d %H:%M:%S"
输出示例:
2025-01-09 12:34:56
2. 修改 Linux 系统时区
修改时区的过程一般涉及以下步骤:
2.1 查看当前时区
要查看当前系统的时区,可以使用以下命令:
timedatectl
输出示例:
Local time: Mon 2025-01-09 12:34:56 CST
Universal time: Mon 2025-01-09 04:34:56 UTC
RTC time: Mon 2025-01-09 04:34:56
Time zone: Asia/Shanghai (CST, +0800)
2.2 查看可用时区
可以列出所有可用的时区:
timedatectl list-timezones
这将列出所有时区,如:
Africa/Abidjan
Africa/Accra
...
Asia/Shanghai
...
2.3 设置新的时区
要更改时区,可以使用 timedatectl
命令。例如,要将时区更改为 Asia/Shanghai
:
sudo timedatectl set-timezone Asia/Shanghai
2.4 验证时区更改
更改时区后,您可以再次使用 timedatectl
查看是否更改成功:
timedatectl
您应该看到新的时区设置。
2.5 手动配置时区(如果没有 timedatectl
)
在某些老版本的 Linux 系统中,您可能没有 timedatectl
工具,您可以手动更改时区。方法是通过符号链接更改 /etc/localtime
文件。
- 查找您需要的时区:
ls /usr/share/zoneinfo
- 创建符号链接到正确的时区文件。例如:
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
3. 使用 NTP 进行时间同步和校准
NTP(Network Time Protocol)用于同步计算机的系统时间和全球时间标准。使用 NTP 可以确保您的系统时间是准确的。
3.1 安装 NTP 服务
首先,确保安装了 NTP 服务。如果尚未安装,可以通过以下命令进行安装:
- 对于 CentOS/RHEL 系统:
sudo yum install ntp
- 对于 Ubuntu/Debian 系统:
sudo apt-get install ntp
3.2 启动并启用 NTP 服务
安装完 NTP 后,您需要启动并启用服务,以便它在系统启动时自动运行。
- 启动 NTP 服务:
sudo systemctl start ntpd
- 设置 NTP 服务开机自启动:
sudo systemctl enable ntpd
3.3 使用 ntpdate
命令手动同步时间
如果您只想手动同步时间,可以使用 ntpdate
命令。首先安装 ntpdate
工具(如果没有安装):
- 对于 CentOS/RHEL 系统:
sudo yum install ntpdate
- 对于 Ubuntu/Debian 系统:
sudo apt-get install ntpdate
然后使用以下命令手动同步时间:
sudo ntpdate pool.ntp.org
这将从 pool.ntp.org
服务器同步时间。
3.4 使用 chrony
(替代 NTP)
在一些现代的 Linux 系统中,chrony
已经替代了 ntpd
,并且它在某些环境下比 NTP 更加精确和稳定。使用 chrony
的方法:
- 安装 chrony:
- 对于 CentOS/RHEL:
sudo yum install chrony
- 对于 Ubuntu/Debian:
sudo apt-get install chrony
- 启动并启用 chrony 服务:
sudo systemctl start chronyd
sudo systemctl enable chronyd
- 查看时间同步状态:
chronyc tracking
- 总结
- 使用
date
命令可以查看和自定义系统时间。 - 使用
timedatectl
可以修改系统时区。 - 使用 NTP 或
chrony
工具来同步和校准系统时间,确保系统时间与全球标准时间同步。
6 IP地址、主机名
ip地址
每一台联网的电脑都会有一个地址,用于和其它计算机进行通讯
IP地址主要有2个版本,V4版本和V6版本(V6很少用,课程暂不涉及)
IPv4版本的地址格式是:a.b.c.d,其中abcd表示0~255的数字,如192.168.88.101就是一个标准的IP地址
可以通过命令:ifconfig,查看本机的ip地址,如无法使用ifconfig命令,可以安装:
yum -y install net-tools
特殊IP地址
除了标准的IP地址以外,还有几个特殊的IP地址需要我们了解:
- 127.0.0.1,这个IP地址用于指代本机
- 0.0.0.0,特殊IP地址
可以用于指代本机
可以在端口绑定中用来确定绑定关系(后续讲解)
在一些IP地址限制中,表示所有IP的意思,如放行规则设置为0.0.0.0,表示允许任意IP访问
主机名
每一台电脑除了对外联络地址(IP地址)以外,也可以有一个名字,称之为主机名
无论是Windows或Linux系统,都可以给系统设置主机名
Windows系统主机名
Linux系统主机名
在Linux中修改主机名
可以使用命令:hostname查看主机名
可以使用命令:hostnamectl set-hostname 主机名,修改主机名(需root)
重新登录FinalShell即可看到主机名已经正确显示
域名解析
访问www.baidu.com的流程如下:
先查看本机的记录(私人地址本)
Windows看:C:\Windows\System32\drivers\etc\hosts
Linux看:/etc/hosts
再联网去DNS服务器(如114.114.114.114,8.8.8.8等)询问
配置主机名映射
比如,我们FinalShell是通过IP地址连接到的Linux服务器,那有没有可能通过域名(主机名)连接呢?
可以,我们只需要在Windows系统的:C:\Windows\System32\drivers\etc\hosts文件中配置记录即可
虚拟机配置固定IP
当前我们虚拟机的Linux操作系统,其IP地址是通过DHCP服务获取的。
DHCP:动态获取IP地址,即每次重启设备后都会获取一次,可能导致IP地址频繁变更
原因1:办公电脑IP地址变化无所谓,但是我们要远程连接到Linux系统,如果IP地址经常变化我们就要频繁修改适配很麻烦
原因2:在刚刚我们配置了虚拟机IP地址和主机名的映射,如果IP频繁更改,我们也需要频繁更新映射关系
综上所述,我们需要IP地址固定下来,不要变化了。
在VMware Workstation中配置固定IP
配置固定IP需要2个大步骤:
在VMware Workstation(或Fusion)中配置IP地址网关和网段(IP地址的范围)
在Linux系统中手动修改配置文件,固定IP
首先让我们,先进行第一步,跟随图片进行操作
现在进行第二步,在Linux系统中修改固定IP
使用vim编辑/etc/sysconfig/network-scripts/ifcfg-ens33文件,填入如下内容
执行:systemctl restart network
重启网卡,执行ifconfig
即可看到ip地址固定为192.168.88.130了
7 网络传输
1 下载和网络请求
以下是关于 网络传输工具 的详细介绍,以及如何使用 ping
、wget
和 curl
命令进行网络操作:
1. 使用 ping
检查服务器是否可联通
ping
命令是一个简单的工具,用于测试从本地计算机到目标主机之间的网络连接情况。它通过发送 ICMP 回显请求数据包,测量网络延迟并检测目标主机是否可达。
基本语法
ping [选项] 目标地址
常用选项
- 不指定选项:默认会持续发送数据包,直到手动终止。
-c <次数>
:指定发送数据包的数量。-i <间隔时间>
:指定发送数据包的间隔时间(默认 1 秒)。-s <数据包大小>
:指定数据包的大小(默认 56 字节)。
示例
- 检查是否能连通 Google DNS:
ping 8.8.8.8
- 发送 4 个数据包并停止:
ping -c 4 www.example.com
- 设置数据包大小为 128 字节:
ping -s 128 www.example.com
2. 使用 wget
下载文件
wget
是一个用于从网络上非交互式下载文件的工具,支持 HTTP、HTTPS 和 FTP 协议。
基本语法
wget [选项] <URL>
常用选项
-O <文件名>
:指定下载的文件保存为指定名称。-c
:继续上次未完成的下载(断点续传)。-r
:递归下载(适用于整个网站)。-q
:静默模式(不输出信息)。--limit-rate=<速率>
:限制下载速度。--no-check-certificate
:忽略 HTTPS 的证书检查(在证书无效时有用)。
示例
下载apache-hadoop 3.3.0版本:
wget http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
在后台下载:wget -b http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
通过tail命令可以监控后台下载进度:tail -f wget-log
- 下载单个文件:
wget https://example.com/file.zip
- 指定文件名保存下载内容:
wget -O myfile.zip https://example.com/file.zip
- 断点续传:
wget -c https://example.com/file.zip
- 限制下载速度为 100 KB/s:
wget --limit-rate=100k https://example.com/file.zip
3. 使用 curl
发起网络请求
curl
是一个功能强大的命令行工具,用于从服务器请求或发送数据,支持多种协议(如 HTTP、HTTPS、FTP 等)。
基本语法
curl [选项] <URL>
常用选项
-o <文件名>
:将输出保存到文件。-O
:使用远程文件名保存下载的内容。-L
:跟随重定向。-X <请求方法>
:指定 HTTP 请求方法(如 GET、POST、PUT、DELETE)。-d <数据>
:发送 POST 请求时附加数据。-H <头部>
:设置自定义 HTTP 头。-I
:仅显示 HTTP 响应头。-k
:忽略 HTTPS 证书检查。
示例
通过curl下载hadoop-3.3.0安装包:
curl -O http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
- 下载文件:
curl -O https://example.com/file.zip
- 保存文件到自定义文件名:
curl -o myfile.zip https://example.com/file.zip
- 发送 POST 请求并传递数据:
curl -X POST -d "name=John&age=30" https://example.com/api
- 发送自定义头部信息:
curl -H "Authorization: Bearer <token>" https://example.com/api
- 查看响应头信息:
curl -I https://example.com
- 跟随重定向:
curl -L https://short.url
总结
命令 | 功能 | 示例 |
---|---|---|
ping | 检查主机是否可达,测量延迟。 | ping -c 4 8.8.8.8 |
wget | 从网络上下载文件。 | wget -O file.zip https://example.com/file.zip |
curl | 发起网络请求或下载文件。 | curl -X POST -d "key=value" https://example.com/api |
通过掌握这些工具,你可以在 Linux 系统中高效地进行网络操作,包括测试网络连接、下载文件以及与服务器交互。
2 端口
- 什么是端口?
端口是指计算机和外部交互的出入口,可以分为物理端口和虚拟端口
物理端口:USB、HDMI、DP、VGA、RJ45等
虚拟端口:操作系统和外部交互的出入口
IP只能确定计算机,通过端口才能锁定要交互的程序
- 端口的划分
公认端口:1~1023,用于系统内置或常用知名软件绑定使用
注册端口:1024~49151,用于松散绑定使用(用户自定义)
动态端口:49152~65535,用于临时使用(多用于出口)
- 查看端口占用
nmap IP地址,查看指定IP的对外暴露端口
netstat -anp | grep
端口号,查看本机指定端口号的占用情况
可以通过Linux命令去查看端口的占用情况
使用nmap命令,安装nmap:yum -y install nmap
语法:nmap 被查看的IP地址
可以看到,本机(127.0.0.1)上有5个端口现在被程序占用了。
其中:
22端口,一般是SSH服务使用,即FinalShell远程连接Linux所使用的端口
可以通过netstat命令,查看指定端口的占用情况
语法:netstat -anp | grep 端口号
,安装netstat:yum -y install net-tools
如图,可以看到当前系统6000端口被程序(进程号7174)占用了
其中,0.0.0.0:6000,表示端口绑定在0.0.0.0这个IP地址上,表示允许外部访问
可以看到,当前系统12345端口,无人使用哦。
总结
命令 | 功能 |
---|---|
netstat -a | 显示所有连接和监听端口 |
netstat -l | 显示正在监听的端口 |
netstat -t | 查看 TCP 连接 |
netstat -u | 查看 UDP 连接 |
netstat -p | 显示端口对应的进程 ID 和名称 |
netstat -r | 查看系统的路由表 |
ss -tln | 显示监听的 TCP 端口(现代工具推荐) |
8 进程管理
在 Linux 系统中,进程管理是确保系统高效运行的重要组成部分。它涉及到进程的查看、启动、终止、优先级调整等操作。
以下是进程管理的主要内容:
1. 查看进程
1.1 使用 ps
命令
ps
是一个常用的查看进程信息的命令。
- 查看当前用户的所有进程:
ps
- 查看所有进程:
ps -e
- 查看所有进程的详细信息:
ps -ef
从左到右分别是:
UID:进程所属的用户ID
PID:进程的进程号ID
PPID:进程的父ID(启动此进程的其它进程)
C:此进程的CPU占用率(百分比)
STIME:进程的启动时间
TTY:启动此进程的终端序号,如显示?,表示非终端启动
TIME:进程占用CPU的时间
CMD:进程对应的名称或启动路径或启动命令
- 实时查看某个用户的进程:
ps -u username
1.2 使用 top
命令
top
是一个动态监控系统运行状态的工具,可以实时显示所有进程的资源使用情况。
top
输出示例:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 user 20 0 163852 2320 1234 S 0.7 0.1 0:02.35 bash
2345 user 20 0 546728 15432 8765 S 1.3 0.5 0:05.87 python3
- PID:进程 ID。
- %CPU:进程占用的 CPU 百分比。
- %MEM:进程占用的内存百分比。
- COMMAND:执行进程的命令。
1.3 使用 htop
htop
是一个增强版的 top
,提供更友好的界面(需要安装):
sudo apt install htop # Debian/Ubuntu 系统
sudo yum install htop # CentOS/RHEL 系统
htop
1.4 使用 pgrep
pgrep
可以通过进程名称直接查找进程 ID:
pgrep <进程名>
例如,查找 sshd
进程的 PID:
pgrep sshd
2. 终止进程
2.1 使用 kill
命令
kill
命令通过进程 ID (PID) 来终止进程。
- 发送默认信号(SIGTERM)终止进程:
kill <PID>
- 强制终止进程(SIGKILL):
kill -9 <PID>
2.2 使用 pkill
命令
pkill
通过进程名称来终止进程。
- 终止名称为
**python3**
的进程:
pkill python3
- 强制终止:
pkill -9 python3
2.3 使用 killall
killall
可以终止所有指定名称的进程。
- 终止所有
**ssh**
相关的进程:
killall ssh
3. 修改进程优先级
Linux 中,每个进程都有一个优先级(Priority),通过 nice 值 控制,范围从 -20
(最高优先级)到 19
(最低优先级)。
3.1 查看进程的优先级
使用 top
或 ps
命令查看 PR
(优先级)和 NI
(nice 值)列。
3.2 修改进程优先级
- 启动时设置优先级: 使用
nice
命令以指定优先级启动进程。
nice -n 10 command
- 运行中的进程调整优先级: 使用
renice
命令调整优先级。
renice -n <新的优先级> -p <PID>
例如,将 PID 为 1234 的进程优先级设置为 5:
renice -n 5 -p 1234
4. 后台进程管理
4.1 将进程放到后台
通过在命令末尾添加 &
,可以将进程放到后台运行:
command &
4.2 查看后台任务
使用 jobs
命令查看后台运行的任务:
jobs
4.3 恢复后台任务到前台
使用 fg
命令将后台任务恢复到前台:
fg <任务号>
任务号可以通过 jobs
命令获取。
4.4 暂停前台任务
使用 Ctrl + Z
可以暂停正在运行的前台任务,并将其移到后台。
5. 查看和管理系统资源
5.1 使用 free
查看内存使用
free -h
输出示例:
total used free shared buff/cache available
Mem: 7.8Gi 2.1Gi 3.2Gi 312Mi 2.5Gi 5.0Gi
Swap: 2.0Gi 0B 2.0Gi
5.2 使用 vmstat
查看 CPU、内存、I/O 状态
vmstat 1
每秒刷新一次系统资源状态。
6. 常用进程管理命令总结
命令 | 功能 |
---|---|
ps | 查看进程信息 |
top | 动态查看进程资源占用 |
htop | 增强版的 top ,图形界面友好 |
pgrep | 查找指定名称的进程 |
kill | 通过 PID 终止进程 |
pkill | 通过进程名称终止进程 |
killall | 终止所有指定名称的进程 |
nice | 启动进程时设置优先级 |
renice | 修改运行中进程的优先级 |
jobs | 查看后台任务 |
fg | 将后台任务恢复到前台 |
9 主机状态
查看系统资源占用
可以通过top命令查看CPU、内存使用情况,类似Windows的任务管理器
默认每5秒刷新一次,语法:直接输入`top`即可,按q或ctrl + c退出
PID:进程id
USER:进程所属用户
PR:进程优先级,越小越高
NI:负值表示高优先级,正表示低优先级
VIRT:进程使用虚拟内存,单位KB
RES:进程使用物理内存,单位KB
SHR:进程使用共享内存,单位KB
S:进程状态(S休眠,R运行,Z僵死状态,N负数优先级,I空闲状态)
%CPU:进程占用CPU率
%MEM:进程占用内存率
TIME+:进程使用CPU时间总计,单位10毫秒
COMMAND:进程的命令或名称或程序文件路径
top命令选项
top命令也支持选项:
选项 | 功能 |
---|---|
**-p** | 仅显示指定进程的信息。 |
**-d** | 设置刷新时间间隔(秒),默认值是 5 秒。例如:**top -d 2** ** 将每 2 秒刷新一次。** |
**-c** | 显示产生进程的完整命令,默认只显示进程名。 |
**-n** | 指定刷新次数后退出。例如:**top -n 3** ** 会刷新 3 次后退出程序。** |
**-b** | 以非交互、批量模式运行 **top** ,适合将输出重定向到文件或其他工具处理,常与 **-n** 配合使用。例如: **top -b -n 3 > /tmp/top.tmp** ** 会将统计信息输出到文件中。** |
**-i** | 不显示任何空闲(idle)或僵尸(zombie)的进程,适合专注于活跃进程。 |
**-u** | 按用户过滤进程,只显示特定用户启动的进程。例如:**top -u username** ** 显示特定用户的进程信息。** |
top交互式选项
按键 | 功能 |
---|---|
h | 显示帮助信息,列出所有交互式命令的说明。 |
c | 切换显示模式,显示/隐藏进程的完整命令行,与启动时的 -c 参数功能相同。再次按下 c 键切换回默认模式。 |
f | 选择需要显示的列(字段),用户可以通过按键来调整显示哪些信息。 |
M | 按驻留内存大小(RES)对进程排序(从高到低)。 |
P | 按 CPU 使用百分比对进程排序(从高到低)。 |
T | 按累计运行时间排序(从高到低)。 |
E | 切换顶部内存显示单位(KB、MB、GB)。 |
e | 切换进程内存显示单位(KB、MB、GB)。 |
1 | 切换显示每个 CPU 的负载信息(默认显示所有 CPU 的平均负载)。 |
i | 显示/隐藏闲置(idle)或僵尸(zombie)进程,与 -i 参数功能相同。 |
t | 切换显示 CPU 状态信息的内容,包括用户时间、系统时间、空闲时间等。 |
m | 切换显示内存信息的内容,包括物理内存和交换分区的使用情况。 |
磁盘信息监控
在 Linux 系统中,磁盘信息监控是系统管理的重要部分。以下是常用的磁盘监控命令及其功能,可以帮助您查看磁盘的使用情况、性能指标以及具体的文件占用信息。
1. df
命令:查看磁盘空间使用情况
df
命令(Disk Free)用于显示文件系统的磁盘使用情况,包括总空间、已用空间、剩余空间等。
基本语法
df [选项]
常用选项
-h
:以人类可读的格式显示(单位为 KB、MB、GB)。
-T
:显示文件系统的类型。
-i
:显示 inode 使用情况。
--total
:显示所有文件系统的总计。
示例
显示所有磁盘的使用情况(以人类可读格式):
df -h
输出示例:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 20G 30G 40% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
查看文件系统的类型:
df -T
显示 inode 的使用情况:
df -i
2. du
命令:查看目录和文件的磁盘使用情况
du
命令(Disk Usage)用于查看目录或文件占用的磁盘空间大小。
基本语法
du [选项] [路径]
常用选项
-h
:以人类可读格式显示。
-s
:只显示总计。
-a
:显示所有文件和目录的大小。
-c
:显示总计大小。
--max-depth=<n>
:限制显示目录的深度。
示例
显示当前目录及其子目录的大小:
du -h
显示指定目录的总大小:
du -sh /path/to/directory
限制显示深度为 1:
du -h --max-depth=1
显示目录中每个文件的大小:
du -ah
3. lsblk
命令:显示磁盘分区信息
lsblk
命令用于以树状结构显示系统中的所有块设备信息。
基本语法
lsblk [选项]
常用选项
-f
:显示文件系统类型。
-d
:只显示磁盘,不显示分区或挂载点。
-o
:自定义显示的列(如 NAME、SIZE、MOUNTPOINT 等)。
示例
显示磁盘和分区的详细信息:
lsblk
显示文件系统类型:
lsblk -f
自定义列显示:
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT
4. fdisk
和 parted
命令:查看磁盘分区
fdisk
fdisk
是用于查看和管理磁盘分区的工具。
查看磁盘的分区表:
sudo fdisk -l
parted
parted
是一个更高级的分区工具,支持 GPT 分区。
显示分区信息:
sudo parted -l
5. iostat
命令:查看磁盘性能
iostat
命令(I/O Statistics)用于监控磁盘的 I/O 性能。
基本语法
iostat [选项]
常用选项
-d
:显示磁盘设备的统计信息。
-x
:显示扩展统计信息。
-k
:以 KB 为单位显示。
示例
显示磁盘 I/O 性能统计:
iostat -d
显示详细的扩展统计信息:
iostat -dx
mount
命令:查看挂载的文件系统
mount
命令用于显示当前系统挂载的文件系统。
查看挂载的文件系统
mount
blkid
命令:查看设备 UUID 和文件系统类型
blkid
命令用于查看块设备的文件系统类型和 UUID。
示例
blkid
输出示例:
/dev/sda1: UUID="abcd-1234" TYPE="ext4"
/dev/sda2: UUID="efgh-5678" TYPE="swap"
smartctl
命令:磁盘健康状态监控
smartctl
是用于查看磁盘健康状态的工具(需要安装 smartmontools
)。
查看磁盘健康状态
安装工具:
sudo apt install smartmontools # Debian/Ubuntu
sudo yum install smartmontools # CentOS/RHEL
查看磁盘健康状态:
sudo smartctl -H /dev/sda
查看详细的磁盘信息:
sudo smartctl -a /dev/sda
总结
命令 | 功能 | 示例 |
---|---|---|
df -h | 查看磁盘使用情况 | df -h |
du -sh | 查看目录或文件占用磁盘空间 | du -sh /path/to/directory |
lsblk | 显示磁盘和分区信息 | lsblk -f |
fdisk -l | 显示分区信息 | sudo fdisk -l |
iostat -dx | 查看磁盘 I/O 性能 | iostat -dx |
smartctl -H | 查看磁盘健康状态 | sudo smartctl -H /dev/sda |
blkid | 查看设备 UUID 和文件系统类型 | blkid |
网络状态监控
在 Linux 系统中,监控网络状态是确保网络正常运行、排查问题和优化性能的关键任务。以下是常用的网络状态监控工具和命令。
1. ifconfig
/ ip
命令:查看网络接口信息
1.1 ifconfig
命令
ifconfig
用于查看和配置网络接口。
ifconfig
输出示例:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::1e5:9dff:fe42:8368 prefixlen 64 scopeid 0x20<link>
RX packets 10000 bytes 5000000 (4.7 MiB)
TX packets 8000 bytes 4000000 (3.8 MiB)
1.2 ip
命令
ip
是 ifconfig
的现代替代工具,功能更强大。
查看所有网络接口:
ip addr
查看特定接口:
ip addr show dev eth0
2. netstat
/ ss
命令:查看网络连接和端口
2.1 netstat
命令
netstat
用于显示网络连接、监听端口、路由表等信息。
常用选项:
-a
:显示所有连接和监听端口。-t
:仅显示 TCP 连接。-u
:仅显示 UDP 连接。-n
:以数字形式显示地址和端口(不进行 DNS 解析)。-p
:显示进程 ID 和名称。
示例:
- 显示所有网络连接:
netstat -an
- 显示监听的 TCP 端口:
netstat -tlp
2.2 ss
命令
ss
是 netstat
的现代替代工具,速度更快,功能更强大。
常用选项:
-t
:显示 TCP 连接。-u
:显示 UDP 连接。-n
:数字显示。-l
:仅显示监听端口。-p
:显示进程。
示例:
- 显示所有 TCP 连接:
ss -t
- 显示监听的端口:
ss -ltn
3. ping
命令:测试网络连通性
ping
命令通过发送 ICMP 数据包来测试主机是否可达,以及延迟时间。
基本用法:
ping <目标地址>
示例:
- 测试与
8.8.8.8
的连通性:
ping 8.8.8.8
- 限制发送次数:
ping -c 4 google.com
4. traceroute
命令:追踪网络路径
traceroute
用于追踪从本地主机到目标主机的路径,显示经过的所有路由。
基本用法:
traceroute <目标地址>
示例:
- 追踪到
google.com
的网络路径:
traceroute google.com
如果系统没有安装,可以通过以下命令安装:
sudo yum install traceroute # CentOS/RHEL
sudo apt install traceroute # Debian/Ubuntu
5. nmap
命令:端口扫描和网络安全
nmap
是一个强大的网络扫描工具,可用于检测网络主机、端口和服务。
基本用法:
nmap [选项] <目标地址>
常用选项:
-sS
:TCP SYN 扫描。-sU
:UDP 扫描。-p <端口范围>
:扫描指定端口。
示例:
- 扫描某个主机的所有端口:
nmap -p 1-65535 192.168.1.1
- 扫描主机并检测其服务版本:
nmap -sV 192.168.1.1
6. iftop
命令:实时流量监控
iftop
是一个实时流量监控工具,可以显示网络接口上连接的实时流量。
安装:
sudo yum install iftop # CentOS/RHEL
sudo apt install iftop # Debian/Ubuntu
使用:
sudo iftop
按键说明:
p
:切换显示端口。n
:切换显示主机名或 IP。b
:切换显示流量的方向。
7. tcpdump
命令:抓包工具
tcpdump
是一个强大的抓包工具,用于捕获和分析网络流量。
基本用法:
sudo tcpdump [选项]
常用选项:
-i <接口>
:指定要监控的接口。-n
:数字显示,不进行主机名解析。-w <文件>
:将抓取的数据保存到文件中。
示例:
- 监控
eth0
接口的流量:
sudo tcpdump -i eth0
- 抓取指定主机的流量:
sudo tcpdump -i eth0 host 192.168.1.1
- 保存抓取结果到文件:
sudo tcpdump -i eth0 -w output.pcap
8. vnstat
命令:带宽监控
vnstat
是一个轻量级的网络带宽监控工具,可以记录和查看流量统计信息。
安装:
sudo yum install vnstat # CentOS/RHEL
sudo apt install vnstat # Debian/Ubuntu
使用:
- 查看实时流量:
vnstat -l
- 查看每日流量统计:
vnstat -d
总结
命令 | 功能 | 示例 |
---|---|---|
ifconfig / ip | 查看网络接口信息 | ip addr |
netstat / ss | 查看网络连接和监听端口 | ss -ltn |
ping | 测试网络连通性 | ping -c 4 8.8.8.8 |
traceroute | 追踪网络路径 | traceroute google.com |
nmap | 扫描端口和服务 | nmap -p 1-65535 192.168.1.1 |
iftop | 实时流量监控 | iftop |
tcpdump | 抓包和分析网络流量 | tcpdump -i eth0 host 192.168.1.1 |
vnstat | 带宽流量统计 | vnstat -d |
10 环境变量
在 Linux 系统中,环境变量是存储在内存中的变量,它们影响系统和程序的运行行为。环境变量包含系统配置信息、用户信息、路径信息等,用于控制操作系统和应用程序的运行。
- 什么是环境变量
环境变量 是一个带有名称和值的键值对,如 PATH=/usr/bin:/bin
。
它们用来存储与系统或用户相关的信息,比如:
路径变量:指定可执行文件的搜索路径。
语言变量:指定系统语言和字符集。
用户变量:存储当前登录用户的信息。
环境变量在 Shell 和系统运行中扮演重要角色。
- 常见环境变量
变量名 | 作用 |
---|---|
PATH | 定义可执行文件的搜索路径,用冒号分隔路径。 |
HOME | 当前用户的主目录路径。 |
USER | 当前登录的用户名。 |
SHELL | 当前用户的默认 Shell 类型(如 /bin/bash )。 |
LANG | 系统语言和字符编码设置。 |
PWD | 当前工作目录。 |
EDITOR | 默认文本编辑器的路径。 |
PS1 | 定义 Shell 的提示符格式。 |
TERM | 当前终端类型(如 xterm 、 vt100 )。 |
- 查看环境变量
3.1 使用 echo
查看单个变量
echo $PATH
输出示例:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
3.2 使用 env
查看所有环境变量
env
3.3 使用 printenv
查看所有环境变量
printenv
3.4 使用 set
查看所有 Shell 变量(包括环境变量和本地变量)
set
- 临时设置环境变量
临时设置的环境变量仅在当前会话(Shell)有效,关闭终端后会失效。
设置临时变量
export VARIABLE_NAME=value
示例:
export MY_VAR="Hello, World!"
然后查看变量值:
echo $MY_VAR
添加路径到 PATH
export PATH=$PATH:/new/path
- 永久设置环境变量
永久设置环境变量需要将其添加到配置文件中,例如用户的 Shell 配置文件 或系统的 环境配置文件。
5.1 用户级别环境变量
修改当前用户的 Shell 配置文件:
对于 Bash(大多数 Linux 系统默认 Shell),编辑 ~/.bashrc
:
vi ~/.bashrc
对于 Zsh,编辑 ~/.zshrc
:
vi ~/.zshrc
在文件末尾添加:
export VARIABLE_NAME=value
示例:
export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin
保存文件后,执行以下命令使配置生效:
source ~/.bashrc
5.2 系统级别环境变量
系统范围的环境变量对所有用户有效,编辑 /etc/profile
或 /etc/environment
:
sudo vi /etc/profile
或:
sudo vi /etc/environment
添加变量:
JAVA_HOME=/usr/local/java
PATH=$PATH:$JAVA_HOME/bin
保存后,执行以下命令使配置生效:
source /etc/profile
- 删除环境变量
临时删除变量
使用 unset
命令可以删除变量(仅限当前会话):
unset VARIABLE_NAME
示例:
unset MY_VAR
永久删除变量
从对应的配置文件(如 ~/.bashrc
、/etc/profile
)中删除相关定义,并重新加载文件。
- 特殊环境变量文件
/etc/environment
用于设置系统范围的环境变量。
格式:VAR=value
(不支持 Shell 的语法扩展)。
/etc/profile
系统范围的 Shell 配置文件,在用户登录时加载。
~/.bashrc
当前用户的 Bash 配置文件,在每次打开新终端时加载。
~/.bash_profile
当前用户的登录 Shell 配置文件。
- 常见任务示例
添加自定义路径到 PATH
临时添加:
export PATH=$PATH:/usr/local/my_program/bin
永久添加: 在 ~/.bashrc
文件中添加:
export PATH=$PATH:/usr/local/my_program/bin
设置 Java 环境变量
编辑 ~/.bashrc
文件:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$PATH:$JAVA_HOME/bin
更新环境变量:
source ~/.bashrc
总结
命令 | 功能 |
---|---|
echo $VAR_NAME | 查看单个环境变量的值 |
env | 查看所有环境变量 |
export VAR_NAME=value | 临时设置环境变量 |
unset VAR_NAME | 删除环境变量 |
source <文件> | 使环境变量文件修改立即生效 |
通过掌握环境变量的操作,您可以灵活配置运行环境,优化系统和软件的使用体验。
11 上传、下载
当然,除了通过FinalShell的下方窗体进行文件的传输以外,也可以通过rz、sz命令进行文件传输。
rz、sz命令需要安装,可以通过:yum -y install lrzsz,即可安装。
rz命令,进行上传,语法:直接输入rz即可
sz命令进行下载,语法:sz 要下载的文件
文件会自动下载到桌面的:fsdownload文件夹中。
注意,rz、sz命令需要终端软件支持才可正常运行
FinalShell、SecureCRT、XShell等常用终端软件均支持此操作
**rz**
** 和 **sz**
是独立的命令,分别用于上传和下载文件**,二者之间没有依赖关系。你可以根据具体需求单独使用这两个命令。
**rz**
** 命令:上传文件到远程服务器**- 用于将本地文件上传到远程服务器。
- 上传完成后,文件会直接存放在远程服务器的当前工作目录中(可以通过
pwd
查看当前工作目录)。 - 上传完成后,不需要再执行
sz
,因为sz
是用于下载文件的命令。
**sz**
** 命令:下载文件到本地**- 用于从远程服务器下载文件到本地。
- 下载完成后,文件会存储到本地指定的目录中。
- 如果你只需要下载文件,而不需要上传,那么只用
sz
即可。
12 压缩、解压
在 Linux 系统中,文件的压缩和解压是非常常见的操作。以下是常用的压缩和解压工具及其使用方法:
- 常见的压缩和解压工具
tar
:用于打包和解压文件,通常结合 gzip
或 bzip2
使用。
gzip
/gunzip
:用于压缩和解压 .gz
文件。
bzip2
/bunzip2
:用于压缩和解压 .bz2
文件。
xz
/unxz
:用于压缩和解压 .xz
文件。
zip
/unzip
:用于压缩和解压 .zip
文件。
7z
:用于压缩和解压 .7z
文件。
2. 使用 tar
进行打包和解压
2.1 打包文件
tar
命令主要用于将多个文件或目录打包成一个归档文件。
语法
tar -cvf [打包后的文件名] [文件或目录]
示例
打包目录 mydir
为 mydir.tar
:
tar -cvf mydir.tar mydir
打包多个文件为 files.tar
:
tar -cvf files.tar file1 file2 file3
2.2 打包并压缩
可以结合 gzip
或 bzip2
,将打包的文件进行压缩。
语法
tar -cvzf [压缩后的文件名] [文件或目录]
示例
使用 gzip
压缩目录 mydir
为 mydir.tar.gz
:
tar -cvzf mydir.tar.gz mydir
使用 bzip2
压缩目录 mydir
为 mydir.tar.bz2
:
tar -cvjf mydir.tar.bz2 mydir
2.3 解压 tar 包
解压 tar
文件或压缩包时,使用以下命令:
语法
tar -xvf [压缩包]
示例
解压 mydir.tar
:
tar -xvf mydir.tar
解压 mydir.tar.gz
:
tar -xvzf mydir.tar.gz
解压 mydir.tar.bz2
:
tar -xvjf mydir.tar.bz2
2.4 常用选项
选项 | 功能 |
---|---|
-c | 创建打包文件 |
-v | 显示详细信息 |
-f | 指定打包的文件名 |
-x | 解包文件 |
-z | 使用 gzip 压缩/解压 |
-j | 使用 bzip2 压缩/解压 |
- 使用
gzip
和gunzip
压缩/解压
3.1 压缩文件
gzip
用于将单个文件压缩为 .gz
文件。
语法
gzip [文件名]
示例
压缩 file.txt
为 file.txt.gz
:
gzip file.txt
3.2 解压文件
gunzip
用于解压 .gz
文件。
语法
gunzip [压缩文件]
示例
解压 file.txt.gz
:
gunzip file.txt.gz
- 使用
bzip2
和bunzip2
压缩/解压
4.1 压缩文件
bzip2
用于将单个文件压缩为 .bz2
文件。
语法
bzip2 [文件名]
示例
压缩 file.txt
为 file.txt.bz2
:
bzip2 file.txt
4.2 解压文件
bunzip2
用于解压 .bz2
文件。
语法
bunzip2 [压缩文件]
示例
解压 file.txt.bz2
:
bunzip2 file.txt.bz2
5. 使用 zip
和 unzip
压缩/解压
5.1 压缩文件
zip
用于将文件或目录压缩为 .zip
文件。
语法
zip [压缩后的文件名] [文件或目录]
示例
压缩 file.txt
为 file.zip
:
zip file.zip file.txt
压缩目录 mydir
为 mydir.zip
:
zip -r mydir.zip mydir
5.2 解压文件
unzip
用于解压 .zip
文件。
语法
unzip [压缩文件]
示例
解压 file.zip
:
unzip file.zip
unzip [-d] 参数
-d,指定要解压去的位置,同tar的-C选项
参数,被解压的zip压缩包文件
unzip test.zip,将test.zip解压到当前目录
unzip test.zip -d /home/it,将test.zip解压到指定文件夹内(/home/it)
- 使用
7z
压缩/解压
6.1 压缩文件
7z
用于创建 .7z
格式的压缩文件。
语法
7z a [压缩后的文件名] [文件或目录]
示例
压缩 file.txt
为 file.7z
:
7z a file.7z file.txt
压缩目录 mydir
为 mydir.7z
:
7z a mydir.7z mydir
6.2 解压文件
7z
也可以解压 .7z
文件。
语法
7z x [压缩文件]
示例
解压 file.7z
:
7z x file.7z
- 总结
工具 | 操作 | 命令 |
---|---|---|
tar | 打包文件 | tar -cvf archive.tar files/ |
tar | 解包文件 | tar -xvf archive.tar |
gzip | 压缩文件 | gzip file.txt |
gunzip | 解压 .gz 文件 | gunzip file.txt.gz |
bzip2 | 压缩文件 | bzip2 file.txt |
bunzip2 | 解压 .bz2 文件 | bunzip2 file.txt.bz2 |
zip | 压缩文件/目录 | zip -r archive.zip files/ |
unzip | 解压 .zip 文件 | unzip archive.zip |
7z | 压缩文件 | 7z a archive.7z files/ |
7z | 解压 .7z 文件 | 7z x archive.7z |
通过以上工具和命令,您可以在 Linux 系统中灵活地进行文件的压缩和解压操作,满足不同的需求。