【JavaEE】Linux基本使用

Linux基本使用

文章目录

  • 【JavaEE】Linux基本使用
    • 1. 如何获取一个Linux的环境
    • 2. 终端软件来远程登录
    • 3. Linux基本使用
      • 3.1 命令提示符
      • 3.2 ls
      • 3.3 cd
      • 3.4 pwd
      • 3.5 touch
      • 3.6 cat
      • 3.7 man
      • 3.8 echo
      • 3.9 vim
        • 3.9.1 打开文件
        • 3.9.2 编辑文件
        • 3.9.3 保存退出
        • 3.9.4 vimtutor
      • 3.10 mkdir
      • 3.11 rm
      • 3.12 cp 与 mv
      • 3.13 grep
        • 3.13.1 grep 和 ll
        • 3.13.2 grep 和 ps
        • 3.13.3 grep 和 netstat

【JavaEE】Linux基本使用

我们已经解决了一个项目的前后端部分,而我们就差这临门一脚,就是“发布”,让别人通过网络可以访问你的网站!

而我们由于没有外网ip,导致别人访问不到!

而这跟Linux有着千丝万缕的关系!

Linux准确来说,是一个“统称”,或者可以认为是一个“操作系统内核”

一个完整的系统 = 操作系统内核 + 配套的应用程序

  • Linux就是内核

基于Linux黑河,搭配了不同的应用程序,诞生了不同的“操作系统”

  • 发行版

有如下这些:

【JavaEE】Linux基本使用_第1张图片

他们都内置了Linux内核,所以这类操作系统都可以说是Linux系统~

重点介绍这几个:

  1. redhat
    • 源码免费,但是服务收费(出问题了可以联系专业人员去解决)
  2. Centos
    • 完全免费,用了redhat的源码,不过官方宣布,后续发布新版本(不过也得几年后)
  3. ubuntu
    • centos和Ubuntu在使用上有95%是意义的,只有个别是存在差异的~
    • 很有必要去学习,有发展潜力

不过我们学习以centos为主~

1. 如何获取一个Linux的环境

  1. 使用虚拟机软件
    • 此乃下策,主要是不能解决发布项目的问题,bug还很多
    • 电脑上装一个程序,这个程序通过软件来模拟硬件(装了个假电脑)
    • 接下来就可以在虚拟机里按照Linux
  2. 使用windows自带的WSL功能,windows subsystem linux
    • 此乃中策,还是解决不了发布项目的问题
    • windows内部集成了Linux的内核!
  3. 租一个云服务器
    • 此乃上策
    • 大的厂商,有很多的服务器,这些机器闲置了,所以他们就将多余的机器,租出去,供一些中小企业使用~
    • 人家机器的各种环境都配置好的,有专业人员维护~
    • 最重要的是,有一个外网ip!

云服务器,贵不贵?

  • 对于学生,有很大的优惠!甚至1折!

  • 有几个选择:腾讯云、华为云、阿里云…

  • 差不多平均10块/月

你可以注册个阿里云,免费送3个月的云服务器

  • 之后再考虑付费的就行了~

具体的我不说,大概就是

  1. 搜索阿里云云服务器
  2. 注册,免费试用
  3. 选择7开头版本的Centos服务器
  4. 重置密码

在这里插入图片描述

  • 这样的配置对于我们的需求已经够用了!

现在我们有了三个信息:

  1. 服务器的ip
  2. 服务器的用户名(固定为root)
  3. 服务器的密码(重置后的)

2. 终端软件来远程登录

我们讲的是老牌终端工具:XShell

  • 我们选择不收费的版本即可~
  • 去官网下载最新版本即可~

在一开始,我们一个会话都没有,所以要建立一个

【JavaEE】Linux基本使用_第2张图片

【JavaEE】Linux基本使用_第3张图片

【JavaEE】Linux基本使用_第4张图片

  • 主机填写刚才的公网ip!

【JavaEE】Linux基本使用_第5张图片

  • 用户名是刚才的用户名
  • 密码是刚才的密码
    【JavaEE】Linux基本使用_第6张图片
  • 成功,双击进入

【JavaEE】Linux基本使用_第7张图片

  • 这样就算成功了~

【JavaEE】Linux基本使用_第8张图片

  • 通过这两个可以去设置一些个性化的东西~

工具的选项的查看里,可以设置透明度:

【JavaEE】Linux基本使用_第9张图片

【JavaEE】Linux基本使用_第10张图片

  • 还可以全屏显示

【JavaEE】Linux基本使用_第11张图片

3. Linux基本使用

【JavaEE】Linux基本使用_第12张图片

  • 为了方便,我关闭了透明的和进入简单模式
    【JavaEE】Linux基本使用_第13张图片

退出的话,上方右键取消即可

【JavaEE】Linux基本使用_第14张图片

3.1 命令提示符

快捷键ctrl + L 可以清空屏幕剩下最后一条(当然向上滚动可以看到之前的内容)

  • Ctrl + shift + L则是清空全部

【JavaEE】Linux基本使用_第15张图片

  • 这就是命令提示符

【JavaEE】Linux基本使用_第16张图片

【JavaEE】Linux基本使用_第17张图片
【JavaEE】Linux基本使用_第18张图片

  • 简单了解即可

可能命令行的操作不是很好上手,Linux也有对应的图形库

  • 但是这个图形库很老,相当于十年前的windows页面,难以忍受
  • bug还很多
  • 不方便进行重复的文件操作
  • Linux带宽占用第,系统资源占用低,没必要浪费在图形库上

命令行则很便捷的去操作,甚至适用一些脚本~

  • 在后续学习,体现明显!

接下来,我们开始学习Linux最常见的命令~

  • 我们不会很专业的去学习Linux,因为Linux本身就是一个很大的科目~

其中相当一部分命令都是跟文件和目录相关的操作

3.2 ls

在Linux系统中,"ls"是"list"的缩写,表示列出目录中的内容。因此,“ls"的全称是"list”。

就是列出当前目录/指定目录中都有哪些文件~

跟windows图形化对应的就是,打开目录,映入眼帘文件/目录列表
【JavaEE】Linux基本使用_第19张图片

  • 在Linux的学习中,可以适当的联想到图形化界面,“想象一下”,在脑中会更加清晰~
  • 在脑中去联想就是最好的图形化了~
    【JavaEE】Linux基本使用_第20张图片

看似啥都没有,但是要记住:“没有现象就是最好的现象”

  • 因为出问题,肯定返回一大堆东西给你
  • 因为你的Linux设备刚租的,所以很干净,啥也没有~

没有调配色方案的话

  • 蓝色的是目录
  • 白色的是普通文件
  • 红色的是特殊文件

但是这不是绝对的,之后遇到我们各自对应好就行~

ls 后接目录,可以查看指定的目录的列表

在这里插入图片描述

/ 表示Linux的“根目录”,对标windows中的“此电脑”

云服务器上任何一个文件,都从属于 /目录~

ls /root:

在这里插入图片描述

  • 效果和直接敲 ls 一样的

因为root用户的home目录就是/root,所以我们默认所在的home目录就是/root,也就是~

在这里插入图片描述

ls -l:

  • 以列表的形式排列
  • 区别于不加的,就是排列是纵向的,而不是横向的

【JavaEE】Linux基本使用_第21张图片

类似于,windows中图形化的平铺与列表

【JavaEE】Linux基本使用_第22张图片

【JavaEE】Linux基本使用_第23张图片

【JavaEE】Linux基本使用_第24张图片

  • 这个操作可以用 ll 代替

【JavaEE】Linux基本使用_第25张图片

除了-l,Linux还提供了一些其他的选项:

  • -a 列出目录下的所有文件,包括以.开头的隐含文件。
  • -d 将目录象文件一样显示,而不是显示其下的文件。如: Is -d指定目录
  • -k 以k字节的形式表示文件的大小。Is -alk指定文件
  • -l 列出文件的详细信息。
  • -r 对目录反向排序。
  • -t 以时间排序。
  • -R 列出所有子目录下的文件。(递归)

这些选项,也叫做“命令行参数”

  • 参数与参数之间吗,需要至少用一个空格来分割
  • 选项在搭配不同命令时也有不同含义~

3.3 cd

在Linux中,"cd"是"Change Directory"的缩写。

意思就是,切换目录

  • 语法为:cd xxx,这样就会进入对应的目录里

注意:

  1. 目录可以是绝对路径也可以是相对路径
  2. 如果既不是绝对路径,又不存在于当前目录下的目录,就会出错
  1. / 为根目录,并不是当前目录
  2. ./ 为当前目录,经常省略
  3. ../为上级目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述

我们常常进入一个目录后,ll 一下看看有什么,再决定接下来进入哪里

  • 就相当于我们图形化的操作(适度联想一下)

【JavaEE】Linux基本使用_第26张图片

进入etc然后ll:

【JavaEE】Linux基本使用_第27张图片

列出了很多内容,现在提交教一个方法

  • ll | grep yum
    • 这样可以筛选出含yum的行
    • 后续讲解~

【JavaEE】Linux基本使用_第28张图片

进入yum后ll:

【JavaEE】Linux基本使用_第29张图片

验证绝对路径:

  • 给一个小技巧:按tab可以自动补全,可以补全目录或者文件
    • 如果tab后符合的东西比较多,会提示你需不需要罗列~

【JavaEE】Linux基本使用_第30张图片

后面加/代表后续还有目录可以加入

进入bin目录:
【JavaEE】Linux基本使用_第31张图片

  • 有很多可执行程序,其实就是咱们使用的Linux命令!

cd后面不添加任何路径:回到home目录~

【JavaEE】Linux基本使用_第32张图片

cd 和 ls 可以说是最常见的linux的两个命令

3.4 pwd

"pwd"在Linux中是"Print Working Directory"的缩写。该命令用于在命令行界面中显示当前工作目录的完整路径。

就是防止你迷路的,我们cd很多次后,可能会很混乱,我们就可以通过pwd,查看我们“现在在哪”,即完整路径

对应到windows中图形化的这个:

【JavaEE】Linux基本使用_第33张图片

【JavaEE】Linux基本使用_第34张图片

3.5 touch

这个命令的用途是创建一个空的文件

在这里插入图片描述

  • 没提示就是成功:“no news is good news”,“没消息就是最好的消息”

【JavaEE】Linux基本使用_第35张图片

  • 大小是0,所以是空文件

如果原本这个文件名就存在,并不会改变其内容,而只是改变文件的创建时间为现在

3.6 cat

在Linux中,“cat"的全称是"concatenate”,而不是"Concatenate"。"Cat"是一个用于连接文件内容并输出到标准输出的命令工具。

意思就是读文件
【JavaEE】Linux基本使用_第36张图片

  • 没有任何输出,代表这是一个空的文件~

我们找一个不空的文件来演示:

【JavaEE】Linux基本使用_第37张图片

针对短小的文件,这个使用cat就不太好

3.7 man

查看用户手册的命令

"man"在Linux中是"manual"的缩写。"man"命令是一个用于查看系统或命令的在线帮助文档的命令。使用"man"命令可以获取关于特定命令、工具或系统函数的详细说明和用法。

输入man cat后:

【JavaEE】Linux基本使用_第38张图片

按q即退出~

man ls …都可以查看对应的手册~

【JavaEE】Linux基本使用_第39张图片

通过上下键滚动哦,而不是鼠标~

3.8 echo

"echo"在Linux中并没有具体的全称,它只是一个简单的命令行工具。"echo"命令用于在终端中打印出给定的字符串或变量的值。

意思就是写文件

  • 默认情况下,echo后接字符串,仅仅是回显到命令行~

【JavaEE】Linux基本使用_第40张图片

如何写文件呢?

echo string > filename

  • 以这样的格式

【JavaEE】Linux基本使用_第41张图片

>可以认为是“重定向”,字符串原本回显到命令行,现在重定向到test.txt

但是每次都会将之前的内容清空

【JavaEE】Linux基本使用_第42张图片

对于编辑的需求复杂,用echo和cat来操作很复杂~

3.9 vim

“vim"在Linux中的全称是"Vi IMproved”。"vim"是一款强大而流行的文本编辑器,它是原始的Unix编辑器"vi"的增强版。"vim"提供了许多增强功能和命令,以便更高效地进行文本编辑和编程工作。

是Linux上自带的文本编辑器,相当于windows的记事本

  • vim功能更强,上手也更难

我们只需要掌握这三个~

  1. 打开文件
  2. 编辑文件
  3. 保存退出

3.9.1 打开文件

vim filename

  • 或者后接文件的路径

【JavaEE】Linux基本使用_第43张图片

3.9.2 编辑文件

vim为了追求编辑效率,引入大量快捷键~

  • 导致我们默认情况下,键盘上的按键,都是快捷键
  • 此时,键盘按键都有特殊的含义,不再是单纯的输入文本~

vim中的模式(mode)

  • 默认情况下,vim处于normal mode(普通模式)

我们要进入编辑文本,就得进入insert morde(插入模式)

  • 此时的键盘按键才能输入文本

按 i 进入insert mode:

【JavaEE】Linux基本使用_第44张图片

输入文本:

【JavaEE】Linux基本使用_第45张图片

  • 右侧数字对应的是字母 + 回车,输入数字要在26位键盘上面的数字按钮

【JavaEE】Linux基本使用_第46张图片

复制粘贴在linux不是Ctrl c 和 Ctrl v,因为这两个快捷键有其他的含义

复制为:Ctrl insert

粘贴为:Shift insert

【JavaEE】Linux基本使用_第47张图片

现在,vim的基本行为跟记事本一致

3.9.3 保存退出

记事本就是,ctrl s然后点叉

千万别太习惯地去按ctrl s

  • ctrl s 是xshell的功能:冻结画面(但是期间输入的东西依旧有效)
  • 解冻:Ctrl q
  1. 回到普通模式

按esc回到普通模式

【JavaEE】Linux基本使用_第48张图片

  • 左下角insert消失代表回到普通模式
  • 多按几下没有副作用~
  1. 输入 :wq 再按回车
    • 先冒号,再w,再q!

【JavaEE】Linux基本使用_第49张图片

  • 接下来的操作就是vim命令

“wq"代表"write and quit”

  • 可以:w 后 :q,就是不能先q后w~

在这里插入图片描述

  • qw的后果

在这里插入图片描述

  • 退出成功~

其他的十几种模式,就不进行讲解了~

  • 我们只需要掌握最基本的就行了~

cat test.txt 去检查一下:

在这里插入图片描述

3.9.4 vimtutor

  • 这个就是vim相关的教程了,感兴趣的可以去学习
  • 命令行输入vimtutor即可~
  • :wq退出即可~
    【JavaEE】Linux基本使用_第50张图片

3.10 mkdir

“mkdir"在Linux和其他类Unix系统中的全称是"make directory”。它是一个用于创建新目录的命令。

在这里插入图片描述

  • 这个命令不能一次创建多级目录~

【JavaEE】Linux基本使用_第51张图片

一次创建多个目录:空格分割每个目录名

【JavaEE】Linux基本使用_第52张图片

通过路径创建目录:

【JavaEE】Linux基本使用_第53张图片

3.11 rm

就是remove,删除文件/目录

我们先创建即可普通文件在一些目录里:

【JavaEE】Linux基本使用_第54张图片

  • 他会询问~
  • 如果你不想他询问,就加一个参数:“-f”,表示force强制

【JavaEE】Linux基本使用_第55张图片

删除目录的话要加 -r 为参数,代表的含义是“递归”

  • 目录是树形结构,所以需要递归删除

【JavaEE】Linux基本使用_第56张图片

【JavaEE】Linux基本使用_第57张图片

  1. 选择是否进入目录
  2. 选择是否删除文件
  3. 选择是否删除目录(不为空的目录不能删)

如果你嫌麻烦,就多加一个 -f 参数,强制删除
在这里插入图片描述

  • 与输入 -rf 或者 -fr 一样

【JavaEE】Linux基本使用_第58张图片

删除多个目录:

【JavaEE】Linux基本使用_第59张图片

在linux中是可以删除本目录和上级目录的:

在这里插入图片描述

【JavaEE】Linux基本使用_第60张图片

其实我很疑惑居然可删除本目录,并且还显示存在于aaa

并且rm删除后就是完全的删除,没有后悔的余地,也没有回收箱之类的!

因此,有时候人会小心会出现,

  1. rm -r / xxxx,就是斜杠后多了个空格,也就是分割了两个元素!认识的话就是删除多个目录,就会演变成===> rm -r / ,而/是根目录,删除它就相当于删除整个linux系统!
  2. xshell中有定义变量的机制:

【JavaEE】Linux基本使用_第61张图片

这样,如果输入rm -fr /$DIT。没错,打错了一个字,系统不认识这个变量,当做空字符串处理,那么就相当于:

  • rm -fr / !!!
  • -r还好,会问,而一般情况下我们常常搭配 -rf 去使用,这样一下子就全删了,没了商量的余地~

我就不演示了,我可不想重装系统,如果有重要的数据,那么这是一个巨大的损失!

在这里插入图片描述

删除本目录下的所有文件和目录:

【JavaEE】Linux基本使用_第62张图片

3.12 cp 与 mv

在Linux中,“cp"的全称是"复制”(Copy),“mv"的全称是"移动”(Move)或"重命名"(Rename)。

我用windows的图形化界面辅助理解:

  • 后续做这些操作有可以联想这个

cp:

  • 按住ctrl拖动

【JavaEE】Linux基本使用_第63张图片

可见,是一个复制粘贴操作

mv:

  • 直接拖动

【JavaEE】Linux基本使用_第64张图片

可见是一个剪切粘贴的操作

  • mv不仅可以移动文件/目录,还能重命名~

演示:

【JavaEE】Linux基本使用_第65张图片

cp:

  • cp A B
  • 代表A复制到B

【JavaEE】Linux基本使用_第66张图片

mv:

  • mv A B
  • 代表将A移动到B

【JavaEE】Linux基本使用_第67张图片

关于重命名:

  • cp a.txt b.txt
  • 含义为复制一份a.txt在本目录下,并命名为b.txt,由于复制不会删除原来文件,所以现在是有两个文件

【JavaEE】Linux基本使用_第68张图片

  • mv a.txt b.txt
  • 含义为移动a.txt在本目录下,并命名为b.txt,由于是剪切会删除原文件,所以现在是一个文件

【JavaEE】Linux基本使用_第69张图片

移动目录是一样的:

  • 不要尝试一些不合理的操作即可
  • 例如目录移动到文件,是不合理的

【JavaEE】Linux基本使用_第70张图片

文件移动到目录,如果后面没写文件名,就不会触发重命名~

复制目录的话还得加上 -r ~

  • 因为不像mv是“更换位置/修改路径属性”这种O(1)操作这么简单
  • cp操作就很慢

在这里插入图片描述

重命名目录的操作类似,只不过如果新目录名存在,就会触发移动/复制

边移动/复制 边重命名的操作:

【JavaEE】Linux基本使用_第71张图片

注意:

cp和mv操作也是一个危险的操作

  1. 移动/拷贝到某目录下,重命名后/没有重命名,如果重名文件,是直接覆盖的
  2. 移动/拷贝到本目录下,重命名为某个名字,如果本目录本来就有该文件,原本的数据会被覆盖掉

虽然有一些Linux系统有提示,但是一些没有~

还有,父目录无法移动/复制到子目录,这是合理的,合理才怪了!

之前提到的,Linux是没有回收站的,所以rm操作会导致文件/目录永久消失。

所以我们可以建一个目录,模拟回收站,删除的目录和文件就mv到里面~

3.13 grep

在Linux中,grep的全称是"Global Regular Expression Print",它是一个强大的命令行文本搜索工具,用于在文件中查找匹配指定模式的行,并输出结果。

即“字符串匹配”

  • 可用于查找那些文件里包含指定字符串~
  1. 指定文件
    • 查看文件里有没有
  2. 指定目录
    • 知道目录下的所有文件,或者子目录的子文件,有没有
  3. 不指定,默认查找对象为当前目录(其实就是省略了 通配符,前提是加了 -r 选项)*
    • 不加 -r 选项,则代表在整个系统的所有东西中去查找字符串,会卡死,按ctrl c 终止

准备测试案例省略~

测试:

  • -n选项表示显示文件中关键字出现在第几行
  • -r / -R选项表示递归,没有这个指定不了目录
  • 多提一嘴:–include A* --exclude B
    • 代表,找A开头的目录/文件,不找B目录/文件

【JavaEE】Linux基本使用_第72张图片

【JavaEE】Linux基本使用_第73张图片

可以不带双引号,因为根据默认这个命令顺序代表这个就是个字符串

【JavaEE】Linux基本使用_第74张图片

但是如果目录内容太多,可能会卡半天,按Ctrl C终止

grep不仅仅能搜索文件中的内容,还可以跟其他命令形成联动,打一套“组合拳”

3.13.1 grep 和 ll

【JavaEE】Linux基本使用_第75张图片

  • 这就是一个应用,列出匹配字符串的文件名的文件~
  • 前面提到的~

命令:命令语句 | grep String

  • 顺序不能对换了~

我们已学的命令,只要是列出东西的,都是可以跟grep进行组合的~

3.13.2 grep 和 ps

在Linux中,ps的全称是"Process Status",它是一个常用的命令行工具,用于显示当前运行的进程信息。

【JavaEE】Linux基本使用_第76张图片

直接使用ps查看的内容非常有限,往往得搭配一些选项

例如:ps aux,列出系统的所有进程

  • 相当于开了任务管理器~

【JavaEE】Linux基本使用_第77张图片

列出很多很多,而怎么找到我们想要看的进程?

  • 搭配grep

命令:ps aux | grep String

【JavaEE】Linux基本使用_第78张图片

  • 甚至刚才的这条语句,也被找出来了~

【JavaEE】Linux基本使用_第79张图片

而这个 | 竖线,的形象说法叫做“管道”

  • 代表,左边的输出,通过管道,输入给右边(成为右边的输入),然后语句的结果就是右边的输出

【JavaEE】Linux基本使用_第80张图片

3.13.3 grep 和 netstat

在Linux中,netstat的全称是"Network Statistics",它是一个常用的命令行工具,用于显示网络连接、路由表和网络接口的详细信息。netstat可以提供有关网络连接状态、端口占用情况、IP地址等方面的信息。

用来查询网络状态,可想而知信息很多

  • 搭配grep来筛选~

直接敲netstat:

【JavaEE】Linux基本使用_第81张图片

我们要搭配选项:-anp

【JavaEE】Linux基本使用_第82张图片

如果我们要查询mysql服务器的端口号,我们就可以这样操作:

在这里插入图片描述

  • 即3306

【JavaEE】Linux基本使用_第83张图片

我们常常ps来搭配grep查看某个进程的pid,还有netstat搭配grep查看某个进程的端口号

  • 高频面试题~

文章到此结束!谢谢观看
可以叫我 小马,我可能写的不好或者有错误,但是一起加油鸭

Linux基本的使用已经讲解完毕了,接下来就是部署项目了,由于本文篇幅较长,就安排在接下来的文章!


你可能感兴趣的:(JavaEE,java-ee,linux,java)