竟然还用Notepad写Shell!!!当GNU Bash遇见VSCode
目录
来自GNU的操作系统原生——Bash
我是一名大数据开发。
我看过很多人在用Python,也有很多人给我推荐了Python。
我已经做开发十余年。
我并不排斥任何一种语言。
只要它用得顺手。
——我
用Scala写Spark
用Java写Flink
用SQL写业务分析、ETL
用C++写MFC
用Java写Web后端
用Bash写Job调度
不同的岗位,我们毫不例外要接触不同的场景。
见人说人话,见鬼说鬼话。
选择Bash的理由很简单,
-
Linux原生
-
大数据平台原生
还有其他的各种便利,例如:
- I/O重定向 → >>、<<、>、<
- 通过管道所有的程序 → |
- 整合任意的程序,无论是Python还是Java、或者是C、和C++
还有一点,它来自GNU(跟我念:葛怒)
它来自Freedom的世界。
GNU Bash |
可惜,现在很多人天天都在SHELL,
却很少有人去那段浪漫的IT历史。
甚至,很多人连GNU的LOGO都不认识,
更者,连GNU的官网都没有打开过。
综上,
所以我接受了Bash的其他缺点。
因为我也没有打算用它来编写特别复杂的程序,
它可以胜任我想让它完成的工作。
Bash生产力——即时调试
复杂环境Simulator
说到调试,让我印象最深刻的是——
2010年,用Tornoto的Simulator跑Wind River的Vxworks应用。
我当时是在Windows XP上开发、调试的。
Bash只是运行在Linux上,它的开发、调试成本一定要比开发Vxworks应用小很多。
它对应的只需要一个Simulator即可。
这个Simulator就是Linux on VMware or VirtualBox。
大多数开发环境都可以通过VMware搭建起来。
就像这样,
不要妄想这样连接生产环境。
Jump Server会让你望而却步。
对于我来说,
一定会用VMware把大数据的开发环境搭好,因为,我开发Bash需要用到Hadoop、Hive、Spark环境等等。
虽然,它无法跑大型一点的作业。
就像,Vxwork Simulator无法保证实时性一样。
但,谁会要求开发环境这些呢。
Bash可以连接Linux上的所有应用,
所以,别来说服在Windows上部署Ubuntu调试。
VSCode Bash开发环境配置
因为VSCode上有非常多的SHELL支持插件,而且是开源免费。我们就·使用VSCode来搭建我们的Bash开发环境。
安装VSCode
以下是我的VSCode版本,下载地址为:
https://code.visualstudio.com/
大家可以下载最新版本的VSCode。 |
安装VSCode远程开发插件
插件名称 | 说明 |
---|---|
Remote Development | 远程开发【必装】 |
ShellCheck | SHELL静态分析工具,可以帮助我们快速识别语法问题 |
shell-format | Shell脚本自动格式化 |
AutoComplate shell | Shell自动完成插件 |
Shell Syntax | 实时识别语法错误,并提示修复方法 |
Shell Banner Comments | 生成Shell脚本的Banner |
大家执行安装配置。
远程调试
这张图是VSCode官方的图,看右边的图,表示在远程机器或者虚拟机上建立一个开发的工作空间。然后左边就是本地,就是Windows,使用VSCode来开发。
系统要求
1、本地必须安装了Open SSH客户端。
如果发现自己的windows上没有,使用以下链接安装。
https://docs.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_install_firstuse
2、远程主机必须安装了SSH Server。支持情况如下:
window到Linux免密
配置Windows开发机器与Linux服务器免密认证。
找到C:\Users\[用户名]\.ssh目录,将id_rsa.pub中的内容复制到Linux服务器中的~/.ssh/authorized_keys文件。
可以用ssh测试下是否能够免密登录成功:
C:\Users\xxx>ssh admin@node1
Last login: Sat Feb 27 01:01:55 2021 from 192.168.88.1
Last login: Sat Feb 27 01:01:55 2021 from 192.168.88.1
[admin@node1 ~]$
如果windows没有.ssh目录,则执行ssh-keygen -t rsa -b 4096生成
连接到远程主机
操作步骤 |
---|
1、点击左下角小齿轮。 |
2、输入SSH,选择Remote-SSH: connect to host。 |
3、再输入要连接的用户和主机 |
4、执行Linux命令。 |
编码指节跳动
准备工作
先在Linux中创建一个目录,作为当前的项目空间。
su hadoop
mkdir -p ~/bash-test
SSH添加主机
因为经常在要node1这个节点开发Bash,可以我们把node1节点,添加到我们的常用host中。
操作步骤 |
---|
1、点击电脑小图标,再点击+号。 |
2、输入要SSH连接的服务器 |
3、按下确认,如果配置了免密则无需输入密码。 |
打开工作区
操作步骤 |
---|
1、连接节点 |
2、打开远程文件夹。 |
3、选择文件夹,点确定。 |
4、然后就可以快乐地写Bash了。 |
安装其他好用的SHELL插件
插件名称 | 说明 |
---|---|
ShellCheck | SHELL静态分析工具,可以帮助我们快速识别语法问题 |
shell-format | Shell脚本自动格式化 |
AutoComplete shell | Shell自动完成插件 |
Shell Syntax | 实时识别语法错误,并提示修复方法 |
Shell Banner Comments | 生成Shell脚本的Banner |
ShellCheck
Banner注释插件
AutoComplete插件
你会疯狂地爱上它。
更多的插件大家自己去尝试吧。
参考文献: