Dlaczego niewymieniony symbol wieloznaczny działa zdalnie z scp?


24

Piszę to w Bash:

scp user@remote:~/dir/*.xml .

i działa, pobierając wszystkie pliki, które tworzą symbol wieloznaczny na zdalnym serwerze. Ale dlaczego to działa? Myślałem, że Bash rozwija wyrażenia wieloznaczne w argumentach, zanim argumenty staną się widoczne dla narzędzia takiego jak scp.

Odpowiedzi:


31

Jeśli nie ma pasującej nazwy pliku, wyrażenie wieloznaczne w bash rozwija się do siebie. Tak długo, jak nie tworzysz lokalnego pliku, którego nazwa pasuje user@remote:~/dir/*.xml, twoje polecenie działa bez cudzysłowu.


9
Nie włączaj też opcji, nullglobktóra sprawiłaby, że rozwinąłaby się ona do pustego łańcucha
Eric Renouf,

1
nullglobnie powoduje rozwinięcia wzorca do pustego łańcucha; powoduje to, że całkowicie znika. Jest to różnica między scp "" .(dwoma argumentami, z których jeden jest pustym ciągiem) a scp .(jednym argumentem i niepoprawnym wywołaniem scp).
chepner
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.