Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash \卷曲…|猛击。。。什么';斜线是什么意思?_Bash_Shell - Fatal编程技术网

Bash \卷曲…|猛击。。。什么';斜线是什么意思?

Bash \卷曲…|猛击。。。什么';斜线是什么意思?,bash,shell,Bash,Shell,查看针对所有类型项目(如rvm)出现的magic Installer,您总会看到如下命令: \curl ... | bash e、 g 我想知道为什么这些命令以斜杠开头——没有斜杠,它们似乎运行得很好 有什么建议吗?这用于调用“原始”命令,避免使用可能的别名调用它。也就是说,禁用命令curl上可能的别名,并调整为原始别名 如果你有 alias grep='grep --color=auto' 然后你做grep,它会有颜色。因此,如果您不想要颜色,您只需编写\grep这是一个反斜杠 它是以该名

查看针对所有类型项目(如rvm)出现的magic Installer,您总会看到如下命令:

\curl ... | bash
e、 g

我想知道为什么这些命令以斜杠开头——没有斜杠,它们似乎运行得很好

有什么建议吗?

这用于调用“原始”命令,避免使用可能的别名调用它。也就是说,禁用命令
curl
上可能的别名,并调整为原始别名

如果你有

alias grep='grep --color=auto'
然后你做
grep
,它会有颜色。因此,如果您不想要颜色,您只需编写
\grep

这是一个反斜杠

它是以该名称(或函数)而不是别名启动命令

要确保绕过功能别名

command somecommand
要绕过别名(从而启动函数,如果没有函数,则启动命令):

让我们看看哪个优先于哪个(我使用bash2.05b…ymmv)

我将定义一个与命令(ls)同名的函数和别名:

使用“类型-所有ls”显示评估顺序:

$ type -all ls
ls is aliased to `echo A'
ls is a function
ls ()
{
    echo B
}
ls is /usr/bin/ls
但我们也可以通过尝试找到答案:

$ ls
A
$ \ls
B
$ command ls
file1 file2 file3
因此,优先级顺序似乎是:别名-before-函数-before-在路径中执行的命令

当然,如果精确确定相对/绝对路径,则该路径将被强制为命令所指向的:

$ /usr/bin/ls
file1 file2 file3

它绕过了一个可能的别名
curl

谢谢。。。当你知道它但无法通过谷歌找到时,这很简单;)只有在没有同名函数时,它才会调用原始命令。请参阅我的答案,了解bash对别名/函数/命令的求值顺序(简而言之:
\something
:将只避免别名,但不会绕过函数。
命令something
:将绕过别名和函数并启动命令“something”)@OlivierDulac这是一个有趣的观点。我在一篇相关文章中找到了很多选择:。按照您的示例,是的,
\something
只是绕过别名,而不是使用此名称的可能函数。为此,
$(哪个命令)
“命令”
,可以工作。@fedorqui:或者(bash internal)
命令
关键字也可以。如:
命令命令命令
。请参阅我的答案^^@pagid我实际上是通过谷歌找到的:为什么“\curl”注意:我谈论的顺序是在bash中(还有“command”命令)。我注意到它与其他一些贝壳不同!今天我学习了“命令”关键字。在使用Unix/Linux shell将近20年之后。@Perleone:总是有新的东西需要发现或创建,这就是为什么我们喜欢这个^^复制品在哪里?
$ type -all ls
ls is aliased to `echo A'
ls is a function
ls ()
{
    echo B
}
ls is /usr/bin/ls
$ ls
A
$ \ls
B
$ command ls
file1 file2 file3
$ /usr/bin/ls
file1 file2 file3