观前提示:本篇博客演示使用的 IDEA 版本为2021.3.3版本,使用的是Java8(又名jdk1.8)
前端使用VSCode(Visual Studio Code1.78.2)
电脑使用的操作系统版本为 Windows 10
目录
Linux 是什么
Linux 是一个操作系统. 和 Windows 是 "并列" 的关系
日常用户主要是使用 Windows 系统, 而公司服务器 主要是 Linux 系统
Windows 是通过图形化界面进行操作, 而 Linux 则是通过命令行进行操作
Linux 使用命令操作的原因:
1. 服务器虽然配置高, 但是上面运行的任务多, 没有额外资源运行图形界面, 并且服务器要求稳定, 而图形化界面经常有 bug
2. 嵌入式设备配置比较低, 运行图形化界面也比较吃力
3. Android 本身有图形化界面, 也稳定好用
Linux 发展史
Linux 的发展历程可以追溯到上个世纪 90 年代初期。当时的计算机操作系统市场主要由 Microsoft Windows 和 Mac OS X 控制,而 Linux 则是由一些程序员在互联网上自愿开发的,它最初是基于 Unix 系统的设计。
1991 年,芬兰大学生林纳斯·托瓦兹(Linus Torvalds)开始着手开发一款操作系统内核,他将其命名为 “Linux”(Linux = Linus + Unix)。这款内核被上传到互联网上供其他开发者使用和改进。
1992 年,Richard Stallman 成立了自由软件基金会,将 GNU 计划作为旗帜,他的目标是打造一个自由的操作系统,其中包括了许多可自由使用、分发和修改的软件工具。而 Linux 内核则成为了 GNU 系统中的一部分。
在接下来的几年里,Linux 社区不断壮大,越来越多的开发者加入其中,为 Linux 内核和相关软件贡献代码。1993年,第一个 Linux 发行版 SLS(Softlanding Linux System)发布,之后又陆续推出了 SlackWare 、 Debian 、 RedHat 等多个流行的 Linux 发行版。
随着互联网的飞速发展,越来越多的公司开始看到 Linux 的商业价值,他们基于 Linux 开发了许多企业级软件,并提供相应的支持和服务。1998 年,Red Hat 公司成立,开始提供商业化的 Linux 发行版和技术支持服务。
21 世纪以来,Linux 在服务器、移动设备、嵌入式系统等领域得到了广泛的应用和推广,已经成为了全球最受欢迎的开源操作系统之一。同时,Linux 也在不断的发展和完善,现今已经成为了一个庞大而复杂的生态系统,拥有众多的发行版和应用软件,被广泛应用于云计算、虚拟化、人工智能等领域。
Linux 环境搭建
想要使用 Linux 需要搭建环境
一般情况下有四种选择:
1. 虚拟机
在电脑上装一个虚拟机软件, 在虚拟机上面装系统
缺点: 1. bug 多. 2. 没有外网 ip
2. 物理机
直接整一个电脑上面装 Linux 系统, 不使用 Windows 系统
缺点: bug 更多,因为需要图形化界面
3. 使用 WSL
Windows 搞的一个功能, 在 Windows 里面内置了 Linux 内核
缺点: 不能作为生产环境, 因为微软并未基于生产环境负载设计或构建 WSL
4. 云服务器
阿里,腾讯,华为等提供的服务器,直接买就行了
优点: 有外网ip,项目部署上去就可以被访问到
缺点: 要钱, 低配的价格还好,高配价格贼高
5. 实体服务器
不卖他们的服务器,自己组服务器
优点: 方便,想要什么配置弄什么配置
缺点: 需要会维护服务器
云服务器
本篇博客使用阿里的云服务器,因为他可以免费使用七个月
选择服务器的时候,选择系统镜像 Centos 7系列
买完服务器就可以登录了,设置密码的时候记得设置复杂,密码忘了就重置
设置完之后就有了三个信息
1. ip
2. 用户名 (root)
3. 密码 (自己设置的)
终端软件
使用终端工具进行登录, 虽然网页上也有登录入口, 页面内置了登录功能, 但是不太方便, 还是使用单独的终端工具进行登录
XShell
推荐使用 XShell
安装完成,启动 XSheel
输入密码
看到这个代表登录成功
Linux 常见命令
CTRL + L
Linux 清屏
ls
ls: 查看指定目录中, 都有那些内容
语法: ls [选项] [目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
常用选项:
-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
-l 列出文件的详细信息。
-r 对目录反向排序。
-t 以时间排序。
-R 列出所有子目录下的文件。(递归)
下面以 ls -l 进行举例子
打开 Xshell 连接上你的云服务器,输入 ls
你可能是这种情况
ls
也可能是这种情况
不用担心是不是操作除了问题, 因为 ls 是查看当前目录中的内容, 第一种情况就是因为当前位置是空的,啥也没有,所以既不显示东西,也没有报错
第二种一般是 ls 配合 /,写法如下
ls /
ls空格/
给 ls 后面加上一个路径(相对/绝对), 就可以查看指定目录中的内容
/ 是"根目录"的意思
目录,文件,这些内容存在电脑里,构成了一个 N 叉树结构, / (此电脑) 就是树根节点
Linux 没有盘符概念,不分 C盘, D盘
Linux树状文件系统结构示意图
观察上图可以发现, / 在 Linux 中的地位和 Object 在 Java 中的地位一样
ls -l /
注意: 1 I l ,分别是数字1, 大写 i, 小写 L .注意观察,不要总结规律,因为字体不同效果不同
相比较于 ls -l, 更常使用 ll
ll
pwd
pwd: 查看目录当前完整的绝对路径
pwd
cd
Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。
语法: cd 目录名
功能: 改变工作目录。将当前工作目录改变到指定的目录下.
cd
举例:
cd .. : 返回上级目录
cd ~:进入用户家目
cd -:返回最近访问目录
几个特殊的目录:
/ 称为根目录
. 称为当前目录
.. 称为当前目录的上级目录
cd 后面可以是相对路径,也可以是绝对路径
绝对路径就是用 / 开头, 相对路径就是用 . 或者 .. 开头. 其中 . 有时候可以省略
进到 root/etc 使用 ll 看看
页面很长,就不放出来全部了
小技巧: 使用 cd 切换路径的时候,不需要输入全部的 字母,可以 使用 tab 键补全
如果只有一个匹配的选项就自动补全了, 如果有多个选项, 需要双击 tab 才能列出所有的匹配结果
使用 ctrl + c 重新输入
如果命令或者目录敲错了, 可以 ctrl + c 取消当前的命令
Linux 文件权限示意图
touch
语法: touch [选项]... 文件...
功能: touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
touch java_0608.txt
在那个目录下面, 文件就会创建在哪里
创建完发现没有任何消息提示, 有句话说得好,没有消息就是好消息
没有消息说明成功了,如果出现问题就会有消息
想要查看文件是否创建成功,使用 ll 来看
cat
语法:cat [选项] [文件]
功能: 查看目标文件的内容
cat java_0608.txt
当前文件为空.所以什么都看不到
这个文件不为空,可以看到文件dd内容
echo
echo 用来写文件,本身也是用来回显的
echo "hello world" > java_0608.txt
> 是覆盖
>> 是拼接
可以看出直接覆盖
可以看出是拼接
注意区分 ls 和 cat 的区别
ls 是看目录里面有什么
cat 是看文件里面有什么
举个栗子: 你打开外卖APP, 看到各式各样的饭店,这就是 ll
当你点开某个饭店查看他具体有什么菜, 这就是 cat,
Vim 文本编辑器
Vim 是一款功能强大的文本编辑器,最初由 Bram Moolenaar 在上个世纪 90 年代开发,是 Unix 和 Linux 操作系统中最流行和常用的文本编辑器之一。Vim 的名字是 “Vi Improved”(Vi 的增强版)的缩写,它是在 Vi 文本编辑器基础上进行了改进和拓展,增加了许多方便快捷的编辑功能,使得它成为了程序员、系统管理员等专业人士的首选编辑工具之一。
Vim 具有丰富的功能和灵活的配置选项,它支持多种编辑模式,包括命令模式、插入模式、可视模式等。在命令模式下,用户可以输入各种命令来实现文本操作,比如搜索、替换、移动光标、删除等。在插入模式下,用户可以像在其他编辑器中一样直接输入文本。而在可视模式下,用户可以轻松地对文本进行选择和编辑。
Cat 和 Echo 只是简单粗暴的读写文件,读写内容非常简单,使用他们没有问题,如果读写内容更复杂的,就需要使用更强大的编辑器了。
Vi/Vim 就是 Linux 上默认的自带的记事本程序。
Vim 是 Vi 的升级版本,用法差不多,文篇博客重点介绍 Vim
在 Xsheel 中复制粘贴不再是 ctrl +c(复制), ctrl +v(粘贴) . ctrl +c 在终端中有特殊含义: 终止当前运行的程序
而 Xsheel 中复制粘贴则是: ctrl + insert(复制), shift + insert(粘贴), Windows 也支持这个
Vim 退出
vim java_0608.txt
输入完上面的命令按下回车会直接进入 vim
进去以后,会发现不知道怎么操作,怎么退出
先输入 :,q 再按下回车,就可以退出了
就会回到这个页面
Vim 模式
vim 最核心的概念: 模式(mode)
进去以后,默认是普通模式(normal mode), 普通模式下, 键盘的大部分按键都是有特定含义的快捷键
插入模式: i
进行编辑的时候, 需要进入插入模式(insert mode), 输入小写字母 i ,就能进入插入模式
先进入 vim, 在按 i. 左下角的提示会变成 insert, 此时处在插入模式
此时就可以随意编辑了
保存退出 :wq
按下 esc, 回到普通模式(vim中的模式有十几种, 都是按 esc 回到普通模式)
接着按下 :wq 保存退出即可
:wq
注意: 如果 vim 没有正确关闭, 在下次启动的时候,会报错, 提示说你上次没有正确关闭, 可以直接按 D 删除未保存内容, 按 R 恢复之前编辑的内容
mkdir
语法:mkdir [选项] dirname...
功能:在当前目录下创建一个名为 “dirname”的目录
在 root 里面创建 java 文件夹
-p
创建多级目录
mkdir -p aaa/111/222/333/444
touch 和 mkdir 的区别
touch(创建空文件)命令用于创建一个新的文件,或者更新已有文件的时间戳信息,它的语法如下:
touch file1.txt
这条命令将创建一个名为 file1.txt 的空文件,如果 file1.txt 文件已经存在,则 touch 命令将更新 file1.txt 文件的访问和修改时间为当前时间。
而 mkdir(创建目录)命令则用于创建一个新的目录(也就是所谓的文件夹),它的语法如下:
mkdir dir1
小结,touch 命令用于创建空文件或更新文件时间戳,而 mkdir 命令用于创建新目录。
rm
语法:rm [-f-i-r-v] [dirName/dir]
功能:删除文件或目录
常用选项:
-f 即使文件属性为只读(即写保护),亦直接删除
-i 删除前逐一询问确认
-r 删除目录及其下所有文件
就拿刚刚用 -p 创建的来测试删除
rm -rf /root/java/aaa
如上所示,我在 root/java 里面创建了一个 1.txt 的文件
现在来删除他
当 rm 后面跟着文件名,他会询问是否删除,y 就删除,不删除就输入其他的
输出 y ,就删除了
询问是否删除不取决于删除的是目录还是文件,取决于是 rm 文件. 还是rm -rf /文件.
注意:
rm -rf/
上面这条语句是递归的删除根目录
r: 递归
f: 不确认,强制删除
Linux 没有回收站,当你打出这条指令并且执行的时候,你的 Linux 就会无了(东西全删, 根目录 都不给你留下)
这个操作,是很多人都会触发的操作,倒不是删库跑路,而是
rm -rf / root/java/1.txt
rm -rf空格/空格root/java/1.txt
这条指令,多敲了一个空格
rm 认为你删除两个目录
1. /
2. root/java/1.txt
mv
语法: mv [选项] 源文件或目录 目标文件或目录
功能:
1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移
至一个新的目录中。
2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目
录名),它将所给的源文件或目录重命名为给定的目标文件名。
3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源
文件均移至目标目录中。
常用选项
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
新建三个目录用来测试
在 aaa 里面创建一个 1.txt
移动演示
改名演示
cp
语法:cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在
的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的
目的地并非一个已存在的目录,则会出现错误信息
常用选项:
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理
cp(copy) = 复制 + 粘贴
把 java_0608.txt 复制粘贴到 java 里面去
注意:
mv 如果移动的是目录, 此时操作和移动文件没有区别
cp 如果拷贝的是目录, 需要加上 -r 选项, 表示递归,否则会报错
补充:
grep 字符串查找
ps 查看进程
netstat 查看网络信息
本文完,感谢观看,不足之处请在评论区指出 !