Reading view

There are new articles available, click to refresh the page.

对话 Hypershell:人人都能成为「钢铁侠」,是可以触及的未来!丨多样性公司

编者按:

当我们想喝可乐的时候,在极长的时间都只有两个选择:百事可乐和可口可乐。当我们选择手机的时候,有 90%的概率在苹果和华米 OV 等品牌里辗转。当我们买运动服饰的时候,第一时间想到的,大概率是 Nike、Adidas。

 

但世界之所以缤纷多彩,是因为在这些巨头之外,有一些不遵从传统,力求创造不同,注重设计和功能,着眼于明日的公司存在。

 

它们有着非主流的商业模式,设计与产品能提供独特的用户价值,和足够的社交谈资。重点是,它们没有大公司的包袱,敢于不顾一切的进步。它们,是「多样性公司」。

 

多样性,是开放世界的关键。爱范儿相信,只有真正关注和理解多样性公司才能比更多人更早地看见未来。在同名栏目中,爱范儿将以专访的形式,与你一同见证这些多样性公司,如何重塑未来,定义新常态。

本文为「多样性公司」栏目的第 6 篇,我们和 Hypershell 的创始人 Kelvin Sun 和联合创始人 Penn Yu 进行了对谈。

Hypershell【极壳(qiao)】是世界上第一家把机械外骨骼产品从医疗和工业领域带到消费者领域的创业公司,现在每个人都有机会去体验机械外骨骼产品给人类躯体带来的力量和体能提升。这有点像钢铁侠在山洞里造出了 Mark I 装甲一样,人类对于「自身」的想象力可以进一步扩展,更重要的是,这种科幻想象,真的有机会变成未来的现实。

Hypershell 目前一共有 3 款产品在售,分别是基础款 Hypershell Go X,功率更高的 Hypershell Pro X,更轻更耐久,采用了碳纤维和钛合金材质的 Hypershell Carbon X,这些产品可以在登山爬楼,徒步骑行等 10 多个场景提供腿部助力。理论上,拥有 1 马力功率的 Hypershell Pro X 可以提升 40% 的腿部力量,抵消 30 公斤的负重,节省 30% 的体能。

极壳首款产品年初在海外正式上市后,已在全球范围拥有超过 1 万名用户,在快速增长的成绩加持下陆续获得了来自 IDG、红杉等资本的青睐,已累计获得数千万美元融资。

Hypershell 也在积极开拓中国市场,八月将在国内前沿潮品渠道 DrivePro 开启体验与销售。

▲ Hypershell 团队

「我的生命没有一分钟被浪费,都在为 Hypershell 做准备」

Q: 为什么给公司取名叫 Hypershell?有什么特别的意义?

A:很大程度上是受一些文化作品的影响,对我们影响最深刻的就是《攻壳机动队》,Ghost in Shell,在这个动漫里 Shell 其实有蛮特殊的含义,指的是灵魂的容器,就是人除了自己的自由意志之外都是 Shell。

这个就跟我们做的事情强相关,我们想要最新的机器人技术和 AI 技术赋能人本身,增强人的自由意志。所以 Hypershell 其实也是指更好的 Shell,更好的人类自由意志的容器。

第二层意思来说,我们做的事情跟户外也是强相关,可以说我们的产品也是一种新的户外装备,过去户外装备有软壳 Soft Shell,硬壳 Hard Shell,Hypershell 也会是一种新的户外装备形态。

我们觉得 Hypershell 很能代表外骨骼这个品类,我们和用户测试了很多名字,比如 Exoskeleton,比如 Power Suit,最后大家普遍觉得 Hypershell 很有代表性,就像吉普车就是吉普车,不用叫四轮越野车一样。

Q: Hypershell 创始人 Kelvin Sun 之前创业的领域是在开发板领域,还有一些机器人项目,为什么这次创业选择了机械外骨骼赛道,毕竟这是一个非常新兴且未被验证的赛道。科技领域创业,你认为是应该更多基于趋势判断,还是源于某种使命感或个人直觉?

A:之前我做开发板其实也是一种机器人的控制器,做的一些机器人产品也是各种机械臂,然后还有 3D 打印以及机器人移动底盘的创业项目,它们都是非常典型的跨学科机电产品。

要说为什么选择外骨骼这个赛道,最真实的答案一定是基于我自己的愿景,我想要实现的东西,和当下趋势之间的双向奔赴,只有这样,事情才有机会做成。

每一代人创业的方向一定是很大程度上受他们小时候的各种因素和看过的文化作品的影响,我非常理解马斯克想让人类上火星,是因为他小时候看的都是《银河系漫游指南》之类的。我们这代人小时候看的都是高达,EVA,当时你会发现这些东西非常酷,但因为太科幻而很难成为现实。现在我会觉得这些东西极尽自己所能,能一点点地拉进现实世界里,这就是非常有意义的方向。

我初中做的第一个 DIY 项目,是一个肌电传感器,现在看,做外骨骼最难的地方在于人,怎么去理解人的运动意图,肌电信号恰好是个有效途径。

到了现在这个时间点,我会发现过往所有的精力其实都是在为此刻而存在。

外骨骼是一个包含机器人,人工智能,还有人机工程学的复杂领域,我觉得过去做的大量的各个方向的工作,都是在为这样一个目标做筹备。

回过头看,我的时间没有一分钟被浪费,这是一种很活得很真实的感觉。

▲ Hypershell 早期设计草图

Q: Hypershell 众筹的成绩非常不错,首月 2638 名支持者,123 万美元众筹金额,对于你们来说,众筹的作用是不是验证这款产品在消费级市场的潜力?

A:拿到第一笔融资过了半年,23 年年初的时候,我们第一版全功能的原型机出来了,等于是我们已经验证了这个产品的可行性,从脑子里的虚拟物件变成了实际的产品,还能给很多人去体验,大家都觉得功能上超出了预期。

当然我觉得原型机距离真正能够量产的产品差距还非常大,缺了很多工程细化和可靠性的优化,以及各种 corner case(边角案例)的推敲。

我们定义了消费级的外骨骼能够有最大 1 马力的功率,在很多场景够用了,然后续航还很长,接近 20 公里,同时它真实地融入 AI 能力,能够自适应多种多样的地形。

更重要的是,我们把这些能力打包起来,还有一个很亲民的价格,几百美元,相比于传统工业级外骨骼价格有数量级的降低。

当时对内来说是验证了概念的可行性,但我觉得一定要去验证这个品类的需求。很多做这种创新类消费硬件的公司,往往死在了闭门造车,拿着锤子找钉子,我们过去的创业经历也犯了大量这种错误。

众筹对我们的价值其实是进一步的 PMF(Product Market Fit)验证,是产品和市场需求之间匹配度的验证。

Q: 对于 Hypershell 这样在新兴领域的初创公司,目前公司面临的最大挑战是什么?

A:外骨骼是一个很需要技术创新和产品创新的赛道,这个品类的迭代一定不是依靠内卷和高压去实现的,而是要尊重时间,需要团队花时间沉下心,去思考,去理解,去不断摸索。

这种时间和过程的不可压缩性,和我自己的紧迫感是有矛盾的。

做外骨骼肯定是个长期的事情,需要未来几十年去努力和迭代,但整个硬件行业的竞争又非常激烈,节奏非常快。

甚至我们还没法依靠堆人力来解决问题,因为行业里不存在现成的外骨骼方向人才,我们筛选到合适的人也需要很长的培养周期,才会对外骨骼有系统性的理解。

另外我们也是在跟物理规则做对抗,相比于软件开发,Hypershell 的产品跟人有强相关和接触性,既要极致轻量化,又要极致高强度,这里面需要权衡和选择很多东西,外骨骼不仅前沿,链条又很长,需要从实验室环境牵引到产品化,中间还要在链路上的关键技术点做突破。

我们研发团队的构成,一半偏学术型,一半偏产品化,我们跑在靠前位置就是需要做大量实验室阶段的工作。

Q: 目前做机械外骨骼产品的初创企业有好几家,产品形态看上去也比较接近,Hypershell 的差异性和竞争力在哪里?

A:Hypershell 第一代产品上线之后,算是证明了这个品类的潜力,还有用户的需求。所以确实也能看到最近一年不断有类似形态的产品出来,不过我觉得做一个长得像的产品并不难,因为这个东西的复杂度看上去好像也没那么高,无非就是两个电机,中间几个杆子连起来,加一些布带子绑起来。

无人机在物理形态上也贼简单,4 根树枝绑 4 个电机也能飞,但是看着接近和真实好用的产品之间的差异非常大。

外骨骼需要在人体工程学,可穿戴设计,机器人,到动力系统和 AI 算法上都研究得很深入,还要抠得很细,最终体验上才比较好。

我们的优势就是除了做了很多前沿性的探索之外,在做外骨骼这件事上足够认真,以及抠得足够细。

竞品确实很容易抄一个形态,但是对于这个形态的底层逻辑很难有具象化的概念,当他们在每一个环节都做得差一点的时候,最终叠加出来的整体体验肯定是比较糟糕的。

比方说,十几年前花 1000 块就能买一个扫地机器人了,但是当时扫地机器人的策略是随机乱撞,回家还要找机器人随机到家里哪里去了,这种产品在我妈的印象里就很傻很垃圾,这个观念在她脑袋里存在了十几年。最近换了自动上下水,带激光雷达和 AI 规划算法的扫地机器人,她才觉得扫地机器人现在很聪明很方便了。

所以对于外骨骼这个品类来说,一定不能让一代人因为一两款垃圾产品就觉得这个品类不行。

实际上我们众筹真实交付的产品也不是众筹展示的那个版本,我们把众筹那一代砍掉了,重新做了第二代发货,因为我们觉得第一代的构型存在很多瑕疵。我们甚至觉得如果这一代产品发给用户,那消费级外骨骼行业就凉了,这代人可能都对这个品类有不好的印象。

「AI 是 Hypershell 产品最核心的两个能力之一」

Q: 一些外骨骼公司从工业或康复市场切入,更偏 B 端,而你们选择了面向日常用户,聚焦户外助力,为什么会有这样的决策?

A:我觉得这不是一个很难的决策。

就是如果你真的选择一个出发点是基于愿景和使命感的创业项目,这就是一个自然而然的决策,最终都是 people mission fit (人和愿景匹配)的问题。

你让我去做医疗或者工业领域的外骨骼,我觉得我也做不好。

我自己就是一个户外爱好者,我喜欢徒步,生态游,自驾,我很能理解这些场景下用户需求和用户痛点是什么,我也很想去打造极致的产品,让我自己也很享受使用这个产品的过程。

这就是我做这个品类的基础,我能同理心用户。

Q: 对于目前的机械外骨骼市场来说,绕不过的就是体积重量和功率之间的矛盾,为什么 Hypershell 的初代几款产品,选择了 2KG 左右,32 N·m 扭矩,800W 峰值功率,1 马力的尺寸?为什么不做得更重更强?或者说 Hypershell 内部是把 1 马力作为目标,然后尽可能极限地做小做轻?

A:其实这个 1 马力是反向虚标,它真实的功率其实是 1.1 马力左右,800 多瓦。

因为我们我觉得用户很难具象化理解多少瓦是什么概念,但是马力很好理解,就是一匹马的力量,人显然没有马的劲儿大,我们调研发现 1 马力用户很好理解。

选择这个性能很大程度是在这在这种构型下,800 多瓦的功能不单能应对日常出行场景,同时还能在一些跑步冲刺,还有极限登山场景也能有很好的助力,是一个非常够用的性能指标。

800 瓦就是我们算出来合理够用的功率范围,1 马力是更好的用户沟通选择。

然后 800 瓦会决定大概的扭矩是多少,扭矩会决定产品结构的刚性和可靠性,然后再去决定用什么材料,要不要上碳纤维或者钛合金,怎么去设计产品的疲劳寿命。

其实就是这样的推导过程,确实就是先把目标定好再来想办法实现,但这个目标也是来自于我们的理论推导,对场景的理解还有实际的测试。

Q: 作为一款「助力」设备,Hypershell 的机械外骨骼产品,AI 对于人类动作意图的理解和预判,是否和本身的机械能力一样重要?

A:Hypershell 产品里一个「小脑」叫 MotionEngine ,融合很多种不同的传感器,还有不错的算力。

为什么有这个东西呢,是因为我理解阻挡外骨骼产品走向更泛化更多样的场景的,不光是硬件性能,或者价格很贵,很大程度上是因为 AI 能力不够。

从实验室角度来看,两个人身材接近,但脚的码数不同,走路步态也会完全不一样,这种情况下什么样的助力方式是有效的?结果其实是千人千面,这个策略对我有效,但是对你就完全没有效果。

另外不同的场景和运动形式,走路,上小坡,爬楼梯,走碎石路,登雪山,或者力量训练,或者骑自行车,用户需要的助力方式也完全不一样。

在用户千人千面,场景纷繁复杂的情况,让 Hypershell 的产品能够无缝地去自适应切换,其实是 MotionEngine 要解决的问题。

我们的机器上只有一个按键,就是开关机,我们的理念是你除了开关机之外,整个设备在使用过程中都不需要任何的按键操作,而是通过 MotionEngine 帮你做了识别,然后帮你做预测、调整和适应。

这是让外骨骼走向现实生活,应对复杂的非结构性场景的必由之路。

行业里最主要的一个难点就是对于人的意图识别,就像我刚才说的,刚好我在初中的时候就开始做肌电传感器了。

所以我的理解是,MotionEngine 背后的 AI 能力,是 Hypershell 产品核心的两个能力之一。

Q:机械外骨骼这个名字形容 Hypershell 的产品恰当吗?你们希望用户把 Hypershell 看作一款什么样的产品?是运动辅助器?是下一代可穿戴?还是未来的人体增强工具?

A:这个问题我们最近也在不断地去探讨和思考,就今天来看,Hypershell 的产品在不同场景有不同的作用,比如在自行车场景下能让所有自行车变成 E-Bike,徒步场景呢,又是 E-Hike,工作场景里,比如要爬好多楼梯的巡逻巡检也会更轻松。

坦白讲,我们对 Hypershell 产品定义的认知仍然在一个迭代的过程中,我们认知它是一个比较 multipurpose 多用途的东西,我们不希望它这个场景或者用户群被限缩,还是希望去保持它的这种延展性和多样性。

不过更抽象地讲,我会说 Hypershell 的产品是一种物理层面的增强现实。

这是我前段时间才有的理解,它是人和物理世界中间连接的一层「介质」,它可输出、可编程、可数字化,可以去提升人的能力,对吧?

也可以去模拟一些体验,让你感觉好像在月球走路,或者让你在感觉在更重的环境走路,比如泳池里面,然或者让你模拟碰到了什么墙,踢到了什么东西。

我觉得人的很多能力和体验其实都可以在这层介质的基础上去重新思考。

Q: 目前 Hypershell 产品主要还是腿部助力,未来会不会有手部助力产品的规划,应对搬运等场景?

A:我觉一家公司的产品拓展方向必须具备两个维度的考量,第一是你的底层的技术能力模块是否能够很好的重叠和复用,第二是用户群是不是同一波用户群。

最完美的拓展方式应该是两个都符合,就是同一种技术路径,然后同一种人群可能存在着不同需求,那这是一个很好的品类拓展路径。

对我们来说,搬运这些场景,我们觉得是一个很刚需很现实的需求,但和我们当下用户人群的重合度很低,加上上肢的外骨骼其实更难做,上肢的动作维度更多更高,很难被标准化,属于很难做一个产品匹配不同场景的领域,这里更适合做高度定制化的产品。

Q:从目前的产品情况来看,是否可以接入一些智能手表等可穿戴设备,根据当前的心率水平,血氧含量等身体数据动态调整 Hypershell 产品的输出功率?

A:这是一个非常好的 idea,Hypershell 产品其实具备基础的这种能力,根据你的动作,还有当下的能耗水平,实时地去调整助力的策略和功率。

这也是为什么它能实现单键操作,用户只需要开关机就行。

刚才你说的这个方向,我们也在做一些准备,最近的探索就是 Apple Watch 端的 app 很快就会上架,和可穿戴设备结合确实是我们关注的方向,通过 Apple Watch 检测身体状态之外,手表也是一个更适合我们产品的人机交互界面,比如户外场景下,抬手就能看到自己和设备的状态。

「成为钢铁侠,是可以想象可以触及的未来」

Q: 已经有马拉松选手穿戴你们的产品参加了马拉松赛事,提升了他的最好成绩,马拉松属于重在参与的运动,不过事实也是 Hypershell 因为便携性轻量化加上助力特性,一定程度上能提升运动表现,你如何看待外骨骼技术在提高个体能力的同时,可能带来的效率悬殊以及公平性的问题?尤其在劳动或竞技场景中。

A:首先我觉得这是一种 trick,一定算是作弊。

当然那个用户的成绩属于可讨论的范畴,他没有影响奖金和名次,更多是提升自我成绩。

对于我们来说,他也是通过这种参加马拉松的方式去测试 Hypershell 产品的有效性,一个运动员在剧烈的,竞争态势的竞赛环境里长时间跑步,能够看到这款产品真实的有效性如何。也不光是为了省力,也能帮助运动员挑战自己的极限。

从运动本身长期来看,外骨骼产品肯定会被禁掉,今天它还处于大家没留意的地步。但是外骨骼产品也可能会催生新的比赛种类,就像之前北京举办的机器人马拉松比赛一样,说不定未来也有外骨骼铁人三项,大家在竞技场里公平竞争,反而也会引导行业,还有人类去突破极限,就像现在的 F1 比赛一样。

Q:人与机器的距离越来越近了,我们好像正处在一个人机融合得微妙临界点,你怎么看待「赛博格」这个概念逐渐成为现实,尤其在人机协作与身体延展的语境下?

A:大家似乎看到了一些影子,比如说这两年马斯克的脑机接口 Neuralink 项目有些进展,还有我们 Hypershell 这样的产品能做人类物理层面的增强,大家似乎看到了人和机器融合的可能性,但是我觉得真要说「临界点」,还需要大量的基础突破才有可能。

比如说智能义肢的研发,就比外骨骼更难,我和一些研究团队沟通过,他们的研发状态就是开发了很多智能义肢,但整体和人的适配度非常低,很多案例里只有一两个人穿戴的时候有不错效果。

我觉得这是一个缩影,真正可用的连接神经的人机接口我觉得还得 20 年往上,今天来看还是体外的工具型设备更现实,更普适,门槛更低,比如说电机的能量密度,已经是人类肌肉的 100 倍。

Q:手机、耳机、智能手表,包括智能眼镜都在变成日常随身设备,还有新兴的潮流是 360°全景相机,乃至一些 AI 记录设备都具有随身性,机械外骨骼产品有这样的潜力吗?就是人们把它变成一种很酷的电子产品日常使用。

A:今天看当然还差很远。

为了实现这样的目标,也需要很多的底层技术创新,对场景不断的拓展。

之前外骨骼产品仅限于行业级场景,到今天不少人在爬山徒步骑行等等日常场景里用,我觉得已经是行业里挺大的进步了。

可能努力个十几年二十年,一代一代的迭代更新,产品爬坡,场景破圈,最终会在某个节点下形成质变。

质变的节点可能是这样的,它一定是在更泛化的场景里面,并且正面作用越来越大,负面作用越来越小,就像 Vision Pro 一样,现在看它观感非常震撼,但实在太笨重了,如果未来负面作用很小,它不压头,同时卖 1 万块以下,我觉得它就质变了。

外骨骼也是类似,今天它对人的耐力提升只有百分之几十,随着技术不断迭代,质变到能提升 100%,甚至 200% 的体能,然后穿戴起来又很无感,平时都意识不到它的存在,关键时刻才有感知,同时成本也不断降低,价格更便宜的时候,我就觉得行业的机会点到了。

Q:我之前采访了一些不同行业的科技公司创始人,从新能源汽车,到无人机和扫地机器人行业,他们无一例外都把企业的长期愿景放在了「具身智能」上,即强 AI 绑定高自由度的机器人,实现更多场景的无人化。对于 Hypershell 来说,在有人的场景里,人类又该如何适应这样的未来?人类的机械化,是不是一个必然选项?

A:用不同的技术去增强人类本身,一定是人类文明的下一个演进阶段,这趋势我觉得是正确的,只是技术类型有很多,AI 也是一种对人的增强,只是它增强的是人的脑力,人的信息获取能力还有逻辑推导能力。

人类增强这件事是未来 10 年,20 年非常重要的技术方向,我们在做的其实只是其中一个细小的分支。就像我说的,外骨骼其实就是人和物理世界进行交互的介质,可输入,可编程,可数字化,它要实现的就是我们在物理世界的增强现实,来实现人的自由意志。

人的自由意志可以被各种技术综合起来去呈现,去放大,这也是我们公司的长期愿景。

如果更具象一点的话,像钢铁侠那样的装甲和人工智能,在未来是可以想象,也可以触及的。

稳中向好。

#欢迎关注爱范儿官方微信公众号:爱范儿(微信号:ifanr),更多精彩内容第一时间为您奉上。

爱范儿 | 原文链接 · 查看评论 · 新浪微博


不能在中文目录右键打开 Cygwin 的解决方法

Cygwin 是一个 Windows 下的 Linux POSIX 模拟器,通过它我们可以直接运行一个 Linux 终端,非常好用。

网络上关于如何添加一个 “在当前目录打开 Cygwin” 的右键菜单的教程有很多,但是这些方法都有一个问题,那就是不能在中文目录下正常工作,于是研究了一番,修复了这个问题。

探索

既然英文路径可以但中文不行,我最先想到的是使用 Cygwin 自带的 base64 命令,将 encode(path) 后的非中文字符串传给 Cygwin 之后,再 decode 得到包含中文的路径。然而不行,正确的 base64 传递到 Cygwin 之后 decode 却是乱码。

问题的原因很容易想到,那就是编码的问题。经过几次输出中间变量后验证了这个猜想:Windows 采用的是 GB2312 编码,而 Cygwin 采用的是 UTF-8. Windows 将当前路径作为参数传递给 Cygwin 主程序时,Cygwin 不能正确读取路径。

解决

修改 Windows 或者 Cygwin 的默认编码肯定是下下之策。解决该问题最终还是绕不开编码转换。我最终的思路为:

  1. 右键点击后,Windows 将当前路径作为参数 1 传递给 run_by_right_click.bat 入口程序
  2. run_by_right_click.bat 将路径写入 chere.path 文件(GB2312 编码),并运行 Cygwin
  3. Cygwin 运行后,将 chere.path 转换为 UTF-8 编码,读取后 cd

我的 Cygwin 安装目录为 C:\cygwin64,Shell 为 ZSH,如果你使用的是 Bash,有的地方与我的不同。具体步骤如下:

step1. 创建右键按钮

导入注册表文件 cygwin.reg:

Windows Registry Editor Version 5.00
 [HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin64_bash]
 @="打开 Cygwin 终端"
 "icon"="C:\cygwin64\Cygwin.ico"
 [HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin64_bash\command]
 @="C:\cygwin64\run_by_right_click.bat \"%V\""

step2. 编写入口程序

我们的入口程序 C:\cygwin64\run_by_right_click.bat

@echo off
 SET dir=%1
 REM 双引号删除
 SET dir=%dir:"=%

 C:
 chdir C:\cygwin64
 rem del /Q chere.path
 set /p="%dir%">chere.path
 bin\zsh.exe -li

bat 代码是真的难写。。。写这段代码我便踩了无数的坑。

step3. 完成目录跳转

在 Cygwin 内编写 ~/.zshrc,在末尾添加目录跳转命令:

if [ -e /chere.path ];then
     /usr/bin/enca -L zh_CN -x utf-8 /chere.path
     CPWD=/usr/bin/cat /chere.path
     rm /chere.path
     cd /bin/cygpath "$CPWD"
 fi

这里用到了 enca 用于自动编码转换,所以需要在 Cygwin 包管理器中安装这个软件。

over! 现在便可以在中文文件夹中右键打开 Cygwin 了。

为啥我要用 Cygwin

最后最后。你可能会说,为啥都新世纪了,你还在用 Cygwin 这种… 模拟器?原生 Linux/ 虚拟机 不好用嘛?WSL 不香吗?甚至 Powershell 不也不错?

那我还真觉得 Cygwin 秒杀上述所有的方案。首先,我只是想在 Windows 上安装一个代替 cmd 的 Shell 环境用于日常操作,并不需要高性能什么的,所以原生 Linux 系统、虚拟机、Docker 就不是解决同一个问题的东西。

至于 Powershell,虽说是比 cmd 好多了,但毕竟是另一套语法和体系,我不想学它也对它不感兴趣。Bash+GNU tools 那才是世界通用法则。ZSH 作为日常使用的终端也确实美观好用!

而 WSL 这东西确实很吸引人,性能比 Cygwin 强太多,几乎就是原生系统。然而!WSL 运行于内核态,与 Windows 平级,就算有文件系统的映射,WSL 也并不能直接当作 Windows 的 Shell 来使用的。看下面的图你就知道我在说啥了。

Cygwin+ZSH 很好用

图中,npm 和 git 是我在 Windows 中安装的 exe 包,而 ssh、tail、md5sum 是 Cygwin 中提供的 Linux 命令,直接相互调用无压力,这才是 Windows 中我想要的 Shell 的样子。可是 WSL 是不能这么做的,两个系统是隔开的。

How to Scoop

Scoop作为Windows下的命令行包管理工具,在之前的文章里用到的非常多,最近又看了下Scoop的说明,这里简要的介绍下更新后的特性,附带一些常用的命令行工具

Github:lukesampson/scoop的README对Scoop有了大概的介绍,我初次接触到是读到了 再谈谈 Scoop 这个 Windows 下的软件包管理器

缘由

  • 安装常见命令行工具
  • 自带配置环境变量,方便配置简易的开发环境
  • 有脚本自动化执行的优势,方便快速部署(比如重装系统的时候)

需要注意的是如果Scoop安装的软件和Powershell的命令或者别名重合,Powershell的命令依然被优先使用

安装

可以使用管理员模式打开powershell运行

Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
# or shorter
iwr -useb get.scoop.sh | iex

多线程下载支持

部分软件源在Github之类的连接性不太好的地方,偶尔下载很慢而且易报错,现在Scoop推荐默认使用aria2进行多线程下载,只需要安装aira2即可开启多线程下载

scoop install aria2

添加额外的仓库

参考SpencerWoo的文章添加的软件仓库基本上够用了

scoop bucket add extras
scoop bucket add java
scoop bucket add dorado https://github.com/h404bi/dorado
  • 默认的main仓库以命令行工具为主(比如收录的cmder是个有GUI的终端软件),例如Linux常用的sed, grep, gawk,vim可以大大方便Powershell的日常使用
  • extra仓库收录的高质量的gui软件比较多,比如说googlechrome,typora,vscode
  • java仓库收录了多种多版本的JDK,结合下文的scoop reset,可以便捷的切换环境变量下的JDK
  • dorado仓库收录了相当一部分国内常用的软件如微信,网易云,besttrace,因为下载源在国内下载速度很OK

常用软件

除去上面介绍的一些,其实想得到软件都可以在Scoop中使用scoop search找下看看

$ scoop list
Installed apps:

  7zip 19.00
  chromedriver 76.0.3809.126
  cmder-full 1.3.11
  concfg 0.2019.03.09
  ffmpeg 4.1.3 #编码工具
  gawk 3.1.7
  gcc 8.1.0
  gdrive 
  git 2.21.0.windows.1
  grep 2.5.4
  innounp 0.48
  iperf3 3.1.3 #网速测试工具
  nodejs 12.5.0
  pshazz 0.2019.04.02
  R 3.6.0
  sed 4.2.1
  tesseract 4.1.0.20190314 #OCR工具
  vim 8.1.1302 
  youtube-dl 2019.05.20 #偶尔下载视频
  trafficmonitor #任务栏网速,CPU内存占用监测
  screentogif #Gif录屏软件
  ntop #类似htop的的终端下的资源监视器(但是做不到htop那么强大)
  glow #终端下的Markdown Render
  openjdk #添加java仓库后,默认安装最新版的openjdk
  openjdk9 #java9

sudo

部分命令是无法在普通模式下运行的,一般的方法是打开一个新的管理员模式的窗口,相对来说不太方便,scoop可以安装sudo来实现对单一命令的赋权

比如设置禁用eth0接口的别名

scoop alias add ethd 'sudo netsh interface set interface eth0 disabled' 'disable eth0' 

输入scoop ethd之后就会弹出用户账户控制的弹窗,提示需要管理员权限,用键盘确认就好,省去了再开一个窗口的麻烦(如果是长串命令都需要管理员权限的话还是开一个吧)

ffmpeg

只介绍常用的简单指令

录制直播

面对没有加密的m3u8直播录制,IPTV用的较多,m3u8的地址可以通过浏览器的检查工具找到

ffmpeg -i m3u8 'test.ts'  

合并音频和视频

现在越来越多的网站选择把音频和视频分开,使用IDM下载两个文件可以直接用ffmpeg做快速的合并(复制)

ffmpeg -i v.mp4 -i a.mp4 -c copy output.mkv

当然如果youtube-dl支持视频网站的话使用youtube-dl更方便

提取视频中的音轨

常用于提取BGM,不做重编码的情况

ffmpeg -i input-video.avi -vn -acodec copy output-audio.aac

-vn没有视频 -acodec copy说使用已经存在的相同的音频流

注意事项

scoop依然有许多不成熟的地方,在高可靠性要求的环境下依然是不推荐的,最经常遇到的莫非是软件安装因为网络等问题终端,安装状态会返回成功,如果需要重新安装的话需要先进行卸载

再一个就是环境变量的问题,scoop可以在安装的时候配置好一些环境变量,但是卸载却不一定会移除,这就导致一些重要的软件在Scoop卸载之后再在其他位置安装会出现环境变量错误的问题

部分高度依赖于安装目录,权限以及关联众多的软件不推荐使用scoop安装,如Chrome

使用Scoop提供的别名

Powershell的别名设置不方便,直接使用WSL的自定义别名(.bashrc)调用Windows下的程序又不能直接在Powershell中运行,直到发现Scoop可以自由的添加“环境变量”,想起来Scoop alias来设置程序运行的scoop别名

本来的用法应该是为Scoop内的操作添加别名:

# Install app
scoop alias add i 'scoop install $args[0]' 'Innstall app'
scoop alias add add 'scoop install $args[0]' 'Install app'

# Uninstall app
scoop alias add rm 'scoop uninstall $args[0]' 'Uninstall an app'
scoop alias add remove 'scoop uninstall $args[0]' 'Uninstall an app'

# List apps
scoop alias add ls 'scoop list' 'List installed apps'

# Update
scoop alias add u 'scoop update $args[0]' 'Update apps, or Scoop itself'
scoop alias add upgrade 'scoop update $args[0]' 'Update apps, or Scoop itself'

但是这个格式看起来就很自由:

比如说给WinMTRCmd添加一个scoop mtr的别名

scoop alias add mtr '~/winMTRCmd $args[0]' 'MTR tools for Win CMD'

之后使用scoop mtr [host]就可以愉快的使用mtr工具了

使用Scoop切换软件版本

这里以切换Java版本为例,例如在安装了openjdk和openjdk9之后,从默认的openjdk9切换到openjdk16

$ java -version
openjdk version "9.0.4"
OpenJDK Runtime Environment (build 9.0.4+11)
OpenJDK 64-Bit Server VM (build 9.0.4+11, mixed mode)

$ scoop reset openjdk
Resetting openjdk (16.0.1-9).
Linking ~\scoop\apps\openjdk\current => ~\scoop\apps\openjdk\16.0.1-9

$ java -version
openjdk version "16.0.1" 2021-04-20
OpenJDK Runtime Environment (build 16.0.1+9-24)
OpenJDK 64-Bit Server VM (build 16.0.1+9-24, mixed mode, sharing)

Linux 学习笔记(1): Linux Shell Powerful Tools

Linux Shell Powerful Tools


Connecting and expanding commands
A truly powerful feature of the shell is the capability to redirect the input and output of commands to and from other commands and files. To allow commands to be strung together,the shell uses metacharacters. As noted earlier, a metacharacter is a typed character that has special meaning to the shell for connecting commands or requesting expansion.

Piping commands


The pipe (|) metacharacter connects the output from one command to the input of another command. This lets you have one command work on some data, and then have the next command deal with the results. Here is an example of a command line that includes pipes:


$ cat /etc/passwd | sort | cut -f1,5 -d: | less


This command lists the contents of the /etc/passwd file and pipes the output to the sort command. The sort command takes the user names that begin each line of the /etc/passwd file, sorts them alphabetically, and pipes the output to the cut command. The cut command takes fields 1 and 5, with the fields delimited by a colon (:), then pipes the output to the less command. The less command displays the output one page at a time, so that you can go through page by page.


Using file-matching metacharacters
To save you some keystrokes and to be able to refer easily to a group of files, the bash shell lets you use metacharacters. Anytime you need to refer to a file or directory, such as to list it, open it, or remove it, you can use metacharacters to match the files you want. Here are some useful metacharacters for matching filenames:

• * — This matches any number of characters.
• ? — This matches any one character.
• [...] — This matches any one of the characters between the brackets, which can
include a dash-separated range of letters or numbers.

Sample Examples:








Using file-redirection metacharacters
Commands receive data from standard input and send it to standard output. Standard input is normally user input from the keyboard, and standard output is normally displayed on the screen. Using pipes (described earlier), you can direct standard output from one command to the standard input of another. With files, you can use less than (<) and greater than (>) signs to direct data to and from files. Here are the file redirection characters:
• < — Direct the contents of a file as input to the command (because many commands take a file name as an option, the < key is not usually needed).
• > — Direct the output of a command to a file, overwriting any existing file.
• >> — Direct the output of a command to a file, adding the output to the end of the existing file.
Here are some examples of command lines where information is directed to and from files.









Managing background and foreground processes
If you are using Linux over a network or from a dumb terminal (a monitor that allows only text input with no GUI support), your shell may be all that you have. You may be used to a windowing environment where you have a lot of programs active at the same time so that you can switch among them as needed. This shell thing can seem pretty limited.


There are several ways to place an active program in the background. One mentioned earlier is to add an ampersand (&) to the end of a command line. Another way is to use the at command to run commands in a way in which they are not connected to the shell. (See Chapter 12 for more information about the at command.)
To stop a running command and put it in the background, press Ctrl+z. After the command is stopped, you can either bring it to the foreground to run (the fg command) or start it running in the background (the bg command).







❌