回顾了以前学的内容,纯纯的只学命令而没有真的在linux下整过什么东西,恶补有关内容,真正拥抱这个社区

最近重新把 win+wsl2 拿起来,发现 nvidia 的 cuda 在 win 下安装后通过某种方式直接集成到wsl中了,vscode也接入了wsl,准备日后学习和工作迁移到linux上

拾遗

GNU计划


GNU - 维基百科

名称是GNU’s Not Unix!的缩写

Linux操作系统包涵了Linux内核与其他自由软件项目中的GNU组件和软件,可以被称为GNU/Linux

其内容软件完全以GPL方式发布

POSIX标准


可移植操作系统接口(Portable Operating System Interface of UNIX)

定义了应用程序和操作系统之间的接口,以及命令行shell和程序接口,以实现软件的可移植性

常见的Linux, BSD, macOS, iOS, Android等操作系统均遵循POSIX

开源许可证


  • 宽松式:BSD、MIT、Apache2
  • Copyleft:GPL(传染性)、LGPL、AGPL、Mozilla(MPL)

选择时可以看那张经典的树状图,宽松式基本都可以,特别注意GPL的传染性

万物皆文件


基本哲学之一

简单理解就是硬件设备、进程信息、网络接口,还是普通文件、目录、链接等,都可以通过文件的方式进行访问和操作,仅需要使用一套 API 和开发工具即可调取 Linux 系统中绝大部分的资源

基本目录规范 - XDG


为系统提供一致的桌面环境

XDG规范涵盖了各个方面的规范,使得不同的桌面环境和应用程序能够更好地协作和兼容

主要通过一套环境变量来指明应用程序的基准目录

通过env | grep XDG查看有关环境变量

Linux 基本目录规范 ——XDG | Winddoing’s Notes

XDG Base Directory Specification (specifications.freedesktop.org)

各目录作用


Linux各目录及每个目录的详细介绍 - lin_zone - 博客园 (cnblogs.com)

常用目录

  • /bin -> /usr/bin:常用命令
  • /home:用户主目录
  • /dev:设备相关
  • /etc:系统管理配置,如软件包源就在此处配置,谨慎修改
  • /lib -> /usr/lib:各种库
  • /proc:VFS,内存的映射,可以用于查看系统信息
  • /opt:一般用于大型软件和服务程序
  • /mnt:临时挂载点
  • /usr:主要存放应用程序和各种文件
  • /var:各种不断扩充的文件,包括日志,例cat /var/log/apt/term.log

除了基本的目录作用,进一步了解各目录内部的信息,使用起来才能达到得心应手

包管理


理解包管理的C/S模式,中心化机制

技术|Linux 包管理基础:apt、yum、dnf 和 pkg

Ubuntu 和 Debian 软件包管理要点 |数字海洋 (digitalocean.com)

在了解机制后很容易理解为何需要更新包列表(update && upgrade),但几乎看到的每个教程在操作前都会进行这个操作,到底多久更新软件包呢?

国内镜像站大部分是凌晨进行同步,即基本每隔一天就可以刷一下列表

文件


  • 文件类型(普通[-]、目录[d]、块设备[b]、字符设备[c]、套接字[s]、管道[p]、链接[l]
  • 权限管理(-rwxrwxrwx
  • 用户&组

写在最后


理解了大框架,命令的学习就会水到渠成,剩下的就是通过--helpman加上搜索引擎来熟悉操作,逐步扩展使用的内容了

总的来说,背后的理念和各种技术由来可能才是学习阶段需要深刻了解的,以上也只涉及到一部分内容,更多的则需要在日常使用和交流中提升理解