无需安装的CLI才是最好的

\

本文关键字

\\
  • Azure Cloud Shell是运行在浏览器上的一个完整的终端\\t
  • 可以像配置本地终端那样配置Azure Cloud Shell\\t
  • 可以在Azure Cloud Shell中使用vim、emacs,它甚至提供了精简的VS Code体验\\t
  • 实际上是通过浏览器向后端的Unbuntu终端发送命令\\t
  • Cloud Shell让我们可以使用Azure CLI而无需安装任何东西\
\\

前几天,我的一个朋友在Azure上部署了Node,但他的网站运行不起来。我从来不会错过证明自己不是讨厌鬼的机会,所以我慷慨地向他提供了帮助。

\\

他收到的错误消息是“服务不可用”,这正是我最喜欢的错误类型,因为这个错误不能代表什么,它就像是“烤面包上的奶酪”。

\\

5b546e0f781193c843a7a586b6923081.jpg

\\

为了找出真正的错误,我需要查看日志文件。当时,我正准备问我的朋友是否安装了Azure CLI。我意识到,如果他没安装的话,那会有点乱。

\\

他在用Mac还是Windows?他安装了Homebrew了吗?他用的Python的版本是什么?天哪!还有Python的版本问题。

\\

我们有点紧张了,而我也不想再添点麻烦,说什么“安装这个CLI,这样我们就可以读取日志文件”。

\\

后来,我意识到,其实我们不必做任何事情。我们不需要安装Azure CLI就可以使用它。我们所需要的只是Azure Cloud Shell而已。

\\

Azure Cloud Shell

\\

“Cloud Shell”是一个运行在浏览器上的终端。它有几种不同的访问方式。如果已经打开了Azure门户网站,可以直接点击“铃铛”旁边的小图标(请参看下图)。

\\

这会弹出一个新的终端窗口,Azure CLI已经安装于其中,无需登录。

\\

c1231f4c8868fd0a97b29030b904e04f.jpg

\\

另一种方式是访问shell.azure.com

\\

94ecae3ec3521e7ef100f19b9c13febd.jpg

\\

如果安装了Azure Account扩展,那么可以在VS Code中登录。只需打开命令面板并查找“Cloud Shell”。

\\

4e0e03a288d3cf331a775f30cf2ea8fd.jpg

\\

在启动了Cloud Shell实例后,就可以很容易地查看日志了。不需要登录,你只需要输入Azure CLI命令行,就好像你是个老专家。我们访问了他的站点日志,发现依赖项中漏了一个npm包。难道这不是每个Node应用程序经常碰到的问题吗?

\\

cec04fd2a0151e05b276f284cf5f7893.jpg

\\

这不是我第一次看到Cloud Shell,但是,这是我第一次领悟到它的妙处。

\\

当我第一次看到它时,我认为……

\\

78f13e4125d0b9583e1ba1ebc136ff07.jpg

\\

我没有领悟到。我的意思是,我已经有了一个终端,我有点喜欢它。它正在推出一个很好的Flat UI主题,我已经花了很多时间来调整它,但我总是记不住也找不到所有的profile文件。是~/.bashre,还是~/.zshrc?到底是不是~/.bash_profile?如果我有了~/bashrc,那还要它干嘛?生活简直变得毫无意义。

\\

b4267d484112417776c0c913e85f299f.jpg

\\

但Cloud Shell却非常棒,不是因为它取代了终端,而是因为它无需安装就能让我们访问CLI。

\\

我们倾向于安装大量的CLI,但配置它们可不容易。我花了太多的时间与Ruby和Python版本做斗争,它们都是以安装CLI为名,但实际上与Python或Ruby毫无关系。我宁愿不要经历这个过程。

\\

Azure Cloud Shell给了我们无需配置的CLI。Python是什么版本?无关紧要。有Cloud Shell就可以了。而且很显然,我有一些Python运行时创伤后应激障碍。

\\

云终端处处皆是。肯定不会只有Azure这么一个。让我感兴趣的是,它们是真实的“终端”吗?我能用它们做些什么?

\\

我们一起来寻找答案。

\\

vim

\\

首先,我们要知道的是它支持vim吗?

\\

e5fa41dec2163aafeb96182a78162007.jpg

\\

是的,它可以支持VIM,它还提供了所有VIM的彩蛋

\\

fda0f507f9472d4dd6fa6a38fd941a71.jpg

\\

正如John Oliver所说的——“很酷”。

\\

接下来,我们需要知道是否可以通过它来安装一些东西。这里的“东西”,指的是“cowsay”。

\\

apt-get

\\

没有我的cowsay,就不算是终端,因此,我试图安装cowsay。

\\

3b9f72cd259ea485f2c8ec3639459ceb.jpg

\\

没有sudo!但是,文档上确实提到,禁用访问是被禁用的。我猜想,这是为了防止像我这样的人乱用服务器而不小心把系统文件给删了。

\\

好吧。太可惜了。但是,我没有被吓倒。我们来看看是否有emacs。

\\

a79a7eb12ba4403d61d94ebcd88bf9dd.jpg

\\

有emacs。那么我们还能够在emacs里玩贪吃蛇游戏吗?

\\

ed047abb3ed5cfe0df3a0c4b0709f2ff.jpg

\\

我是这世界上最糟糕的贪吃蛇玩家。这游戏让我感到非常紧张。我更喜欢超级玛丽游戏,什么时候可以在emacs上玩这个游戏呢?

\\

好,废话少说。我们来看看是否可以定制这玩意儿。在这个终端中,我们需要一些东西来好好使用Azure CLI。从把shell更改为zsh开始。

\\

zsh

\\

我们已经知道我们什么都不能安装,但是如果已经有了zsh呢?我们试着运行一下看看。

\\

31dccc4c945f70caa97460fc6f314d37.jpg

\\

可以!现在,我们可以添加oh-my-zsh了吗?它们是点文件,因此可以通过curl来安装。

\\

d076348dbbe553855d8853336fa4705e.jpg

\\

现在,我们有了进展。我们可以更改主题吗?试试用“云”。看起来不错。

\\
\// .zshrc file\#设置要加载的主题名称。如果设置成“随机”,\#每次加载oh-my-zsh就随机加载一个主题。\#参看https://github.com/robbyrussell/oh-my-zsh/wiki/Themes\ZSH_THEME=\"cloud\"
\\

54a1c0879d8a2906a2443e16b8e22915.jpg

\\

很好,我很喜欢。这不是一个明亮的主题,但是我看到了一朵小云。

\\

我应该注意到Cloud Shell不兼容某些主题。比如,在使用最流行的“Agnoster”主题时,它似乎不喜欢渲染燕尾形。

\\

dee4bce0fe72785adfbbe13bf8a2fef3.jpg

\\

假如你想知道,“Agnoster”看起来应该是这样的:

\\

840baf310d29b2ccd4c3e6ae18a4f46d.jpg

\\

没问题,反正我不用“Agnoster”。现在,我们来做一些插件。我用的最多的一个是“zsh-autosuggestions”。Jessica Deen给我看了这个,它基本上只是追踪你输入终端的所有内容,然后,如果你再输入之前输过的内容,它就会给出提示。像这样:

\\

df7eddd596ee7d7b4e3e55a585b5fb0b.jpg

\\

看看这个是否有帮助?

\\

这个zsh-autosuggestion插件并不在oh-my-zsh插件列表中,因此,可以手动安装:

\\
\git clone https://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions
\\

然后,添加到你的~/.zshrc文件中:

\\
\source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
\\

我也冒昧地安装了git、jsontools和其他一些工具,它们都能用。

\\

83b5c036503ccb5f9ec61094385a653b.jpg

\\

现在,让我们把zsh设置成默认shell。通常,这是通过安装zsh来完成,但是现在已经安装好了。我们也不能正常使用chsh,因为没有权限。

\\

Shayne Boyer指出,可以在~/.bashrc中设置SHELL变量。因为Cloud Shell对任何人都是相同的,你的zsh应该和我的zsh一样。

\\
\export SHELL=/usr/bin/zsh\exec /usr/bin/zsh -ld
\\

现在,我们在ZSH中启动了我们的主题和所有默认的插件。即使是在VS Code中打开,也一样。我们在任何地方使用Cloud Shell,都会用到这个设置。

\\

78e154f7ce43ed7d5baf386585658992.jpg

\\

npm

\\

作为JavaScript开发者,我必须有自己的Node。对我来说,默认情况下,在终端中找到Node一点也不奇怪。但是,让我感到震惊的是,npm也是默认安装好的。

\\

但是,这还不是全部。

\\

文档中说它也支持make、maven和pip。Java开发人员看到最后这句话可能会感到很满意。我不是一个会经常使用make或pip的用户。我通常只在从Stack Overflow复制某些东西到我的终端上时才会用到它们。

\\

它的工作原理是什么?

\\

每次打开一个Cloud Shell实例,就会获得一个Docker容器,里面运行着Ubuntu。然后,这个Cloud Shell通过web socket连接到该实例,成为Ubuntu容器的接口。

\\

例如,如果在Cloud Shell中输入“Docker”,以下就是传给容器的内容:

\\

ae5e9ddf2fbf687b6a89957847dfd50e.jpg

\\

看到了吗?它们是“d”“o”“c”“k”“e”“r”(绿色的箭头是向外的)。注意,web socket也会对每次的键盘输入做出响应(红色的箭头是向内的)。因为,这就是终端该做的事。看看它对“[39m”和刚输入的字符做出怎样的响应?这是ANSI语法高亮显示,这也就是Cloud Shell为什么会知道用何种颜色显示文本,以及渲染主题和进行其他高亮显示。

\\

在执行命令后,它就返回容器的输出。

\\

edd71c075d7f4602dae5e7fd7d5de337.jpg

\\

在Cloud Shell中输入字符时,通过网络发送它们,在终端中执行,然后返回结果。

\\

这真是非常了不起的壮举。它们把浏览器变成远程终端的代理UI。

\\

Cloud Shell使用Azure Storage来持久化存储。所有的配置文件和工作所需的其他任何文件都存储于其中,并通过底层Ubuntu容器来挂载。

\\

最新特性

\\

写完本文,打算过一段时间再发布,但Cloud Shell迫不及待地添加了一个新的、相当“有人气”的功能。

\\

现在,可以通过在shell中输入code来获得一个类似VS Code的编辑器。该编辑器在终端上方打开。我说它类似VS Code,是因为它显然是个来自VS Code的文本编辑器,提供了查找与替换、多游标和命令面板(F1)。

\\

892510afa4164ee1aa2535649d449d42.jpg

\\

不是每个人都适合用vim。这里说的每个人,指的是我。对于其他人,现在有了这个漂亮的可视化编辑器,我称之为VS Code,即使它不是VS Code。

\\

我甚至找出了如何关闭它的方法。Vim的用户们,请看下图。

\\

2727880153bc572f21bd0a98d8efb856.jpg

\\

了解更多Cloud Shell的相关信息

\\

Cloud CLI的东西都是必要的,但是不容易安装。Cloud Shell提供了CLI的全部功能以及相当强大的终端体验,而所需的只是浏览器。

\\

Azure Docs可以找到Cloud Shell和Azure Mobile app的文档,也可以找到Azure Cloud Shell支持的所有功能的完整列表

\\

作者简介

\\

e6d96bf2659998fe0b6631e328d35629.jpgBurke Holland 住在田纳西州纳什维尔,是一位前端程序员。他热爱JavaScript,因为这是他唯一能用来表达自己的方式。明白吗?不明白也没关系。Burke的博文只比他写的代码好那么一点点,绝对不如他用第三人称来介绍自己那么好。Burke是微软Azure团队的一员。可以通过他的推特@burkeholland联系他。

\\

阅读英文原文:The Best CLI Is the One You Don’t Have to Install

\\

感谢无明对本文的审校。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值