\curl -L https://get.rvm.io | bash -s stable
Komut neden başlıyor \
?
Burası gördüğüm yer.
\curl -L https://get.rvm.io | bash -s stable
Komut neden başlıyor \
?
Burası gördüğüm yer.
Yanıtlar:
alias curl='curl --some --default --options'
İçin bir takma adınız varsa curl
ve kullanmak istemiyorsanız, önüne ters eğik çizgi koymak takma adı devre dışı bırakır ve doğrudan curl ikili dosyasını çalıştırır.
Bunun yalnızca etkileşimli bir kabuk için geçerli olduğunu unutmayın. Takma adlar komut dosyalarında etkili olmaz, bu nedenle orada gereksiz olur.
\curl
herhangi kabuk baypas değil işlevi adında curl
. Bunun için, bash yerleşik komutunu kullanabilirsiniz command
:command curl ...
\curl ...
olduğunucommand curl ...
dash
(ve muhtemelen diğer kabuklar, doğru bash
olmasa da expand_aliases
) , komut dosyalarındaki takma adları genişletir.
(Bourne / POSIX) kabuk şartname söylüyor takma ad ikamesi komut kelimenin herhangi bir karakteri alıntı edildiğinde Bir etkileşimli kabukta bastırılır. Ters eğik çizgi bunu yapmanın bir yoludur, ancak alıntı yapmak için iyi bilinen başka yollar da vardır: tek ve çift tırnak. Aşağıdakilerin tümü takma ad değiştirmeyi bastırır:
\curl
cur\l
\c\u\r\l
"c"url
"curl"
"c""u""r""l"
'curl'
'cu'"rl"
Kullanımı \curl
sadece en yaygın ve okunabilir yoldur. Bu standart bir özellik olduğundan, tüm Bourne-miras mermilerinde çalışmasını bekleyebilirsiniz.
\curl
TeX komutuna benziyor değil mi? :-)
\curl
, aynı addaki bir takma adı neden atladığına dair belirli bir neden belirttiği için; kabuk işlevlerini değil , yalnızca diğer adların bu şekilde atlandığını unutmayın ; ya da atlamayı sağlayacaktır . command curl ...
command() { echo "Not command, lol!"; } ; command -V echo ; \command -V echo ; \command command echo "This is command! (masking despair)"
basarNot command, lol!
command
kendisini bir kabuk işleviyle değiştirirseniz , mekanizmayı yenersiniz . Ne örnek gösterir ki \
baypas değil fonksiyonları belirtildiği gibi. Olmayan bir Özyıkım örnek: date() { echo 'not date'; }; date; command date
. Eğer kötü niyetli endişe ediyorsanız kurcalama ile command
, bakınız stackoverflow.com/a/35931876/45375
command
geçersiz kılmamak. Kendi bağlantınızdan:Thus, with no control over the execution environment, you cannot write shell scripts that are fully immune to tampering, unless you know that your code will be executed by dash, ksh, or bash (with the workaround in place)
shopt -s expand_aliases
, takma adı kullanmadan önce komut dosyalarında kullanılabilir