目录
一、linux的原理
跟一个人交好朋友之前需要先认识这个人性格之类的,学习东西也是一样,需要先知道一个功能/技术的原理,特点,这些需要先了解清楚才能跟它“交朋友”。
1、linux的优点
linux的优点有以下几点
1、一切都是文件,一切都是以文件的样子显示出来
包括硬盘等,都是以文件形式打开、存储
2、系统拥有小型,单一用途的程序
一个程序只负责自己负责的区域
3、当遇到复杂任务的时候,通过将不同功能用途的程序组合起来完成。
当遇到的一个任务较为繁琐的时候,将不用的功能组合起来一起处理这个任务
4、避免令人困惑的用户界面,就是没有复杂的图形界面
用户界面简介,没有什么多余的图片之类的
5、连配置文件都存在文本中,方便增删查改
这个跟第一条差不多,所有文件都是以文件的形式存在,能直接查找更改
6、不在乎后缀名,有没有都无所谓,不是通过后缀名来定义文件类型
这个跟Windows不一样,Windows是根据文件的后缀名来识别文件类型,后缀名更改就不能读取或者读取错误,linux不一样,只要文件存在就能读取,不存在后缀名的区别,有没有都可以
2、shell
shell是工作在用户与内核之间的一个程序,工作的原理有以下几条
1、shell是linux系统中运行的一种特殊程序
shell接收用户输入的命令,解释命令然后传递给系统的内核
2、是在用户与内核之间充当“翻译官”
把计算机语言跟人类能接收到的语言互相转换
3、用户登录系统的时候,会自动加载一个shell程序
在用户开机的时候,自动启动一个shell程序,相当于一个开机启动项
4、bash是linux系统中默认使用的shell程序
文件位于/bin/bash bash如果比喻成一个种类的软件的其中一个,shell就是这个种类的总称,bash是shell的一种,被linux默认使用。
3、命令的分类
命令分为内部命令跟外部命令两种
内部命令:是集成于shell解释器内程序的内部,没有单独对应的系统文件,自动就载入内存,直接使用。
外部命令:是linux系统中能够完成一些特定功能的脚本文件或者二进制程序,不属于shell,是创建在文件目录里面,找这个外部命令的时候,必须知道其对应的具体的文件位置,由shell加载后才能执行
还有一种缓存命令,是外部命令在运行之后放进缓存表中,加快执行速度,但是会消耗内存资源,损耗硬件的资源。
以及既属于内部命令又属于外部命令的
这边举个例子
就像是这个echo,既是shell的内嵌文件又同时由两个外部的文件目录
因为某些用途的程序,用来以防一些系统中没有内嵌这些文件,直接放在外部文件中创建目录,做个保险,当这个程序没有内嵌的时候,还能在外部命令中正常启动。双重保险,大致是这个意思。
4、绝对路径跟相对路径
绝对路径是从大到小,逐级下降的过程,其中顺序不能有任何的错误,必须是完全精准的路径,就像是生活中的外卖或者快递,你必须是从最大级省份到最小级,住址的门牌号这些详细到家的具体地址,中间一个环节出错误就会送到错误的地址去,如果那个错误的地址是一个无效的地址会失败。
大致就是这个意思,绝对路径就是一个非常精准的从大到小的路径
相对路径就比较笼统了,是直接搜索一个目标地址,也拿生活中的外卖来比喻把,快递范围太大,不符合题目,外卖的话,假如你买外卖的话,只填一个门牌号,假如在这个附近,还有别的跟你的门牌号一致的,那么外卖员就不知道是哪一家的,就不能正常送达,如果在外卖员负责的区域,只有你一家门牌号是这个,外卖员就能搜索到
系统中也是类似,你在根目录用相对路径直接搜索一个目录,如果这个目录只有一个,就能正常访问,如果有两个以上就不能访问,只能到要搜索的目录的父目录中搜索。
二、基础命令
在配置命令之前需要先给机器配置IP地址跟网关等
第四条的,修改为静态路由
下面的箭头指的那个,把NO更改为yes
然后根据自己的IP地址添加上去
先进入终端,输入vim /etc/sysconfig/network-scriptss/ifcfg-ens33
进入上图的界面,按i进图编辑模式,用方向键进行挪动光标更改,更改完之后按ESC键退出编辑模式,输入:wq保存退出
就可以了
这个界面的是root也就是管理员模式的界面, 图中的root指的是当前用户的名称,如果是root模式就显示的root,是超级管理员模式,拥有绝大部分的权限,会用#标识符来显示。
如果是普通用户登录,显示的就是自己设置的用户名,标识符也只是 $这个符号,表示普通用户
localhost,是主机名称的简写。
~,是当前目录的名称
可以看到,换一下目录,这个名称就随着改变。
1、linux命令行的基本格式
linux命令行的基本格式是
命令字 选项 英文字符(区分大小写)
命令字是非常关键的一个部分,决定这个命令的作用
选项是决定一个命令的一些功能,短格式选项一部分可以省略不写
参数,是命令字处理的对象,但是在一些情况单一的时候可以省略不写,比如
cd ~ 是到用户的家目录 cd 也是到用户的家目录,效果是一样的,但是功能要求详细的就不能省略了
2、获取帮助的命令
初学一个知识,难免的会忘记有哪些命令,可以借助系统给的帮助,来快速掌握这些知识点
内部命令可以借助 help 来查询
书写的格式是 help 命令字
help在前,命令字在后,就可以查看这个命令字下面有哪些选项,都是什么作用
外部命令是借助 --help 来查询
书写格式是 命令字 --help
命令字在前,--help在后,就可以查看这个命令字下面的选项跟作用
还有一个手册 man 手册 manual的缩写
直接输入man就可以查看了
按 ↑↓方向键翻页,按q或者Q退出阅读环境,按反斜杠 \ 来查找需要的内容
指令又分为按照功能分为十个区块
上面这三种就是,获取帮助,查看命令的方式。
区1 用户指令
区2 系统调用
区3 程序库调用
区4 设备
区5 文件格式
区6 游戏
区7 杂项
区8 系统指令
区9 内核指令
区n TCL或者TK指令
每个区块负责的功能都不一样。
3、常用的命令
1.关机
poweroff 立即关机
shutdown -h now 立即关机
shutdown -h 10 十分钟后自动关机
2.重启
reboot 重启
init6 重启
shutdown -r now 重启
3.创建
touch 创建文件
vim 创建文件
echo 创建文件
echo这个比较特殊一点,是把一段数据写进一个未创建的文件中,就会自动生成文件,echo本质上是把数据写进文件中。
以上几种都是常用的一部分命令,每种记住一个就可以
echo $PATH 是查看目标文件的存在位置
会显示当前目录里面所有包含目标文件的目录,可以先查找一下目标文件的地址然后再去找,熟悉路径的时候就不用再查看了
whatis 是显示目标的扩展
就是查看目标文件属于那个区,就是上面说的十个分区,可以一次查看多个目标,用空格隔开就行。
pwd 是显示当前的用户所在的工作目录的位置
就是提示你当前所处的工作目录的位置,从根目录到达当前目录的路径
3.1 cd命令
上面我放了一张linux系统中的快捷键,可以记一下。
cd的话是切换目录的作用,可以跟一些命令组合达到一些效果
cd 或者是 cd ~ 是返回用户的家目录
cd / 是切换到根目录
cd . 是返回当前工作目录
cd .. 是返回当前工作目录的父目录,也就是当前文件所属的上一级文件夹
cd - 是切换到上次执行cd命令的之前所在的目录,就是返回上次访问的目录
type 是查看文件的类型
3.2 ls
作用是显示目录中的内容,包括子目录和文件相关属性的信息
书写格式是 ls 选项 文件或者目录
常用的选项包含不限于以下几种
-l、-a、-A、-d、-h、-R 、-color....等,我就不一一举例跟写含义了,具体的可以到根目录查看 ls --help看一下命令
通常ls都不是单独使用,因为ls是查看当前目录的所有文件,实际场景中往往都是百万级千万级的文件数量,输入一个ls命令,读取当前目录的所有文件基本就是导致服务器一段时间之内就在加载这个文件了,没时间处理别的文件,甚至是服务器死机
所以通常都是配合通配符来使用
通配符主要是用来匹配文件夹,不能用来对文本进行匹配
第一种通配符 " ? " 是匹配一个未知的字符
ls后面跟随一个通配符?就是显示当前目录下面所有一个字符的文件,两个??就是显示两个字符的文件
或者就是搜索某个你已经知道多少位,但是几个字符忘记的命令,是用来代替某个未知的字符
第二种通配符 " * " 是匹配所有非隐藏的文件
上图可以看到,*只能查看文件,不能查看文件夹或者别的,只能查看普通文件
说普通文件,可以在目录里面输入ls -l查看一下长格式的文件名称第一位是
d开头的是目录也就是文件夹
-开头的是一个普通文件
l开头的是连接文件
b开头的是块文件
c开头的是字节文件
P开头的是管道文件
S代表的是套接字文件
结尾处的颜色也是根据颜色不同,文件种类也是不一样,上图只有一种黑色,我换个目录查看一下文件
黑色代表的是普通文件,上面也说了
绿色代表的是可以执行的,上图也没有,重新截一张
红色代表的是压缩文件
蓝色代表的是文件夹
天蓝色代表的是连接文件,就是连接后面的文件的连接方式
还有一些别的颜色我就不举例了
文件种类按照头部或者颜色大致分为这几种
3.3 统计目录及文件空间的占用情况 ——du
单独使用du是显示当前目录下的文件夹以及一个汇总,可以配合别的一起使用
du -h 是将数据计算好,显示,就像是上图的8K,
du -a是显示当前工作目录里的所有文件的数据
上面这些都是 du的选项,我就不一个一个演示了,可以直接去du --help查看
3.4 设置别名——alias
就是临时的给一串命令起一个"爱称",方便你查询,但是这个别名是临时的,退出界面之后会就会注销,如果想永久改别称就需要更改配置了,这边就先不介绍了
命令的格式是 alias 别名='命令行'
可以看到,这两种命令都是一样,下面的比较短,就是设置的用c.tx代替cat c.txt这个命令行
上面就是系统默认的别名,是只要不删除就能一直起作用,都是经常能用到的,这个也是能自主添加的
3.5创建目录——mkdir
就是字面意思,创建一个新的空白目录
为了好查找,都会创立不同的文件夹,来存储文件,这样就会方便查找
创建的格式的话是 mkdir 选项 创建路径及目录名字
创建目录也分为三种情况,一种是在当前工作目录下创建子目录
直接创建就可以了 mkdir 目录名字
第二种不是在当前工作目录添加子目录
mkdir 路径及目录名称
第三种比较特殊,连续创建目标目录以及目标的父目录
就是在一个未创建的目录下面创建目标,这个就必须借助选项来帮助了
命令格式是: mkdir -p 创建目标路径以及目标目录
现在mnt目录里面只有刚刚创建的两个文件夹,现在一次性创建第三个文件夹并且增加一个子文件夹
可以看到,现在mnt目录里面多了abc 并且abc下面有个aaa文件夹,就是创建成功了
还有创建文件的命令,上面介绍过三种方法,就不多介绍了
3.6链接文件——ln
为文件或者目录创建链接文件,简单来说就是像Windows里面的快捷启动项差不多,用一个链接,登录源文件。
链接文件又分为软连接和硬连接
软连接可以理解为A文件在A1文件夹访问位于B1文件夹的B文件,进行更改,本质上是两个文件,一旦连接的源文件消失,则不能再进行登录这个软连接启动项,会提示找不到文件,创建必须是绝对路径,不然就会找不到源目标
软连接在创建的时候可以指向文件夹或者目录,是比较灵活的方式
硬连接可以理解为复制一份源文件过去,在硬连接访问源文件并且更改的时候,硬连接本身也会保存,这样在源文件消失的时候,照样能正常运行。两个文件本质是一起的,A就是B,B就是A。
硬连接在创建的时候,不能指向文件夹或者目录,只能是文件
两个连接方式的命令格式也不一样
软连接的格式是 ln -s 源目标绝对路径 创建目标绝对路径
先给源目标增加一点内容,好分辨
现在软连接已经创建完成,查看之后也会发现颜色是天蓝色,目标也指向源目标
文件位置被转移之后会发现目标是打不开了,而且也标记的红色,一直在闪
硬连接的格式是 ln 源目标绝对路径 创建目标绝对路径
先对源文件进行输入内容
先到mnt看一下现在已经 存在的文件
再回到任意地方都可以,输入硬连接的语法格式,ln 源文件的绝对路径跟目标文件绝对路径
再查看文件的内容,会发现跟源文件是一样的
再试一下把源文件转移走试一下还能不能正常打开文件
直接把源文件转移过来
还是能够正常打开文件
对比这两种连接方式的文件属性
可以对比一下,硬连接的源文件跟目标文件,除了文件名称,都是一模一样,而软连接,文件属性都不一样了。
3.7复制文件或者目录
就是将文件或者目录重建一份,并且保存为新的目录
命令的格式是: cp 选项 源文件或者目录地址 复制到的地址
上面这些选项,-f一般是默认不生效的,因为cp是cp -i的别名,而-i的优先级是高于-f的,所以就算命令敲cp -f一般情况下也不会不提示是否覆盖同名文件。
只是示例一下,没有使用选项字符,因为我这个是刚创建的新系统,文件夹基本都是初始状态,所以不会有重名等状况,也没有使用-r递归复制,随便复制的。
我用-p选项复制一条,跟不用-p的对比一下
第一张图片是没有用-p,两个文件的属性不同,文件名相同是因为我没有转换账户,都是在root模式下创建的,所以才一样,但是创建的时间不同,所以可以用这个区分
第二张图就是完全的一致,连时间都完全一致,这个就是使用了 -p,完整的复制文件或者目录
跟这个类似的还有一个-a,-a是更加完全的复制,连软连接都能完美复制,-p是不能复制软连接的。
最后,再说一下删除
这个可是不能乱用的
删除的命令是 ——rm
格式我就不说了,只说下删除某个文件的命令吧
rm -rf *.txt //删除当前目录内所有的.txt结尾的文件
这个删除命令一不小心就会达成一个成就,删根跑路成就,就是有可能*号顺序打错达成 /* 那么恭喜你,根下所有文件都没清除。所以这个是不能乱用,也不详细说,知道rm -rf /* 这串代码不能打就是了。
总结
linux是一个开源的系统,十分方便,往往有好几种方式得到一种结果,方法不固定,相比较与Windows操作系统,灵活性要很多,工作环境中用的基本都是linux系统 Windows系统很少见。所以要熟练掌握linux系统来适应工作,但是熟练掌握系统的前提是牢牢记住各种命令。
特别强调,删除命令不能随便乱打。