努力经营当下,直至未来明朗!
普通小孩也要热爱生活!
一、Linux概述
- Linux这个系统是现在全世界第一大操作系统:
① 服务器领域:绝大多数都是Linux(Windows的服务器也有,但是非常少)
② 嵌入式设备:路由器、冰箱、洗衣机、空调等大多都是linux
③ 移动端:Android系统本质上也是linux
- 程序员确实是和linux打交道更多的
(桌面PC领域,Windows是绝对的王者)
-
我们需要掌握的是通过命令行来操作Linux。
-
Linux是1991年Linus发布的操作系统,而Linus也是Git的作者。(了解)
-
Linux重要的概念:发行版。
① 当前所谈到的Linux,其实不是完整的操作系统,而是操作系统内核。(内核就是系统的最核心功能)
② 完整的操作系统=内核+配套的应用程序
③ Linux内核是开源的,就有很多的公司/组织基于这个内核搭配了不同的应用程序,于是就构成了不同的“发行版”。
④ 所以:Linux是一个系统家族,这个家族的成员很多。其中Android就是成员之一。
⑤ 常见Linux发行版,如redhat、ubuntu、centos等。企业中最常用的是redhat,但是redhat开源收费;所以我们目前使用centos来代替,centos就是社区版的redhat。 -
咱们暂时先使用的是centos7(这是一个比较老的版本了)
-
为啥要使用Linux?
① 要部署程序到云服务器上,云服务器上才有外网IP,才能被访问,而云服务器系统主要都是Linux
② 工作中也经常会使用
二、 云服务器安装Linux环境 + Xshell登录
- 安装Linux环境方法:
1)使用虚拟机:vmware
虚拟机是一个软件,通过软件代码来模拟硬件,即模拟构造出一个“虚拟的计算机”,然后就可以在上面安装Linux系统。 (并不推荐)
2)使用Windows 2019年左右引入的功能WSL:
在Windows内核里继承了一个Linux的内核(本质上也还是虚拟机的方案)
(不推荐,这个WSL和原生的Linux相比差异是比较大的)
3)直接把Linux装在物理机上(不用Windows)
(特别不推荐!!)
4)云服务: 相当于你租了个电脑,这个电脑你看不见摸不着,它存在于云服务器厂商的机房中,但是你可以通过网络来远程访问。
(最推荐的方案!!)
理由:
①简单;
②一旦出问题需要重装系统也很好处理;
③遇到问题可以咨询客服解决;
④外网IP!!这是部署程序最重要的环节!
- 准备工作:
① 买云服务器:阿里云、腾讯云、华为云…(挑最便宜的买就ok)
② 官网下载xshell(Xshell):点击免费下载页面 -》姓名随便写就行 -》 会有邮件发送到邮箱上
③ 然后根据邮件链接进行下载安装就行
① 通过网络访问是需要使用“终端工具”的,终端工具很多,但是我们目前就使用xshell
② Xshell是一个终端,不是Linux,只是用来网络访问Linux的工具
-
使用终端(xshell)登录到云服务器上,需要知道三个信息:
① 云服务器的外网IP
② 服务器的用户名
③ 服务器的密码 -
使用xshell登录云服务器操作方法:
① 打开服务器后台网站 =》 登录 =》 控制台 =》 然后根据自己所购买的服务器类型进行选择 =》 然后就可以看到外网IP,后面使用该服务器都是都是使用该外网IP(其实也是会发信息通知的)
② 用户名(固定):root
③ 首次使用的时候是需要在后台设置初始密码的:选择重置密码 =》 建议云服务器的密码设置复杂一些(可能会有黑客尝试破解你的密码,使用你的服务器挖坑or种点勒索病毒之类的)
-
打开Xshell终端 =》 点击“新建” =》 设置好“名称”、“主机” =》 连接:首次登录需要配置,后面再登录直接点现成的会话即可(直接双击就行) =》 连接会话的时候会提示输入用户名和密码(用户名root,密码是后台自己设置的密码) =》 可以勾选记住用户名和密码
-
登录成功后,看到的Linux是命令行界面(不是像Windows一样的图形化界面),Linux也是有图形化界面的,但是在服务器上基本不会安装。
-
使用命令行,其实相比于图形化界面是有很大优势的:
① 生产力工具,没那么容易上手,但是一旦熟练了之后,其操作效率是比图形化界面高很多的;
② 在网络远程操作过程中,传输命令的成本要比传输图形低很多;
③ 命令行特别适合进行“自动化”,把一些重复性的操作批量的自动完成。 -
学习Linux主要就是学习Linux的命令行
-
连上Linux之后需要把Xshell稍微配置下,主要就是改字体,Xshell的默认字体非常小,伤眼睛,可以稍微改大点(根据自己喜好修改就行):
-
[root@…]命令提示符:提示我们可以在这儿输入命令
① root:用户名。Linux天然是支持多个用户的,可以创建新用户,但是没必要。
② @后面的内容:主机名,是买服务器的时候自动生成的,可以手动更改,但是没必要。
③ ~ 所在位置 表示当前处于哪个目录(工作目录)中,~本身表示当前用户的“home”目录。
① 相对路径的基准就是 工作目录
② 这里的“home”目录就相当于Windows的
④ # 表示当前用户是管理员, $ 表示当前用户是普通用户
(注:sudo su - 是从普通用户切到管理员)
- Linux上的指令是很多的,我们只需要掌握其中常用的十几个就行。
Linux的指令没有任何的难度,只是一个熟练度的问题。
(但是该熟练度会影响到未来的升职加薪)
补充:alt + 回车 =》 切换全屏
三、Linux中常用指令介绍
1. ls
- ls: 也就是list,列出当前目录下都有啥。
- 如果输入ls啥都没有,那可以在ls后面跟上个具体的目录,比如跟上个/(Linux中/表示根目录)
【中间的空格可以有多个,但是不能没有!!】
- ls -l / :以列表的形式展示根目录下的内容
其中:深蓝色是的文件夹(目录),白色的是普通文件,浅蓝色的是链接文件(快捷方式)
-
ls -l 是一个非常高频的操作,还可以使用缩写形式ll
-
/ 根目录
Linux文件目录结构和Windows也是类似的,也是一个树形结构(N叉树)。
① Windows中最上层的根节点是“此电脑”
② Linux中没有盘符这样的概念,即没有C盘D盘这样子,所有的目录都是直接放在根目录/底下的。
最前面的一串表示文件的权限,权限管理是由“管理员”负责的;而公司里服务器的管理员是运维工程师。
- 【补充】
① 语法: ls [选项] [目录或文件]
② 常用选项:
- -a 列出目录下的所有文件,包括以 . 开头的隐含文件。
- -d 将目录像文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
- -k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
- -l 列出文件的详细信息。
- -r 对目录反向排序。
- -t 以时间排序。
- -R 列出所有子目录下的文件。(递归)
-
【小结ls】
① ls 直接敲可以查看当前目录中的内容
② ls后面跟上具体的路径可以查看指定目录的内容
③ ls -l 可以以列表形式查看,可以缩写为ll -
【补充】
total 意思是:列表中所有文件的磁盘空间占用总和,也就是资源占用总和,它的统计单位是kb。(注意:linux下一切皆文件的概念)
详细参考:total含义
2. pwd 查看当前路径对应的绝对路径
-
效果就跟Windows中的效果差不多
-
如下表示当前所在位置是/根目录下的root目录中。
3. cd 切换当前的工作目录
- cd,其实也就是change directory
cd的效果其实就是鼠标在Windows上双击某个目录进去这个动作
- 如:cd / 就是切换到根目录
补充:在xshell中,按下 ctrl+l 就可以实现清屏
- cd 在切换目录的时候,可以跟上绝对路径(以/开头的就是绝对路径),也可以跟上相对路径(以. or . . 开头的就是相对路径, .可以省略)
.表示当前目录, . . 表示当前目录的上级目录
- 之所以说使用命令更快,其实就是要善于使用补全功能:
① tab键补全:
输入一个命令 or 输入一个目录,不必敲完整,只需要敲前几个部分,然后按tab键就可以触发补全。如果匹配结果只有一个就会立即补全,如果匹配结果有多个,按两下tab就会把可能的结果都列出来。
② ctrl+c 重新输入:
如果命令或者目录敲错了, 可以 ctrl + c 取消当前的命令。
注:如果不是管理员登录,home目录~ 就不是root
4. touch:创建一个空文件
如果是touch一个已经存在的文件,对文件的内容不会有任何的影响。(即:不会清空文件的内容)
5. cat: 显示文件内容到控制台上
(没有任何显示就说明是空文件)
6. echo: 借助echo可以把想要的内容写到文件中
-
echo本来是一个回显/打印 操作
-
但是可以借助 > 这个重定向操作把显示到控制台的内容写到文件中
-
使用cat 和 echo 确实能够读写文件,但是其实非常不好用:
① cat 将所有的文件内容直接输出
② echo 相当于把文件清空后重新写入
我们更常使用的是针对文件进行“编辑”,后面介绍vim
- 【小结】
① touch 创建空文件(已存在不覆盖)
② cat读取文件内容
③ echo 显示内容到控制台上,搭配 > 写文件
7. mkdir:创建目录
-
mkdir:即make directory,创建目录
-
可以同时创建多个目录,使用空格进行分割
-
mkdir 后面跟上目录名就可以创建出目录了,进一步就可以使用cd进行目录切换了。
-
如果目录创建层次比较多,tree 命令就可以树形的展示当前目录结构(tree 后面加路径,如 tree . 就是针对当前目录展示树形结构)
① 此时可能会出现以下问题:
② 原因:tree这个命令,有的可能是自带的,有的是不自带的。
③ 解决方法:没有自带就手动安装一下:yum install tree
① yum 包管理器,就类似于maven中央仓库一样
② 安装操作需要管理员权限,也就是在root用户下安装
(中间跳出的输入选择 要选择y!)
(y:yes, N:no, d:download,只下载不安装)
(安装成功!)
-
如果输入错误想要删除,按下 ctrl + backspace<-(回退键)
-
【补充】
① 想要提前终止命令,按下 ctrl+C。Linux中ctrl+c不是复制,是终止运行。
② 如果想要复制粘贴:(先选中)ctrl + insert 复制,粘贴:shift + insert(Windows也是支持这种方式复制粘贴的)
8. rm:删除文件 or 目录
- rm:remove,删除文件or目录
- 删除文件: rm 文件名
(输入y就是确认删除)
(如果加上-f就表示强制删除,即force)
-
rm后面的名字也得是一个绝对路径or相对路径。直接写文件名就相当于省略了./当前目录。
-
补充:
① 可以通过上下键找到之前的命令!
② 可以通过history命令查看命令的历史记录
-
删除目录: 需要指定-r选项(r 表示递归)
① 目录里面可能包含文件,也可能包含子目录,子目录中还可能有孙子目录…
② 删除目录,并不是只删除中一个,而是把下面所有的子节点都删除,也就是递归地将子目录中的内容全删除
③ 可以直接加上 -f 进行强制删除,也就是不必进行确认。
如: rm -r -f a 或者 rm -rf a
-
有的是默认不带提示的,这和云服务器厂商的出厂设置有关系。如果想要提示,就可以加上 -i 进行提示,如 rm -i a
-
【rm 是一个危险操作,因为Linux是没有“回收站”这个概念的。】
① 尤其是针对一些特殊的目录可不能随便乱删。
如 rm -rf / 这个操作是非常危险的!!!
/ 是整个Linux系统的顶级目录,其他所有的目录和文件都在/下面,一旦删除就寄了!
② 如: rm -rf / root/test.txt
(rm是支持一次删除多个文件的,一旦在中间多了一个空格,此时就会认为删除的是两个文件,一个是/,另一个是相对路径下root中的test.txt文件。)
9. mv:move移动
-
mv:相当于 剪切+粘贴
-
语法:mv [想要移动的文件] [目标文件]
-
移动操作还可以一边移动一边改名:
mv [想要移动的文件] [目标文件/新的名字]
-
mv 还可以只改名不移动:
-
mv中目录可以直接移动:
-
【小结】
① mv 既可以移动目录/文件,又可以针对文件/目录进行重命名!
② 移动的目标的名字如果不存在就是重命名,如果目标存在且是个目录就移动到该目录下。
③ mv中目录是可以直接移动的。
10. cp:copy复制
-
和mv类似,也是有两个参数:要复制谁和复制到哪里去;当然也可以一边复制一边改名。
-
cp如果是拷贝目录,就需要加上-r选项来递归进行拷贝(这和mv是不同的,mv可以直接操作目录)
语法: cp [源目录] [目的目录] -r
-
【小结】
① mv 和 cp都是带有两个参数的(都是路径)。第一个参数是“源”,第二个参数是“目标”
② 都支持一边操作一边重命名,mv 还可以只重命名不移动
③ cp目录的时候记得加上 -r选项即可
以上十个命令(ls /pwd/ cd/ touch/ cat / echo/ mkdir / rm /mv /cp)是日常开发中最常用的是个命令,务必要熟练掌握 !
四、 其他重要命令
1. vim文本编辑器
-
vim文本编辑器:就是Linux上的记事本,可以针对文件进行编辑
-
vim使用起来非常别扭(当然如果熟练掌握,确实能够大大提高输入速度),引入了很多快捷键。
-
只介绍简单的三个操作:
1)如何打开文件:
一般是vim 文件名
(绝对路径or相对路径都ok,存不存在都是ok的),如果只是输入vim就是打开一个空文件。
2)如何编辑文件
① 默认情况下很多内容是输入不了的,此时按下的键盘按键都是“快捷键”,不是真正的输入。(普通模式)
② 要想真的输入就需要进入“插入模式(insert mode)”,默认情况下是“普通模式(normal mode)”。
③ 有很多方式可以进入“插入模式”,最简单的一种就是按i来进行插入模式,插入到光标之前。
(已经在插入模式下了)
④ 从“插入模式”回到“普通模式”:按下 Esc。
补充:在“普通模式”下每个按键都有特殊的含义:
①按下数字,意思就是接下来的操作重复N次
②按下a:表示进入到插入模式并插入到光标之后
③按下b:表示光标往前移动一个单词
④按下c:表示删除光标内容同时进入插入模式
⑤按下d:表示删除一个对象
⑥按下e:表示光标往后移动一个单词
⑦按下f:表示光标跳转到这一行的指定列
…
3)如何保存退出
① 先按Esc回到普通模式下(任意模式回到普通模式都是按Esc),然后按下:wq进行保存并退出。
输入:之后,光标来到了最底行,也就是进入底行模式last-line mode。底行模式下输入的内容是一些控制命令
② ( :q! 强制退出,不保存退出)
③ 如果是直接vim进入了新文件, 会发现当:wq时因为no file name并不能成功保存退出,此时可以直接 :q! 进行强制退出,也可以 :w 文件名
,然后再:wq保存退出。
-
至少要掌握上述三个操作,工作中经常会登录到Linux上查看日志文件/修改配置文件。
-
【注意】
在vim中按ctrl+z并不是退出!!按 ctr+z 其实vim并没有退出,只是放到后台了而已,随时按fg就能切换回来!!
(在ctrl+z状态下,再次使用vim打开文件可能会有问题!)
2.grep文本查询
-
grep文本查询:查询一个文件中是否包含匹配的字符串,将匹配的行获取到。
-
语法:grep [字符串] [文件]
-
grep的效果其实就是进行字符串匹配,把文件内容进行逐行匹配,如果该行包含要查询的字符串就将整个行获取到。
3. ps显示进程
- ps: process show,用于显示进程
- ps 其实就相当于任务管理器
① 直接输入ps,显示的只是和当前终端相关的进程
② 需要使用 ps aux
就可以看到更完整的进程列表了
③ 如果只想查看某些进程,也就是进行筛选操作: ps aux | grep xx
其中 | 是管道操作,把前一个进程的输出作为后一个进程的输入。
4.netstat: 查看网络状态。
-
netstat:查看网络状态。尤其是可以用来查看某个进程绑定的端口如何,或者是查看某个端口是否被某个进程绑定。
①netstat -anp
:查看网络连接状态
② 只想关注某个具体程序 or 端口 (就进行筛选)
-
比如:启动一个服务器,该服务器是启动成功or失败?
① 通过ps aux 看这个服务器的进程是否存在
② 通过 netstat -anp 查看服务器的端口号是否正确绑定
五、用户权限(了解,没时间跳过)
1. 用户操作
- Linux下有两种用户:超级用户(root)、普通用户。
① 超级用户:可以再linux系统下做任何事情,不受限制
② 普通用户:在linux下做有限的事情。
- 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
- 我们的服务器买好了, 默认是 root 用户。 但是 root 用户权力比较大, 一旦使用不当可能会造成严重后果
(例如 rm -rf /)。因此我们真正在公司中不会直接使用 root 用户来操作服务器。 - 创建用户
命令:useradd [用户名]
示例:useradd dream - 配置密码
命令:passwd [用户名]
示例:passwd dream
注意:输入密码的时候控制台是不会有提示的,但是实际上已经输入进去了。 - 切换用户
命令:su [用户名]
示例:要从root用户切换到普通用户dream,则使用 su dream。
要从普通用户切换到root用户:
① 使用 su root(root可以省略),此时系统会提示输入root用户的 口令。
② 或者是:**sudo su -**切换到超级用户
2. 三种角色
访问一个文件的人可能分成三种类别.
① 文件和文件目录的所有者:u—User
② 文件和文件目录的所有者所在的组的用户:g—Group
③ 其它用户:o—Others
3. 文件类型和访问权限
-
命令
ll
显示了一个文件的详细信息:
-
文件类型:
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
- 基本权限:
① 读(r/4):Read。对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
② 写(w/2):Write。对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
③ 执行(x/1):execute。对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
④ “-” 表示不具有该项权限
4. 修改文件权限
- 功能:设置文件的访问权限
- 格式:
chmod [参数] 权限 文件名
- 常用选项:
- R -> 递归修改目录文件的权限
- 说明:只有文件的拥有者和root才可以改变文件的权限
- chmod命令权限值的格式
① 用户表示符+ / - / =权限字符
+: 向权限范围增加权限代号所表示的权限
-: 向权限范围取消权限代号所表示的权限
=: 向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
示例:# chmod u+w /home/abc.txt
② 三位8进制数字
示例:# chmod 664 /home/abc.txt
- 类似的还有 chgrp, chown 命令,感兴趣的可以自行了解。
总结
- Linux安装(推荐使用云服务器+Xshell控制终端)
- Linux常用十个命令:ls/ pwd/ cd/ touch /cat /echo /mkdir /rm /cp /mv
- Linux其他重要命令:vim(重点)/ grep/ ps/ netstat
- 用户权限(了解)