竟然还用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的世界。

image-20210226223347712
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搭建起来。

就像这样,

image-20210226230154106

不要妄想这样连接生产环境。

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/

image-20210227010302237
大家可以下载最新版本的VSCode。

安装VSCode远程开发插件

插件名称 说明
Remote Development 远程开发【必装】
ShellCheck SHELL静态分析工具,可以帮助我们快速识别语法问题
shell-format Shell脚本自动格式化
AutoComplate shell Shell自动完成插件
Shell Syntax 实时识别语法错误,并提示修复方法
Shell Banner Comments 生成Shell脚本的Banner

大家执行安装配置。

远程调试

image-20210227012118752

这张图是VSCode官方的图,看右边的图,表示在远程机器或者虚拟机上建立一个开发的工作空间。然后左边就是本地,就是Windows,使用VSCode来开发。

系统要求

1、本地必须安装了Open SSH客户端。

image-20210227012316153

如果发现自己的windows上没有,使用以下链接安装。

https://docs.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_install_firstuse

2、远程主机必须安装了SSH Server。支持情况如下:

image-20210227012359338

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、点击左下角小齿轮。
image-20210227013824487
2、输入SSH,选择Remote-SSH: connect to host。
image-20210227013909039
3、再输入要连接的用户和主机
image-20210227014014529
4、执行Linux命令。
image-20210227014049018

编码指节跳动

准备工作

先在Linux中创建一个目录,作为当前的项目空间。

su hadoop
mkdir -p ~/bash-test

SSH添加主机

因为经常在要node1这个节点开发Bash,可以我们把node1节点,添加到我们的常用host中。

操作步骤
1、点击电脑小图标,再点击+号。
image-20210227015055028
2、输入要SSH连接的服务器
image-20210227015128425
3、按下确认,如果配置了免密则无需输入密码。

打开工作区

操作步骤
1、连接节点
image-20210227015435346
2、打开远程文件夹。
image-20210227015539999
3、选择文件夹,点确定。
image-20210227015608403
4、然后就可以快乐地写Bash了。

安装其他好用的SHELL插件

插件名称 说明
ShellCheck SHELL静态分析工具,可以帮助我们快速识别语法问题
shell-format Shell脚本自动格式化
AutoComplete shell Shell自动完成插件
Shell Syntax 实时识别语法错误,并提示修复方法
Shell Banner Comments 生成Shell脚本的Banner

ShellCheck

Banner注释插件

AutoComplete插件

你会疯狂地爱上它。

更多的插件大家自己去尝试吧。

参考文献:

[1] https://code.visualstudio.com/docs/remote/ssh

posted @ 2021-02-27 23:33  斜杠代码日记  阅读(276)  评论(0编辑  收藏  举报