编程基础 - 初识Linux

编程基础 - 初识Linux

返回序言及专栏目录

文章目录

  • 编程基础 - 初识Linux
  • 前言
  • 一、Linux发展简介
  • 二、现代Linux
  • 三、Linux系统各发行版
  • 小结


前言

为什么要学习Linux呢?我这Windows用得好好的,简单易用傻瓜式、用的人还超多!但是我要告诉你的是,你用的Linux类(注意这个类字,不要抬杠)操作系统也不少,甚至很可能比Windows还多!不信你拿出手机看看,安卓、华为鸿蒙是正宗的Linux洐生产品,苹果倒是说源于Unix,但实际上还是同一个爷爷的东西。路由器几乎全是Linux系统的,所谓智能软路由系统本身就是较完整的Linux。监控摄像头、某些监控主机甚至能跑shell代码。

文中部分图片来源于网络


一、Linux发展简介

Linux是一个开源的操作系统内核。它的名字来源于最初主要作者(Linus Torvalds),由作者的名字与unix(一种操作系统)各取一半合成,之所以有unix的一半名字,是因为Linux模仿了Unix,这不是指代码的抄袭,是指功能操作上模仿,而且Unix是AT&T的东西,普通人也不敢抄它。目前Linus也还是内核代码的主要维护人、项目协调者、首席构架师。内核只提供了一些必不可少的功能,比如文件系统、磁盘控制、多任务管理等核心能力。

很多人映像中的Linux是一个黑乎乎的界面,操作要靠打字完成。这种界面其实就是shell,shell的英文意思是壳,也就是在Linux内核外面套了一层壳与内核交互,它是用户与内核的桥梁。它和Windows的前身,上世纪1995年之前的Dos(磁盘操作系统)一样的操作方式。简直是违反了自然规律,不思进取的典型。但是现代windows其实也保留了类似DOS的工具cmd(命令行Command shell)。

Linux 与 Dos
上图为:2020年的Linux(左) 与 1993年的Dos(右)

那么为什么会给人们这种奇怪的映像呢?无非是使用人群关注的重点不一样,大多windows用户可能都不知道内置的cmd是干什么用的,黑乎乎的好难看… 反正这玩意藏得深,咱不理它。而Linux用户不关心X Window(图形接口协议),这花里胡哨的玩意除了吃资源一无是处…咱这2G大内存干点什么不香,要拿去搞这花花绿绿的玩意干嘛!你没看错作者也没说错,对Linux来说,2G的内存,在2024年它干啥都够了!windows越做越好看、花哨,那都是资源堆出来的。

在这里插入图片描述
Linux的自由度很高,有人喜欢把桌面搞成这样,12年这样的桌面比windows10不差吧

在这里插入图片描述
图为同时代的LVWM(左)与windows3.2(右)

早期的Linux的确和前古的Dos一样的操作环境,Windows也确实比Linux更早搞出视窗桌面来。从win3.2发布后来讲,当时Linux也有了类似的程序管理器。
在这里插入图片描述
Windows95版本长这样

但是真正意义的视窗多媒体系统Windows95搞出来后,Linux并没有马上跟进,只是将任务管理器更完善了些,本质还是类似win3.2。直到Windows98发布,Linux才有了真正意义的视窗环境KDE1.0,但是直到今天,图形界面也只是一个软件包,与Linux内核无关。
在这里插入图片描述
早年的LINUX桌面长这样(GNOME)

又因为QT授权许可的问题,99年GNOME 1.0发布,这是Linux的另一个X Window界面。对的,你没看错!Linux不仅有现代视窗环境,还有两套视窗环境。现在也是一直并存的,当然各个发行版会选择其中一个来安装,也可能不安装X Window环境,那就是很多人映像中黑乎乎界面的由来。
在这里插入图片描述
上图为现代KDE桌面

其实Linux的自由度是极高的,你可以把它改得和Windows看起来一模一样。国内的Deepin系统甚至连操作都和windows很像。也有人把它改得和Mac OSX一样:
在这里插入图片描述
上图为假装是Mac OSX的Linux,当然它不是发行版,是个人改造的

真要说界面做得华丽,Linux中公认的是openSUSE,Windows有的动画效果它一个不少,甚至更漂亮。不过笔者只见过没用过,不多说它。

二、现代Linux

笔者三种系统(windows、OSX、Linux)都用过较长时间,在作者看来Windows和OSX是在不同商业模式上的成功,Linux是开源全球协作的成功(当年免费操作系统领域,Linux也有强劲对手的)。各有优缺点,也各自有了很大的用户基数。

有人说Linux性能远高于Windows,这个笔者是不认可的,给Linux套上一个图形界面,你再使劲美化一下,它甚至可能不如Windows,差距应该相对很小。让人有这种映像正是因为Linux经常不用图形界面,特别是服务器领域,因为费资源、还浪费网络带宽,又是一个月都难得去看几眼的,要图形界面干嘛呢,Linux的图形界面从根本上讲就是一个软件包,爱装不装的。给Windows去掉图形界面(虽然不可能),它也能跑得飞起。

那么为学Linux呢,也正是因为它在服务器领域的应用,后端应用一般都是建立在Linux服务器上的。具体是Linux系统的服务器多还是windows系统的多,这个问题一直都有争议,也没有太过让人信服的数据,但看历年世界排名靠前的大型服务器,基本上是用的Linux系统,Unix也经常出现,却几乎看不到windows的影子。

常见的监控主机,其实就是提供了存储服务的一台Linux服务器。路由器其实也是一个Linux服务器,我们平常所登陆的网页界面就是一个典型的服务,openwrt是uhttpd服务、梅林是httpd。对应于我们平常上网时在后端提供服务阿帕奇Web服务器(apache),或Nginx服务器。无非路由器上的功能要简单点,性能要差一些。不是很多人给路由开了smb、nfs这些存储服务吗,对于智能路由来说,拔号、发包、转发什么的正宗路由功能是顺带的…所以很多人感觉乍我这智能路由跑不过100块的TP呢?还真是很有可能的哦~

现代中高端路由的Linux相对比较完整,操作它和操作Linux服务器那是几乎没有区别。服务器做的事,路由基本上全都能干。特别是openwrt,现在发展的趋势是专注于X86-64的硬件,那么它和服务器已经没有区别了。

至于路由系统为什么才百把M这么小,而桌面Linux系统经常也是上G的,那全是因为路由器就这点硬件,而且是固定的。用户基本上不可能去增改。而桌面系统要适配几乎无尽的硬件,那全是驱动程序堆起来的体积。

相较于windows,linux具有以下几点优势,也可能是劣势:

  • 稳定高效:稳定是无可争议的,当年Linux用户就喜欢嘲笑Windows用户,今天你蓝屏几回了?对,不是问有没有蓝屏!服务器大多是没有重启开关的,windows系统的电脑要是没有重启开关,售后部门能把设计部门堵在办公室打残。虽然近些年的不少品牌机也把重启开关和开机键合一了,侧面说明windows10以后稳定性大有提升。
  • 几乎免费:个人用户用的都是免费发行版本,由各大Linux社区打包的。包括软件也绝大多数是免费的,嗯~ 其实Linux上是有收费软件的,大多是行业应用软件。至于效率之争,作者前面已经作了解释。
  • 漏洞少且快速修补:Windows经常有新闻说,xx版本停止服务,逼你升级新系统。Linux不存在的,梅林系统的路由器还在用2.6的内核呢。主要因为开源,有漏洞早被全世界的高手发现修补了。就算新发现了漏洞,咱编译的时候改一改就是了。
  • 多任务多用户:windows说我也会、我也行。Linux说你不行,你那是假装的。win95之后的操作系统都是多任务的,因为cpu跑得快了,把1秒钟分成10的-6次方为单位来用,用户感觉不到多任务的延时而已。Linux当然也是一个样,但windows确实不是多用户的,同一时间只能有一个用户登陆系统,服务器版也是。Linux是可以有多人同时登陆各干各的事的,一个用户开两个shell也是可以的。
  • 更加安全的用户与文件权限策略:文件权限管理方面,虽然Linux增加了复杂度,好处就是增加了安全性。
  • 适合小内核程序的嵌入系统:大小由心、丰俭由人,可以小到几M,可以大到几G。路由就是典型的例子,有些固件只有几M,有些固件有几百M。而且只要你有足够的空间,几M的固件,你也能装上几百M的工具。

三、Linux系统各发行版

细分的话这个版本就没人数得清了,主要有六大门派,找张图来说明这些门派之间的关系
在这里插入图片描述

常见的除开AOSP安卓以外,国人用得最多的就是红帽系和Debian系了。红帽本身是收费的,但它洐生的CentOS和Fedora是免费的,特别是CentOS是各大虚拟主机的第一选择。而Debian因为有国产的深度系统(Deepin),和国内用户非常多的Ubuntu系统的原因而广为人知。

这两派的软件安装包分别为rpmdeb。因为Linux的软件都是有仓库的,你直接输入命令就可以自动下载安装,绝对没有像windows上那样第三方来打个包给你加点广告的事!相应的就有了不同的软件包管理工具,比如ubuntu的apt命令,centOS的yum。当然你有个自己写的或别人写的软件已经在硬盘上了,也可以从本地磁盘安装的。

那么路由器的固件又是哪派的呢?以上六大派都不是,它属于嵌入式Linux领域,这个分支也极其复杂,作者也不可能全知全能。这里面有两个比较重要的开源项目:

  • 一个是让arm跑上Linux的开源项目,叫ucLinux,uc是微控制器的意思,已经合并进了Linux2.6版本核心,所以这么多arm的路由器都和这个有关。
  • 一个是LinkSYS(已被思科收购,后来又卖了),当年这公司搞出了一个WRT54G的路由器,后来开源了,这中间有很多故事的。

可以说目前所有的智能路由器找根子,都和这个LinkSYS的WRT54G有关。当年有人发现这个路由器竟然使用了GPL(通用公共授权许可)开源的Linux代码。这事要放在国内抄代码叫事吗?但在国外那可是戳中了自由软件的根子。最后思科没办法,斗不过自由的人民群众啊~ 也把这个路由的源代码开源了。GPL授权具有传染性,随便你用,但只要你用了,从法律上讲你就必须也开源。

包括AsusWRT、openwrt、Tomato、DD-wrt、高恪等等都是这里来的,梅林和padavan又是从Asus-wrt来的。不是说全世界么多编程高手就靠LinkSYS的这路由来改改才能搞出智能路由来,而是LinkSYS在业界的地位够高、影响力极大,自然有更多的高手去研究。


小结

Linux啥都分派系,说不定啥时候这个门派散伙了,比如著名发行版Fedora早就说散伙不干了,路由固件Tomato也不玩了,但是又不知道啥时候冒出来个版本,比如Ubuntu就是南非的一个名人找人折腾的。国内的深度Linux其实和当年著名的深度windows打包团队有关系,突然就折腾起了Linux,还干得有声有色。嗯~国内民间干Linux事业,他们搞得最出色了,至于官方半官方的版本那就更多了。实际上还有很多例子,比如前面说的两个桌面图形系统。Linux就是这样内耗严重,怪不得干不过windows~。~

返回专栏目录 <<<

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/599426.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Transformer模型中前置Norm与后置Norm的区别

主要介绍原始Transformer和Vision Transformer中的Norm层不同位置的区别。 文章目录 前言 不同位置的作用 总结 前言 在讨论Transformer模型和Vision Transformer (ViT)模型中归一化层位置的不同&#xff0c;我们首先需要理解归一化层&#xff08;Normalization&#xff09;在…

阿里云大模型「让照片跳舞」刷屏朋友圈,有哪些信息值得关注?

介绍 大家好&#xff0c;我分享聊聊阿里通义千问APP中全民舞王功能。 网络热舞结合AI视频&#xff0c;这是以后不用学习跳舞&#xff1f; 可以尝试下效果&#xff0c;一张图片生成视频。 APP快速使用 搜索下载通义千问APP 打开APP&#xff0c;选中一张照片来跳舞。 这里…

了解webpack

1 概念 webpack是一个模块打包工具&#xff0c;他将各种不同类型的文件最终都打包成.js、.css、.png、.jpg4个类型的静态资源。 2 特点 模块化开发 用webpack之前&#xff0c;项目都是在html中引入一个个js文件来开发&#xff1b;而在webpack中&#xff0c;一切皆模块&#xf…

我的2023年总结:往前看,别回头

2023年已经结束&#xff0c;我借此机会回顾一下我的2023年&#xff0c;同时也为2024年立好flag。 文章目录 2023印象深刻的实战经历技术成长与规划技术分享与交流CSDN博客参加百度apollo技术讨论会 深入学习Redis源码多彩的生活张杰演唱会《漫长的季节》&#xff1a;往前看&am…

bat批处理文件_输出内容到文本

文章目录 1、echo str > test.txt&#xff08;覆盖原有内容&#xff09;2、echo str >> test.txt&#xff08;不覆盖原有内容&#xff0c;追加&#xff09; 1、echo str > test.txt&#xff08;覆盖原有内容&#xff09; 2、echo str >> test.txt&#xff0…

代码随想录 718. 最长重复子数组

题目 给两个整数数组 nums1 和 nums2 &#xff0c;返回 两个数组中 公共的 、长度最长的子数组的长度 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,2,3,2,1], nums2 [3,2,1,4,7] 输出&#xff1a;3 解释&#xff1a;长度最长的公共子数组是 [3,2,1] 。 示例 2&#xff1…

如何用离散二维卷积公式描述卷积过程(说实话,我没搞懂为什么索引为什么设置成对称的模式。)

问题描述&#xff1a;如何用离散二维卷积公式描述卷积过程&#xff08;说实话&#xff0c;我没搞懂为什么索引为什么设置成对称的模式。&#xff09; 众所周知&#xff0c;描述图像卷积过程&#xff0c;可以使用图形法描述&#xff0c;也可以用公式法描述&#xff0c;但是具体用…

第十课:计算机心理学、教育科技及奇点,天网,计算机的未来

第十课&#xff1a;计算机心理学、教育科技及奇点&#xff0c;天网&#xff0c;计算机的未来 第三十八章&#xff1a;计算机心理学0、计算机中用到的心理学原理1、易用度2、颜色强度排序和颜色排序3、分组更好记4、直观功能5、认出VS回想6、让机器有一定的情商以及Facebook的研…

新兴电商平台都有哪些?新手做哪个比较盈利?

我是电商珠珠 近年来的电商平台层出不穷&#xff0c;由于购物方式发生了改变&#xff0c;传统的电商模式已经不能满足当前人们的需求&#xff0c;所以在抖音推出电商-抖音小店后&#xff0c;让整个电商圈发生了全新的改变。 抖音小店的出现顺势将直播电商带了起来&#xff0c…

计算机研究生论文检索方法汇总

计算机研究生论文检索方法汇总 作为一名优质(冤种)计算机在读研究生&#xff0c;检索论文是一项不可或缺的技能之一。 一、paperwithcode paperswithcode是一个免费开放的资源平台&#xff0c;提供了机器学习领域的论文、代码、数据集、方法和评估表。在这里我们可以检索不同…

Python|使用Missingno库可视化缺失值(NaN)

在真实世界数据集的情况下&#xff0c;数据集中的某些值丢失是非常常见的。我们将这些缺失值表示为NaN&#xff08;非数字&#xff09;值。但是要构建一个好的机器学习模型&#xff0c;我们的数据集应该是完整的。这就是为什么我们使用一些插补技术来用一些可能的值替换NaN值。…

DevOps(6)

目录 26.如何在Linux下跨不同的虚拟桌面共享程序&#xff1f; 27.无名&#xff08;空&#xff09;目录代表什么&#xff1f; 29.什么是守护进程&#xff1f; 30.如何从一个桌面环境切换到另一个桌面环境&#xff0c;例如从KDE切换到Gnome? 26.如何在Linux下跨不同的虚拟桌面…

你的网站或许不需要前端构建(二)

前一阵&#xff0c;有朋友问我&#xff0c;能否在不进行前端编译构建的情况下&#xff0c;用现代语法开发网站界面。 于是&#xff0c;就有了这篇文章中提到的方案。 写在前面 这篇文章&#xff0c;依旧不想讨论构建或不构建&#xff0c;哪一种方案对开发更友好&#xff0c;…

MySQL——视图

目录 一.视图介绍 二.基本使用 三.视图规则和限制 一.视图介绍 视图是一个虚拟表&#xff0c;其内容由查询定义。同真实的表一样&#xff0c;视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表&#xff0c;基表的数据变化也会影响到视图。 二.基本使用 创…

【mysql django】解决Django提示mysql版本过低

目录 一、解决Django提示mysql版本过低&#xff1a;django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.26) 一、解决Django提示mysql版本过低&#xff1a;django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.26) 报错&…

Netty初探:掌握高性能网络通信框架,提升Java网络编程技能

Netty初探 NIO 的类库和 API 繁杂 &#xff0c; 使用麻烦&#xff1a; 需要熟练掌握Selector、 ServerSocketChannel、SocketChannel、 ByteBuffer等。 开发工作量和难度都非常大&#xff1a; 例如客户端面临断线重连、 网络闪断、心跳处理、半包读写、 网络拥塞和异常流的处…

2.C++的编译:命令行、makefile和CMake

1. 命令行编译 命令行编译是指直接在命令行中输入以下指令&#xff1a; 预处理&#xff1a;gcc -E main.c -o main.i 编译&#xff1a;gcc -S main.i -o main.s 汇编&#xff1a;gcc -c main.s -o main.o 链接&#xff1a;gcc main.o -o main 命令汇总&#xff1a;gcc main.c …

JVM篇:直接内存

直接内存 直接内存并不是JVM的内存结构&#xff0c;直接内存是操作系统的内存&#xff0c;Java本身并不能对操作系统的内存进行操作&#xff0c;而是通过调用本地方法。直接内存常用于NIO作为缓冲区存在&#xff0c;分配成本较高但是读写性能好&#xff0c;并且不受JVM内存回收…

FingerprintService启动-Android13

FingerprintService启动-Android13 1、指纹服务启动1.1 rc启动Binder对接指纹厂商TA库1.2 FingerprintService启动1.2.1 SystemServer启动FingerprintService1.2.2 注册Binder服务fingerprint 2、获取底层信息2.1 AIDL 对接TA中获取2.2 指纹类型判断 android13-release 1、指纹…