内容简介:前几天,我的一个朋友在Azure上部署了Node,但他的网站运行不起来。我从来不会错过证明自己不是讨厌鬼的机会,所以我慷慨地向他提供了帮助。他收到的错误消息是“服务不可用”,这正是我最喜欢的错误类型,因为这个错误不能代表什么,它就像是“烤面包上的奶酪”。
本文关键字
- Azure Cloud Shell是运行在浏览器上的一个完整的终端
- 可以像配置本地终端那样配置Azure Cloud Shell
- 可以在Azure Cloud Shell中使用vim、emacs,它甚至提供了精简的VS Code体验
- 实际上是通过浏览器向后端的Unbuntu终端发送命令
- Cloud Shell让我们可以使用Azure CLI而无需安装任何东西
前几天,我的一个朋友在Azure上部署了Node,但他的网站运行不起来。我从来不会错过证明自己不是讨厌鬼的机会,所以我慷慨地向他提供了帮助。
他收到的错误消息是“服务不可用”,这正是我最喜欢的错误类型,因为这个错误不能代表什么,它就像是“烤面包上的奶酪”。
为了找出真正的错误,我需要查看日志文件。当时,我正准备问我的朋友是否安装了Azure CLI。我意识到,如果他没安装的话,那会有点乱。
他在用Mac还是Windows?他安装了Homebrew了吗?他用的 Python 的版本是什么?天哪!还有Python的版本问题。
我们有点紧张了,而我也不想再添点麻烦,说什么“安装这个CLI,这样我们就可以读取日志文件”。
后来,我意识到,其实我们不必做任何事情。我们不需要安装Azure CLI就可以使用它。我们所需要的只是 Azure Cloud Shell 而已。
Azure Cloud Shell
“Cloud Shell”是一个运行在浏览器上的终端。它有几种不同的访问方式。如果已经打开了Azure门户网站,可以直接点击“铃铛”旁边的小图标(请参看下图)。
这会弹出一个新的终端窗口,Azure CLI已经安装于其中,无需登录。
另一种方式是访问 shell.azure.com 。
如果安装了 Azure Account扩展 ,那么可以在VS Code中登录。只需打开命令面板并查找“Cloud Shell”。
在启动了Cloud Shell实例后,就可以很容易地查看日志了。不需要登录,你只需要输入Azure CLI命令行,就好像你是个老专家。我们访问了他的站点日志,发现依赖项中漏了一个npm包。难道这不是每个Node应用程序经常碰到的问题吗?
这不是我第一次看到Cloud Shell,但是,这是我第一次领悟到它的妙处。
当我第一次看到它时,我认为……
我没有领悟到。我的意思是,我已经有了一个终端,我有点喜欢它。它正在推出一个很好的Flat UI主题,我已经花了很多时间来调整它,但我总是记不住也找不到所有的profile文件。是~/.bashre,还是~/.zshrc?到底是不是~/.bash_profile?如果我有了~/bashrc,那还要它干嘛?生活简直变得毫无意义。
但Cloud Shell却非常棒,不是因为它取代了终端,而是因为它 无需安装 就能让我们访问CLI。
我们倾向于安装大量的CLI,但配置它们可不容易。我花了太多的时间与 Ruby 和Python版本做斗争,它们都是以安装CLI为名,但实际上与Python或Ruby毫无关系。我宁愿不要经历这个过程。
Azure Cloud Shell给了我们无需配置的CLI。Python是什么版本?无关紧要。有Cloud Shell就可以了。而且很显然,我有一些Python运行时创伤后应激障碍。
云终端处处皆是。肯定不会只有Azure这么一个。让我感兴趣的是,它们是真实的“终端”吗?我能用它们做些什么?
我们一起来寻找答案。
vim
首先,我们要知道的是它支持vim吗?
是的,它可以支持VIM,它还提供了所有VIM的 彩蛋 !
正如John Oliver所说的——“很酷”。
接下来,我们需要知道是否可以通过它来安装一些东西。这里的“东西”,指的是“cowsay”。
apt-get
没有我的cowsay,就不算是终端,因此,我试图安装cowsay。
没有sudo!但是, 文档上确实提到 ,禁用访问是被禁用的。我猜想,这是为了防止像我这样的人乱用服务器而不小心把系统文件给删了。
好吧。太可惜了。但是,我没有被吓倒。我们来看看是否有emacs。
有emacs。那么我们还能够在emacs里玩贪吃蛇游戏吗?
我是这世界上最糟糕的贪吃蛇玩家。这游戏让我感到非常紧张。我更喜欢超级玛丽游戏,什么时候可以在emacs上玩这个游戏呢?
好,废话少说。我们来看看是否可以定制这玩意儿。在这个终端中,我们需要一些东西来好好使用Azure CLI。从把 shell 更改为zsh开始。
zsh
我们已经知道我们什么都不能安装,但是如果已经有了zsh呢?我们试着运行一下看看。
可以!现在,我们可以添加oh-my-zsh了吗?它们是点文件,因此可以通过curl来安装。
现在,我们有了进展。我们可以更改主题吗?试试用“云”。看起来不错。
// .zshrc file #设置要加载的主题名称。如果设置成“随机”, #每次加载oh-my-zsh就随机加载一个主题。 #参看https://github.com/robbyrussell/oh-my-zsh/wiki/Themes ZSH_THEME="cloud"
很好,我很喜欢。这不是一个明亮的主题,但是我看到了一朵小云。
我应该注意到Cloud Shell不兼容某些主题。比如,在使用最流行的“Agnoster”主题时,它似乎不喜欢渲染燕尾形。
假如你想知道,“Agnoster”看起来应该是这样的:
没问题,反正我不用“Agnoster”。现在,我们来做一些插件。我用的最多的一个是“zsh-autosuggestions”。Jessica Deen给我看了这个,它基本上只是追踪你输入终端的所有内容,然后,如果你再输入之前输过的内容,它就会给出提示。像这样:
看看这个是否有帮助?
这个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和其他一些工具,它们都能用。
现在,让我们把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,都会用到这个设置。
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”,以下就是传给容器的内容:
看到了吗?它们是“d”“o”“c”“k”“e”“r”(绿色的箭头是向外的)。注意,web socket也会对每次的键盘输入做出响应(红色的箭头是向内的)。因为,这就是终端该做的事。看看它对“[39m”和刚输入的字符做出怎样的响应?这是ANSI语法高亮显示,这也就是Cloud Shell为什么会知道用何种颜色显示文本,以及渲染主题和进行其他高亮显示。
在执行命令后,它就返回容器的输出。
在Cloud Shell中输入字符时,通过网络发送它们,在终端中执行,然后返回结果。
这真是非常了不起的壮举。它们把浏览器变成远程终端的代理UI。
Cloud Shell使用Azure Storage来持久化存储。所有的配置文件和工作所需的其他任何文件都存储于其中,并通过底层Ubuntu容器来挂载。
最新特性
写完本文,打算过一段时间再发布,但Cloud Shell迫不及待地添加了一个新的、相当“有人气”的功能。
现在,可以通过在shell中输入code来获得一个类似VS Code的编辑器。该编辑器在终端上方打开。我说它类似VS Code,是因为它显然是个来自VS Code的文本编辑器,提供了查找与替换、多游标和命令面板(F1)。
不是每个人都适合用vim。这里说的每个人,指的是我。对于其他人,现在有了这个漂亮的可视化编辑器,我称之为VS Code,即使它不是VS Code。
我甚至找出了如何关闭它的方法。Vim的用户们,请看下图。
了解更多Cloud Shell的相关信息
Cloud CLI的东西都是必要的,但是不容易安装。Cloud Shell提供了CLI的全部功能以及相当强大的终端体验,而所需的只是浏览器。
在 Azure Docs 可以找到Cloud Shell和Azure Mobile app的文档,也可以 找到 Azure Cloud Shell 支持的所有功能的完整列表 。
作者简介
Burke Holland 住在田纳西州纳什维尔,是一位前端程序员。他热爱JavaScript,因为这是他唯一能用来表达自己的方式。明白吗?不明白也没关系。Burke的博文只比他写的代码好那么一点点,绝对不如他用第三人称来介绍自己那么好。Burke是微软Azure团队的一员。可以通过他的推特@burkeholland联系他。
阅读英文原文: The Best CLI Is the One You Don’t Have to Install
感谢无明对本文的审校。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 微软Visual Studio Code更新:安装扩展现已无需重启应用
- 无需 Docker 也能构建容器
- 无需括号与分号的XSS
- 无需公网IP就能异地组网?
- 一种无需用户交互捕获哈希的方法
- 无需宏,PPT也能用来投递恶意程序
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
算法Ⅰ~Ⅳ(C++实现):基础、数据结构、排序和搜索
Sedgewick / 高等教育出版社 / 2002-1 / 49.00元
本书通过C++实现方案以简洁、直接的方式对书中的算法和数据结构进行表述,并向学生提供在实际应用中验证这种方法的手段。 本书广泛地论述了与排序、搜索及相关应用有关的基本数据结构和算法。覆盖了数组、链表、串、树和其他基本数据结构,更多地强调抽象数据类型(ADT)、模块化程序设计、面向对象程序设计和C++类。本书包括排序、选择、优先队列ADT实现和符号表ADT(搜索)实现,配有帮助学生学习计算......一起来看看 《算法Ⅰ~Ⅳ(C++实现):基础、数据结构、排序和搜索》 这本书的介绍吧!