一、Linux常用的脚本语言

主要有shell、Perl、Python,还有PHP也是可以做为脚本语言的,不过用的比较少。
Perl现在还在用的都是大神吧,新人几乎没人会去学Perl了。国内就是这种情形,国外就不太清楚了。
shell脚本是过程式编程,就是根据想要实现的功能从前往后一步一步写代码来实现。这种对于大型项目不是很合适,很多脚本无法重用。
Python是一门支持面向对象的编程语言,可以创建类放在那边,等谁想用时就可以调用,大大节省了开发时间。
程序语言发展到现在,shell语言已经越来越没有那么重要了。但是也不能完全抛弃,毕竟临时写个小脚本,shell还是最快的。
但现在光会shell已经无法满足平时的工作要求了,所以学习Python也几乎是必须的了。

其实语言都是工具,只要用好了一种就不错了。
不过由于在公司内,不是你一个人工作,一般都是需要团队合作,所以学一种大家都在用的语言就很重要了。

二、shell的学习

shell有很多种,不过我们一般说的都是Bourne Again Shell,也就是我们常见的/bin/bash。
要想写shell脚本,当然首先要用文本编辑器,Linux下有两个最出名的文本编辑器:Vim 和 Emacs,还有一个nano,不怎么出名。
Emacs号称是最强大的文本编辑器,我是用不习惯,所以最后成了Vim党。
Linux界有一个笑说是这么说Vim的:
问题:如何得到一串随机字符串?
答:让一个新手退出Vim。

因为要使用Vim都是需要命令来操作的,不像Windows里那样鼠标点点就行了。
要是不知道命令,真的是不知道怎么退出的。

vim现在生态很好,有别人制作的现成的各种插件可以使用。完全可以打造成一个功能强大的IDE。
去github.com上搜索vim,能搜到很多很好的配置好的vim环境。

我个人是在用exVim这套环境,网站https://exvim.github.io,基本上可以作为一个IDE使用。
我用Django开发网站时都是用这套环境,而没有去使用PyCharm这种专业IDE。

一句话:要多用,坚持用,习惯就好了。

推荐几个在线学习Vim的网站:
http://www.atool.org/vim.php
https://www.openvim.com/tutorial.html
https://vim-adventures.com/

学好了Vim,才好开始真正学shell。
最简单的shell就是你平时命令的组合。
比如列出/tmp目录下的文件,然后输出显示/tmp/hello.txt文件内容的一个脚本:
ls /tmp
cat /tmp/hello.txt

我们就可以把这两句命令写到一个文件里,文件名后缀可以随便自己定,但一般都是以.sh来后缀名,这样这个文件就是一个脚本了。
#vim test.sh

ls /tmp
cat /tmp/hello.txt

执行这个脚本:
#bash test.sh

111_\2018.log  111_2018.log  1.sh  hello.txt  tmp_2018-07-06.log
hello,world

平时我们是不太会用“bash + 脚本名称”这种方式来执行脚本,都是在脚本第一行指定执行的shell路径,再赋予执行权限的方式来执行。
在脚本第一行写上解释器路径,这样脚本就知道用哪种shell来执行脚本了。
#vim test.sh

#!/bin/bash
ls /tmp
cat /tmp/hello.txt

然后再赋予这个脚本执行权限:
#chmod +x test.sh

最后就可以不用bash来执行脚本了,只要直接执行这个脚本就行。
#/root/test.sh

111_\2018.log  111_2018.log  1.sh  hello.txt  tmp_2018-07-06.log
hello,world

这种shell脚本是最低级最简单的,光会这种是远远不够的。
我们还需要用到变量,if判断,for和while循环,还要用到函数。
这些我这里就不讲了,这些东西都要靠自己去学去写,也不是一两句能说清楚的,主要还是教大家学习方法。

三、Python的学习

一个最简单的脚本跟shell也差不多,可以用python命令执行,也可以在文件中指定python路径再赋权来执行。
这里要强调一下,写Python一定要用IDE工具来写,因为Python对缩进是敏感的,如果用普通的记事本来写Python,绝对是坚持不了的。Linux下就可以把VIM打造成IDE。

打印输出“hello,world”字符的一个小脚本:
#cat hello.py

print('hello,world')

# python hello.py

hello,world

Python还有一个最大的优势就是生态好,库多。
所以基本你想要实现什么功能,搜索一下,就会发现别人已经写好了,你只要import导入自己脚本中,再调用就可以实现很复杂的功能了。这也是很多没有编程经验的人选Python的一个原因。

比如我想打印系统时间戳,就导入时间库就行。
# cat nowtime.py

# -*- coding: utf-8 -*-
import time
now_time = time.time()
print (now_time)

# python nowtime.py

1531039990.99

四、学习路径与方法

像shell脚本,如果一点基础没有,一开始就使用简单的命令组合来写脚本就可以。
随着对shell的熟悉,慢慢加入if/for/函数等元素,去实现更复杂的功能。
我觉得shell现在学的够用就行了,主要还是花精力去学Python这种语言。
学习网站:
菜鸟教程 http://www.runoob.com/linux/linux-shell.html

对于Python,首先当然是学习它的语法了。
然后就可以慢慢去练,这里推荐菜鸟教程的100例,可以照着慢慢去练习,主要是熟悉它的语法,也是让自己熟悉Python这种语言的风格。
再然后就需要用在平时工作中,开始可以把自己写的shell脚本用Python重新写过。
如果十几二十几个脚本练下来,一般都能达到不错的效果。
后面就可以用函数用类来编写一些方便调用和扩展的脚本。
最后我们不能只停留在写脚本这个层面上,我们应该根据自己的兴趣,选择一个方向去研究和使用Python,比如爬虫、大数据分析、WEB开发、自动化等等。只有去搞这些东西,你才能学的更多,也更有动力学下去。
推荐两个学习Python基础的网站:
菜鸟教程 http://www.runoob.com/python/python-tutorial.html
廖雪峰的Python教程 https://www.liaoxuefeng.com/

一定要多练,工作中如果用不到,自己也要去找些小项目去写。
编程一定要有意识的去培养良好的编程习惯,比如要有注释,要有合理的命名规范,这些在团队协作时非常重要。
在学习的过程中,要去学习程序设计相关的理论知识,比如面向对象编程的设计原理,只有了解了这些理论知识,你编程才能做到事半功倍的效果。
凡事都不能闷着头做,理论知识也是非常重要的。