上篇博客中,我介绍了关于Linux的相关概念,让我们初步的了解到Linux的重要性,在这篇博客中我会再讲一些Linux操作系统的理解。
一.操作系统
我们知道Linux是一个操作系统,而操作系统操作系统(英语:Operating System,缩写:OS)是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。
在计算机中,操作系统是其最基本也是最为重要的基础性系统软件,从计算机用户的角度来说,计算机操作系统体现为其提供的各项服务;从程序员的角度来说,其主要是指用户登录的界面或者接口;如果从设计人员的角度来说,就是指各式各样模块和单元之间的联系。事实上,全新操作系统的设计和改良的关键工作就是对体系结构的设计,经过几十年以来的发展,计算机操作系统已经由一开始的简单控制循环体发展成为较为复杂的分布式操作系统,再加上计算机用户需求的愈发多样化,计算机操作系统已经成为既复杂而又庞大的计算机软件系统之一。
况且,说到操作系统,我们最耳熟能详的就是Windows操作系统(电脑)、安卓操作系统(手机)和ios操作系统(苹果手机)了 ,这些也是如今我们拥有的电子智能产品中主流的几种操作系统。操作系统最核心的作用就是:对下就是管理软硬件资源的,这是它的手段;对上为客户提供良好的、稳定的、高效的运行环境,这是它的目的。
操作系统就好比一个公司的老板,老板手底下有数百名、乃至数千名员工(好比是硬件资源),这些员工各自做着自己的任务,而每个员工都有直接的上级(设备驱动),每个上级都管理着一部分员工,而老板又管理着这些上级,形成一个完好的制度管理链。老板通过发送命令让手底下的员工开发创造一款生活App软件,目的就是为了让老百姓使用该公司的产品,所以老板就想尽办法让用户有良好的体验,满意的需求,满足了用户的需求,便有了更大的市场,便能赚到更多的钱去养活公司,避免倒闭的风险。
操作系统的使用方式有两种,一种是图形化式的操作、一种是写指令的操作。而我们家里的电脑中所用的Windows操作系统最常使用的就是图形化的操作界面,图形化的方式十分的方便,可以通过窗口、菜单、按键等方式来方便地进行操作。便可一开始是以命令行的形式进行计算机软硬件资源的操作的,极大的方便了我们使用电脑的效率,降低了代价:
而Linux操作系统最开始就是纯命令行式的进行写指令操作,写指令也等同于在Win中进行窗口按键操作。我们学习Linux的核心就在于认识和理解指令,通过写入指令去管理操作系统,所以写指令就成为了我们今后学习Linux的重中之重。
二.学习Linux基本指令
指令1:ls指令
语法: ls [选项][目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
常用选项:
-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-l 列出文件的详细信息。-t 以时间排序。
-s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
-R 列出所有子目录下的文件。(递归)
在下面图中的指令可知:ls -l指令和ll指令的输出结果一样,表明ls -l 等价于ll ,ll指令是其缩写
其实ls指令也可以搭配多个选项:
ls -al 等价于: ls -a + ls -l
此外,Linux的指令是不同的程序猿编写的,所以选项的顺序可以随意,例如: ls -al 与ls -la是完全等价的,没有任何区别的。
这个命令的详解后面下面会讲到。
指令1:cd指令:
语法:cd 目录名
功能:改变工作目录。将当前工作目录改变到指定的目录下。
cd .. : 返回上级目录
cd /home/litao/linux/ : 绝对路径
cd ../day02/ : 相对路径
cd ~: 进入用户家目录
cd -: 返回最近访问目录
说白了cd指令就是能够进入当前路径下的某个目录文件中去。
cd test1指令中,test1是目录文件,cd后面就是需要写入一个目录文件的路径,这个路径可以是相对的,也可以是绝对的。
绝对路径,从根目录为起点到某一个目录的路径;
相对路径,从一个目录为起点到另外一个的目录的路径。
而test1就是相对路径,是相对于当前路径下的,参照物是当前路径。
下面采用的是cd test1目录文件的绝对路径:
cd .. 指令:
cd - 指令:
而Linux的cd指令作用,在Windows下是这样体现的 :
用鼠标双击目录文件Windows,便可以显示出Windows文件下的所有文件
鼠标双击该目录文件==cd Windows +ls Windows下的所有文件
而cd ..指令对于Windows来说就是:<--箭头
指令3:pwd指令
语法:pwd
功能:显示当前用户所在的绝对路径地址
而Linux的pwd指令作用,在Windows下是这样体现的 :
这个图表示了该目录文件的绝对路径地址
指令4: touch指令:
语法:touch [选项] 文件名
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的普通文件。
常用选项 :
-a 只更改存取时间。
-c 或--no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-m 只更改文件变动的时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间
注意看:文件被创建好后,它所显示的颜色为白色。
指令5:mkdir指令:
语法:mkdir [选项] dirname...
功能:在当前目录下创建一个名为 “dirname”的目录
常用选项:
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立 好那些尚不存在的目录,即一次可以建立多个目录;
注意看,采用mkdir指令创建的目录文件显示颜色为蓝色,与普通文件区分开来。
说完这5个指令后,我想问几个问题:
1.如何理解文件?
2.若创建了一个空文件,它占不占磁盘空间?
3.普通文件和目录文件的区别?
先来解答第一个问题:在我们电脑的windows系统中,打开C盘我们可以看到很多个黄色的图标,
这些图标就称为是文件。Linux中也是如此,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。
问题2:在系统中我们创建了一个空文件, 占不占磁盘空间?
在上面采用touch指令创建好一个新文件后,从图中可知:666.txt文件的大小为0字节大小
于是很多同学都任务空文件并不占磁盘的空间,该想法是错误的,其实它占磁盘空间!举个例子就知道了,你在某个游戏中创建了一个新的账号,虽然你新建好账号后还没有开始玩,但是在该游戏的服务器中就会有你的账号的有关信息属性,例如密码,账号位置,创建账号的时间等信息。文件也是如此,新建好的文件都会有其相应的属性,0字节也是一种属性,它也需要占用空间,所以说空文件也占磁盘空间。
在Windows中也是一样的:
所以也得出一个重要的结论:文件并不只是有文件内容,它还包括文件的属性,共两部分内容。
问题3:普通文件和目录文件的区别
1.由上面可知在Linux中普通文件显示的颜色是白色,目录文件显示的颜色是蓝色;
2.目录文件是一个文件夹,它里面可以存放很多个普通文件,也可以存放多个目录文件,
而普通文件中既不能存放普通文件,也不能存放目录文件;
Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。
所以我们一般用路径来唯一标识一个文件 ,因为我们一般从根目录/ 开始到指定文件下,文件的唯一性==路径+文件名。
所以在一个目录下绝对不能有相同名字的文件名,若出现这样的情况的话我们就无法唯一标识!而在不同的目录下可以有相同名字的文件名,例如A目录下有个文件叫666.txt,B目录下也有个文件叫666.txt,这是允许的。
学习了普通文件和目录文件的创建后,就可以回到ls指令中,深刻学习一下ls -a指令了:
如上可知,通过ll指令时发现,上面创建的两个文件并没有显示出来,为什么?
因为创建的文件形式很特殊,它俩并不是一般形式的普通文件和目录文件,所以用ls、ls -l是看不出来的,是被隐藏的文件。只能用ls带有-a选项的指令才能看到,如下:
a表示all,是全部的意思。
而上面的一个.和两个.又代表什么意思?
.代表当前目录,..代表上级目录。比如cd ..指令就是回退到上一级目录(上一级目录就是当前目录的前一个目录)。A目录包含B目录,B目录包含C文件,当前处于C文件处,..就表示包含C的B目录路径处,.就表示C路径处 。
指令6:tree命令:
语法:tree ...
功能:用于递归地以树状格式列出或显示目录的内容。它输出每个子目录中的目录路径和文件,以及子目录和文件总数的摘要。
只输入tree命令的话,默认显示的是当前路径下所有普通文件和目录文件中的所有子文件(以树状的形式)
还可以tree指定路径的目录文件,tree 根目录等等等命令。以大局且整体的视角去查看所想看的母文件的子文件。
指令7:whoami命令:
语法:whoami
功能:可以查看当前谁正在允许该指令,显示出当前用户的用户名称。
其实红框就代表了是当前谁在使用Linux。
root是主账户名,我们使用Linux系统时,会有一个固定的主账号root,它拥有最高的权限,此外,我们还可以创建多个子账号去操作使用Linux系统,子账号的权限远不如root父账号权限。root账号的权限可以删除子账号,而子账号无法删除root账号。
指令8:adduser 账号名称
passwd 账号名称:
注:1. 输入想要输入的密码(需要输入两次),第二次为确认密码
2.输入密码时密码不会在屏幕中显示出来,即使是位数也是空白的,不用担心输入了密码以为卡住了没输出。
子账号无法创建新账号,权限不足:
采用cd 指令查看/home:
/home文件中存放着各个子账号的创建信息
使用新建的账号执行whoami指令:
删除账号指令:userdel -r 账号名称: