黑客文化、自由软件运动与开放源码运动

​ Hacker一词最早起源于MIT的计算机文化,有那么一些热衷于研究电脑勇于探索新技术的程序员,会把一些关于编程的新奇想法和骚操作被称为Hack,他们不称呼自己为Programmer(程序员),而是自称Hacker,因此Hacker原指热心于计算机技术,水平高超的电脑专家,尤其是程序设计人员。而哪些那些专门利用电脑搞破坏或恶作剧的家伙,正确称呼应该是Cracker(骇客)

​ 黑客文化的核心在于解决问题,打破常规,质疑一切,自由分享

​ 自由软件的英文为“free software”。“free”在英文中有“自由”(freedom)、“免费”(free of charge)的双重含义,因此要学会分辨“自由软件”(free software)和“免费软件”(freeware)。自由软件运动的创始人——理查德·斯托曼提供了以下的定义:“free software” is a matter of liberty, not price. To understand the concept, you should think of “free” as in “free speech,” not as in “free beer”,中文译文:自由软件的重点在于自由,而非价格。要了解其所代表的概念:应该将“free”想成是“free speech”(言论自由)中的“free”(自由),而不是“free beer”(免费啤酒)中的“free”(免费)。更精确的说,自由软件代表电脑使用者拥有选择和任何人合作之自由、拥有掌控他们所用的软件之自由。在GNU宣言(GNU Manifesto)中包含了斯托曼在一开始对自由软件使用定义的混淆。

​ Linus Torvalds创建Linux以来,开源思想在软件界可谓盛极一时。简单的说”开源软件”就是源代码开放的软件。只要符合开源软件定义的软件就能被称为开放源代码软件。自由软件是一个比开源软件更严格的概念,因此所有自由软件都是开放源代码的,但不是所有的开源软件都能被称为“自由”。开放源代码作用是尽可能的使软件最优化;自由软件则将自由作为道德标准。

​ 由于开源思想源于计算机软件界,所以发展至今,计算机类开源产品的种类、数量都是很多的,使用也比较广泛。如在操作系统领域,Linux在服务器市场就占据了相当大的份额,并持续扩张,IBM公司销售的薄片式服务器中大约有75%就运行着Linux操作系统;Web方面,全球有百分之五十以上的Web服务器在使用开源的Apache系统;数据库,有针对互联网应用的轻量级数据库MySQL,也有针对大型应用的PostgreSQL。

​ 开源被很多黑客认为是计算机科学的一种文化复兴,是计算机科学真正成为科学并能够与其他科学一起同步发展的手段。开源发展到今天,不仅仅有数以万计的黑客在积极地参与,像IBM、HP、CA、SUN等一些软硬件厂商也在加大在开源方面的投入并积极向开源社区贡献优秀开源软件,因为开源催化了软件业快速向服务也蜕变的速度并为IBM这样的硬件和集成服务提供商提供了新的商机。

UNIX哲学

做一件事,并把它做好

Do One Thing,And Do It Well

McUnix

规则一:你永远不会知道你的程序会在什么地方耗费时间。程序的瓶颈常常出现在意想不到的地方,因此在你确信找到瓶颈后再动手优化代码吧。

规则二:测试代码。只有在你详细测试了代码,并且发现一部分代码耗费了绝大部分的运行时间时再对程序作速度优化。

规则三:功能全面的算法(fancy algorithm)在处理小规模问题时效率很低,这是因为算法时间效率中的常量很大,而问题往往规模很小。除非你知道你遇到的常常是复杂的情况,否则就让代码丑陋但是简单而高效吧。(即使问题规模确实很大,也首先尝试第二条规则。)

规则四:功能全面的算法比简单的算法更容易产生Bug,更难实现。尽量使用简单的算法和数据结构。

规则五:数据决定一切。如果选择的数据结构能很好的管理数据,算法部分往往不言自明。记住,数据结构,而非算法,才是编程的关键。

规则六:没有第六条规则。

各发行版

按照包管理器划分

主要可分为:

  1. Debian系 (Debian, Ubuntu, deepin, elementary, KaliLinux等)

  2. RedHat系 (Fedora, RHEL, CentOS等)

  3. RedHat外的rpm系 (SUSE和OpenSUSE)

  4. Arch系 (ArchLinux, ManjaroLinux等)

概览d9394693ada7a5d1af82dc88e9f76cd2

image-20241125132616983

image-20241125133308773

详尽版detail

主流常用发行版

Debian

特点
  • 以稳定性、安全性和自由软件哲学而闻名
  • 使用apt作为包管理器,使用.deb格式的软件包

Ubuntu

特点
  • 以用户友好和易于安装而闻名
  • 理想的操作系统桌面系统
  • 对于Ubuntu的硬件支持最广泛
  • 使用apt作为包管理器,使用.deb格式的软件包

Kali Linux

特点
  • 面向专业的渗透测试和安全审计,内置许多安全测试工具
  • 每季度更新,有基于ARM架构的镜像,可用于树莓派和ARM系统

OpenSUSE

特点
  • 被评价为:最华丽的Linux发行版
  • 面向企业级的Linux发行版
  • 使用Libzypp作为包管理器

CentOS/RHEL

特点
  • 适合于服务器环境,在企业服务器和生产环境中非常流行
  • 使用yum或dnf作为包管理器,使用.rpm格式软件包

Arch Linux

特点
  • 极简设计、允许用户高度自定义
  • 面向有经验用户设计
  • 更加激进,更新频繁
  • 使用Pacman包管理器

windows下使用Linux的两种方案

VMware

安装虚拟机(VMware)保姆级教程(附安装包)

wsl

WSL使用史上最详细教程

Linux常用命令

文件与目录操作

  • ls:列出目录内容。
  • cd:改变当前工作目录。
  • pwd:显示当前工作目录的路径。
  • mkdir:创建新目录。
  • rmdir:删除空目录。
  • rm:删除文件或目录(使用 -r 选项可以递归删除非空目录)。
  • cp:复制文件或目录。
  • mv:移动或重命名文件或目录。
  • touch:更新文件访问时间和修改时间,或创建新的空文件。

文件查看与编辑

  • cat:显示文件内容,也可用于合并文件。
  • lessmore:分页显示文件内容。
  • head:显示文件头部内容,默认前10行。
  • tail:显示文件尾部内容,默认后10行,可用 -f 实时查看文件更新。
  • nanovim:文本编辑器。

系统信息

  • uname:显示系统信息,如内核版本。
  • tophtop:显示活动进程和系统资源使用情况。
  • df:显示磁盘空间使用情况。
  • du:显示目录或文件的磁盘使用情况。
  • free:显示内存使用情况。

用户与权限

  • whoami:显示当前用户名。
  • su:切换用户,通常用于切换到 root 用户。
  • sudo:以超级用户或其他用户权限执行命令。
  • chmod:更改文件或目录的权限。
  • chown:更改文件或目录的所有者。

网络相关

  • ifconfigip addr:显示或配置网络接口。
  • ping:测试主机间的连通性。
  • netstat:显示网络状态,包括连接、路由表、接口统计等。
  • ssh:安全地远程登录到另一台计算机。
  • scp:安全地在两台计算机之间复制文件。

进程管理

  • ps:显示当前进程的状态。
  • kill:发送信号给进程,通常是终止进程。
  • pkill:通过名称向进程发送信号。

搜索

  • find:在指定目录下搜索文件。
  • grep:搜索文件中匹配特定模式的行。

压缩与解压

  • tar:用于打包和解包文件,支持多种压缩格式。
  • gzipgunzip:压缩和解压缩 .gz 文件。
  • zipunzip:压缩和解压缩 .zip 文件。