精华内容
下载资源
问答
  • します、する。这种动词原形就是表示一般规律,日常常规。或者不久将来要做的。 しています。表示持续的一种状态。... 他总是在这里散步。(规律) (今)散歩しています。 我现在正在散步。(进行时)...

    します、する。这种动词原形就是表示一般规律,日常常规。或者不久将来要做的。
    しています。表示持续的一种状态。也就是している。一直持续下去,不间断。若是过去一直持续的,就是していた。
    举个例子,
    散歩 为例:
    明日、散歩します。 我明天回去散步。(将来时)
    彼はいつもここを散歩します。 他总是在这里散步。(规律)
    (今)散歩しています。 我现在正在散步。(进行时)

    展开全文
  • 什么是SVC?AVCSVC有什么区别

    万次阅读 2018-11-11 13:02:21
    可伸缩视频编码技术(SVC)在视频会议行业视频通信中有着重要的影响。在2008年,当Vidyo首次推出SVC时,很少人意识到它背后所蕴含的变革力量。大多数人都认为它仅仅只是一个更好的编解码器,甚至还有可能存在一些...

    作者 / Alex Eleftheriadis, Ph.D., Chief Scientist of Vidyo
    翻译 / 小极狗

    可伸缩视频编码技术(SVC)在视频会议行业和视频通信中有着重要的影响。在2008年,当Vidyo首次推出SVC时,很少人意识到它背后所蕴含的变革力量。大多数人都认为它仅仅只是一个更好的编解码器,甚至还有可能存在一些有待完善的错误。

    与任何新技术一样,刚开始时,我们都很难完全理解SVC的工作原理,相关系统及功能的实现机制,甚至是它对整个行业的影响。本文旨在提供一些有关SVC的事实和使用感受,介绍如何基于SVC实现各种功能,同时分析一下目前可伸缩视频编码在视频通信领域的定位以及未来的前景所在。什么是SVC?

    首先,什么是SVC?

    它是H.264 / MPEG-4 Part 10高级视频编码标准的扩展,通常称为AVC。AVC是由国际电信联盟(ITU)的视频编码专家组(VCEG)和国际标准化组织(ISO)的运动图像专家组(MPEG)共同开发的,合称联合视频组(JVT)。因此,AVC有两个正式名称:国际电信联盟(ITU)命名的H.264和国际标准化组织(ISO)命名的MPEG-4 Part 10。通常,通信领域的人倾向于将AVC称为H.264,而广播影音娱乐领域的人则倾向于将其称为AVC或MPEG-4。毫无疑问AVC一直是非常成功,它几乎适用于所有现代数字视频应用标准:从视频会议和YouTube,到蓝光DVD和iTunes商店。

    SVC是AVC标准的附录G。有人却用AVC这个词来表示H.264标准和附录G,这令人费解。在本文中,我们使用AVC来描述H.264的不可伸缩部分,而用SVC来描述可伸缩部分,当不加区分时则使用H.264进行描述。

    当Vidyo公司加入JVT时(2005年夏季),它是唯一对可伸缩视频编码感兴趣的视频会议公司。事实上,SVC的成果要得益于当时对广播和移动应用感兴趣的公司以及学者不留余力的推动。Vidyo公司的工程师们非常积极地参与到联合组的开发中,提供了约18项技术贡献,创建并提供测试视频材料,构建了大部分合适的比特流,以及共同编辑了一致性规范,这些都确保了我们的设计符合视频会议行业的需求。

    H.264规范提供了一种方法,允许根据特定的应用领域搭配不同的使用规范,事实上,绝大多数视频编码标准都会有基本的使用规范,并且提供可修改的方法,我们称之为配置文件。配置文件可以说是标准规范所提供的编码工具的子集,主要适用于特定的应用领域。例如,增加端到端延迟的功能对于广播视频而言是可接受的,但对于视频会议而言则是不可接受的,因此在面向视频会议的配置文件中则不包括这个功能。H.264的可伸缩特性体现在其配置文件的参数设置中:Scalable Baseline、Scalable High、Scalable Constrained Baseline、Scalable Constrained High和Scalable High Intra。尽管,在高清分辨率运行的软件配置文件中一般包含Scalable High参数,但是针对视频会议(移动设备)应用的配置文件,一般只包含Scalable Baseline和Scalable Constrained Baseline这两个参数。

    与配置文件相关的是一个名为层级的概念。层级定义了特定配置文件中各种操作参数的限制。例如,它定义了特定解码器所能够处理的最大图片的大小。配置文件和级别是一个相当古老的概念:您的普通旧式DVD播放器中,播放MPEG-2格式的视频的主要配置文件是在主级解码器上。您的蓝光播放器所包含的H.264 AVC的高配置解码器则是在4.1级。

    AVC和SVC有什么区别?

    SVC和AVC的根本区别在于,前者将视频信号编码为一组图层。各层互相依赖,形成一个层次结构。特定层及其所依赖的层提供了以特定的保真度解码视频信号时所必需的信息。这里的保真度涉及一个或多个空间分辨率,时间分辨率或信噪比(SNR)1。不依赖于任何其他层的最底层被称为基本层,并提供最低质量等级的图像。每个附加层可以通过三个维度(空间,时间或SNR)中任何一个维度提高信号质量。

    图1表示以不可缩放的方式进行视频编码。这就是大多数(如果不是全部的话)AVC兼容视频编码器的工作原理。图中每个正方形表示一张图片,而底部的数字表示时间实例。第一张图片为“I”帧,可独立编码,无需参考其他任何图片(“I”取自单词“intra”的首字母)。其他所有的图片为“P”帧,需要参考前面的帧画面进行预测然后编码。箭头表示预测的源图片以及目标图片。通过观察可知,只需一层,则可形成一个无止境的图片链。
    在这里插入图片描述
    图1:非缩放性视频编码

    1 SNR(信噪比)是压缩视频信号相对于其未压缩版本的失真度量。在信噪比的可伸缩性中,增强层所提供的额外信息既不改变空间分辨率,也不改变时间分辨率。它减少了压缩视频的信号失真,同时增加了信噪比。

    图2表示在时间维度上的可伸缩性视频编码。观察预测箭头的组织方式,在这个例子中,定义了三个不同的层(L0到L2)。图中的图片是垂直偏移的,以便在视觉上分离三层。每一层都需要依赖较低层才能被解码,但不需要任何较高层。这允许从顶层开始移除图片,而不影响剩余图片的可解码性。例如,我们假设图例中显示的图层以30 fps的帧速率显示。如果我们移除所有L2层的图片,剩下层(L0和L1)仍然可以成功解码,并且产生一个15fps的视频。如果我们进一步删除所有的L1图像,那么剩下的L0层依然可以被解码并产生一个7.5fps的视频。
    在这里插入图片描述
    图2:时间可伸缩性

    如图3所示,我们可以通过扩展时间可伸缩性结构同时实现空间可伸缩性编码。每个图片现在有两部分:基础层分辨率图片的B部分和空间增强层的S部分,这两个部分结合则可生成全分辨率图像。空间增强层一般为水平和垂直方向上基底分辨率的1.5倍或者2倍。这为不同分辨率的视频在进行空间可缩放性编码时提供了便利,例如VGA和QVGA(比率为2)以及1080p和720p(比率为1.5),都可以进行空间可伸缩性编码。空间可伸缩性可以与时间可伸缩性(和SNR)以完全独立的方式相结合。假设在图示例子的全速率和分辨率分别为30fps下的HD高清分辨率(720p),那么我们可以在分辨率(HD、1/4HD)和帧速率(30fps、15fps、7.5 fps)之间进行任意组合。
    在这里插入图片描述
    图3:空间和时间的可伸缩性

    值得注意的是,这不是唯一的可伸缩性结构——在构建空间和时间预测结构方面,该标准具有较大的灵活性。

    SVC的一个非常重要的方面是基本层符合AVC的设计。换句话说,SVC信号的基本层可通过AVC解码器进行解码。这确保SVC信号与AVC向后兼容,尽管在涉及到一个以上的层时,其保真度会低于全信号。但注意,SVC编码器不需要一直生成分层比特流 - 如果在不需要和不必要进行可伸缩性编码的环境下运行时,则可以生成传统的AVC流。

    为什么使用SVC?

    SVC提供了一种适应性较强的视频信号表示方式。换句话说,无需对信号进行解码、处理和重新编码,也可以实现自适应。如果我们想要改变图像分辨率或时间帧速率,那么我们唯一需要做的就是从图1中的图表中移除适当的块。如果将这些块视为通过网络传输的数据包,这就相当于从传输的比特流中移除相应的网络数据包。这一点意义非常重大:它为基于多点控制单元(MCU)的传统视频会议系统架构提供了新的设计思路。

    MCU是一个复杂的设备,它接收多个视频编码信号,解码后合成到一个新的图像上,重新编码后,再将编码信号发送给预定接收者。显然,从计算的角度来看,这是一个非常复杂的操作。此外,在系统运行中还引起了相当大的延迟,通常为150-200毫秒。为了更好的比较,我们给出一个数据:国际电联规定长途电话的端到端延迟的上限为180毫秒。超过180毫秒后,延迟会令正在通信的各方用户产生较差的体验感受。显然,与MCU进行交互式多点通信是非常困难的。由于采用了级联编码,会导致了质量的损失。值得注意的是,这些问题是架构中固有的,无论投入多少资源都不会消失。例如,提高MCU内部DSP处理器的速度也只能稍微减少延迟。

    AVC不如SVC有效吗?

    SVC的高效有一定的代价。如果SVC和AVC编码器产生的相似质量的比特流,那么SVC将比AVC需要大约10-15%的比特位(这取决于编码器的成熟性)。认识到这种“开销”对我们来说非常重要。尽管有额外的开销,但是我们将获得端到端的低延迟和稳健的容错性 - 仅AVC就无法实现这一点。事实上,如果我们考虑丢包造成的质量损失,我们很快会发现,因为AVC编码的质量下降得很快,所以它的效率是远低于SVC。额外的开销带来的回报是,我们的服务器可以轻松扩展至100位用户,以及所有高端视频会议系统功能,如个性化布局和速率匹配。

    只关注压缩效率是一个非常狭隘的观点,因为它忽略了完整系统中真正发生的情况。通过共同考虑压缩效率和网络传输,人们可以设计解决方案平衡这两个方面的消耗,解决系统级问题。

    牢记SVC是AVC的扩展也很重要。这意味着,当条件允许时,换句话说,当网络具有极高的可靠性时,所有端点都具有类似于网络的访问速度,同时所有端点都具有类似的编码和解码能力时,SVC系统就可以恢复使用普通AVC。然而,当考察企业的全体用户时,我们很少能够访问这样一个非常可靠的网络,而且实际上我们也从未有过相同的接入网络或端点。

    就像普通汽车和四轮驱动汽车一样,虽然四轮驱动汽车确实会燃烧更多的燃料,但是谁愿意在结冰的面上冒险行驶普通汽车呢? 另外,您可以在不需要时关闭它。实际情况是,在全球互联网中,数据包走的“道路”总是“结冰”和危险的。

    可伸缩性和下一代的编解码器

    作为视频编码标准的SVC已于2007年11月完成定稿并出版。在上文中提到,Vidyo公司在标准化过程中非常活跃,并领导了视频会议应用领域的工作。我们还共同开发了用于SVC的RFC 6190的RTP有效载荷格式。

    由于SVC在实时应用方面的优越性,在H.264之后的所有编解码器,将全面支持可伸缩性。H.265或高效视频编码(HEVC)在版本1(2013)中包含时间可伸缩性,在Vidyo公司提供的版本2(2014)中包含了空间可伸缩性。VP8和VP9格式在发布之初就具有时间可伸缩性,而通过Vidyo公司和Google之间的联合开发,VP9实现了空间可伸缩性。Vidyo公司为所有这些编解码器的RTP有效载荷格式的定义做出了贡献。

    由于大家对SVC有着极大的兴趣,促进了行业组织进一步细化核心规范以确保能够协同工作。国际多媒体电信联盟(IMTC)已经发布了两个规范,一个用于H.264而另一个用于H.265,详细说明了适用于统一通信应用的可伸缩性编码器的配置。同时,确保不同供应商产品能够高效进行协同工作的认证程序仍在开发当中。该工作由Vidyo,Polycom和Avaya共同领导的可伸缩性和联播视频活动小组(SSV AG)负责。

    可伸缩性、联播和SFUs

    对于单一视频信号,同时提供多个不同表示的简单方法就是产生多个编码。与可伸缩编码相反,这不需要任何新的编码工具:您只需以不同的分辨率来多次运行编码器即可。这将产生多个独立的比特流,并且比可伸缩编码占用更多比特位(通常比单个高分辨率流高50%)。由于两个流之间缺乏依赖关系导致了较差的健壮性。这种方案被称为“联播”(源自“同时广播”),并且可以被认为是可伸缩性编码的一个个别案例。
    在这里插入图片描述
    图4:联播架构

    隐藏在联播背后的是,您可以使用一个与VidyoRouter类似的服务器而不是可伸缩编码:终端将高分辨率和低分辨率的流一同传输到服务器端,然后再由服务器选择将流传输到不同的接收端。联播将其开销放置在糟糕的节点上:从传输端点到服务器的上行网络。这往往是最成问题的,例如,ADSL线路。联播技术的一个优点是最高分辨率比特流可以由传统(非伸缩性)解码器进行解码。因此,对于那些部署了大量无法升级的硬件解码器的公司来说,这更具有吸引力的。

    在2008年VidyoRouter推出时,其操作原理非常新颖。事实上,和VidyoRouter同时发布的“RTP拓扑结构”RFC(RFC 5117)提供了一个可以用RTP实现的各种实时通信架构的调查,但没有预见到它。2013年10月,我创造了“选择性转发单元”(SFU)来描述选择性转发服务器的操作,不管它是否用于可伸缩视频或联播。在2015年11月发布的RFC 5117修订版(RFC 7667)中,该术语已被采纳,现在详细描述其操作。

    目前两个用于实时视频通信的最大公共部署系统,谷歌Hangouts和微软的Skype和商业版Skype,都使用了可伸缩编码与联播。

    可伸缩性、联播和WebRTC

    作为基于浏览器和移动终端的首选架构,在业内WebRTC已经获得良好的发展势头。随着用户和供应商深入了解WebRTC,很显然,SFU型服务器体系结构已经成为高质量多点视频的必选。事实上,由于WebRTC设计时确实是多流的,即端点接收多个视频和音频流而不是单个视频流,这一点与SFU的设计完美匹配。因此,联播已被纳入WebRTC 1.0规范的范围,而可伸缩性将成为WebRTC-NV(“下一个版本”)的一部分。在ORTC中已经支持可伸缩性,该API最初被并入微软的Edge浏览器,现在已经被并入WebRTC 1.0的主要规范中。就编解码器配置而言,现在WebRTC API本身几乎不支持,但我们预计会有所改变,以后可能会允许使用SFUs。

    为什么SVC会成功?

    任何新技术都必须在市场上竞争,赢得用户的心。我认为,SVC和VidyoRouter / SFU获得成功的原因有两个。首先,它们首次将视频会议系统的复杂性降低到与其他网络应用相同的水平。这对于将视频会议能够扩展成为个人应用程序非常重要。其次,即使在公共互联网上运行时,用户的体验质量也达到了非常出色的水平 - 技术变得透明。今天的用户将不会容忍任何事情。这两项功能使视频会议最终真正实现在任何时间、任何地点、任何设备上使用。事实上,如果旧的技术,也就是MCU足够好的话,我们就不会看到视频会议只是一个小众应用。如今SVC的巧设计,高质量和易用性以及更丰富的部署选项(例如通过API和云)使更多的应用程序能够集成视频,使得更多用户能够享受这种美妙的通信工具。

    展开全文
  • 加上又想到了当时安装那些docker什么的时候 即不知道这是干啥的 而且还一直安装不成功 总是有问题 经常花一整天的时间去试各种回答 最后直到人机都崩溃了也没弄出来 就不了了之了。那些科班CS的永远体会不到这种痛苦...

    Refer:docker容器与虚拟机有什么区别?

    大概两年前 当自己屁都不会的时候 就遇到了docker的概念,两年过去了 别的东西多多少少都理解一些了 但是docker究竟是什么还是不明白。加上又想到了当时安装那些docker什么的时候 即不知道这是干啥的 而且还一直安装不成功 总是有问题 经常花一整天的时间去试各种回答 最后直到人机都崩溃了也没弄出来 就不了了之了。那些科班CS的永远体会不到这种痛苦。

    我在知乎上面看到了几个生动形象的回答:
    物理机-》虚拟机-》容器
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    下面我们 口述一下这两者有什么区别:
    虚拟机技术开启了云计算时代;而Docker,作为下一代虚拟化技术,正在改变我们开发、测试、部署应用的方式。
    之前我们没有docker的时候 我们只能用虚拟机。但是有的时候 我们想不受干扰的运行一些简单的程序,如果我们采用虚拟机方式来建立一个一个的虚拟机然后放进去一个一个小的进程 这显然太浪费了。而且有的时候 想迁移自己的服务程序 就要迁移整个虚拟机 这显然会非常复杂。因此我们就引入了这种更加灵活的方式:容器。
    所以就是说:容器就是轻量级的虚拟化,他的目的和虚拟机一样 都是为了创造隔离环境,但是和虚拟机又有很大的不同,因为虚拟机试操作系统级别的资源隔离,而容器本质上试进程级别的资源隔离。
    而Docker就是创建容器 的工具,试应用容器的引擎。
    Docker启动速度快,一台主机可以同时运行几千个容器。

    总结一下Docker容器和虚拟机的区别:
    在这里插入图片描述

    展开全文
  • bashzsh区别Most Linux distributions include thebashshell by default, but you couldalso switch to another shell environment. Zshis a particularly popular alternative, and there are other shells, lik....
    bash和zsh区别

    bash和zsh区别

    Most Linux distributions include the bash shell by default, but you could also switch to another shell environment. Zsh is a particularly popular alternative, and there are other shells, like ash, dash, fish, and tcsh. But what’s the difference, and why are there so many?

    大多数Linux发行版默认都包含bash shell,但是您也可以切换到另一个shell环境。 Zsh是一个特别受欢迎的替代方案,并且还有其他外壳,例如灰烬,破折号,鱼和tcsh。 但是有什么区别,为什么会有那么多呢?

    贝壳做什么? (What Do Shells Do?)

    When you sign in at the command line or launch a terminal window on Linux, the system launches the shell program. Shells offer a standard way of extending the command line environment. You can swap out the default shell for another one, if you like.

    在Linux上通过命令行登录或启动终端窗口时,系统将启动Shell程序。 Shell提供了扩展命令行环境的标准方法。 如果愿意,可以将默认外壳换成另一个外壳。

    The first shell environment was the Thompson Shell, developed at Bell Labs and released in 1971. Shell environments have been building on the concept ever since, adding a variety of new features, functionality, and speed improvements.

    第一个外壳程序环境是由Bell Labs开发并于1971年发布的Thompson Shell。此后,外壳程序环境一直以此概念为基础,并增加了许多新功能,功能和速度方面的改进。

    For example, Bash offers command and file name completion, advanced scripting features, a command history, configurable colors, command aliases, and a variety of other features that weren’t available back in 1971 when the first shell was released.

    例如,Bash提供命令和文件名补全高级脚本功能命令历史记录,可配置的颜色,命令别名以及其他各种功能,这些功能在1971年第一个Shell发行时就不可用。

    The shell is also used in the background by various system services. Linux distributions include many functions written as shell scripts. These scripts are commands and other advanced shell scripting functions run through the shell environment.

    各种系统服务还在后台使用该Shell。 Linux发行版包含许多作为shell脚本编写的功能。 这些脚本是在外壳环境中运行的命令和其他高级外壳脚本功能。

    导致Bash的Shell:sh,csh,tsh和ksh (Shells Leading Up to Bash: sh, csh, tsh, and ksh)

    The most prominent progenitor of modern shells is the Bourne shell—also known as “sh”—which was named after its creator Stephen Bourne who worked at AT&T’s Bell Labs. Released in 1979, it became the default command-interpreter in Unix because of its support for command substitution, piping, variables, condition testing, and looping, along with other features. It did not offer much customization for users, and didn’t support such modern niceties as aliases, command completion, and shell functions (though this last one was eventually added).

    现代贝壳最著名的祖先是Bourne贝壳(也称为“ sh”),它是以在AT&T贝尔实验室工作的创造者Stephen Bourne的名字命名的。 它于1979年发布,由于它支持命令替换,管道,变量,条件测试和循环以及其他功能,因此成为Unix中的默认命令解释器。 它没有为用户提供太多自定义功能,并且不支持诸如别名,命令完成和shell函数之类的现代功能(尽管最后添加了最后一个功能)。

    The C shell, or “csh”, was developed in the late 1970s by Bill Joy at University of California, Berkley. It added a lot of interactive elements with which users could control their systems, like aliases (shortcuts for long commands), job management abilities, command history, and more. It was modeled off the C programming language, which the Unix operating system itself was written in. This also meant that users of the Bourne shell had to learn C so they could enter commands in it. In addition, csh had quite a few bugs that had to be hammered out by users and creators alike over a large period of time. People ended up using the Bourne shell for scripts because it handled non-interactive commands better, but stuck with the C shell for normal use.

    C shell或“ csh”是1970年代后期由加州大学伯克利分校的Bill Joy开发的。 它添加了许多交互式元素,用户可以使用它们来控制系统,例如别名(长命令的快捷方式),作业管理能力,命令历史记录等等。 它是使用C语言编程的,该语言是Unix操作系统本身编写的。这也意味着Bourne shell的用户必须学习C语言,以便可以在其中输入命令。 另外,csh还有很多错误,在很长一段时间内,用户和创作者都必须解决这些错误。 人们最终将Bourne shell用于脚本,因为它可以更好地处理非交互式命令,但在正常使用时会停留在C shell中。

    Over time, lots of people fixed bugs in and added features to the C shell, culminating in an improved version of csh known as “tcsh”. But csh was still the default in Unix-based computers, and had added some non-standard features. David Korn from Bell Labs worked on the KornShell, or “ksh”, which tried to improve the situation by being backwards-compatible with the Bourne shell’s language but adding many features from the csh shell. It was released in 1983, but under a proprietary license. It wasn’t free software until the 2000s, when it was released under various open-source licenses.

    随着时间的流逝,许多人修复了C shell中的错误并为其添加了功能,最终导致了改进的csh版本,即“ tcsh”。 但是csh仍然是基于Unix的计算机中的默认设置,并添加了一些非标准功能。 贝尔实验室的David Korn开发了KornShell或“ ksh”,该产品试图通过与Bourne Shell的语言向后兼容,但从csh shell添加了许多功能来改善这种情况。 它于1983年发布,但获得了专有许可。 直到2000年代,它才是免费软件,当时它是在各种开源许可证下发布的。

    bash的诞生 (The Birth of bash)

    The Portable Operating System Interface for Unix, or POSIX, was another response to the hectic proprietary csh implementations. It successfully created a standard for command interpretation (among other things) and eventually mirrored a lot of the features in the KornShell. At the same time, the GNU Project was attempting to create a free, Unix-compatible operating system. The GNU Project developed a free software shell to be part of its free operating system and named it the “Bourne Again Shell”, or “bash”.

    Unix的便携式操作系统接口,即POSIX,是对忙碌的专有csh实现的另一种回应。 它成功创建了命令解释标准(除其他外),并最终反映了KornShell中的许多功能。 同时,GNU工程正试图创建一个免费的,兼容Unix的操作系统。 GNU项目开发了一个免费软件外壳程序作为其免费操作系统的一部分,并将其命名为“ Bourne Again Shell”或“ bash”。

    Bash has been improved in the decades since its first release in 1989, but it’s still the default shell on most Linux distributions today. It’s also the default shell on Apple’s macOS, and is available for installation on Microsoft’s Windows 10.

    自1989年首次发布以来,Bash在几十年中得到了改进,但是它仍然是当今大多数Linux发行版中的默认Shell。 它也是Apple macOS上的默认外壳,可用于在Microsoft Windows 10上安装

    较新的外壳:灰,破折号,zsh和鱼 (Newer Shells: ash, dash, zsh, and fish)

    While the Linux community has settled on Bash in the years since, developers didn’t stop creating new shells when Bash was first released 28 years ago.

    从那以后,Linux社区就开始使用Bash了,但是当Bash在28年前首次发布时,开发人员并没有停止创建新的Shell。

    Kenneth Almquist created a Bourne shell clone known as Almquish shell, A Shell, “ash”, or sometimes just “sh”. it was also POSIX compatible and became the default shell in BSD, a different branch of Unix. The ash shell is more lightweight than bash, which makes it popular in embedded Linux systems. If you have a rooted Android phone with BusyBox installed—or any other device with the BusyBox suite of software—it’s using code from ash.

    肯尼斯·阿尔姆奎斯特(Kenneth Almquist)创建了一个伯恩(Bourne)壳克隆,称为阿尔姆奎什壳(Almquish shell),“壳”,“灰”或有时仅称为“ sh”。 它也与POSIX兼容,并成为BSD (Unix的另一个分支)中的默认Shell。 ash外壳比bash轻巧,这使其在嵌入式Linux系统中很受欢迎。 如果您有安装了BusyBox的扎根Android手机-或安装了BusyBox软件套件的任何其他设备-则使用的是ash中的代码。

    Debian developed a shell environment based on ash and called it “dash”. It’s designed to be POSIX-compliant and lightweight, so it’s faster than Bash, but won’t have all its features. Ubuntu uses the dash shell as its default shell for non-interactive tasks, speeding up shell scripts and other tasks running in the background. Ubuntu still uses bash for interactive shells, however, so users still have the full-featured interactive environment.

    Debian开发了基于ash的shell环境,并将其称为“破折号”。 它被设计为符合POSIX且轻巧,因此比Bash更快,但不会具有所有功能。 Ubuntu使用破折号外壳作为非交互式任务的默认外壳,从而加快了外壳脚本和其他在后台运行的任务的速度。 Ubuntu仍将bash用于交互式shell,因此用户仍具有功能齐全的交互式环境。

    One of the most popular newer shells is Z shell, or “zsh”. Created by Paul Falstad in 1990, zsh is a Bourne-style shell that contains the features you’ll find in bash, plus even more. For example, zsh has spell-checking, the ability to watch for logins/logouts, some built-in programming features like bytecode, support for scientific notation in syntax, allows for floating-point arithmetic, and more features.

    最受欢迎的较新外壳之一是Z外壳,即“ zsh”。 zsh由Paul Falstad在1990年创建,是一种Bourne风格的shell,它包含bash中的功能以及更多功能。 例如,zsh具有拼写检查,监视登录/注销的能力,一些内置的编程功能(例如字节码),对语法的科学表示法的支持,允许进行浮点算术等功能。

    Another newer shell is the Friendly Interactive Shell, or “fish”, released in 2005. It has a unique command-line syntax that’s designed to be a bit easier to learn, but isn’t derived from either the Bourne shell or C shell. It’s an interesting idea, but what you learn through using fish won’t necessarily help you use bash and other Bourne-derived shells.

    另一个较新的外壳是2005年发布的Friendly Interactive Shell(即“鱼”)。它具有独特的命令行语法,旨在使其更易于学习,但它并非源于Bourne Shell或C Shell。 这是一个有趣的想法,但是您通过使用鱼学到的知识不一定能帮助您使用bash和其他Bourne衍生的贝壳。

    您应该选择哪一个? (以及为什么Zsh受欢迎) (Which Should You Choose? (and Why Zsh is Popular))

    You don’t need to choose a shell. Your operating system chooses your default shell for you, and that choice is almost always bash. Sit down in front a Linux distribution—or even a Mac—and you’ll almost always have a bash shell environment. Bash has quite a few advanced features, but you probably won’t use them unless you program shell scripts.

    您无需选择外壳。 您的操作系统将为您选择默认外壳程序,而该选择几乎总是bash。 坐在Linux发行版甚至Mac的前面,您几乎总是拥有bash shell环境。 Bash具有许多高级功能,但是除非您编写Shell脚本,否则您可能不会使用它们。

    On embedded Linux systems or BSD systems, you’ll end up with the ash shell. But ash is a Bourne-based shell and is largely compatible with bash. Any knowledge you have from using bash will transfer to using an ash or dash shell, although some advanced scripting features are not available in this lightweight shell.

    在嵌入式Linux系统或BSD系统上,您将获得ash shell。 但是ash是基于Bourne的shell,并且与bash基本上兼容。 您从使用bash所获得的所有知识都将转换为使用ash或dash外壳,尽管此轻量级外壳中不提供某些高级脚本功能。

    Almost every shell you’ll encounter is Bourne-based and works similarly—including zsh.

    几乎您将遇到的每个shell都是基于Bourne的,并且工作方式相似-包括zsh。

    That’s why zsh is popular. This newer shell is compatible with bash, but includes more features. The zsh shell offers built-in spelling correction, improved command-line completion, loadable modules that act as plug-ins for your shell, global aliases that allow you to alias file names or anything else on the command line instead of just commands, and more theming support. It’s like bash, but with a lot of extras, additional features, and configurable options you might appreciate if you spend a lot of time at the command line.

    这就是zsh受欢迎的原因。 此更新的外壳程序与bash兼容,但包含更多功能。 zsh shell提供了内置的拼写更正,改进的命令行完成功能,充当shell插件的可加载模块,允许您为文件名或命令行中的其他任何内容加上别名的全局别名,而不仅仅是命令,以及更多主题支持。 就像bash一样,但是如果您在命令行中花费大量时间,则可能会欣赏很多附加功能,附加功能和可配置选项。

    If you’re familiar with bash, you can switch to zsh without learning a different syntax—you’ll just gain additional features. if you’re familiar with zsh, you can switch to bash without learning a different syntax—you just won’t have access to those features.

    如果您熟悉bash,则可以切换到zsh,而无需学习其他语法-您将获得其他功能。 如果您熟悉zsh,则可以在不学习其他语法的情况下切换到bash-您将无法使用这些功能。

    Oh My ZSH” is a tool that helps you more easily enable zsh plug-ins and switch between premade themes, quickly customizing your zsh shell without spending hours tweaking things.

    Oh My ZSH ”工具可帮助您更轻松地启用zsh插件并在预制主题之间切换,从而快速自定义zsh shell,而无需花费大量时间进行调整。

    There are other shells, too. For example, the tcsh shell is still around and is still an option. FreeBSD uses tsch as its default root shell and ash as its default interactive shell. If you use the C programming regularly, tsch might be a better fit for you. However, it’s nowhere near as commonly used as bash or zsh.

    也有其他外壳。 例如,tcsh shell仍然存在并且仍然是一个选项。 FreeBSD使用tsch作为其默认的根shell,使用ash作为其默认的交互式shell。 如果您定期使用C编程,则tsch可能更适合您。 但是,它远不及bash或zsh常用。

    如何在外壳之间切换 (How to Switch Between Shells)

    It’s easy to switch to a new shell to try it out. Just install the shell from your Linux distribution’s package manager and type the command to launch the shell.

    切换到新的外壳进行尝试很容易。 只需从Linux发行版的软件包管理器中安装Shell,然后键入命令以启动Shell。

    For example, let’s say you want to try zsh on Ubuntu. You’d run the following commands to install and then launch it:

    例如,假设您要在Ubuntu上尝试zsh。 您将运行以下命令来安装然后启动它:

    sudo apt install zsh
    
    zsh
    

    You’d then be sitting at a zsh shell. Type ” exit ” at the shell to leave it and return to your current shell.

    然后,您将坐在zsh shell中。 在外壳上键入“ exit ”离开它并返回到您当前的外壳。

    This is just temporary. Whenever you open a new terminal window or sign into your system at the command line, you’ll see your default shell. To change the shell you see when you sign in—known as your login shell—you can generally use the chsh , or “Change Shell”, command.

    这只是暂时的。 每当您打开新的终端窗口或在命令行登录系统时,您都会看到默认的外壳程序。 要更改登录时看到的外壳(称为登录外壳),通常可以使用chsh或“更改外壳”命令。

    To use this command, you’ll first need to find the full path to your shell with the which command. For example, let’s say we wanted to change to the zsh shell. We’d run the following command:

    要使用此命令,您首先需要使用which命令找到您的shell的完整路径。 例如,假设我们要更改为zsh shell。 我们将运行以下命令:

    which zsh
    

    On Ubuntu, this tells us the zsh binary is stored at /usr/bin/zsh.

    在Ubuntu上,这告诉我们zsh二进制文件存储在/ usr / bin / zsh中。

    Run the following command, enter your password, and you’ll be prompted to choose a new login shell:

    运行以下命令,输入密码,系统将提示您选择一个新的登录shell:

    chsh
    

    According to the above command, we’d enter /usr/bin/zsh . The zsh shell would then be our default until we ran the chsh command and changed it back.

    根据以上命令,我们将输入/usr/bin/zsh 。 在我们运行chsh命令并将其改回之前,zsh shell将成为我们的默认设置。

    翻译自: https://www.howtogeek.com/68563/htg-explains-what-are-the-differences-between-linux-shells/

    bash和zsh区别

    展开全文
  • 人工智能大数据有什么相似之处不同之处?它们有什么共同点吗?它们是否相似?能进行有效的比较吗? 这两种技术所具有的一个共同点是兴趣。NewVantagePartners公司对企业管理人员进行的大数据人工智能调查发现,...
  • 在公司上班,如果你想加入管理层或者你已经迈入管理层,或者你已经在管理层打拼了很多年,那么你知道高级管理者普通级管理者有什么区别吗? 对下属的态度 初级管理者不善于控制自己的情绪,自己的情绪很容易被...
  • 优秀的程序员优秀的码农之间有什么区别? 关于码农程序员,这两种看不太相同,但实际上也有区别的两个名词,到底之间存在哪些不同呢?某百科是这样跟我们解释的。码农:一般指从事软件开发职位的职员,学不到新...
  • 许多人在职场摸爬滚打很多年并不顺利,...它决定职场人的沟通表达是否清晰有力、决定工作做事方式是否高效富有成果是否快速高效地学习等,因此年薪5w50w的职场人思考力是很大区别的,下面列举三方面说明此问题。
  • 先说好,大家一定要耐心看下去,看完了就知道有什么区别了! 首先,大家回忆一下什么是最小生成树? 最小生成树:就是一个图的生成树集合当中权值之最小的生成树,可以一种,也可以多种,这与图本身结构...
  • 我使用的是STM32F051,使用J-flash烧录完固件文件后,按键复位(NRST脚)后程序总是卡在Delay(),调试发现原来是systick的中断没有。但是如果烧录完固件后重新上电的话程序就可以正常运行。请问是什么原因??? /*...
  • 不知道大家没有经常遇到这样的一个困扰,为什么同样的算法,你的程序却一直超时?大家用的都是暴力大法,为什么别人的能过所有数据,而你的却只能过前几个样例;同样都是使用dp,为什么你的比别人的慢了那么多,...
  • Service哪些启动方法?有什么区别

    千次阅读 2016-02-17 15:52:59
    有什么区别什么是Service :     Service,看名字就知道跟正常理解的“服务”差不多,后台运行,可交互这样的一个东西。它跟Activity的级别差不多,但是他  不能自己运行,需要通过某一个Activity或者其他...
  • 跟以太坊ETH有什么区别?-转 EOS币是什么?跟以太坊ETH有什么区别? 2018-01-17 01:59 来源:挖矿族 近期,EOS币又成为了数字货币大军中话题性较高的一种货币,不过很多新手看到EOS可能第一时间想到的是佳能相机,...
  • Ubuntu/Linux/Unix 究竟有什么区别??

    千次阅读 多人点赞 2020-05-29 23:19:39
    Ubuntu/Linux/Unix 究竟有什么区别??
  • vb.net与c#相比有什么优势和区别

    万次阅读 2009-03-26 16:23:00
    vb.net与c#相比有什么优势和区别? 这世界上没有什么比编程工具更加牵动程序员的心。VC、VB、DELPHI、JAVA……这些耀眼的名字不仅占据了程序员的生活,而且似乎已经成为了某种信仰。可是,伴随着新世纪的脚步,这些...
  • 但是+=依旧很消耗内存,循环二十多次就挂掉了,那么在字符串相加时采用"+""+="到底区别在哪? 以下是我做试验的例子 public static void main(String[] args) { String str = "str_"; int count = 0...
  • 在开发中 我们总是自定义View 添加到window上 那么到底 添加到keyWindow delegateWindow 上那 两者有什么区别吗 ? 1.遇见问题 之前的自定义弹窗总是添加到keyWindow上,一直屡试不爽。最后遇到了一个bug。 bug...
  • 一、Onenote是什么?Microsoft OneNote,是一套用于自由形式的信息获取以及多用户协作工具。OneNote最常用于笔记本电脑或台式电脑,但这套软件更适合用于支持手写笔操作的平板电脑,在这类设备上可使用触笔、声音或...
  • 文章-智力与常识有什么区别

    千次阅读 2017-08-11 22:49:44
    来自Quora的问答:智力与常识有什么区别?Howie Reith答案:当我六岁的时候,我爸爸正在教我如何玩地下城和龙。智力智慧是D&D中独立的统计。我发现这么奇怪。 所以我问他: “爸爸,为什么智力智慧不一样?” ...
  • 首先想问一下这两个函数的区别什么 其次反编译出来的代码在new了一个ComponentResourceManager的对象出来之后,是使用了ComponentResourceManager.ApplyResources这个函数 其次是想问ResourceManager中没有类似...
  • 什么虚拟机的ip地址一直在换?

    千次阅读 2019-09-05 10:00:14
    linux里的bootproto的none,static,dhcp有什么区别: https://www.cnblogs.com/lcword/p/5917295.html 网络接口配置文件: https://www.cnblogs.com/baichuanhuihai/p/8127329.html 解决 Error:No suitable device ...
  • DataInputStream类中的read(byte[] b)readFully(byte[] b)读取消息到底有什么区别呢? 下面让我来分析一下:    1.其实read(byte[] b)方法readFully(byte []b)都是利用InputStream中read() ...
  • DataReader与DataSet有什么区别

    千次阅读 2013-08-29 22:12:15
    dataset表示一个数据集,是数据在内存中的缓存。 可以包括多个表 ...DatSet 连接数据库时是非面向连接的。把表全部读到Sql中的缓冲池,并断开于数据库的连接 ...读表时,只能向前读取,读完数据后用户决定是否
  • Canonical,这个 Ubuntu 背后的公司,一直致力于使 Ubuntu 成为一个流行普遍的发行版,并且现在你可在智能手机、平板电脑、个人电脑、服务器云 VPS 的上面看到 Ubuntu 的身影。此外,Ubuntu 基于 Debian,并且是...
  • 快速解决登录PC端一直转圈数据读取中,不能进入正常聊天界面大家都在查:正在连接服务器,请等待.正在连接服务器,请等待.快速解决登录PC端一直转圈数据读取中,怎么连不上怎么一直连不上 怎么一直连接不上 怎么连接不...
  • 之前一直没有仔细研究过thencatch的写法,事实上,这个不是 axios catch 的相关 而是关于 new Promise() 的then 阮一峰在 promise 文档中介绍。 一般来说,不要在then方法里面定义 Reject 状态的回调函数...
  • RAMROM的区别

    2014-03-12 16:35:05
    很多手机用户不知道 RAM ROM 到底有什么区别总是一知半解,云雾缭绕。如今,小编为您解答,告诉您到底 RAM ROM 哪些区别。 RAMROM的区别 1 概念 RAM(random ...
  • 这是一个知乎上面很火的问题(https://www.zhihu.com/question/50211894 ),...StringBuffer,StringBuilder区别是啥? 什么是线程安全? 如何保证线程安全? 什么是锁?死锁? synchronized的实现原理是什么...
  • 前端:移动端PC端的区别

    万次阅读 2018-08-06 14:48:29
    在阿里的几次面试中,总是被问到移动端PC端有什么区别,当时回答的时候主要是回答了在兼容性、网速、适配、页面布局等方面的不同,但是还是很不系统,所以这里做一个总结。   第一: PC考虑的是浏览器的兼容性...
  • 哪些区别与优劣势?相信很多站长们也是不太了解,没关系,今天咱们一起来科普一下,windowslinux哪种服务器好,各自的优劣势哪些?  最早,投身到Linux阵营当中的是一些想完全掌握自己的命运、想通过自身...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 171,970
精华内容 68,788
关键字:

一直和总是有什么区别