第一次亲密接触
有一对儿异地的恋人,他们每天在手机上聊天,显示的距离永远是 1648km。快到年底了,女孩实在受不了这种距离而提出分手,男孩沉默不语。除夕之夜,女孩在家中刷新手机,看到男孩距离她只有 1.1 km,再刷新,只有 0.9km。
她似乎明白即将要发生什么,含着热泪走向门口......当晚,在隆隆的焰火中,他们的距离变成了 -5 cm,于是第二天他们还是分手了......
你知道他们的距离为啥变成 -5cm 吗?好吧,不说了,再说下,好多老司机要说我在开车了......
上面这段话可不是我编造的,而是来自《Linux 就是这个范儿》的第一章第一节,这本书由自阿里巴巴集团的资深Linux系统专家赵鑫磊和同样来自阿里巴巴集团的支付宝网络技术有限公司的高级专家Jie Zhang(张洁)共同著写。
这可不是一本小黄书,而是一本非常好的介绍 Linux 系统操作的图书。那么作者为什么要在书的开头写上这么一个“小荤段子”呢?其实作者是想告诉大家,Linux 系统的学习最好的方式是——“亲密接触”,即自己多玩 Linux。很多人在学习 Linux 之前,接触的是 Windows 电脑,对 Linux 不熟悉,同时由于没有像 Windows 这样完善的图形化界面,产生了不适感,更加重了学习 Linux 的恐惧心。
我的学习建议是:
一、多接触,多操作
根据我自己的经历来说一下,我当年从 Windows 转到 Linux,虽然勉强入职了,但是非常害怕工作中因不熟悉 Linux 的操作被同事质疑。后来,我就在自己的电脑上撞了一个 CentOS,然后自己玩,再业余时间结合一些 Linux 系统学习资料/图书学习,没过多久也熟悉了。
通常情况下,记不住 Linux 命令有如下几种原因:
原因一:刚接触,习惯了之前的图形化界面操作,不习惯 Linux 各种命令行操作,心存恐惧之心。
原因二:不经常使用 Linux,操作生疏。
如果是上述两个原因的话,建议读者多玩一玩 Linux 操作系统,可以在自己电脑上通过虚拟机安装一个 Linux 系统(如 CentOS、Ubuntu)。自己在虚拟机中安装 Linux 系统的好处是你可以任意把玩这个系统,只要愿意可以搞清楚这个系统的方方面面。
如果你的机器配置不行,或者不愿意自己安装 Linux 系统,可以花一点费用去各大云主机上(如阿里云、腾讯云)买一些低配的 Linux 主机空间来玩,然后用 XShell、SecureCRT 这样的工具去远程登录到云主机上去玩。下图就是我使用 SecureCRT 连接到我的阿里云主机上进行操作:
原因三:命令比较复杂,用法比较多。
如果是这个原因,建议先搞懂这个命令的用法(例如一些常见功能),实在太复杂的命令,只要知道其有哪些用途,需要用的时候去查一下帮助文档就可以了,Linux 的 man 手册要多查多用。
举个例子,我开始学习 Linux 的 lsof 命令时,总是记不住这个命令的一些参数,后来,我总结了一下,我的使用场景大多数情况下就是用来查看操作系统的 IP 地址和端口号信息,其常用的参数也就 -i 和 -Pn。
[root@myaliyun ~]# lsof -i -Pn
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ntpd 522 ntp 16u IPv4 12575 0t0 UDP *:123
ntpd 522 ntp 17u IPv6 12576 0t0 UDP *:123
ntpd 522 ntp 18u IPv4 12596 0t0 UDP 127.0.0.1:123
ntpd 522 ntp 20u IPv4 15777 0t0 UDP 172.16.210.241:123
dhclient 743 root 6u IPv4 13435 0t0 UDP *:68
mysqld 1256 mysql 13u IPv4 16416 0t0 TCP *:3306 (LISTEN)
sshd 1485 root 3u IPv4 17012 0t0 TCP *:22 (LISTEN)
nginx 1723 root 6u IPv4 26732 0t0 TCP *:80 (LISTEN)
nginx 1724 root 6u IPv4 26732 0t0 TCP *:80 (LISTEN)
server 11761 root 4u IPv4 13328465 0t0 TCP 172.16.210.241:39312->118.178.56.143:8080 (ESTABLISHED)
server 12402 root 4u IPv4 13328465 0t0 TCP 172.16.210.241:39312->118.178.56.143:8080 (ESTABLISHED)
fileserve 18483 root 5u IPv4 10028642 0t0 TCP *:20001 (LISTEN)
imgserver 18496 root 6u IPv4 10028977 0t0 TCP *:20002 (LISTEN)
route_ser 19613 root 5u IPv4 833919 0t0 TCP *:8200 (LISTEN)
file_serv 19644 root 6u IPv4 834017 0t0 TCP *:8600 (LISTEN)
file_serv 19644 root 7u IPv4 834018 0t0 TCP 127.0.0.1:8601 (LISTEN)
msfs 20274 root 5u IPv4 834510 0t0 TCP *:8700 (LISTEN)
AliYunDun 21538 root 20u IPv4 11768616 0t0 TCP 172.16.210.241:60868->100.100.30.26:80 (ESTABLISHED)
sshd 23923 root 3u IPv4 13533428 0t0 TCP 172.16.210.241:22->116.236.159.130:56739 (ESTABLISHED)
sshd 31548 root 3u IPv4 13537639 0t0 TCP 172.16.210.241:22->116.236.159.130:61055 (ESTABLISHED)
当然,这个命令还可以在一些情况下恢复被删除的 Linux 文件,那我知道有这么回事,我实际需要的时候去查一下帮助文档就可以了。
再比如 nc 命令,我用的多了,我也知道,我用的最常用的参数就是 -v -l -p。
但是像 awk 命令的具体格式我是实在记不住的,我每次用的时候都是去查。
当然,良好的英语水平也能帮助你记忆一些 Linux 命令,如 ls => list,lsof => list opened file。
其实 Linux 系统常用的命令并不多。
二、理解一些 Linux 原理
有一些 Linux 操作你一定要理解其背后的原理,比如经常有一些学生来面试,告诉我熟悉 Linux 系统,我就问他 Linux 下如何判断一个文件是可执行文件,很多同学只知道可以使用 chmod +x 授予执行权限,却不知道这个权限怎么看。
三、多积累一些小技巧
除了系统地阅读一些 Linux 书籍之外,平常可以找一些 Linux 各种小技巧的文章来看一看。比如一些同学可能不知道 vim 中如何复制粘贴、如何撤销一个操作、命令行中如何在从一键跳转到命令行的开始或者结尾处、如何使用命令与 Windows 系统之间传输文件等等。
这些技巧可以自己收集于网络,也可以自己细心观察学习自你的同学、同事等等。
四、推荐一些学习资源
就事论事,Linux 系统并不比 Windows 难多少,克服恐惧,一定能上手的。
推荐几本学习书籍吧:
《Linux 就是这个范儿》
《鸟哥的 Linux 私房菜基础篇》
《鸟哥的Linux私房菜服务器架设篇》
那么回到最初的问题上来:你知道他们的距离为啥变成 -5cm 吗?为啥还分手了吗?
推荐阅读
如何调试多线程程序 如何调试 nginx ? 最难调试修复的 bug 是怎样的? 阿里面试,拿到 P7 offer 高考后,张小方成为一名程序员 在 2021 年写一本 C++ 图书是一种什么体验? 网络编程到底要怎么学? Modern C++ 有哪些真正提高开发效率的语法糖? 程序员面试,面试官最后说,你还有什么要问的吗?该怎么回答?
我是程序员小方,一个放浪不羁的程序员,扫码关注我: