shell命令是啥
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell命令是啥相关的知识,希望对你有一定的参考价值。
参考技术A 分类: 电脑/网络 >> 软件解析:
shell不是一个程序.他大意是指对系统的操控权,一个操控接口,
shell的概念是从Unix继承下来的
shell是分等级的,所以就有了提升权限的概念
Shell就是一个命令行解释器,它的作用就是遵循一定的语法将输入的命令加以解释并传给系统。它为用户提供了一个向Linux发送请求以便运行程序的接口系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。现在延伸进WINDOWS。
在VB中Shell函数用以执行一个可执行文件,返回一个 Variant (Double),如果成功的话,代表这个程序的任务 ID,若不成功,则会返回 0。
语法
Shell(pathname[,windowstyle])
Shell 函数的语法含有下面这些命名参数:
部分 描述
pathname 必要参数。Variant (String),要执行的程序名,以及任何必需的参数或命令行变量,可能还包括目录或文件夹,以及驱动器。
Windowstyle 可选参数。Variant (Integer),表示在程序运行时窗口的样式。如果 windowstyle 省略,则程序是以具有焦点的最小化窗口来执行的。
windowstyle 命名参数有以下这些值:
常量 值 描述
vbHide 0 窗口被隐藏,且焦点会移到隐式窗口。
VbNormalFocus 1 窗口具有焦点,且会还原到它原来的大小和位置。
VbMinimizedFocus 2 窗口会以一个具有焦点的图标来显示。
VbMaximizedFocus 3 窗口是一个具有焦点的最大化窗口。
VbNormalNoFocus 4 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。
VbMinimizedNoFocus 6 窗口会以一个图标来显示。而当前活动的的窗口仍然保持活动。
说明
如果 Shell 函数成功地执行了所要执行的文件,则它会返回程序的任务 ID。任务 ID 是一个唯一的数值,用来指明正在运行的程序。如果 Shell 函数不能打开命名的程序,则会产生错误。
注意 缺省情况下,Shell 函数是以异步方式来执行其它程序的。也就是说,用 Shell 启动的程序可能还没有完成执行过程,就已经执行到 Shell 函数之后的语句。
2.Shell 函数示例
本示例使用 Shell 函数来完成一个用户指定的应用程序。
' 将第二个参数值设成 1,可让该程序以正常大小的窗口完成,并且拥有焦点。
Dim RetVal
RetVal = Shell("C:\WINDOWS\CALC.EXE", 1) ' 完成Calculator。 参考技术B
Shell是一个作为用户与系统间接口的程序,它允许用户向操作系统输入需要执行的命令。这点与Windows的命令提示符和DOS命令类似,但Linux的shell的功能更强大。Windows现在也有了强大的Powershell。
Shell仿佛是一个接口,出于安全和方便,尽可能利用它进行操作,避免直接操纵底层的内核。
参考资料:《Linux程序设计》
当我们将命令放在美元符号和括号内时,shell 中的含义是啥: $(command)
【中文标题】当我们将命令放在美元符号和括号内时,shell 中的含义是啥: $(command)【英文标题】:What does it mean in shell when we put a command inside dollar sign and parentheses: $(command)当我们将命令放在美元符号和括号内时,shell 中的含义是什么: $(command) 【发布时间】:2013-08-01 20:08:14 【问题描述】:我只想了解 shell 中的以下代码行。它用于获取当前工作目录。我知道 $(variable)
名称返回变量名称中的值,但 $(command)
应该返回什么?执行命令后是否返回值?在这种情况下,我们可以使用`
来执行命令。
CWD="$(cd "$(dirname $0)"; pwd)"
在不同版本的shell中也可以从以下代码行中获取相同的输出
DIR="$( cd "$( dirname "$BASH_SOURCE[0]" )" && pwd )"
我无法理解$(cd..
和$(dirname
的含义。
谁能帮我弄清楚这个命令是如何执行的?
【问题讨论】:
这是一个关于$()
与``
的优缺点的问题:***.com/questions/9449778/…
【参考方案1】:
$
像 $HOME
的使用给出了 HOME 的值。像$(echo foo)
一样使用$
意味着运行子shell 中括号内的任何内容并将其作为值返回。在我的示例中,您会得到 foo
,因为 echo
会将 foo
写入标准输出
【讨论】:
是的;$(...)
是一种比尝试使用反引号更好的方法来编写命令。考虑写:gcclib=$(dirname $(dirname $(which gcc)))/lib
使用反引号。甚至在您遇到在 Markdown 中执行此操作的困难之前,它就更难了,因为您必须转义嵌套命令的反引号,而 $(...)
符号则不需要。
技术上,$(echo foo)
创建一个命令替换,而不是一个子shell。当前的另一个答案是正确的。我认为命令替换是在子 shell 中运行的,但它们仍然是不同的概念。
@trysis - 命令替换definitely runs in a subshell,所以值得注意。
我知道反引号产生与 $() 相同的结果,但区别纯粹是装饰性的吗?除了 $() 更易读之外,是否有理由使用一个与另一个?
“像 $(echo foo) 这样使用 $ 意味着在子 shell 中运行括号内的任何内容并将其作为值返回。”...这令人困惑,因为此命令$(echo foo)
将尝试运行括号中返回的内容,它将首先运行echo foo
,然后尝试运行foo
,这会给出错误【参考方案2】:
DIR="$( cd "$( dirname "$BASH_SOURCE[0]" )" && pwd )"
谁能帮我弄清楚这个命令是如何执行的?
让我们看看命令的不同部分。 BASH_SOURCE
是一个包含源文件名的 bash 数组变量。所以"$BASH_SOURCE[0]"
会返回脚本文件的名称。
dirname
是 GNU coreutils 提供的一个实用程序,用于从文件名中删除 最后一个组件。因此,如果您通过说bash foo
执行脚本,"$( dirname "$BASH_SOURCE[0]" )"
将返回.
。如果你说bash ../foo
,它会返回..
;对于bash /some/path/foo
,它会返回/some/path
。
最后,整个命令"$( cd "$( dirname "$BASH_SOURCE[0]" )" && pwd )"
得到包含被调用脚本的绝对目录。
$(...)
允许命令替换,即允许命令的输出替换命令本身并且可以嵌套。
【讨论】:
很抱歉迟到了 3 年,但您能否解释一下为什么该声明有效?你说dirname
返回执行文件的路径(相对于当前工作目录或绝对路径),cd
将密码更改为该目录,pwd
打印出当前工作目录的绝对路径。但是为什么&&
会加入他们呢?如果cd
失败,DIR
会保留什么?
@Christian, &&
在cd
失败时阻止pwd
运行,这样DIR
将是空的,而不是目录不正确。以上是关于shell命令是啥的主要内容,如果未能解决你的问题,请参考以下文章