一:Linux 背景知识
1.1. Linux 是什么
Linux 是一种与 Windows 是并列的操作系统。经过多年的发展,Linux 已成为全球使用最广泛的操作系统之一,其影响力遍及各个领域。值得一提的是,Android 系统本质上就是基于 Linux 内核构建的。
1.2 Linux 发行版
Linux 严格意义来说只是一个 “操作系统内核”,一个完整的操作系统 = 操作系统内核 + 配套的应用程序,由于 Linux 是一个完全开源免费的内核, 因此有些公司和开源组织又基于 Linux 内核提供了不同的配套程序,这就构成了不同的 “发行版”.
二: Linux 环境搭建
要想学习 Linux 首先需要先有一个 Linux 的环境.
2.1 环境搭建方式
环境搭建方式主要有四种:
环境搭建方式 | 优缺点分析 | 推荐程度 |
---|---|---|
直接安装在物理机上 | 将 Linux 直接安装在物理机上,但由于 Linux 桌面版的用户体验较差,操作不够友好,因此不推荐。 | 不推荐 |
使用虚拟机软件 | 在虚拟机上运行 Linux,但虚拟机软件可能存在一些 Bug,容易导致环境出现莫名问题,增加配置和调试的复杂性,因此不推荐。 | 不推荐 |
使用 WSL | Windows 近几年推出的新功能,在 Windows 系统内集成 Linux。但目前技术尚不够成熟,兼容性和稳定性较差,因此不推荐。 | 不推荐 |
使用云服务器 | 通过腾讯云、阿里云或华为云等服务商购买云服务器,环境稳定、配置简单,使用方便,推荐作为首选搭建方式。 | 推荐 |
使用云服务器不仅可以简化环境搭建过程避免繁琐的配置问题,还具有一个显著优势:部署在云服务器上的项目可以直接被外网访问。这样我们的项目就能够像企业发布的正式网站一样,对外提供服务,让自己开发的程序真正被他人使用,从而实现实用价值和实际应用。
2.2 使用云服务器
以腾讯云为例,其他的服务器厂商也是类似.
- 进入官方网站 https://cloud.tencent.com/act/campus
- 登陆网站
-
右侧的操作系统选择 CentOS 7.6 64位,购买时长根据需要选择,接着点击立即购买即可。
-
购买完成后可以在控制台中找到自己买的服务器,点进去能够看到服务器的 IP 地址.
蓝色方框为公网 ip 地址 49.233.172.121, 稍后我们就会使用这个 ip 登陆服务器.
- 设置 root 密码:勾选服务器后点击重置密码,root 密码建议设置的稍微复杂一些,否则容易被黑客入侵。
2.3 使用终端软件连接到 Linux
终端软件是一类工具,用于与远程主机建立网络连接从而对主机进行操作。我们可以使用 XShell 进行连接,并在 XShell 终端中输入命令进行操作。
ssh 服务器外网ip地址
这段代码用于连接服务器,其中 ip 是腾讯云后台页面中显示的外网 IP 地址,此处我们填写 49.233.172.121。如果网络连接正常系统将提示输入用户名和密码。用户名默认为 root,密码是你在购买服务器时设置的登录密码。输入正确后即可成功登录服务器,此时就通过 Xshell 和远程的主机建立连接了,XShell 下的复制粘贴如下:
操作 | 快捷键 |
---|---|
复制 | Ctrl + Insert |
粘贴 | Shift + Insert |
三: Linux 常用命令
3.1 ls 命令
语法: ls [选项] [目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
参数 | 功能说明 | 示例用法 |
---|---|---|
-a | 列出目录下的所有文件,包括以 . 开头的隐藏文件。 | ls -a |
-d | 将目录当作文件显示,而不是显示目录下的内容。 | ls -d 指定目录 |
-k | 以 KB(千字节)为单位显示文件大小。 | ls -alk 指定文件 |
-l | 列出文件的详细信息,包括权限、大小、时间等。 | ls -l |
-r | 按名称反向排序目录内容。 | ls -r |
-t | 按文件修改时间排序,最近修改的文件排在前面。 | ls -t |
-R | 递归列出所有子目录下的文件。 | ls -R |
3.2 pwd 命令
语法: pwd
功能:显示用户当前所在的目录
3.3 cd 命令
语法: cd 目录名
功能: 改变工作目录。将当前工作目录改变到指定的目录下.
cd .. : 返回上级目录
cd ~:进入用户家目
cd -:返回最近访问目录
Linux 目录结构:
我们敲的所有的 Linux 命令都可以使用 tab 键来尝试补全来加快效率,如果命令或者目录敲错了, 可以 ctrl + c 取消当前的命令.
3.4 touch 命令
语法: touch [选项]… 文件…
功能: touch 命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
3.5 cat 命令
语法:cat [选项] [文件]
功能: 查看目标文件的内容
常用选项:
- -n 对输出的所有行编号
3.6 mkdir 命令
语法:mkdir [选项] dirname…
功能:在当前目录下创建一个名为 “dirname”的目录
常用选项:
- -p, --parents 可指定一个路径名称。当路径中的某些目录尚不存在时,自动创建这些目录,即一次可以创建多级目录。
3.7 rm 命令
语法:rm [-f-i-r-v] [dirName/dir]
功能:删除文件或目录
选项 | 功能说明 |
---|---|
-f | 强制删除文件,即使文件是只读属性(写保护)。 |
-i | 删除文件或目录前逐一询问用户确认。 |
-r | 递归删除目录及其下的所有文件和子目录。 |
注意:千万不要运行 rm -rf / , 尤其是在公司的生产服务器上.
3.8 cp 命令
语法:cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录,目标文件或目录要存在
选项 | 功能说明 |
---|---|
-f 或 --force | 强制复制文件或目录,无论目标文件或目录是否已存在,均直接覆盖。 |
-i 或 --interactive | 在覆盖文件之前先提示用户确认是否执行操作。 |
-r | 递归复制,将指定目录下的文件及其子目录一并处理。如果源为非目录或符号链接,则按普通文件处理。 |
-R 或 --recursive | 递归复制,与 -r 功能相同,将指定目录下的文件及子目录一并处理。 |
3.9 mv 命令
语法: mv [选项] 源文件或目录 目标文件或目录
功能:
情况 | 描述 |
---|---|
目标是文件 | 将源文件或目录重命名为目标文件名,源文件或目录只能是一个。 |
目标是目录 | 将一个或多个源文件或目录移动到目标目录中。 |
常用选项
选项 | 描述 |
---|---|
-f | 强制覆盖,如果目标文件已存在,直接覆盖,不会询问。 |
-i | 如果目标文件已存在,询问是否覆盖。 |
3.10 man 命令
Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。
语法: man [选项] 命令
常用选项
选项 | 描述 |
---|---|
-k | 根据关键字搜索联机帮助。 |
num | 只在指定的第 num 章节中查找。 |
man | 显示 man 手册中各章节及其含义。 |
3.11 less 命令
语法: less [参数] 文件
功能:查看文件内容。不会立刻把所有文件内容加载到内存中,也能进行查找.
常用选项:
操作 | 描述 |
---|---|
j、k、方向键 | 向上或向下滚动屏幕。 |
-N | 显示每行的行号。 |
/字符串 | 向下搜索指定的字符串。 |
n | 重复前一个搜索(与 / 或 ? 相关)。 |
q | 退出。 |
3.12 head 命令
语法:head [参数]… [文件]…
功能:head 用于显示文件的前几行,默认情况下打印文件的前 10 行。
常用选项:
- -n<行数> 显示的行数
3.13 tail 命令
语法: tail [必要参数] [选择参数] [文件]
功能:tail 用于显示指定文件的末尾内容。如果未指定文件则处理标准输入。常用于查看日志文件。
选项 | 描述 |
---|---|
-f | 实时循环读取文件内容。 |
-n<行数> | 显示文件的指定行数。 |
3.14 data 命令
语法:data [必要参数] [选择参数] [文件]
功能:data 用于显示或处理数据文件的内容,通常用于查看或操作表格格式的数据。如果未指定文件,则从标准输入读取数据。
例子:data -f “%Y-%m-%d %H:%M:%S” /path/to/datafile
格式标记 | 描述 |
---|---|
%H | 小时 (00…23) |
%M | 分钟 (00…59) |
%S | 秒 (00…61) |
%X | 格式为 %H:%M:%S |
%d | 日 (01…31) |
%m | 月份 (01…12) |
%Y | 完整年份 (0000…9999) |
%F | 格式为 %Y-%m-%d |
时间戳:
操作 | 描述 |
---|---|
时间 -> 时间戳 | 使用 date +%s 将时间转换为时间戳。 |
时间戳 -> 时间 | 使用 date -d@ 时间戳,将时间戳转换为时间。 |
Unix 时间戳是指从 1970 年 1 月 1 日 00:00:00开始所经过的秒数,不包括闰秒。
3.15 vim 命令
步骤 | 操作 | 说明 |
---|---|---|
1. 创建或打开文件 | vim [文件名] | 使用 vim 打开文件或创建新文件。 |
2. 进入插入模式 | 按 i 键 | Vim 默认是普通模式,按下 i 键后进入插入模式(左下角显示 --INSERT–),即可开始编辑文本。 |
3. 保存文件 | 按 Esc 键,然后输入 :w | 在插入模式下无法直接保存,需先按 Esc 退出插入模式,进入普通模式后输入 :w 并按回车保存文件。 |
4. 退出文件 | 按 Esc 键,然后输入 :q 或 :wq | 在插入模式下无法退出,需先按 Esc 回到普通模式,输入 :q 退出,或输入 :wq 同时保存并退出。 |
3.16 grep 命令
语法:grep [参数]… [文件]…
功能:用于查找文件中是否包含指定字符串, 并显示对应的行.
常用选项:
- -n<行数> 显示的行数
- -w 全字匹配. 要求整个单词都完全相同的结果才能匹配出来, 而不仅仅是一个单词的一部分.
- -r 递归查找. 可以搜索多级目录下的所有文件.
- –color 高亮查找到的结果
- –include 指定查找某些文件
- –exclude 指定排除某些文件
3.16 ps 命令
语法:ps [参数]…
功能:用于查看当前系统上运行的进程
参数 | 功能说明 |
---|---|
a | 显示所有终端的进程 |
u | 以用户为主的格式显示进程信息 |
x | 显示所有进程,不区分终端 |
3.16 netstat 命令
语法:netstat [参数]…
功能:查看系统上的网络状态.
参数 | 功能说明 |
---|---|
-a | 显示所有套接字,包括正在侦听和未侦听的套接字 |
-n | 以数字形式显示地址,不解析主机名、端口或用户名 |
-p | 显示套接字所属进程的 PID 和名称 |
四: Linux 权限
4.1 用户操作
Linux下有两种用户:超级用户和普通用户。
用户类型 | 特点 | 命令提示符 | 注意事项 |
---|---|---|---|
超级用户(root) | 拥有最高权限,可以在系统中执行任何操作,不受限制 | # | 权限极大,误操作可能导致严重后果,因此在公司环境中通常避免直接使用 root 用户操作服务器 |
普通用户 | 只能执行有限的操作,权限受限制 | $ | 安全性较高,适用于日常操作 |
4.1.1 创建用户
命令 useradd [用户名]
功能 创建新的用户
useradd test
4.1.2 配置密码
命令 passwd [用户名]
功能 设置或修改用户密码
passwd test
注意:输入密码的时候控制台中不会有提示,但实际上已经输入进去了。
4.1.3 切换用户
命令:su [用户名]
功能:切换用户。
例如,要从 root 用户切换到普通用户 user,则使用 su user,要从普通用户 user 切换到 root 用户则使用 su root,root 可以省略 ,此时系统会提示输入 root 用户的口令。
4.2 文件类型和访问权限
4.2.1 三种角色
访问一个文件的人可能分成三种类别:u、g、o
类别 | 说明 | 标识 |
---|---|---|
文件和目录的所有者 | 当前文件或目录的拥有者 | u (User) |
所属组的用户 | 文件或目录所属组的用户 | g (Group) |
其他用户 | 除所有者和组用户之外的用户 | o (Others) |
所有用户 | 包括拥有者、所属组用户和其他用户 | a (All) |
一个具体例子:
-rwxr-x--x 1 charlie admins 5120 Mar 2 14:45 script.sh
- 文件类型
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
- 基本权限
读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限“-” 表示不具有该项权限
4.2.2 修改文件权限
功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:
- R -> 递归修改目录文件的权限,只有文件的拥有者和root才可以改变文件的权限
chmod命令权限值的格式: 用户表示符+ - = 权限字符
操作符 | 作用说明 |
---|---|
+ | 在权限范围内添加指定权限 |
- | 在权限范围内移除指定权限 |
= | 将权限范围设置为指定权限 |
# chmod u+w /home/abc.txt
# chmod o-x /home/abc.txt
# chmod a=x /home/abc.txt