🥰🥰🥰来都来了,不妨点个关注叭!
👉博客主页:欢迎各位大佬!👈
文章目录
- 1. Linux 是什么
- 1.1 Linux 是什么
- 1.2 关于 Linux 我们需要学什么
- 2. 需提前准备的东西
- 2.1 环境 —— 如何获取到一个 Linux 环境
- 2.2 软件 —— 使用终端软件 Xshell 进行远程登录
- 3. Linux 常见命令
- 3.1 ls 命令
- 3.2 cd 命令
- 3.3 pwd 命令
- 3.4 touch 命令
- 3.5 cat 命令
- 3.6 echo 命令
- 3.7 vim 命令
- 3.8 mkdir 命令
- 3.9 rm 命令
- 3.10 cp 命令
- 3.11 mv 命令
- 3.12 grep 命令
- 3.13 ps 命令
- 3.14 netstat 命令
- 4. Linux 常见面试题
1. Linux 是什么
1.1 Linux 是什么
【Linux】Linux 是一个操作系统,和 Windows 是同类产品
日常生活中,我们使用的电脑都是以 Windows 为主,也有 Mac,实际上,Linux 的市场份额是比 Windows 更多的,比如:
1)服务器
2)嵌入式设备
3)移动端(手机) Anroid 其实就是 Linux
【补充】操作系统简单来说,就是弄管理的软件
更准确的来说,Linux 是一个统称,可以认为是一个"操作系统内核"
有很多企业/组织,基于 Linux 内核,搭配了不同应用的程序,从而产生了不同的"操作系统",比如:ubuntu、redhat、CentOS等等(本期内容以 CentOS 为主)
1.2 关于 Linux 我们需要学什么
- 基础命令:Linux也是有图形化界面,但是在实际工作中,一般不会使用,甚至都不会安装,因为 Linux 的图形化界面使用体验,整体来说是比较槽糕的~在服务器/嵌入式设备往往都是通过命令行的方式进行操作的,使用命令行操作有着更多的优势,一是带宽占用非常低,二是系统资源占用也非常低,三是命令行适合通过脚本来实现批量的重复操作,因此,学习 Linux 常见的命令,是使用 Linux 的基础
- 部署JavaWeb项目:咱们自己写的 web 程序,只能自己在本机上访问,要想其他用户访问到,就需要部署到服务器上,服务器的操作系统,最最主流的就是 Linux。因此,我们需要学习如何将 web 程序部署到服务器上
(下期内容将具体介绍如何部署JavaWeb项目,敬请期待~)
2. 需提前准备的东西
2.1 环境 —— 如何获取到一个 Linux 环境
有以下三种方式:
- 使用虚拟机,即在你的电脑里虚拟出来一个假电脑(虚拟机软件存在很多bug,经常会出现一些各种各样奇怪的问题)
- 使用Windows自带的 WSL 功能(Linux 影响力太大,Windows 内部集成了 Linux 内核),相比于虚拟机,问题少很多,但是仍无法解决部署问题
- 买一个云服务器,云服务器有一个非常重要的优点:有外网IP!!! 后续将程序部署到云服务器上,此时程序就可以被别人访问到了~(云服务器对于学生有优惠,第一次可以白嫖三个月,本期内容使用的是阿里云服务器)
因此,尊嘟很推荐买一个云服务器~(怪好用的勒)
2.2 软件 —— 使用终端软件 Xshell 进行远程登录
Xshell 官网,点击下载,点击免费授权页面~
创建会话,名称可以任意取,主机则是服务器公网IP,连接后,需要输入用户名 root(无修改情况) 和密码
连接成功后,显示如下:
(下载安装使用还是很简单的~不过俺在Xshell连接服务器的时候,一直连不上,折腾半天,结果是校园网换成热点就好了!!!所以,如果连不上,可以看看是不是校园网的问题)
3. Linux 常见命令
学习 Linux 命令,可对比 Windows 中的一些操作,加深理解,同时,不需要去背!多加练习即可~
3.1 ls 命令
ls:list的缩写,列出当前目录/指定目录中都有哪些文件(相当于Windows中双击了某个目录,查看里面的内容)
ls
列出当前目录下有哪些文件,如下图:
其中,蓝色的字体表示的是目录,白色字体是文件
ls 具体目录
ls 后面跟一个具体的目录,即表示列出指定目录下有哪些文件
其中,ls /
"/"表示 Linux 中的根目录,与 Windows系统中"此电脑"类似,如下图:
ls /root
与 ls
的效果一致,如下:
【原因】root 用户的 home 目录就是 /root,也就是以 root 身份登录后,默认所在的目录,/root 即 root 用户的 ~ 目录
【注意】如果要查指定目录的时候,ls 后面仅用跟具体目录名称,千万不要加“/”,否则会出现以下错误:
ls-l
显示文件详细信息
【注意】Linux 系统也提供 ll
命令与 ls-l
命令一致,后续即可用 ll
上述使用了 -l,还有一些其它的选项:
-a 列出目录下所有的文件,包括以.开头的隐含文件
-d 将目录像温江一样显示,而不是显示其下的文件
-k 以k字节的形式表示文件的大小
-l 列出文件的详细信息
-r 对目录反向排序
-t 以时间排序
-R 列出所有子目录下文件(递归)
这些选项,也叫"命令行参数",参数和参数之间,需要至少一个空格来分割~
3.2 cd 命令
cd:切换当前目录(相当于在 Windows 资源管理器中,双击目录)
cd 后面需要跟上我们要切换的目录路径,可以使用绝对路径,也可以使用相对路径
(其中,绝对路径以 / 开头,相对路径以 ./ 表示当前目录或者 …/ 表示目录的上一级开头,./ 是经常省略的)
cd /
绝对路径的方式
cd ./
相对路径的方式(从当前的路径开始)
其中,./ 也可以省略,如下图:
cd ../
相对路径的方式(从当前路径的上一级开始)
例如,上述的举例,当前我们所在目录为 test1,上一级目录为 home 目录,即 /root,也是 ~ 目录,现在切换到 root 下的 java1,如下:
cd
后面什么都不加的情况下,此时就会回到 home 目录
3.3 pwd 命令
pwd
显示当前目录的完整路径
上述介绍了 cd 命令,很可能经过几次切换目录后,就不知道目前具体所在的目录了,而这个 pwd 命令就是防止我们迷路的~
3.4 touch 命令
touch 文件名
用来创建一个文件
可以看到,输入之后,并没有任何反馈的信息,有的小伙伴就会疑惑了:这到底是创建成功呀,还是失败呀!其实是创建成功了,我们可以通过上述学的 ls
命令进行查看当前目录下的文件,如下图:
从上图可以看到,创建 111.txt 文件是成功了,在 Linux 中有这么一句话,没有消息就是最好的消息(就是没错呀~)
3.5 cat 命令
cat
查看文件内容
Linux 下都有 yum.conf 文件,以这个文件为例,先切换到 etc 目录,查看其中 yum.conf 文件的内容,如下图:
【注意】cat 仅针对简单短小文件还好,如果文件很大,cat 就不是很方便了~
【补充】 man
也是 Linux 命令,查看用户手册
3.6 echo 命令
echo 内容 > 文件名
用来写文件
这里的" > ",是重定向的意思,echo 的写入方式并不是以追加的形式,而是清空文件内容再进行写入!
对"111.txt" 文件写入 hello world,这里可以看到并没有什么反馈,正如上面所说,没有消息就是最好的消息~
我们可以通过 cat 命令,查看 “111.txt” 文件内容,验证是否写入成功,由下图可以看到,写入成功!
【echo 和 cat 命令】
优点:当需要使用脚本批量处理很多操作的时候,echo 和 cat 还是很有用的~ 比如,有个服务器集群,每个服务器都有一个数据文件,这个数据文件上记录了一个信息,就可以通过写一个脚本,通过这个程序,自动登录到这些机器上,并且读取文件内容,获取到版本号
缺点:每次 echo + 重定向,会清空原来的内容,echo 和 cat 命令只是适合针对简单的文件进行操作,如果文件复杂或者编辑需求复杂,就不太合适了
如果是需要针对复杂的文件,进行复杂的编辑,如何处理呢?
这里 vim 就闪亮登场了~ vim,是 Linux 系统自带的文本编辑器,相当于 Windows 的记事本,接下来,我们一起来看看,如何使用 vim ~
3.7 vim 命令
vim 使用技巧是非常丰富的,vim 这里本期内容仅介绍最基本的三个用法:1)打开文件 2)编辑文件 3)保存退出
1) 打开文件: vim 文件名/文件路径
以上述的"111.txt"文件为例,如下图:
进来以后,我们可以看到这样一个界面:
在这里,如果想输入,敲键盘进行编辑是没有任何反应的~
因为, vim 打开文件默认是普通模式,普通模式下键盘的按键表示一些特殊功能,因此,如果需要编辑,我们需要进入插入模式,才能进入文本编辑
2)编辑文件:按下 i 键进入插入模式(其中,左下角会看到 – INSERT–) 这样就可以像记事本一样正常编辑了~
其中,在 Linux 下,复制的快捷键为:Ctrl+Insert
粘贴的快捷键是:Ctrl+Insert
比如,进行如下编辑:
3)保存退出:先按 Esc 退出,回到普通模式,再输入:wq
,再按回车
在编辑完文件后,我们发现并没有像 Windows 系统那样的"×",让我们关闭页面,同时,也没有快捷键,按 Ctrl+s 进行保存文件,在 Linux 系统中,操作如下:
- 先按 Esc 退出
- 再输入
:wq
,按下回车
可以看到,关闭了页面,通过 cat 命令,我们来看看是否保存成功,发现:保存成功!
3.8 mkdir 命令
mkdir:make directory 创建目录(与 Windows 中新建一个文件夹类似)
mkdir 目录名
创建一个目录,可以通过ls
查看,是否创建成功
mkdir -p 目录1/目录2/目录3
可以递归地创建目录,比如想要创建 aaa/bbb/ccc,如下:
可以通过 pwd
命令,查看 ccc 的路径:
3.9 rm 命令
rm:删除目录/删除文件
rm 文件名
删除某个文件
这里删除指定文件的时候,一般在我们删除的时候,Linux 都会提示我们是否确认删除,输入 y,即为确认删除,如下:
rm -r 目录名
删除某个目录
使用 rm+文件名,即可删除文件,但是如果使用这样的方式删除目录,Linux 会提示不能删除,这是一个目录,如下:
这里,删除目录,我们需要使用 rm -r + 目录名
,递归删除这个目录和该目录下的所有文件,如下:
这里可以发现,在递归删除一个目录的时候,每删除一个目录,Linux 系统都会询问是否确认删除,如果有成千上万的目录,这样一个个确认删除,那得确认到啥时候呀!
rm - rf 目录名
f 表示的是强制删除,无需确认,如下:
先递归依次创建出目录,aaa/bbb/ccc,再进行递归删除,可以看到使用 rm - rf 目录名
无需确认~
3.10 cp 命令
cp:复制文件/目录
cp 源文件 目标文件
复制文件
先创建一个"111.txt"文件,通过 cp
命令进行复制操作,通过 ls
命令查看,发现复制成功!如下:
【注意】这样的拷贝操作,有时候很危险,如果我们复制的文件已经存在的话,此时,进行复制,就会出现"覆盖"的情况,原有的文件会被新的文件替换掉!
cp -r 源目录 目标目录
复制目录
这里使用 cp
命令,复制目录,相比于复制文件,需要多加一个 -r
和上述使用 rm
一致,对于文件无需加,对于目录,需要加 -r
这里我们 a 目录中有一个 test.txt 文件,将 a 目录拷贝到 b 目录,如下:
可以看到,创建一个 a 目录,同时在 a 目录下,创建文件 test.txt 文件,将 a 目录复制 b 目录,通过 ls 命令,可以查看复制成功,同时看到 b 目录下也有 test.txt 文件
3.11 mv 命令
mv:移动或者重命名文件/目录
mv 源文件 目标文件
将源文件移动到目标文件
通过上述的栗子,我们已经有一个 b 目录,其中,里面有 test.txt 文件,现将这个 test.txt 文件移动到 c 目录下,并重新命名为 test1.txt,如下:
上述介绍的是将一个文件移动到其它目录下,如果移动的源文件和目标文件在同一个目录下,此时就相当于是给这个文件改名字,与 Windows 中重命名类似,比如将 c 目录下 test1.txt 改名字为 test2.txt,如下:
mv 源目录 目标目录
将源目录移动到目标目录
在这里,与上述的 rm
命令和 cp
命令不同,移动目录不需要加 -r
递归移动,直接移动即可,将 c 目录移动到 a 目录下,如下:
3.12 grep 命令
grep:字符串匹配
grep 字符串 文件名
快速搜索某个文件中是否包含某个特定字符串
grep 字符串 * -R
快速搜索所有文件中是否包含某个特定字符串
grep 命令不仅有搜索功能,还能搭配不同的命令进行联动,如ps
命令和netstat
命令,我们一起来看看吧~
3.13 ps 命令
ps:查看进程
ps
直接通过 ps 能够查看的内容非常有限,通常需要使用一些固定选项
ps aux
列出系统中所有的进程
ps aux | grep mysql
搭配grep
命令使用,通过这样的一个命令,我们就可以查看包含 mysql 的进程,如下:
3.14 netstat 命令
netstat:用来查询网络状态
netstat -anp
用于显示网络连接的详细情况
netstat -anp | grep java
搭配grep
命令使用,通过这样的一个命令,我们就可以查看 java 进程网络状态,如下:
4. Linux 常见面试题
- 说说你常用的 Linux 命令有哪些?
- Linux 给定进程名,如何查看进程 pid?
- Linux 给定进程名,如何查看进程的绑定端口号?
A1:第一个问题,就是回答一下自己常用的命令,以上介绍的命令即可,比如最最常用的 ls
、cd
命令等
A2:第二个问题,可以使用 ps
命令,比如想要查看 mysql 进程的 pid,使用:ps aux | grep mysql
A3:第三个问题,可以使用 netstat
命令,比如想要查看 java 进程的端口号,使用: netstat -anp | grep java
💛💛💛本期内容回顾💛💛💛
✨✨✨本期内容到此结束啦~