os fundamentals
特殊词汇
终端:是一个接口,提供输入输出功能,本质是一个运行Shell或命令行工具的窗口
Shell:是一个命令解释器,负责将用户输入的命令翻译为系统能够执行的操作,提供了一种与操作系统内核交互的方式,Linux中使用的是Bash(Bouren Again Shell,是Bouren Shell的增强版,广泛用于Unix和类Unix操作系统中),Windows中使用的是PowerShell
命令行(CLI,Command-Line Interface):是用户通过键盘输入指令,与操作系统交互的方式,通常在终端中运行,由Shell提供支持,用于执行系统操作、运行脚本和管理文件
cmd:是Windows系统的命令提示符,是Windows自带的Shell,是Windows系统中最早期的命令行工具
sudo:全称superuser do,是在Linux系统中用于以超级用户权限(root)运行命令的工具,即类似于管理员权限,有些操作是普通权限无法直接执行的
apt:全称advanced package tool,是Linux发行版中用来管理软件包的命令行工具,可以通过用它来安装、升级、删除以及管理系统中的软件包
类Unix操作系统与Windows系统的区别
1. 系统架构
类Unix操作系统(如Linux、macOS、FreeBSD等)遵循Unix的设计原则,通常基于模块化的架构,一切资源(包括硬件设备)都被视作文件来进行操作。
Windows系统 采用的是单体架构,操作系统的很多部分紧密集成在一起,底层和应用层之间的界限不如类Unix系统明显。
2. 命令行和图形界面
类Unix操作系统:虽然大部分类Unix系统都有图形用户界面(如macOS的Finder、Ubuntu的GNOME桌面),但是系统的核心依赖于命令行界面(CLI)。CLI是这些操作系统的强项,用户可以通过命令行执行几乎所有的操作,支持脚本自动化。常用的命令行工具有ls、cp、mv、grep等。
Windows系统:Windows的操作系统更注重图形用户界面(GUI),用户通过窗口、按钮、图标等元素与计算机进行交互。虽然Windows也有命令行工具(如CMD、PowerShell),但它的设计初衷是以图形界面为主,并且许多操作默认是通过GUI进行的。
3. 文件系统
类Unix操作系统:Unix和类Unix操作系统采用统一的文件系统设计,一切都是文件,设备和文件是平等的。比如,硬盘、外部设备、网络、输入输出设备都被抽象为文件。最常见的文件系统是 ext4、HFS+(macOS)等。目录结构从根目录(/)开始,所有文件和目录都是从根目录分支出来的。
Windows系统:Windows的文件系统更依赖于驱动器字母(如C:、D:等)来表示不同的磁盘分区。Windows使用的文件系统主要是 NTFS(新技术文件系统),它在设计时并没有像Unix那样以统一的文件结构管理一切。
4. 用户权限管理
类Unix操作系统:Unix系统通常以严格的权限控制为特点。每个文件都有与之相关的访问权限(读、写、执行),并且有明确的用户和用户组机制。系统使用 sudo 或 su 命令来获取超级用户权限(root权限)。
Windows系统:Windows也有权限管理,但它的权限模型与类Unix系统不同。Windows有管理员账户,普通用户账户也可以在某些情况下提权为管理员。Windows权限控制更加基于用户账户和控制面板(例如通过UAC来提升权限)。
5. 多任务和多用户
类Unix操作系统:类Unix操作系统天生支持多任务和多用户,可以让多个用户同时操作同一台计算机,且相互隔离。它通过进程调度和分配来确保每个任务都能在适当的时间片上运行。
Windows系统:Windows也支持多任务,但通常是为单一用户提供服务。虽然Windows支持远程桌面和多用户功能,但它的多任务处理和多用户管理并不像Unix那样强调在同一台机器上多用户并发操作。
6. 开发和开源
类Unix操作系统:大多数类Unix操作系统(如Linux、FreeBSD)都是开源的,代码开放,任何人都可以查看、修改和分发。开发者可以自由定制操作系统,通常可以使用许多开源工具和库。
Windows系统:Windows是专有的商业操作系统,微软对其源代码进行严格控制,用户和开发者无法访问或修改底层代码。Windows也支持一些开源项目,但整体上不如类Unix系统开放。
7. 软件安装和管理
类Unix操作系统:类Unix系统有强大的包管理工具(如 apt、yum、brew 等),可以方便地从在线仓库安装和更新软件包。系统和软件的管理通常都依赖命令行。
Windows系统:Windows的安装和软件管理通常是通过安装程序(.exe、.msi 等)进行,用户需要手动下载安装文件并执行安装。Windows 10引入了Windows Store和PowerShell包管理,但整体上软件管理仍然以图形化界面为主。
9. 应用软件和生态
类Unix操作系统:类Unix系统有很多开源的开发工具和服务器软件,在开发者和服务器管理员中非常受欢迎。类Unix系统常用于Web服务器、开发环境等。
Windows系统:Windows在桌面应用软件和游戏生态上占据主导地位。许多商业软件、办公软件(如Microsoft Office)、游戏等都优先支持Windows。
总结:
类Unix操作系统:如Linux、macOS,注重命令行操作、开放源代码和强大的脚本自动化功能。适合开发者、系统管理员、服务器等专业领域。
Windows系统:以图形用户界面为主,适合日常办公、娱乐、游戏等。系统封闭,但易用性高,广泛应用于普通用户桌面。
两者的差异反映了不同的操作系统设计哲学:类Unix系统倾向于简洁、灵活、高度可定制,而Windows则侧重于用户友好和兼容性。
Linux
Linux是一个开源的操作系统内核,通常我们所说的Linux实际上是Linux发行版,是在内核基础上结合了各种软件包、工具和桌面环境构建而成的完整操作系统
就像Windows一样,Linux下有多个不同的发行版,有一些拥有图形化和可交互的用户界面,我使用的是WSL2下的Ubuntu22
在实际开发和部署中,Linux由于其:
-
资源管理和性能优化方面的优异表现、服务器软件的运行效率
-
丰富的开源生态和工具链、高度的灵活性和可定制性
-
容器化和虚拟化更好的支持
而被广泛使用,且适合高负载的服务器环境
WSL(Windows Subsystem for Linux)
WSL是微软做的一个适用于Linux的Windows子系统,能让开发者在不需要使用虚拟机或双启动的情况下使用Linux的工具和环境进行开发
WSL 1:通过翻译 Linux 系统调用到 Windows 系统调用,实现了与 Linux 的兼容性。它不包含完整的 Linux 内核,而是依赖于 Windows 的内核来执行 Linux 命令 WSL 2:引入了一个真正的 Linux 内核,运行在一个轻量级的虚拟机中。这样,WSL 2 提供了更高的兼容性和性能,支持更多的 Linux 应用和功能
vs code提供了Remote - WSL扩展插件,允许在其中远程连接到WSL,提供了类似图形化的体验(我个人觉得是非常好用的,也不用盯着黑乎乎的命令行了哈哈哈)
WSLg
是微软为WSL2提供的内置图形界面支持,允许直接允许运行Linux GUI(graphic user interface,好像是这样拼的,不太确定,反正就是用户图形界面的意思哈哈哈)
WSLg默认在最新的 Windows 11 更新中启用,但我并没有安装特别多的GUI应用程序,下面提供一个例子:
在终端中输入下面命令安装gedit文本编辑器:
sudo apt update
sudo apt upgrade
sudo apt install gedit
gedit
这会在Windows上显示gedit的图形界面
Ubuntu
Ubuntu是Linux的一个非常流行的发行版,也是WSL支持的多个Linux发行版之一
可以通过直接在Microsoft Store(可能要挂梯子,反正我是挂了梯子才成功打开了这玩意)中搜索Ubuntu来安装发行版,通常22版的会比较稳定和安全,24版的就是最新的目前;安装完成后可以在命令行中启动Ubuntu,进入Ubuntu的命令行环境