cmd是什么

一直不明白,为什么cmd命令可以通过命令就打开软件, 或者操控文件的产生或者删除。

https://segmentfault.com/q/1010000000316935

首先说shell,shell直接翻译就是,按照ABS的定义,shellThe shell is a command interpreter. More than just the insulating layer between the operating system kernel and the user, it's also a fairly powerful programming language.渣英文翻一下的意思是:shell是一个命令解释器,处于内核和用户之间,负责把用户的指令传递给内核并且把执行结果回显给用户,同时,shell也可以作为一门强大的编程语言。

很显然这里的shell命令行解释器的意思.也有内核上的一层壳的含义。

然后我们看下CMD

CMDCommand shell的简写,翻译成中文也是命令外壳我擦真的好渣的翻译。我们看下微软对CMD的定义:The command shell is a separate software program that provides direct communication between the user and the operating system. The non-graphical command shell user interface provides the environment in which you run character-based applications and utilities. The command shell executes programs and displays their output on the screen by using individual characters similar to the MS-DOS command interpreter Command.com.

照例渣英文翻译下: Command Shell是一个独立的应用程序,它为用户提供对操作系统直接通信的功能,它为基于字符的应用程序和工具提供了非图形界面的运行环境,它执行命令并在屏幕上回显MS-DOS风格的字符。好啦我知道翻译很渣你行你上啊

综上,shellCMD并没有本质上的区别。另外,在linux/unix平台上,shell多半默认为Bash shell,当然也有其他shell,比如C shell什么的,在Windows平台上,shell=cmd.exe,如是而已。

都是命令行解释器,都是一个用户与操作系统的交互接口

都是命令解释器。提供解析命令行输入、执行程序、处理管道,以及完成一定的编程语言的能力,负责批处理文件的解析。(.sh for UNIX shell, .cmd or .bat for Windows CMD)Shell和CMD都提供针对文字终端的接口能力,或者也可以不和用户直接接口。

他俩除了用途相同之外,恐怕剩下的就全是区别了。

例如,Windows的CMD又另外承担了图形界面下终端模拟器的任务,Windows嘛,一切都大杂烩的烂作风。而Linux图形界面下,终端模拟器会被lxterminalsakuraterminator等单独的软件接管,不混杂,符合Unix风格。

常见的问题是将Windows的CMD认为是“DOS”。DOS和命令行绝对是两个概念,总把DOS挂嘴边的人真该改改观念了。

Windows如今也不光有CMD这一个Shell了。微软这个技术后进生在Shell上也在做改变。除了CMD是系统关键组件不动之外,又新作了一套PowerShell增强批处理等功能,去追赶Unix发展了几十年的脚步。

如果 lz 的 shell 指的是 linux 的 bash 的话:

  1. 路径分隔符,cmd 是 "\" ,bash 是 "/"
  2. 转义字符,cmd 是 ^ 和双引号,bash 有双引号,单引号和 "\"
  3. 顺序执行两个命令,cmd 是 cmd1 && cmd1 而 bash 是 cmd1 ; cmd2
  4. and 执行两个命令,cmd 是 cmd1 & cmd2 而 bash 是 cmd1 && cmd2
  5. 通配符实现原理不同,比如 cmd 中使用 dir *.dll 的这个“*.dll”的通配符是 dir 自己实现的,但是在 bash 中 ls *.txt 通配符是 bash 实现的,也就是说传入 ls 命令的实际参数相当于 1.txt 2.txt ... 这样子
  6. PATH 的分隔符, cmd 是分号,bash 是冒号
  7. 虽然 echo 都是内置命令,但是功能有一些差异
  8. 放在后台执行,bash 是 & ,而 cmd 是 start 命令
  9. bash 的很多功能,比如 alias ,cmd 没有对应物
好吧,最后好像还是没明白为什么
### pos_cmd 的定义与用法 在嵌入式开发环境中,`pos_cmd` 并不是一个标准的预定义宏或者命令。然而,在特定项目或框架中可能会自定义 `pos_cmd` 来实现某些功能。 对于类似的命令定义方式可以参考 U-Boot 中使用的命令定义格式: ```c #define U_BOOT_CMD(_name, _maxargs, _rep, _cmd, _usage, _help) \ struct cmd_tbl_s command_table_##_name[] = { \ {#_name, _maxargs, _rep, _cmd, _usage_string, _help}, \ }; ``` 上述代码展示了如何通过宏来创建一个新的命令表项[^1]。这表明如果存在 `pos_cmd` 类似的定义,则可能是为了注册新的命令到系统的命令解析器中去。 另外一种情况是在 Python 脚本里调用 CMD 命令时可能涉及到类似命名约定的情况: ```python import subprocess def run_pos_command(command): result = subprocess.run(['cmd', '/c', ' '.join(command)], capture_output=True) return result.stdout.decode() ``` 这里展示了一个简单的例子,其中定义了名为 `run_pos_command` 函数用于运行指定的 Windows 命令并返回其输出结果[^2]。不过需要注意的是这里的 “pos” 是假设性的前缀,并不代表实际存在的 `pos_cmd`。 当提到像 `MSH_CMD_EXPORT` 这样的导出机制时,通常是为了让某个函数可以在 Shell 或者其他交互界面下调用: ```c static int lcd_hw_init(void) { /* Initialization code here */ } MSH_CMD_EXPORT(lcd_hw_init, "Initialize LCD hardware"); ``` 这段 C 代码片段显示了怎样把一个初始化液晶显示器硬件的功能暴露给外部 shell 使用[^4]。同样地,如果有 `pos_cmd` 存在这个上下文中的话,它应该也是遵循相同的原则被设计出来的。 由于缺乏具体的文档支持关于 `pos_cmd` 的确切含义,请查阅具体项目的源码文件或是询问该项目维护人员获取更详细的解释。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值