linux命令和shell命令有啥区别啊?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux命令和shell命令有啥区别啊?相关的知识,希望对你有一定的参考价值。

各位大侠,刚学linux,不清楚他们之间的区别?帮我区分一下,谢谢了!

shell翻译成壳的意思,它是包裹在Linux内核外层的,一个可通过一系列的Linux命令对操作系统发出相关指令的人机界面。shell可以通过其条件语句和循环语句等,把一系列Linux命令结合在一起,形成一个相当于面向过程的程序,即shell
script,从而实现一些复杂的功能。
shell可以说是Linux命令集的概称,属于命令行的人机界面。shell是一个用C语言编写的程序,它是用户使用Linux的桥梁。shell既是一个命令语言,也是一个程序设计语言;其次,shell也指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
由此可见,shell相当于经过装饰的命令行,它与命令行一样,都能操作Linux;但是shell是面向过程的,相当于有了一定的逻辑和过程,而命令行只是单一的操作。
linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
shell与linux命令的区别
1、直接在命令行执行,就是在当前的shell环境下执行,比如涉及到一些环境变量的时候,必须在当前shell环境里执行。
2、在脚本执行的话,会fork一个子进程,所有操作都在子进程中进行。如果涉及到一些在脚本里设置环境变量的东西,脚本结束了,环境变量就消失了,如果是修改环境变量的话,需要特别注意。
3、shell可以重复或批量地进行一些命令,你也可以把自己要重复执行的命令写到脚本里面执行,而命令行的话就需要一个一个的输入命令,比较麻烦。
参考技术A shell的作用就是运行linux的命令
shell的内置命令在装shell时就有的,源码与shell的源码在一起,不同的shell有不同的内置命令;
linux的命令,其实就是没有图形界面的程序,与shell不是同时安装的,独立于不同的shell
不同的shell使用不同的内部命令,可以使用相同的程序
很多shell的内置命令名,以及使用格式非常象,甚至是一样的,但与linux命令仍然是不同的
参考技术B shell翻译成壳的意思,它是包裹在linux内核外层的,一个可通过一系列的linux命令对操作系统发出相关指令的人机界面。 shell可以通过其条件语句和循环语句等,把一系列linux命令结合在一起,形成一个相当于面向过程的程序,shell script,来实现一些较为复杂的功能。
总括,shell是linux命令集的概称,是属于命令行的人机界面。本回答被提问者采纳
参考技术C

linux命令就是系统的命令,sudo,yum,ls,cd。。。。。。
shell是脚本,可以在脚本里写很多linux命令,还有很多shell的函数

sudo是普通用户想以root的身份运行命令
yum是管理软件安装、卸载、升级的命令工具。建议按以下方式进行搜索,查阅《Linux命令大全》,你想要的Linux命令的详细介绍都在里面。

参考技术D 在命令提示符中输入“netstat -a”命令,可显示所有网络连接和侦听端口。这两个命令是什么意思,你学了就知道了。

“hadoop fs”shell 命令和“hdfs dfs”shell 命令有啥区别?

【中文标题】“hadoop fs”shell 命令和“hdfs dfs”shell 命令有啥区别?【英文标题】:what's the difference between "hadoop fs" shell commands and "hdfs dfs" shell commands?“hadoop fs”shell 命令和“hdfs dfs”shell 命令有什么区别? 【发布时间】:2013-08-11 03:58:24 【问题描述】:

他们应该是平等的吗?

但是,为什么“hadoop fs”命令显示hdfs files,而“hdfs dfs”命令显示本地文件?

这里是hadoop版本信息:

Hadoop 2.0.0-mr1-cdh4.2.1 颠覆 git://ubuntu-slave07.jenkins.cloudera.com/var/lib/jenkins/workspace/CDH4.2.1-Packaging-MR1/build/cdh4/mr1/2.0.0-mr1-cdh4.2.1/source -r 由 jenkins 于 2013 年 4 月 22 日星期一 10:48:26 PDT 编译

【问题讨论】:

问这个问题是我的错。 hdfs dfs也显示 hdfs 文件。 Differnce between `hadoop dfs` and `hadoop fs`的可能重复 【参考方案1】:

“fs”一词是指通用文件系统,根据定义,它可以指向任何文件系统(包括 HDFS),但 dfs 非常具体。另一方面,“DFS”正是指 Hadoop 分布式文件系统访问。所以当我们使用FS时,它可以进行本地或hadoop分布式文件系统相关的操作,而dfs只能进行hadoop分布式文件系统相关的操作。

所以,

    hadoop fs

当我们处理不同的文件系统时使用它,例如本地 FS、HDFS 等。

hdfs dfs

    当我们处理与 HDFS 相关的操作时使用它。

另一个与这两个类似的命令是

    hadoop dfs

不应使用此命令,因为它已被弃用。即使你使用它,它也会将命令发送到 hdfs dfs。

【讨论】:

【参考方案2】:

FS 涉及到一个通用文件系统,它可以指向任何文件系统,如本地、HDFS 等,但 dfs 非常特定于 HDFS。因此,当我们使用 FS 时,它可以执行 from/to 本地或 hadoop 分布式文件系统到目标的操作,但指定 DFS 操作与 HDFS 相关。

以下是 Hadoop 文档的摘录,将这两个描述为不同的 shell。

FS 外壳:

文件系统 (FS) shell 由 bin/hadoop fs 调用。所有 FS shell 命令都将路径 URI 作为参数。 URI 格式为scheme://autority/path。对于 HDFS,方案是 hdfs,对于本地文件系统,方案是文件。方案和权限是可选的。如果未指定,则使用配置中指定的默认方案。 HDFS 文件或目录,例如/parent/child,可以指定为hdfs://namenodehost/parent/child 或简单地指定为/parent/child(假设您的配置设置为指向hdfs://namenodehost)。 FS shell 中的大多数命令的行为类似于相应的 Unix 命令。

DFShell:

HDFS shell 由bin/hadoop dfs 调用。所有 HDFS shell 命令都将路径 URI 作为参数。 URI 格式为scheme://autority/path。对于 HDFS,方案是 hdfs,对于本地文件系统,方案是文件。方案和权限是可选的。如果未指定,则使用配置中指定的默认方案。 HDFS 文件或目录,例如/parent/child,可以指定为hdfs://namenode:namenodeport/parent/child 或简单地指定为/parent/child(假设您的配置设置为指向namenode:namenodeport)。 HDFS shell 中的大多数命令的行为类似于相应的 Unix 命令。

从上面可以得出结论,这完全取决于方案配置。当使用带有绝对 URI 的这两个命令时,即scheme://a/b,行为应该是相同的。只有文件的默认配置方案值和 fs 和 dfs 的 hdfs 分别是行为差异的原因。

【讨论】:

为什么 hdfs dfs 指向的位置与 hdfs dfs / 不同? 如果有一个交互式 shell 像 bash for hadoop 就好了【参考方案3】:

fs任何文件系统,可以是本地或HDFS,但dfs 仅指HDFS 文件系统。因此,如果您需要在不同的文件系统之间执行访问/传输数据,fs 是您的最佳选择。

【讨论】:

【参考方案4】:

hadoop fs 和 hdfs dfs 基本相同。对于 ls、rm 等一些 linux 命令,两者都给出了相同的结果。你应该使用这样的命令

hadoop fs -ls <path>
hdfs dfs -ls <path>

【讨论】:

的区别,但是,这个答案并没有解释它【参考方案5】:

fs = 文件系统dfs = 分布式文件系统

fs=其他文件系统+分布式文件系统

FS 与通用文件系统相关,它可以指向任何文件系统,如本地、HDFS 等。但 dfs 非常特定于 HDFS。因此,当我们使用 FS 时,它可以执行 from/to local 或 hadoop 分布式文件系统到 destination 的操作。但是指定DFS操作与HDFS有关。

这一切都取决于方案配置。当使用带有绝对 URI 的这两个命令时,即scheme://a/b,行为应该是相同的。只有 file://hdfs:// 的默认配置方案值分别用于 fsdfs,这是导致行为差异的原因。

【讨论】:

【参考方案6】:

以下是三个看似相同但有细微差别的命令

    hadoop fs args hadoop dfs args hdfs dfs args

  hadoop fs <args>

FS 涉及到一个通用文件系统,它可以指向任何文件系统,如本地、HDFS 等。因此,当您处理不同的文件系统时,如本地 FS、(S)FTP、S3 等,可以使用它


  hadoop dfs <args>

dfs 非常特定于 HDFS。将适用于与 HDFS 相关的操作。这已被弃用,我们应该改用 hdfs dfs


  hdfs dfs <args>

与 2nd 相同,即适用于与 HDFS 相关的所有操作,并且是推荐的命令,而不是 hadoop dfs

下面是归类为hdfs 命令的列表。

  namenode|secondarynamenode|datanode|dfs|dfsadmin|fsck|balancer|fetchdt|oiv|dfsgroups

因此,即使您使用 hadoop dfs ,它也会查找 hdfs 并将该命令委托给 hdfs dfs

【讨论】:

有趣:-)。因此,如果 hadoop fs 与任何文件系统(例如本地或 hdfs)相关,那么当我执行 hadoop fs -ls / 时,hadoop 如何选择显示 HDFS 根目录内容?另外,当我运行hadoop fs -ls / 命令时,如何告诉hadoop 显示我的本地根目录内容? 您可以在作为参数传递给hadoop fs 命令(例如hdoop fs -ls file:///)的URI 中使用file 架构来引用本地FS。如果什么都没说,则默认为 hdfs 架构,AFAIK (hdoop fs -ls / == hadoop fs -ls hdfs:///)。 为什么我需要hadoop fs -ls file:///,而还有更传统的方式来列出本地文件? 为什么不推荐使用 'hadoop' 以支持 'hdfs'?有什么功能上的区别还是只是语法上的变化? @dpsdce @OneCricketeer 哪个版本的 Hadoop,hadoop dfs 被弃用了?【参考方案7】:

https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.html

文件系统 (FS) shell 包括各种类似 shell 的命令,它们直接与 Hadoop 分布式文件系统 (HDFS) 以及其他 Hadoop 支持的文件系统,例如 Local FS、WebHDFS、S3 FS 等。

bin/hadoop fs &lt;args&gt;

所有 FS shell 命令都将路径 URI 作为参数。 URI 格式为 scheme://authority/path。对于 HDFS,方案是 hdfs,并且 对于本地 FS,方案是文件。方案和权限是可选的。如果未指定,则配置中指定的默认方案为 用过的。 HDFS 文件或目录,例如 /parent/child 可以指定为 hdfs://namenodehost/parent/child 或简单地指定为 /parent/child(假设您的 配置设置为指向 hdfs://namenodehost)。

FS shell 中的大多数命令的行为类似于相应的 Unix 命令。每个命令都描述了差异。错误信息是 发送到stderr,输出发送到stdout。

如果正在使用 HDFS,

hdfs dfs

是同义词。

【讨论】:

【参考方案8】:

据我所知,hdfs dfshadoop fs 之间没有区别。根据您使用的 Hadoop 版本,它们只是不同的命名约定。例如,1.2.1 中的注释使用hdfs dfs,而0.19 使用hadoop fs。请注意,单独的命令是逐字描述的。它们的用途相同。

另外请注意,这两个命令可以根据您指定的内容(hdfs、file、s3 等)引用不同的文件系统。如果未列出任何文件系统,它们将回退到您的配置中指定的默认值。

您使用的是 Hadoop 2.0.0,看起来 (based on 2.0.5 documentation) Alpha 版本使用 hadoop fs 并设置为使用 HDFS 作为配置中的默认方案。 hdfs dfs 命令可能会保留在之前,并且由于未在配置中指定,因此可能只是默认为本地文件系统。

所以我会坚持使用 hadoop fs 而不必太担心,因为在文档中它们是相同的。

【讨论】:

以上是关于linux命令和shell命令有啥区别啊?的主要内容,如果未能解决你的问题,请参考以下文章

shell命令行和在DOS窗口中输入命令有啥区别吗

sudo -i和sudo -s有啥区别

linux下查看进程的命令,ps grep 和 ps aux grep 有啥区别啊?

linux中 find . -name和find -name有啥区别啊!我执行命令结果是一样的,求指教

git,git bash和git shell有啥区别

linux中shell分多少种,都有啥区别