小二是公司新来的实习生,之前面试的过程中对答如流,所以我非常看好他。第一天,我给他了一台新电脑,要他先在本地搭建个 Java 开发环境。
二话不说,他就开始马不停蹄地行动了。真没想到,他竟然是通过命令行的方式安装的 JDK,一行命令就搞定了!连环境变量都不用配置,这远远超出了我对他的预期。
我以为,他会傻乎乎地下一步下一步来安装 JDK,就像这样。
然后这样配置环境变量。
结果他是这样的,就一行命令,环境变量也不用配置!
卧槽!牛逼高大上啊!
看着他熟练地在命令行里安装 JDK 的样子,我的嘴角开始微微上扬,真不错!这次总算招到了一个靠谱的。
于是我就安排他做一个记录,打算发表在我的小破站《Java 程序员进阶之路》上。从他嘴里了解到,他用的命令行软件管理器叫 chocolatey,这是一个Windows下的命令行软件管理器,在 GitHub 上已经收获 8.2k+的星标,可以方便开发者像在Linux下使用yum命令来安装软件,或者像在macOS下使用brew 命令来安装软件,非常酷炫。
以下是他的记录,一起来欣赏下。
先来了解 shell
对于一名 Java 后端程序员来说,初学阶段,你可以选择在 IDE 中直接编译运行 Java 代码,但有时候也需要在 Shell 下编译和运行 Java 代码。
Windows 下自带的 Shell 叫命令提示符,或者 cmd 或者 powershell,macOS 下叫终端 terminal。
但当你需要在生产环境下部署 Java项目或者查看日志的话,就必然会用到 Shell,这个阶段,Shell 的使用频率高到可以用一个成语来形容——朝夕相伴。
一些第三方软件会在原生的 Shell 基础上提供更强大的功能,常见的有 tabby、Warp、xhsell、FinalShell、MobaXterm、Aechoterm、WindTerm、termius、iterm2 等等,有些只能在 Windows 上使用,有些只能在 macOS 上使用,有些支持全平台。还有 ohmyzsh 这种超神的 Shell 美化工具。
这里,我们列举一些 Shell 的基本操作命令(Windows 和 macOS/Linux 有些许差异):
- 切换目录,可以使用 cd 命令切换目录,
cd ..
返回上级目录。
- 目录列表,macos/linux 下可以使用 ls 命令列出目录下所有的文件和子目录(Windows 下使用 dir 命令),使用通配符
*
对展示的内容进行过滤,比如ls *.java
列出所有.java
后缀的文件,如果想更进一步的话,可以使用ls H*.java
列出所有以 H 开头.java
后缀的文件。 - 新建目录,macOS/Linux 下可以使用 mkdir 命令新建一个目录(比如
mkdir hello
可以新建一个 hello 的目录),Windows 下可以使用 md 命令。 - 删除文件,macOS/Linux 下可以使用
rm
命令删除文件(比如rm hello.java
删除 hello.java 文件),Windows 下可以使用 del 命令。 - 删除目录,macOS/Linux 下可以使用
rm -r
命令删除目录以及它所包含的所有文件(比如说rm -r hello
删除 hello 目录)。Windows 下可以使用 deltree 命令。 - 重复命令,macOS/Linux/Windows 下都可以使用上下箭头来选择以往执行过的命令。
- 命令历史,macOS/Linux 下可以使用
history
命令查看所有使用过的命令。Windows 可以按下 F7 键。
- 解压文件,后缀名为“.zip”的文件是一个包含了其他文件的压缩包,macOS/Linux 系统自身已经提供了用于解压的 unzip 命令, Windows 的话需要手动安装。
再来了解chocolatey
先安装 chocolatey。这是一个Windows下的命令行软件管理器,可以方便开发者像在Linux下使用yum命令来安装软件,或者像在macOS下使用brew 命令来安装软件,非常酷炫。
The biggest challenge is reducing duplication of effort, so users turn to Chocolatey for simplicity
传统的安装方式要么非常耗时,要么非常低效,在命令行安装软件除了简单高效,还能自动帮我们配置环境变量。
第一步,以管理员的身份打开 cmd 命令行。
第二步,执行以下命令:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
稍等片刻,就完成安装了。
安装完成后如下图所示:
如果不确定是否安装成功的话,可以通过键入 choco
命令来确认。
这里推荐几个非常高效的操作命令:
- choco search xxx,查找 xxx 安装包
- choco info xxx,查看 xxx 安装包信息
- choco install xxx,安装 xxx 软件
- choco upgrade xxx,升级 xxx 软件
- choco uninstall xxx, 卸载 xxx 软件
如何知道 chocolatey 仓库中都有哪些安装包可用呢?
可以通过上面提到的命令行的方式,也可以访问官方仓库进行筛选。
比如说我们来查找 Java。
好,现在可以直接在shell中键入 choco install jdk8
来安装 JDK8 了,并且会自动将Java加入到环境变量中,不用再去「我的电脑」「环境变量」中新建 JAVA_HOME 并复制 JDK 安装路径配置 PATH 变量了,是不是非常 nice?
稍等片刻,键入 java -version
就可以确认Java是否安装成功了。
不得不承认!非常nice!
再比如说安装 Redis,只需要找到 Redis 的安装命令在 Choco 下执行一下就 OK 了。
安装 Git:
choco install git.install
安装 node.js
choco install nodejs.install
安装 7zip
choco install 7zip
安装 Filezilla
choco install filezilla
Choco 上的软件包也非常的多,基本上软件开发中常见的安装包都有。
小结
通过小二的实战笔记,我们可以了解到。
对比下载安装包,通过图形化界面的方式安装 JDK,然后下一步,下一步是不是感觉在 Shell 下安装 JDK 更炫酷一些?
关键是还省去了环境变量的配置。
记得还没有走出新手村的时候,就经常被环境变量配置烦不胜烦。那下载这种命令行的方式,要比手动在环境变量中配置要省事一百倍,也更不容易出错。
通过 Choco 可以集中安装、管理、更新各种各样的软件。特别适合管理一些轻量级的开源软件,一条命令搞定,升级的时候也方便,不用再重新去下载新的安装包,可以有效治愈更新强迫症患者的症状。
如果不想特殊设置的话,Chocolatey 整体的操作与使用还是比较亲民的。就连刚接触软件开发的小白也可以直接使用,而且路人看着会觉得你特别厉害。
本文已收录到 GitHub 上星标 2.2k+ 的开源专栏《Java 程序员进阶之路》,据说每一个优秀的 Java 程序员都喜欢她,风趣幽默、通俗易懂。内容包括 Java 基础、Java 并发编程、Java 虚拟机、Java 企业级开发、Java 面试等核心知识点。学 Java,就认准 Java 程序员进阶之路?。
https://github.com/itwanger/toBeBetterJavaer
star 了这个仓库就等于你拥有了成为了一名优秀 Java 工程师的潜力。
没有什么使我停留——除了目的,纵然岸旁有玫瑰、有绿荫、有宁静的港湾,我是不系之舟。