Linux操作系统
1.Linux的介绍
1.1 操作系统的介绍
1.1.1 当前存在的操作系统
目前存在的操作系统种类丰富,应用于不同的设备和场景,主要有以下几类:
1. 桌面操作系统:
-
Windows:由微软公司开发,是全球使用最广泛的桌面操作系统之一。其具有操作简单、软件兼容性好等优点,拥有丰富的应用软件生态。常见的版本有 Windows 10、Windows 11 等,适用于日常办公、娱乐、游戏等多种场景。
-
macOS:苹果公司为其 Mac 系列电脑开发的操作系统。在图形设计、视频编辑等专业领域具有优势,界面美观、操作流畅,安全性较高。例如最新的 macOS Ventura 系统,在功能和性能上都有不断的提升。
-
Linux:这是一种开源的操作系统,有众多的发行版,如 Ubuntu、Fedora、Debian 等。Linux 系统稳定性高、安全性好、可定制性强,占用硬件资源少,常用于服务器、开发者工作站等场景。同时,也有一些面向普通用户的 Linux 桌面发行版,如 Linux Mint 等。
2. 移动操作系统: -
Android:由谷歌公司开发的开源移动操作系统,被广泛应用于众多品牌的智能手机、平板电脑等移动设备。其特点是开放性强、应用丰富、可定制性高。
-
iOS:苹果公司的移动操作系统,仅用于苹果公司的 iPhone、iPad、iPod Touch 等设备。iOS 系统具有流畅的操作体验、优秀的软件质量和良好的安全性,其应用生态也非常丰富。
3. 服务器操作系统: -
Windows Server:微软推出的服务器操作系统系列,提供了强大的网络管理、文件共享、数据库服务等功能,与 Windows 桌面系统有较好的兼容性,易于管理和维护。
-
Linux Server:基于 Linux 内核的服务器操作系统,如 Red Hat Enterprise Linux、CentOS、Ubuntu Server 等。Linux 服务器操作系统具有稳定性高、安全性好、资源占用少等优点,被广泛应用于各种企业级服务器场景。
-
Unix:是一种历史悠久的操作系统,具有高度的稳定性和安全性,常用于大型企业、金融机构等对系统可靠性要求极高的场景。不过,Unix 系统的使用相对较为复杂,且市场份额逐渐被 Linux 等操作系统所取代。
4. 其他操作系统: -
Chrome OS:由谷歌公司开发的基于云计算的操作系统,主要用于 Chromebook 等设备。该系统依赖网络连接,强调在线应用和云存储,适合对移动办公和在线学习有需求的用户。
-
QNX:加拿大 QNX 公司开发的实时操作系统,被广泛应用于汽车、航空航天、工业自动化等领域,具有高可靠性和实时性。
-
鸿蒙 OS:华为公司自主研发的操作系统,是一款面向多设备的分布式操作系统,可应用于手机、平板、智能电视、智能穿戴等多种智能终端设备,具有良好的兼容性和扩展性。
1.2Linux发展史
今天学习Linux系统编程,你可能要问Linux从哪里来?它是怎么发展的?在这里简要介绍Linux的发展史。要说Linux,还得从UNIX说起。
1.2.1 UNIX发展的历史
1968年,一些来自通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊操作系统。Multics在多任务文件管理和用户连接中综合了许多新概念。
1969-1970年,AT&T的贝尔实验室研究人员Ken Tompson和Dennis Ritchie,在采用很多Multics特点的基础上开发了UINX系统。它运行在小型机上,满足了系统对科研环境的要求。从产生开始,UNIX就是一个有价值的、高效的、多用户和多任务的操作系统。
UNIX从满足个人的设计需求开始,逐步成长为由许多不同开发商所支持的标准软件产品。
第一个UNIX版本是免费给许多知名大学的计算机系使用的。
1972年,贝尔实验室开始发放商业版本,并且给不同的用户授权使用这个系统,使用者之一是加州大学伯克莱分校的计算机系。伯克莱给系统增加了许多新的特点,后来成为了标准。
1975年伯克莱由下属部门BSD发行了自己的UNIX版本。UNIX的BSD版本成为AT&T贝尔实验室版本的主要竞争者,而其它的独立开发出的UNIX版本也开始萌生。
1980年微软公司开发了叫做Xenix的UNIX PC版本。AT&T发行了第一个商业版本。名叫System Ⅲ,后来被成为对商用软件产品良好支持的System Ⅴ所替代。
同时UNIX的BSD版本不断发展,在70年代末期,BSD UNIX成为了国防部的高科技研究机构科研项目的基础。其结果,伯克莱发行了一个叫做BSD Release 4.2的有效版本。它包括了高级的文件管理器和基于TCP/IP网络协议的网络特点。现在TCP/IP被Internet所使用。BSD Release4.2被许多厂商所采用,例如SUN Microsystem。UNIX不同版本的出现导致了UNIX标准的需要,软件开发商不知道他们的程序运行在哪些版本上比较合适。
到80年代中期,两个竞争的标准出现了,一个是基于AT&T的UNIX版本,另一个是BSD版本。在今天的书店里你能发现分别适用于这两个版本的不同的UNIX的书,一些是System V,另一些集中在BSD UNIX。AT&T建立了一个叫UNIX系统实验室的新组织,它的作用就是综合UNIX的不同版本,集中开发一个标准系统。
1991年,UNIX综合实验室综合了System V Release3,SUN OS和Xenix的所有特点,发行了System V Release4。为了与System V Release 4 竞争,一些其它公司,如IBM和惠普Open Software Foundation(OSF)去产生自己的UNIX标准版本,继而出现了两个标准商业版本OSF版本和System Release 4
1993年,AT&T把它的UNIX转卖给Novell公司。UNIX系统实验室成为了Novell的UNIX系统小组的一部分。Novell发行了基于System V Release 4的自己的UNIX版本UNIXWare,它可以和Novell公司的Netware系统相联。SUN公司已经把System V Release 4 融进了它的SUN OS,发行了Solaris。两个相互竞争的UNIX使用的图形用户界面(一个叫Motif,另一个叫Openlook),已经合并为一个新的工作平台标准,叫做通用平台环境
(CDE)。
1.2.2 Linux的发展史
1991年10月5日,赫尔辛基大学的一名研究生Linus Benedict Torvalds在一个Usenet新闻组
(comp.os.minix)中宣布他编制出了一种类似UNIX的小操作系统,叫Linux。新的操作系统是受到另一个UNIX的小操作系统------Minix的启发,该系统是由一名叫Andrew S Tanenbaum的教师开发的。读者也许猜想所发布的这个系统应该是Linux的0.01版本,实际上不是这样。真正的Linux 0.01版本并没有被发布,原因是0.01版本不实用。Linus仅仅在第一个Linux的FTP站点(ftp://nic.funet.fi)上提供过这个版本的的源代码。
Torvalds于10月5日发布的这个Linux版本被称为0.02版,它能够运行GNU Bourne Again Shell(bash)和GNU的
C编译程序(gcc)以及为数不多的其它语言。Torvalds绝对没有想到他设想的一种能够针对高级业余爱好者和黑客们的操作系统已经产生,这就是人们所称的Linux。;
Linux发布时的版本是0.02,后来又有0.03版,然后又跳到0.10版。因为世界各地越来越多的程序员都开始开发Linux,它已经达到0.95版。这就意味着正是公布1.0版本的时间已经为期不远了。正式的1.0版本是在1994年公布的。
1.3 Linux的系统版本
Debian
Debian运行起来极其稳定,这使得它非常适合用于服务器。 debian这款操作系统无疑并不适合新手用户,而是适合系统管理员和高级用户。
Ubuntu
Ubuntu是Debian的一款衍生版,也是当今最受欢迎的免费操作系统。Ubuntu侧重于它在这个市场的应用,在服务器、云计算、甚至一些运行Ubuntu Linux的移动设备上很常见。Ubuntu是新手用户肯定爱不释手的一款操作系统。红帽企业级Linux 这是第一款面向商业市场的Linux发行版。它有服务器版本,支持众多处理器架构,包括x86和x86_64。红帽公司通过课程红帽认证系统管理员/红帽认证工程师(RHCSA/RHCE),对系统管理员进行培训和认证。
CentOS
CentOS是一款企业级Linux发行版,它使用红帽企业级Linux中的免费源代码重新构建而成。这款重构版完全去掉了注册商标以及Binary程序包方面一个非常细微的变化。有些人不想支付一大笔钱,又能领略红帽企业级Linux;对他们来说,CentOS值得一试。此外,CentOS的外观和行为似乎与母发行版红帽企业级Linux如出一辙。 CentOS使用YUM来管理软件包。
Fedora
小巧的Fedora适合那些人:想尝试最先进的技术,等不及程序的稳定版出来。其实,Fedora就是红帽公司的一个测试平台;产品在成为企业级发行版之前,在该平台上进行开发和测试。Fedora是一款非常好的发行版,有庞大的用户论坛,软件库中还有为数不少的软件包。
Kali Linux
Kali Linux是Debian的一款衍生版。Kali旨在用于渗透测试。Kali的前身是Backtrack。用于Debian的所有Binary软件包都可以安装到Kali Linux上,而Kali的魅力或威力就来自于此。此外,支持Debian的用户坛为Kali加分不少。Kali随带许多的渗透测试工具,无论是Wifi、数据库还是其他任何工具,都设计成立马
可以使用。Kali使用APT来管理软件包。
毫无疑问,Kali Linux是一款渗透测试工具,或者是文明黑客(我不想谈论恶意黑客)青睐的操作系统。
... ...
1.4 Linux的目录结构
inux的目录结构是树形结构。
根目录是"/",所有的文件和目录都在根目录下。其中一些重要的子目录包括:
-
/bin:存放二进制可执行文件,这些文件是系统中最常用的命令,如ls、cp、mkdir等,普通用户和系统管理员都可以使用。
-
/sbin:主要存放系统管理员使用的系统管理命令,如ifconfig、reboot等,普通用户通常没有权限执行这些命令。
-
/etc:存储系统的配置文件,如网络配置(/etc/network/interfaces)、用户账号信息(/etc/passwd)等。
-
/home:普通用户的主目录所在地。例如,用户名为"user1",其主目录一般是"/home/user1",用于存放用户的个人文件。
-
/root:超级管理员(root)的主目录,用于存放root用户的专属文件。
-
/var:存放经常变化的文件,如日志文件(/var/log)、缓存数据(/var/cache)等。
-
/tmp:临时文件存储目录,任何用户都可以读写,系统会定期清理这个目录下的文件。
2.Linux下基本指令
2.1 ls 命令
语法: ls [选项][目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
实例如下:
目录:
文件名及其他信息:
2.2 pwd 命令
语法: pwd
功能:显示用户当前所在的目录
实例如下:
显示出了我们当前所在的目录。
2.3 cd 指令
Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。
语法:cd 目录名
功能:改变工作目录。将当前工作目录改变到指定的目录下。
cd .. : 返回上级目录
cd /home/litao/linux/ : 绝对路径
cd ../day02/ : 相对路径
cd ~:进入用户家目
cd -:返回最近访问目录
举例: cd ..
举例:cd/home/:绝对路径
2.4 mkdir 命令
语法:mkdir [选项] dirname...
功能:在当前目录下创建一个名为 "dirname"的目录
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。
举例:
在这里可以看到,我们创建了 xxyy以及 aa/bb/cc
当我们访问aa时可以看到bb
2.5.rmdir指令 && rm 指令
rmdir是一个与mkdir相对应的命令。mkdir是建立目录,而rmdir是删除命令。
语法:rmdir [-p][dirName]
适用对象:具有当前目录操作权限的所有使用者
功能:删除空目录
常用选项:
-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
rm命令可以同时删除文件或目录
语法:rm [-f-i-r-v][dirName/dir]
适用对象:所有使用者
功能:删除文件或目录
常用选项:
-f 即使文件属性为只读(即写保护),亦直接删除
-i 删除前逐一询问确认
-r 删除目录及其下所有文件
实例:我们拿出刚刚创建的 xxy文件来演示:
注意:(rmdir)不能删除非空目录
rm 命令
2.6 touch 命令
语法:touch [选项]... 文件...
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
常用选项:
-a 或--time=atime或--time=access或--time=use只更改存取时间。
-c 或--no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或--time=mtime或--time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间。
实例:
2.7 cp命令
语法:cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,
则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息.
常用选项:
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链
接,则一律视为普通文件处理
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理
实例:
2.8 mv命令
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。
语法: mv [选项] 源文件或目录 目标文件或目录
功能:
-
视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。
-
当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
-
当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。
2.9 cat 命令
语法:cat [选项][文件]
功能: 查看目标文件的内容
常用选项:
-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行
实例:
2.10 vi命令
作用: 编辑文本
vi 文件名
输入 i 进入编辑模式
输入 对于的文本数据
按 esc 键退出编辑模式
输入:wq进行保存
2.11 find 命令
Linux下find命令在目录结构中搜索文件,并执行指定的操作。
Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很
多,其中大部分选项都值得我们花时间来了解一下。
即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。
在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系
统可能会花费很长的时间(这里是指30G字节以上的文件系统)。
语法: find pathname -options
功能: 用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
常用选项:
2.12 ipconfig/ifconfig
1.ipconfig
作用:
2.ifconfig
作用:在Linux中查找IP
2.13 chmod 命令
文件的操作权限有三种:读(r)、写(w)、执行(x)
读的权限对应的数字是 4
写的权限对应的数字是 2
执行的权限对应的数字是 1
一般可以操作文件的操作者有三种:当前用户、当前用户所属组、其他用户
权限的顺序:自己、自己所在的组、其他人
需求:自己拥有所有的权限、所在的组的成员拥有读写权限、其他人拥有读的权限。
今天的作业就到这里
今天的收获很多,也很充实。