Linux/Shell:排名第四的计算机关键技能

除了编程语言之外,要想找一份计算机相关的工作,还需要很多其他方面的技能。最近,来自美国求职公司 Indeed 的一份报告显示:在全美工作技能需求中,Linux/Shell技能仅次于SQL、Java、Python,是排名第四的计算机关键技能,力压JavaScript。

相对于SQL、Java、Python而言,Linux/Shell可谓是即简单又复杂。记住一个命令就能上手操作,看起来Shell很简单;shell命令虽然简单但是数量很大,而且参数选项又很繁琐,致使我们学了忘、忘了再学,总感觉没有学好学会,没有底气。所以说,shell又是一门难学的技术。

曾经有人喊出“让天下没有难做的生意”,也有人喊出“让天下没有难学的技术”,实际上,生意依然很难做,搞技术的仍然是996,因为这些只是口号,听听而言,不要当真。

shell之所以难学是因为它有“命令很多、参数繁琐”两大特点,是一个高维的知识空间。唯有找到联系,才能“降维”,才能让天下没有难学的shell。

命令与生活的联系,命令与命令之间的联系,只要找到内在联系,两个命令、三个命令、五个命令往往结合成一块儿东西。不仅量变少了,shell命令还能学活,有左右逢源的灵气。

就拿空格来说,深入研究一下,就能挖出一串东西,空格不再是冰冷冷的符号,更有人文色彩,更让人感到亲切。

空格的ASCII码是32,32是个有故事的数字,人的牙齿是32个。象棋有32个棋子。在shell中数组是通过空格来分割,其他的语言往往喜欢用逗号来分割。为什么shell要用空格来分割呢?这里面也有学问:shell的命令参数的基本规则是:command arg1 arg2 arg3…,各个参数靠空格分隔,其传入命令内部将转换成数组。命令行参数(依靠空格分隔)和数组的语法定义(依靠空格分隔)是一脉相承的,所以在shell中数组用空格分隔才算是合情合理。

再拿别名来说,数据库中有表别名和列别名,在C/C++有类型别名,而在shell里面有命令别名。从数据库联系到shell,采用这样的思路,对“别名”的理解才会有深度,才能把别名深入人心,才能运用自如。

再说一下shell的排序命令。大凡排序的地方,总是会涉及到稳定性。排序算法的稳定性大家应该都知道,通俗地讲就是能保证两个相等的数其在序列的前后位置和排序后它们两个的前后位置顺序相同。出现稳定性的问题根源在于出现了相同数据,可以踢出重复数据:sort -n filename | uniq。sort是将原有文件进行排序,而uniq是将相邻的行进行去重。通过排序的稳定性这个枢纽,把数据结构和shell中的sort uniq命令联系了起来,这样大家对unique的理解是不是更深了一步呢?网上很多文章,一笔带过,止步于“数据重复”,没有触及“算法稳定性”这个层面,这样的学习方式是肤浅的。

shell里面的命令很多,参数很多,但是每个命令都如同一个小精灵,它是有外形,有内涵,有活力的。挖掘命令背后的东西,发现命令背后的联系,体会命令字符的魅力,这就是《趣谈shell》的特点。《趣谈shell》的口号是:让天下没有难学的shell。欢迎大家关注《趣谈shell》。

相关文章

Java程序员需要具备哪些专业技能?

我们都知道,Java程序员是一个技术岗位,从技术上和业务上都需要不断地提升自我。经常有小伙伴疑惑:一个合格的Java程序员需要会哪些东西?今天,就来和大家好好聊一聊,超多干货,快快收藏哦! Java程...

Java 开发人员所需的技能

  Java 的潜力一直是许多公司的话题。 事实上,几乎每家公司都在使用 Java,无论是小公司还是一些大型科技巨头公司。另一方面,还有许多其他公司正在招聘 Java 开发人员。Java开发人员技能可...

【重磅】JAVA工程师入行秘籍:必备技能与未来发展趋势!

作为一种在全球范围内应用广泛的编程语言,Java以其稳定性、跨平台性和高性能等优势,成为了企业级应用开发的首选。而对于许多程序员来说,成为一名合格的Java工程师,无疑是进入软件开发行业的黄金通道。那...

经验 | Java工程师需要具备的25个技能

在Java工程师日常的开发过程中,由于业务的不同,可能关注的点有很多不一样的地方,但是在技术掌握层面还是有一些共性的。本文概括了在Java工程师开发、测试、部署等方面的25个必备技能,供大家参考。01...

一个高级Java工程师需要掌握哪些技能?

Java核心知识,包括集合类,IO/NIO,JVM,内存模型,泛型,异常,反射,多线程,锁,CAS,AQS等数据结构与算法,包括常见的排序,查找,树,图,堆,栈,队列,链表,哈希表等,以及一些经典的算...

Java基础知识有哪些 怎么不断提高专业技能

  Java基础知识有哪些?怎么不断提高专业技能?在学习Java的过程中,需要从基础知识慢慢理解,通过一点点的学习积累,能够不断懂得编程的概念。基础知识的学习非常重要,Java编程其实并不难学,难的是...