1.引入
我们都知道Linux作为一个操作系统而闻名,由于其稳定性,安全性和低成本,一般web项目服务器部署都会放在Linux系统上
- Linux操作系统主要分成两层,一个是系统级应用程序,例如安装好Linux系统后自带的桌面应用程序,另一个是Linux系统内核,这个系统内核的作用就是和计算机底层硬件打交道,比如通过这个内核调用计算机的cpu,内存等等
这个Linux内核作为Linux操作系统的核心,它本身是开源的,任何人都可以获取并且使用,在此基础上,再加上系统级应用程序,就成了Linux发行版,市面上的较热门的发行版,如ubuntu,centOS等等,这里是不是就理解了Linux为何有这么多的版本了?
2.Linux运行环境
一般初学者都会在虚拟机上运行Linux系统,这里来简单说说虚拟机又是个什么东西?
刚刚在上面说了,任何一个系统要想运行,都得要有调用底层硬件的内核,那么虚拟机就是通过自身电脑软件来模拟底层硬件的一个应用,然后再添加一个真实的操作系统就可以模拟一台电脑了
3.使用finalshell
我们在使用Linux系统命令行时,用centOS自带的页面,略显不方便,所以这里采用finalshell这款软件来代替centOS自带的终端命令行页面
下载好之后,我们需要先在centOS命令行输入以下指令来查看自己这台虚拟机的ip
- ifconfig
该红颜色框选中的地方就是自己虚拟机的ip
打开finalshell之后,点击如下所示
打开ssh连接页面之后,如下
4.Linux目录结构
Linux没有盘符的概念,例如在windows系统的电脑上,有C、F、E等盘,而在Linux系统中只有一个根目录‘/’(作为顶级目录)
- windows描述一个目录结构:E:\c语言 表示在E盘下的C语言文件
- 要描述一个目录结构:/usr/local 表示在usr文件夹中的local文件
5.Linux命令基础
Linux命令基本格式:command [-options] [parameter]
- command:命令本身
- -options:可选,命令的一些选项,可以通过选项控制命令的行为细节
- parameter:可选,命令的参数,多数用于命令的指向目标等
比如:ls -l /home/it 这行命令的意思是以列表的形式显示/home/it目录下的内容
5.1.ls命令
语法如下:
ls [-l -a -h] [Linux路径]
- -l -a -h是可选的选项
- Linux路径是此命令可选的参数
当不使用选项和参数,直接使用命令体ls,表示:以平铺形式,列出当前工作目录下的内容
我们对比下图形化页面的目录和命令行里输出的目录是否一样,在图形化页面里的Home文件夹里存放的就是上面命令行输出的这些文件夹
注意点:
- 刚刚在上面说了工作目录,当Linux系统终端在启动的时候,会默认加载当前登录用户的HOME目录作为当前工作目录,所以ls命令列出的是HOME目录的东西
- 那么这个HOME目录在哪呢?HOME目录作为每个Linux操作用户在Linux系统的个人账户目录,其路径在:/home/用户名
这里我通过两种方式列出HOME目录的文件,结果是一样的,那也就表示,/home/用户名,就是HOME文件的目录
HOME文件位置:
下面来说说ls命令的选项,刚刚在上面说到选项有三个
- -l 表示列表(竖向排列)的形式显示文件
- -a 表示显示所有文件(包括隐藏文件),下面前缀带了点的都是隐藏文件
- -h 显示文件大小的单位,必须得跟着-l选项使用,否则无效(没有带单位都是byte)
看了第三个-h的使用,我们也就知道了选项是可以混合使用的,混合使用之后,选项的功能都可以体现出来,例如-a和-l 表示既以列表形式显示,又要展示所有文件
5.2.目录切换相关命令
cd(Change Directory):切换目录
语法:cd [Linux参数]
cd指令后面的参数可带可不带,但是意义不同
- cd [指定切换的目录]
- cd 表示切换到当前用户的HOME目录
pwd(Print Word Directory):展示当前所在的工作目录
语法:pwd
上面的例子表示刚开始展示工作目录是/home/itheima,然后我切换到了子目录/Pictures中,然后再使用pwd展示
5.2.1.相对路径和绝对路径
我们要访问切换路径,方式有两种,一种用绝对定位,一种用相对定位
- 绝对定位:cd /home/itheima/Pictures 从根目录开始一级一级定位
- 相对定位:cd Pictures 从默认的HOME目录开始,此时前面不需要加/
可见这两种方式结果是一样的
5.2.2.特殊路径符
- . 表示当前路径,cd ./Pictures 表示切换到当前路径下的Pictures目录
- .. 表示上一级目录,cd .. 表示切换到上一级目录,cd ../.. 表示切换到上两级目录
- ~ 表示HOME目录,cd ~ 表示切换到HOME目录,cd ~/Pictures 表示切换到HOME目录下的Pictures目录
6.mkdir命令
mkdir(Make Directory):在指定目录创建一个新文件夹
命令语法:mkdir [-p] [Linux路径]
- mkdir ./Pictures/pic2 表示在当前目录下的Pictures目录里创建一个pic2文件夹
- mkdir -p Pictures/pic/666/good 表示在Pictures目录里的pic目录里链式的创建666、good目录,-p选项的意思就是可以链式创建多层级目录(在这个链式中原本有的就不用创建,直接进入到这个目录里,没有的就会创建出来)
注意:创建文件夹要修改权限,只能是在HOME目录内创建文件夹
7.文件相关命令
刚刚在上面讲了创建文件夹相关的命令,接下来讲一下创建文件相关的命令
7.1.touch命令
touch命令:用来创建文件
命令语法:touch Linux路径
7.2.cat命令
cat命令:用来查看文件内容
命令语法:cat Linux路径
7.3.more命令
more命令:也是用来查看文件内容,但是如果文件内容较多,more命令支持分页
命令语法:more Linux路径
7.4.cp命令
cp(copy)命令:用于复制文件、文件夹
命令语法:cp [-r] 参数1 参数2
- -r 在执行复制文件夹的时候要添加上这个选项,在执行文件复制的时候添不添无所谓
- 参数1 表示被复制的文件、文件夹
- 参数2 表示要复制的目的地
表示将111这个文件,复制到当前目录下的syz文件夹里的kzjj文件夹里的222文件中
表示将syz这个文件夹移动到Pictures文件夹中
7.5.mv命令
mv(move):用于移动文件、文件夹
命令语法: mv 参数1 参数2
- 参数1 表示要移动的文件、文件夹
- 参数2 表示要移动的目的地
表示将Pictures目录里的pic2文件夹移动到HOME目录下
7.6.rm命令
rm(remove):用于删除文件、文件夹
命令语法:rm [-r -f] 参数1 参数2 ... 参数n
- -r 在删除文件夹的时候要带上这个选项
- -f 在身份是root的时候,删除东西,系统会跳出来是否删除的提示,在输出rm命令的时候加上-f选项,就不会跳出来这个提示,直接删除完成
- 参数可以跟多个,表示一次可以删除多个文件
表示删除syz这个文件
表示一次性删除syz1和pic2这两个文件
7.6.1.通配符
rm命令支持使用通配符*,来进行模糊匹配,然后进行删除
- syz* 表示匹配以syz开头的内容
- *syz 表示匹配以syz结尾的内容
- *syz* 表示匹配包含syz的内容
删除包含syz的文件夹
注意:如果身份是超级管理员root时,请慎用rm命令,稍有不慎就会删除不该删的东西,尤其是rm -rf /* 这行命令意思就是删除所有文件,并且不予删除提示,就是我们熟知的删库跑路,小心吃牢饭>_<
7.7.find命令
find:查找文件位置,支持按文件名称和文件大小来查询,注意,是查找文件,不是文件夹
7.7.1.按文件名称查询
命令语法:find 起始路径 -name 被查找的文件名称
表示从HOME目录开始,查找名字是111的文件
同样的,find命令支持通配符,使用方法和7.6.1小节一致,这里不做演示了
7.7.2.按文件大小查询
命令语法:find 起始路径 -size +|-n[kMG]
- +或者- 表示大于和小于
- n 表示文件大小,这里n是一个整数
- [kMG] 表示文件大小的单位,k是kb,M是Mb,G是Gb,注意k是要小写,M和G是大写
表示从HOME目录开始查找文件大小小于10kb的文件
表示从HOME目录开始查找文件大小大于1G的文件
7.8.grep命令
grep:从文件中通过关键字来过滤文件的行
命令语法:grep [-n] “关键字” 文件路径
- -n 可选,表示在结果中显示匹配到的行的行号
- 关键字 参数,表示要过滤的关键字,最好是带上双引号
- 文件路径 表示要过滤的文件的路径,可作为管道符的输入(这里在后面的管道符会讲解)
有一个hello.txt文件,内容如下
现在使用grep命令过滤一下,查找关键字S,结果如下,1和3代表的是行数
7.9.wc命令
wc:统计文件的行数,单词数量,字节数,字符数
命令语法:wc [-c -m -l -w] 文件路径
- -c 字节数
- -m 字符数
- -l 行数
- -w 单词数
- 如果不带选项,则默认统计行数,字符数,字节数
- 文件路径 参数,可以作为管道符的输入(也是在之后会讲解管道符)
7.10.管道符
| :将管道符左边的命令结果当做右边命令的输入
- 刚刚在上面说的grep和wc命令,可以作为管道符的输入,就是说这些命令放在管道符的右边,当做左边命令结果的输入,下面举个例子就明白了
管道符|的左边的命令是读取Pictures目录下的hello.txt文件内容,其结果就是这个hello.txt文件的内容,管道符|右边的命令是过滤含有S的行,注意看,这条命令没有指定文件路径,其实这个文件路径就是管道符左边这个文件,现在理解了将管道符左边的命令结果当做右边命令的输入吗?
管道符的左边是读取Pictures目录下的hello.txt文件,右边是统计这个文件的行数的命令,本来wc命令后面要跟文件路径,但是现在有管道符,左边命令的结果作为这个文件路径
7.11.echo命令
echo:向控制台输出内容,有点像print
命令语法:echo 输出内容
当我想输出的内容是一个命令的结果,那么该如何呢?例如,echo pwd 正常输出的就是pwd而不是pwd这个命令执行之后的结果
这个时候,用反引号把pwd引住,那么这里面的内容就会当做命令来执行
如果反引号内的不是命令,则会输出'不是命令'的提示
7.12.重定向符
作用:将重定向符左边的命令结果写到右边的文件中
- 重定向符有两个,一个是>,另一个是>>
- >的作用是将结果写入文件中,并且覆盖原有的内容
- >>的作用是将结果写入文件中,但是是以追加的方式
7.13.tail命令
tail:查看文件尾部内容
命令语法:tail [-f -num] Linux路径
- -f 表示持续跟踪文件,若文件被修改,tail命令也能及时检测到
- -num 这里的num填一个实际的数字,表示要查看文件多少行,不填默认10行
上面的命令表示,将hello.txt文件的后两行展示出来
使用-f选项,可以实时检测指定的文件内容,在上面给文件加一句,那么这个tail命令就能检测到这个文件多了一句话,并且展示出来
8.vi\vim编辑器
vi\vim编辑器,就是命令行模式下的文本编辑器,用来编辑文件
vim是vi的升级版,包含vi的全部功能
8.1.基础命令
- vi 文件路径
- vim 文件路径
以上两个命令,是进入文件编辑页面的命令,进入之后,会优先进入命令模式,如下图:
- 命令模式:默认的模式,可以通过键盘快捷键控制文件内容
- 输入模式:通过命令模式进入,可以输入内容进行编辑,按ESC退回命令模式
- 底线命令模式:通过命令模式进入,可以对文件进行保存,关闭等操作
其中,命令模式和底线命令模式,有许多的键盘快捷键,这里不做详细介绍,只罗列一些
底线命令模式快捷键:
- :wq 保存并退出
- :q 仅退出
- :q! 强制退出
- :w 仅保存
- :set nu 显示行号