2013-04-11 5 views
31

глядя на волшебные монтажников, которые появляются для всех типов проектов (например, для РВМ), вы всегда будете видеть команды, как: curl ... | bash ... для чего нужна косая черта?

\curl ... | bash 

например

\curl -L https://get.rvm.io | bash -s stable 

И мне было интересно, почему эти команды начинаются с косой черты - они, кажется, работают нормально без нее.

Любые предложения?

+1

Где дублировать? –

ответ

54

Это используется, чтобы вызвать команду «оригинал», избегая ее вызова с возможными псевдонимами. То есть, отключает возможные псевдонимы по команде curl и настраивается на исходную.

Если у вас есть

alias grep='grep --color=auto' 

, а затем вы grep, он будет иметь цвета. Поэтому, если вы не хотите цвета, вы просто напишите \grep.

+5

Спасибо ...просто, когда вы это знаете, но невозможно найти через Google;) – pagid

+2

он будет вызывать исходную команду ТОЛЬКО, если нет функции с тем же именем. Пожалуйста, см. Мой ответ для команды alias/function/command оценки bash (в двух словах: '\ something': будет избегать только псевдонима, но не будет обходить функцию.' Command something': будет обходить псевдоним AND и запустить команду «что-то») –

+0

Это интересный момент, @OlivierDulac. Я нашел несколько вариантов в соответствующей статье: http://stackoverflow.com/q/6162903/1983854. Следуя вашему примеру, да, '\ something' просто обходит псевдоним, а не возможные функции с этим именем. Для этого может работать '$ (какая команда)', '' команда ''. – fedorqui

20

это обратный слэш

это запустить команду, начиная с таким именем (или функции), но не ALIAS.

Чтобы убедиться в том, чтобы обойти ОБА функцию И псевдоним:

command somecommand 

Чтобы обойти только псевдоним (и, таким образом, запустить функцию, или, если нет функции, команда):

\somecommand 

Посмотрим, что имеет преимущество над которыми (я использую bash 2.05b ... ymmv)

Я определить функцию И псевдоним с тем же именем, что и команда (Ls):

$ alias ls='echo A' 
$ function ls { echo B ; } 

Использование «типа -Все 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 
+0

примечание: порядок, о котором я говорю, находится в bash (и команде «command» тоже.). Я заметил, что он отличается в некоторых других снарядах! –

+3

И сегодня я узнал о ключевом слове «команда». После почти двух десятилетий использования оболочки Unix/Linux. – Perleone

+0

@Perleone: всегда есть что-то новое, чтобы обнаружить или создать, и именно поэтому нам это нравится ^^ –

2

Он обходит возможный псевдоним curl.

Смежные вопросы