1. Linux是什么
Linux是一个操作系统.
2. 操作系统是什么?
操作系统是一款做管理的软件, 管理计算机的硬件设备, 管理计算机的软件资源
最常用的 "桌面" 操作系统: Windows
最常用的 "服务器端" 操作系统: Linux
最常用的 "移动端" 操作系统: IOS, Android(本质上也是Linux)
更本质的说, Linux是一个 "操作系统 内核"
操作系统 = 内核 + 一组配套的应用程序
Android 是一个操作系统 => Linux内核 + 一组配套的应用程序
接下来使用的Linux系统是Centos6
在Linux内核的基础上, 有包装成很多不太一样的系统(但 内核 一样, 搭配了很多应用程序), 称为 "Linux发行版"
Centos6, Android都属于发行版. 还有一个 常见发行版: Ubuntu. (乌般图). RedHat(红帽). Deepin(国产的), Debian, Suse, Gentoo, Arch, Puppy...
发行版虽然很多, 但是都大同小异. Linux内核是一样的的,
公司中最常用的企业级的 Linux 就是 RedHat(红帽)
RedHat 是收费系统, 而且费用还比较贵. Centos 源代码和 RedHat 几乎是一样的, 同样的系统, RedHat 是收费版, Centos 是免费版
系统本身 RedHat 和 Centos 相比并没有明显的优势(没有更安全这样的说法)
但是使用 RedHat 要是出问题了, 可以给客服打电话, 客服会来帮忙解决彻底, 但是Centos并没有这一服务
就例如 数据库中的
MySQL(免费)
Orcle(收费) 银行常用 , 原因: 数据 很多很重要
3. 学习Linux的原因:
Linux 是 服务器领域中最主要使用的操作系统(没有之一)
Linux 是 嵌入式领域中最主要使用的操作系统(之一)
Linux 是 移动端领域中最主要使用的操作系统(没有之一) Android和IOS相比, android市场占有率高
不管以后从事什么开发岗位, Linux是必备技能. Java一般做服务器开发, 而用Java写的服务器程序最终还是要部署到Linux服务器上的
Linux能否用于 桌面领域PC(台式机, 笔记本)? 市场份额很少很少. 因为用Linux当桌面很痛苦, 很卡等等
4. 对于学习Java来说Linux要学到什么程度?
对于Java, 学习Linux重点是学习基本操作(Linux基本指令), 系统编程就不太需要了, 因为Java是一个跨平台的编程语言
为什么是跨平台的呢? 因为有JVM, Java虚拟机帮助给平台之间的差异进行了封装, 封装了差异之后, 就相当于 写了同样的代码, 但可以打成一个包拷贝到各种不同的系统上, 立刻就可以运行, 并且运行效果完全一样. 这是Java语言天生的优势
基本操作: 是指 Linux基本指令.
Windows主要使用图形化界面来操作. 即鼠标操作一点..
Linux 主要通过命令行(指令)来完成操作
5. 如何获取Linux环境
下策: 把 Linux 直接安装到 物理机 上(也就是自己的电脑上). 但是使用起来 BUG 很多非常不方便
中策: 使用虚拟机软件(VMWare 收费软件, Virtual BoX 免费软件) 虚拟机软件能够使用软件虚拟模拟出一组硬件设备(虚拟的电脑)
虚拟机使用起来也有很多BUG, 尤其是和网络相关的部分
虚拟机软件会和360等软件冲突
上策: 使用云服务器(腾讯云, 阿里云, 华为云.) 真实的服务器
好处: (1) BUG非常少, 几乎不用折腾, 遇到问题随时可以咨询客服.
(2) 程序部署到云服务器上, 就可以直接在外网访问
6. 如何登录Linux
用阿里云登录
XShell 终端软件(免费软件). 选home版本
打开XShell后, 要登录到Linux上需要先知道 IP 地址
用支付宝扫码登录阿里云, 然后在阿里云首界面右上角 点击 "控制台", 再在打开的界面中点击 云服务器ECS
即
点开之后, 即可看到 IP地址, 有两个IP, 一个是公网IP, 一个是私网IP
当前的互联网分为 "广域网" 和 "局域网", 公网IP是在广域网上可以访问到的, 私网IP是在局域网内部进行访问的
什么是私网IP呢? 私网IP有好几类, 比如 10开头的IP地址, 172.16~172.31开头的, 192.168开头的
该界面是172.16开头的IP地址, 是私网地址, 只能在阿里的局域网内部进行访问. 因此现在要访问云服务器, 要用外网IP地址(即公网IP)
拷贝公网IP在XShell进行登录.
在 XShell上输入 ssh 后面跟上公网IP地址 进行登录
但在XShell中不能使用 ctrl c ctrl v 来复制粘贴
用 ctrl + insert 来复制, 用 shift + insert 来粘贴
粘贴完IP地址之后, 一敲回车即可登录
初始用户名 root (root其实是Linux中的管理员用户)
初始密码 需要在阿里云后台设置一下(实例--更多--重置实例密码)
密码尽量设置的复杂一点, 否则很容易被黑客入侵
用虚拟机登录(两种方法)
1. 虚拟机里装的 Linux 可以直接使用带图形界面的(使用图形界面的登录窗口即可). 右键桌面, 打开终端, 就可以敲命令了.
推荐使用这种方式
2. 用 XShell ,要先在虚拟机内部的终端中通过 ifconfig 命令获取到当前的 ip 地址, 然后在 XShell 里面使用 ssh 的方式登录.
但这种方式失败概率较大, 因为虚拟机的网络组件存在bug, 网络可能不通
7. Linux基本指令
好处:
1. 使用指令操作服务器, 网络传输的带宽需求很小
2. 使用指令能够更方便的使用脚本的方式完成一些重复的操作
1. ls 表示"查看当前目录中的所有文件和目录"
就例如打开 我的电脑 D盘下面有很多文件和目录, 跟这个功能是一样的的
ls - l 可以更详细的查看文件/目录信息 ( ll 是 ls -l 的缩写)
ls - l 的结果:
d 表示当前是一个目录
l 表示当前是一个链接文件(相当于Windows上的快捷方式)
- 表示普通文件
ls -l / 查看根目录
(在linux上 / 叫做linux的根目录)
操作系统上的目录结构是一个树形结构(根目录就相当于树形结构上的根结点)
2. cd 切换当前目录 (cd 是 Linux 最常使用的命令之一)
[root@aliyun /] 方括号中的 / 表示当前目录是 根目录
[root@aliyun ~] 方括号中的 ~ 表示当前目录是用户的 home 目录
(home目录就是当前用户登录的时候默认进入的目录, 每个用户都有一个自己的home目录)
例1: 本来在home目录, 要切换到根目录 输入 cd / 即来到了根目录
要切换回去 即输入 cd ~
通过 cd 命令可以切换到任意想去的目录
例2: cd .. 切换到当前目录的上级目录
.. "两个点" 表示当前目录的上级目录(当前节点的父节点)
. "一个点" 表示当前目录(可以省略)
例3: cd ../../../.. 代表切换到当前目录的上级目录, 再上级目录, 再再上级目录,再再再上级目录
3. pwd 查看当前目录完整路径
如果你是 root 用户, 那么 home 目录就在 /root
/root/project/java_oj 绝对路径(斜杠 / 开头的叫做 "绝对路径")
../test_mysql/ 相对路径(点点 .. 开头的叫做 "相对路径")
补充说明: 敲指令的技巧.
(1). 使用 tab 补全命令, 敲指令的时候不需要把每个字母都敲出来
敲一次能够尝试补全内容, 快速敲两次, 能够提示出可能的所有选项
(2). 使用 ctrl + l 清理屏幕
(3). 使用 ctrl + c 取消当前敲了一半的命令
日常操作尽量在自己的 home 目录中完成, 不要在 / 里面操作, 尤其不敢删除 / 目录里面的内容
4. touch 创建一个空文件.
touch 创建一个空文件. 然后回车, 如果没有任何提示, 就代表创建成功了
5. cat 读取文件内容
cat 和后面的文件名之间必须带个空格.
不仅 cat 命令如此, 所有命令都是如此
6. echo 命令 用来写文件
echo 写文件, 默认是直接写到显示器上. 例如在命令行 输入 echo hehe 下一行就会显示 hehe
echo "不要吃野味" > test.txt 表示在test.txt文件内写入 "不要吃野味"
大于号 > 表示 "重定向"
重定向: 相当于 "呼叫转移"
echo 默认是输出到显示器上. 通过 > 就重定向到指定文件中
7. rm 表示"删除文件"
rm 文件名
例如: rm test.txt
输入这个命令后, 可能会有提示, 如果有提示了的话, 通过敲y来确认删除
删除文件是非常危险的操作. Linux上没有回收站. 一旦敲下 rm 就真的被删除了, 使用常规手段无法恢复.(专业特殊手段能,但只能恢复一小部分)
一般系统删除文件的时候只是把这个文件标记成 "不可用" , 数据可能还残留着
如何才能彻底的删除文件, 永远也找不回来? 物理删除(销毁硬盘) 有专门的"硬盘粉碎机"
对于程序员来说, 代码是特别重要的 .通过 git 这个工具能保证代码不丢失
8. mkdir 创建目录
例1: mkdir testdir 如果什么都没提示, 就代表创建成功
Linux 中有个哲学, no news is good news 没消息就是最好的消息
例2: mkdir aaa 创建 aaa 这个目录
touch bbb.txt 创建 bbb 这个文件
例3: mkdir 111/222/333/444 -p 创建一组连续嵌套的目录( 111目录下有222, 222目录下有333, 333目录下有444, 444下什么都没有) 但是要注意 , 创建多级目录的时候, 后面要跟上 -p
9. rm -r 删除目录
rm 也能删除目录. 但是对于目录, 不能直接删除, 删除文件可以直接删除, 但是删除目录需要递归式的删除
目录中可能包含其他的文件, 删除目录的时候也需要把内部的文件也删除掉
目录中可能也包含其他目录, 就得递归的把里面的子目录先删除掉才可以
因此在rm后面加上 -r 表示 删除目录
例: rm -r 111/ 表示删除111这个目录
输入这行命令后, 会一行一行的提示 是否要进入111目录( rm: descend into directory '111/'? ), 在这行输入 y 确认后, 命令行会继续提示, 是否要进入111目录下的222这个目录, 输入y确认, 直到提示 remove directory '111/222/333/444" 表示 是否删除 444这个目录? 最后一行变成删除了. 因为 444里没有内容, 是一个空目录
空目录可以直接删除, 但是目录里面有内容是无法直接删除的
然后接下来会继续提示 是否要删除333, 输入y确认后. 会提示 是否要删除222. 输入y确认后, 会继续提示是否要删除111, 再输入y, 最后 删除完成
这个删除的过程类似于 树 的遍历 "后序遍历" (先访问完子节点, 再访问根结点)
10. rm -rf 可以递归的删除一个目录中所有文件
rm 是一个非常危险的操作, 一旦操作了之后内容是无法通过常规手段恢复的
rm -rf / 这个是最危险的操作 , 因为斜杠 / 代表根目录, 就代表 删除了所有一切的文件
11. man 查看帮助信息手册
看帮助信息时, 用键盘上的 上下箭头 进行翻页
退出 man 手册 底下会有个提示 按 q 就会退出这个帮助手册
英文版的man手册看不懂, 可以百度一下中文的man手册, 但是平时最好看英文的, 因为未来的职业生涯 英文是很重要的