看着魔安裝中出現的所有類型的項目(例如,對於RVM),你會經常看到類似這樣的命令: curl ... | bash ...什麼是斜線?
\curl ... | bash
例如
\curl -L https://get.rvm.io | bash -s stable
我想知道爲什麼這些命令以斜線開頭 - 它們在沒有它的情況下似乎運行良好。
有什麼建議嗎?
看着魔安裝中出現的所有類型的項目(例如,對於RVM),你會經常看到類似這樣的命令: curl ... | bash ...什麼是斜線?
\curl ... | bash
例如
\curl -L https://get.rvm.io | bash -s stable
我想知道爲什麼這些命令以斜線開頭 - 它們在沒有它的情況下似乎運行良好。
有什麼建議嗎?
這用於調用「原始」命令,避免使用可能的別名調用它。也就是說,在命令curl
上禁用可能的別名並調整爲原來的別名。
如果你有
alias grep='grep --color=auto'
,然後你做grep
,就會有顏色。所以如果你不想要顏色,你只需要寫\grep
。
謝謝...當你知道它時簡單,但不可能通過谷歌找到;) – pagid 2013-04-11 16:08:22
只有在沒有相同名稱的函數時纔會調用原始命令。請參閱我的回答,以獲得通過bash評估的別名/函數/命令順序(簡而言之:'\ something':只會避免別名,但不會繞過函數。'command something':將繞過別名,功能並啓動命令「something」) – 2013-04-18 12:38:06
這是一個有趣的觀點,@OlivierDulac。我在相關的帖子中發現了很多選項:http://stackoverflow.com/q/6162903/1983854。按照你的例子,是的,'\ something'只是繞過別名,而不是具有這個名字的可能的函數。爲此,'$(which command)','「command」'可以工作。 – fedorqui 2013-04-20 11:23:56
這是一個反斜槓
是啓動命令開始使用該名稱(或功能),而不是別名。
爲了確保繞過兩個功能和別名:
command somecommand
繞過只是別名(並由此推出的功能,如果沒有功能,命令):
\somecommand
讓我們看看哪個優先於哪個(我使用bash 2.05b ... ymmv)
我會定義一個函數,並用相同的名稱作爲命令別名(LS):
$ alias ls='echo A'
$ function ls { echo B ; }
使用「型-all 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
注意:我所討論的命令是在bash(和「command」命令中)。我注意到它在一些其他shell中有所不同! – 2013-10-03 17:04:39
今天我瞭解了「命令」關鍵字。經過近二十年的Unix/Linux外殼使用。 – Perleone 2013-10-22 20:49:06
@Perleone:總是有新東西可以被發現或創造,這就是爲什麼我們喜歡這個^^ – 2013-10-23 08:58:53
它繞過可能的別名curl
。
重複在哪裏? – 2016-07-22 17:21:44