我的Linux学习历程:那些我看过的Linux书籍们

2023-11-12

  来北京工作已经一个多月,大都市的生活比起读大学要忙碌得多,尤其是出行,基本以小时为基本的计时单位。有时茫然看着窗外车水马龙,会有些迷茫自己选择的是对还是错。

  题外话不多说,回归这次的主题,扒一扒我看过的那些Linux相关的书籍。

  对于Linux的了解和接触,缘起自大一时候的Linux限选课,老师说这门课可选可不选,但是选修后考试挂了的话需要补考。当时的我还比较爱学习,于是兴冲冲地选修了这门课,用的是清华大学出版社出版的《Ubuntu Linux应用技术教程》。这本书写的并不是很好,里面对于图形界面的叫法还是最原始的XWindows,此书一大半都是基于图形界面说什么安装啊、应用软件使用啊、7788的。但也简单讲了bash的使用和常见的命令,比如ls -all然后用管道|将输入导入至wc -l来计算文件数,还有一些简单的vi编辑器的使用,Shell脚本的写法。

  当时因为才开始学的原因,什么都不懂,渐渐地,也就失去兴趣没怎么好好学。课程对应的实验都是和老师卖萌才过的,考试的时候也就是背了一下往年的考题,考完就忘得一干二净。现在想起来,还有点小后悔。

  本以为噩梦就此结束,我与Linux应该是老死不相往来,作为一名从小学四年级就开始学习使用Windows的用户,我真的很难适应和使用Linux。可是大二学习操作系统原理的时候再一次无奈了,我们的一切实验的环境都是在Linux下面,使用那些基本fork() pipe() 等Linux下面的C函数进行操作系统的实验。当时在极其痛苦的情况下重拾课本,花了整整一周时间去学习使用Shell,学习简单的C语言(妈的,看的是谭浩强的书),会用vi来编辑,会手动写Makefile使用gcc编译。

  这期间通过学长的介绍知道鸟哥这位Linux大牛,开始阅读他的《鸟哥的Linux私房菜》。很遗憾的是,鸟哥的教程是基于CentOS来介绍的,看完开头极其冗余复杂的安装部分,我就“阵亡了”。“妈妈啊,快来救我,Linux怎么这么复杂,什么Ubuntu、什么CentOS,还完全不怎么一样。”

  真正意义上接触并使用Linux,严格意义上说还得感谢“笨兔兔”这位Linux大牛。当时 Ubuntu 12.04 正好才出,本着不装逼就不会死的精神,我安装了这个系统,准备弄个双系统来装装逼。在研究如何配置 Ubuntu 12.04 的时候正好搜到了笨兔兔在他的博客发表的配置博文,当时也就是按照教程一行一行地复制粘贴命令。稍微知道如何使用 PPA 来安装 Ubuntu Tweak (一个国人写的对Ubuntu进行简单定制和优化的软件,你可以理解为Win里面的360)。这期间阅读他的博客,接触到深度的Linux发行版Deepin Linux。

  什么?专门为国人打造的便于国人使用的Linux?不错,装!

  在我安装使用后立刻就被它的界面所吸引,坦白说 LinuxDeepin 12.04 真的很优秀,它基于Ubuntu 12.04 的基础上,去掉了那个真的超级丑超级难用的Unity,美化了各种常见的组件。直到现在,我家里上大学前的台式机还装的是此系统。

  当时逛Deepin社区的时候,看到懒蜗牛Gentoo的《Linux入门很简单》出版了,看完电子版前2章后我就被此书深深地吸引了。真的,它一点都不枯燥,语言十分浅显风趣,内容也简单使用。实体版到货后我立刻通宵2天把它看完,虽然最后部分的程序编译有点云里雾里,但是基本的日常使用已经无碍。

  这个时候Linux已经基本被我用于日常的装逼,每当我在自习室前排用着Linux上网,常常会以一种看土鳖的眼神看着那些 Mac 上装 Windows 的同学,心里暗自发笑。

  故事本该到了这里就结束,反正Deepin日常使用已经无碍,还有什么好学的。可命运就是这么神奇,它往往会在你最得意的时候给你浇盆冷水,让你“压压惊”。

  那时已经到了13年,我开始迷恋上写博客,在学校组团参加CCF大会的时候接触到阿里云,和阿里云的销售一聊天,他大手一挥给了我一张半年的代金券,此券也开启了我新的Linux学习之路。

  下单安装ECS系统,果断Linux,选择系统的时候果断装逼,Ubuntu和Deepin一样,咱不屑于使用,咱要用CentOS。等云主机资源分配好可以运行时,我就傻眼了。纳呢,没有图形界面!只有一个简陋的Shell界面!这不是坑爹么!

  没有熟悉的 apt-get,没有了熟悉的软件报名,我不得不重拾大一的课本继续蛋疼地看那些常见命令,yum 的使用也让我蛋碎一地。等我使用 yum 搭建好 LAMP 环境嘚瑟地在一个主机交流群里面炫耀时,某位大神(这里他要求不透露姓名)很是鄙视地说:现在流行LNMP,流行编译源代码。

  得,你丫瞧不起我是吧,我也给你整出来……

  这期间学会了很多,参考了各种官方文档、手册、教程,一点点学会如何wget源码包,如何解包。看着./configure --help后面的一大串长到吐的参数一点点配置,看着make时候屏幕上滚动的各种debug信息暗自发呆。有时候为了解决一个简单的缺少依赖的问题Google一整个下午。即使是最后的编译完后,make install之后的配置也让我头疼万分,Nginx与FastCGI的交互,php-fpm的配置,MySQL的优化等等……

  很庆幸有这么一段黑暗的学习经历,因为真正的动手学习配置才对 Linux 有了深入的了解。当然,用前女友云儿的话说:装逼是要付出代价的。因为对 Linux 本身产生了极大的兴趣,这期间也读了很多设计的书籍,比如那本《Linux/Unix设计思想》。我至今依旧记得那个经典的小即是美的设计理念,没有代码层面的讲述,全书薄薄的一册介绍了各种Linux相关的编程理念,十分经典。

  还有就是那本《Linux内核设计与实现》,当时因为上选修课需要用到此书,在老师的讲授下结合以前学过的操作系统知识,真的能学到很多东西。比如,如何时间调度,如何实现排序,如何中断……

  2013年年底买了Kindle,又一次开始了我的新的Linux学习之路,当时国行还没上市。因为学生党,兜里银子少,就买了日货。可是问题由此而来,日版没有中文界面。在研究时发现Kindle官网部分开源了Kindle的源码,于是我便萌发了自己编译Kindle内核来装逼的想法。从基础的交叉编译工具链的搭建,到内核源码的定制配置,BusyBox的编译,UBoot的定制,还有Eink驱动的移植……

  因为涉及的东西很多很杂,在别人的指导下先看完了LFS手册,本着不装逼就不会死的原则先行尝试编译LFS,然后慢慢上手嵌入式系统的编译。因为基础比较薄弱的问题(连Shell脚本都不会写),又买了一本《Unix&Linux大学教程》读完。

  说了这么多废话,该讲讲今天参加图灵活动赠送的书籍《Linux就是这个范儿》。如果不是图灵市场部的英子姐姐在读者交流群里面公布了这个新书发布会,很有可能我就这的与这本好书擦肩而过。这本书是由阿里巴巴的两位大牛赵鑫磊张洁写的,赵老师一直在淘宝大学里面做Linux的培训,此书的前身就是他的上课讲义。

  书的内容真的很全很全,但很遗憾的是它不够细,可能是限于篇幅的原因,很多都只是简单介绍,一带而过。但是书籍的编写语言却十分风趣幽默,初看此书的第一眼,就有一种在看《Linux入门很简单的感觉》,十分亲切。

  整个图书发布会上,张洁老师的精彩演讲,赵老师的健谈和广泛的知识面都让人印象十分深刻。很多问题,从他们的口中都能得到很好地解答。我曾经一个glibc的依赖问题将整个系统yum仓库弄坏,和赵老师交流时竟然发现他也有相似的经历,当然结果是无解。(╮(╯▽╰)╭)

  还记得赵老师在《Linux就是这个范儿》一书开头的那个“黄色冷笑话”,简单回顾一下我这短暂的2年Linux学习历程。其实很容易发现,学习,就像爬山一样,没有平坦的大道,需要努力地去攀登,即使途中某段是平面,那是因为后面还有更加陡峭的阶梯等待着你去攀登。

  学无止境

原文地址:http://yufan.me/this-is-the-linux/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我的Linux学习历程:那些我看过的Linux书籍们 的相关文章

  • 完整的 C++ i18n gettext()“hello world”示例

    我正在寻找完整的 i18ngettext 你好世界的例子 我已经开始了一个基于的脚本使用 GNU gettext 的本机语言支持教程 https web archive org web 20130330233819 http oriya s
  • 运行 shell 命令并将输出发送到文件?

    我需要能够通过 php 脚本修改我的 openvpn 身份验证文件 我已将我的 http 用户设置为免通 sudoer 因为这台机器仅在我的家庭网络中可用 我目前有以下命令 echo shell exec sudo echo usernam
  • Grep 递归和计数

    需要在具有大量子目录的目录中搜索文件内的字符串 我在用着 grep c r string here 我怎样才能找到总数量 如何仅输出至少具有一个实例的文件 使用 Bash 的进程替换 这给出了我认为是您想要的输出 如果不是 请澄清问题 gr
  • 亚马逊 Linux - 安装 openjdk-debuginfo?

    我试图使用jstack在 ec2 实例上amazon linux 所以我安装了openjdk devel包裹 sudo yum install java 1 7 0 openjdk devel x86 64 但是 jstack 引发了异常j
  • 查找并删除超过 x 天的文件或文件夹

    我想删除超过 7 天的文件和文件夹 所以我尝试了 17 07 14 email protected cdn cgi l email protection find tmp mindepth 1 maxdepth 1 ctime 7 exec
  • 从哪里获取 iostream.h

    我正在尝试在 Linux 中做一些事情 但它抱怨找不到 iostream h 我需要安装什么才能获取此文件 这个标准头的正确名称是iostream没有扩展名 如果您的编译器仍然找不到它 请尝试以下操作 find usr include na
  • 如何使用 VSCode 调试 Linux 核心转储?

    我故意从我使用 VSCode 编写的 C 应用程序生成核心转储 我不知道如何调试核心转储 有没有人愿意分享这方面的经验 更新 我相信我现在已经可以使用了 我为核心文件创建了第二个调试配置 我需要添加指向生成的转储文件的 coreDumpPa
  • 为什么无论 -rdynamic 如何,backtrace 都不包含 Objective-C 符号?

    Update 我正在 Linux 上使用 GNU 运行时 问题是not发生在带有 Apple 运行时的 MacOS 上 更新2 我在 MacOS 上编译了 GNU 运行时并用它构建了示例 该错误确实not发生在带有 GNU 运行时的 Mac
  • Linux >2.6.33:可以使用 sendfile() 来实现更快的“猫”吗?

    必须将大量大文件连接成一个更大的单个文件 我们目前使用 cat file1 file2 output file but are wondering whether it could be done faster than with that
  • 无法连接到 Azure Ubuntu VM - 公钥被拒绝

    我们在 Azure 上使用 Ubuntu VM 一段时间了 很少遇到任何问题 然而 其中一台虚拟机最近出现了问题 出乎意料的是 Ubuntu VM 开始拒绝公钥 ssh i azure key email protected cdn cgi
  • 安装 JDK 时出错:keytool 命令需要已安装的 proc fs (/proc)。 Linux 的 Windows 子系统

    我尝试在 Linux 的 Windows 子系统 Ubuntu 14 04 上安装 Oracle JDK 1 7 但出现以下错误 the keytool command requires a mounted proc fs proc Jav
  • grep 彩色线条

    我编写了一个简单的 PHP shell 脚本 它解析文件并输出某些元素 它产生大量的输出 采用不同的 bash 颜色 绿色表示正常 黄色表示警告 红色表示错误等 在开发过程中我想过滤掉一些行 例如 所有包含红色文本的行 我可以使用grep
  • 点击界面没有出现

    我决定添加一个点击界面并在我的代码中使用它 但我能够得到它的状态 sudo ip f link tuntap add tap10 mode tap sudo ip link set tap10 up 之后当我执行 ip link 时 tap
  • 每个虚拟主机的错误日志?

    在一台运行 Apache 和 PHP 5 的 Linux 服务器上 我们有多个带有单独日志文件的虚拟主机 我们似乎无法分离 phperror log虚拟主机之间 覆盖此设置
  • 使用 .htaccess 启用 PHP 短标签

    我在自己的 Centos 服务器上设置了 Apache 并具有多个虚拟 Web 服务器 并且我希望仅为位于以下位置的其中一个 Web 服务器启用 PHP 短标记 var www ostickets html 我可以通过添加成功启用短标签sh
  • SIGHUP 用于重新加载配置

    根据signal 7 SIGHUP用于检测控制终端的挂起或控制进程的死亡 然而 我遇到过很多 OSS 守护进程 服务 其中SIGHUP用于启动配置的重新加载 这里有一些例子 hostapd sshd snort etc 这是实现重新加载的标
  • 重新链接匿名(未链接但打开)文件

    在 Unix 中 可以创建匿名文件的句柄 例如 使用 creat 创建并打开它 然后使用 unlink 删除目录链接 留下一个带有 inode 和存储的文件 但没有可能的方法重新打开它 此类文件通常用作临时文件 通常这就是 tmpfile
  • 删除 Python 中某些操作的 root 权限

    在我的 Python 脚本中 我执行了一些需要 root 权限的操作 我还创建并写入文件 我不想由 root 独占所有 而是由运行我的脚本的用户独占所有 通常 我使用以下命令运行脚本sudo 有办法做到上述吗 您可以使用以下方式在 uid
  • sudo pip install python-Levenshtein 失败,错误代码 1

    我正在尝试在 Linux 上安装 python Levenshtein 库 但每当我尝试通过以下方式安装它时 sudo pip install python Levenshtein 我收到此错误 命令 usr bin python c 导入
  • tar.gz 和 tgz 是同一个东西吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我创建了 tgz 文件tar czvf filecommand then 我最终得到了一个 tgz 文件 我想知道它和tar gz 之间的

随机推荐

  • Fiddler抓包工具之fiddler设置手机端抓包

    fiddler设置手机端抓包 安卓手机抓包 第一步 配置电脑和安卓的相关设置 1 手机和fiddler位于同一个局域网内 首先从fiddler处获取到ip地址和端口号 点击online 最后一行就是ip地址 2 路径 Tools Optio
  • uni-app跨端开发微信小程序之手把手带你写一个用程序自动打开微信开发者工具的小插件

    摘要 本文通过获取微信开发者工具安装路径 调用shelljs执行vue cli编译命令 fs和path组合来读取编译后的目录 动态修改AppId和title这四个方面入手 一步步带领看官制作一个自动打开微信开发者工具的小插件 完美解决日常多
  • Typora设置修改字体颜色快捷键

    目录 1 typora如何设置修改字体颜色快捷键 2 AutoHotKey软件安装 3 typora关于AutoHotKey的具体操作 1 typora如何设置修改字体颜色快捷键 typora本身是不能直接修改字体颜色的 不过若是想修改还是
  • buck和boost电路

    文章目录 buck和boost电路 1 占空比计算 2 电感值计算 buck和boost电路 归属于DCDC非隔离电源的一部分 最常用的拓扑方式 1 占空比计算 电感两端电压与电流关系 V L d i
  • Windows下编译VTK-9.1.0

    VTK 9编译要点 VTK 9 1 0 src CMake vtkModule cmake 第4075行可以修改Debug的库后缀 VTK 9 2 0 src CMake vtkModule cmake 第4230行可以修改Debug的库后
  • 游戏开发unity打包相关系列:使用IL2CPP时打包windows程序出现Currently selected scripting backend (IL2CPP) is not installed

    安装对应平台需要的构建支持
  • NPN与PNP型传感器的区别

    NPN与PNP型传感器其实就是利用三极管的饱和和截止 输出两种状态 属于开关型传感器 但输出信号是截然相反的 即高电平和低电平 NPN输出是低电平0 PNP输出的是高电平1 沧正称重传感器 NPN与PNP型传感器 开关型 分为六类 1 NP
  • Unity3D开发小贴士(十四)JsonUtility

    Json是现在非常常用的数据格式 因为 Net的版本问题 所有没有很方便的方法可以直接在Unity里面使用C 官方的Json库 于是Unity3D自己提供了自己的一套Json工具 JsonUtility 参考下面的示例 using Unit
  • 前端学习--多益

    什么是跨域 它主要解决什么问题 如果你有8个不同的css样式 整合进网站的最好方式是 如果仅需要引入一个CSS文件 则使用连接方式 如果需要引入多个CSS文件 则首先用连接方式引入一个 目录 CSS文件 这个 目录 CSS文件中再使用导入式
  • 2023年第三届智能制造与自动化前沿国际会议(CFIMA 2023)

    2023年第三届智能制造与自动化前沿国际会议 CFIMA 2023 重要信息 会议网址 www cfima org 会议时间 2023年6月9 11日 召开地点 中国大理 截稿时间 2023年4月20日 录用通知 投稿后2周内 收录检索 E
  • Spring boot整合pagehelper

    一 导入分页插件依赖
  • ZVM Bugs (持续更新)

    问题1 Cmake配置问题 CMake Error at CMakeLists txt 5 find package Could not find a package configuration file provided by Zephy
  • can通道采样频率_CAN总线基础(上)

    概述 汽车电子设备的不断增多 对汽车上的线束分布以及信息共享与交流提出了更高的要求 传统的电气系统往往采用单一连接的方式通信 这必将带来线束的冗余以及维修的成本的提高 传统的单一通信的对接方式 已经不能满足现代汽车电子发展的需求 采用更为先
  • 软件设计师——多媒体基础

    文章目录 音频相关概念 图像相关概念 媒体的种类 多媒体相关计算 常见多媒体标准 数据压缩 有损压缩与无损压缩 题目举例 软件设计师中该部分分值为 1 3 分 音频相关概念 次声波 小于20Hz 超声波 大于20kHz A D转换 采样 g
  • dockerfile使用报错记录

    使用centos镜像默认是8 报错 解决 修改源 RUN cd etc yum repos d RUN sed i s mirrorlist mirrorlist g etc yum repos d CentOS RUN sed i s b
  • pytorch预训练模型加载与使用(以AlexNet为例)

    目录 1 概况 2 代码讲解 2 1 加载必要的包 2 2 设置GPU和transform 2 3 数据预处理 2 4 引入模型 2 5 训练模型 2 6 测试模型 2 7 保存模型 3 完整代码 4 结果 本文主要是提供过程 不要在意结果
  • 前沿技术,目前为止功能最全最强大的PLC智能远程模块,物联网模块

    前沿技术 目前为止功能最全最强大的PLC智能远程模块 物联网模块 如下图 巨控PLC智能远程控制终端不同应用场合的不同型号 巨控GRM模块分为以下4大类 GRMOPC GRM530 GRM230 GRM110 一 巨控GRMOPC系列的PL
  • 线程池有几种创建方式?

    总体来说线程池的创建可以分为以下两类 通过 ThreadPoolExecutor 手动创建线程池 通过 Executors 执行器自动创建线程池 而以上两类创建线程池的方式 又有 7 种具体实现方法 这 7 种实现方法分别是 Executo
  • Lua 表(table)

    介绍 表 Table 是Lua语言中最主要 事实上也是唯一的 和强大的数据结构 使用表 Lua语言可以以一一种简单 统一且高效的方式表示数组 集合 记录和其他很多数据结构 Lua语言也使用表来表示包 package 和其他对象 当调用函数m
  • 我的Linux学习历程:那些我看过的Linux书籍们

    来北京工作已经一个多月 大都市的生活比起读大学要忙碌得多 尤其是出行 基本以小时为基本的计时单位 有时茫然看着窗外车水马龙 会有些迷茫自己选择的是对还是错 题外话不多说 回归这次的主题 扒一扒我看过的那些Linux相关的书籍 对于Linux