Mengapa wildcard yang tidak dikutip bekerja dari jarak jauh dengan scp?


24

Saya mengetik ini di Bash:

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

dan itu berhasil, mendapatkan semua file yang membuat wildcard di server jauh. Tetapi mengapa ini bekerja? Saya pikir Bash memperluas ekspresi wildcard dalam argumen sebelum argumen menjadi terlihat oleh alat seperti scp.

Jawaban:


31

Jika tidak ada nama file yang cocok, maka ekspresi wildcard di bash meluas ke dirinya sendiri. Jadi, selama Anda tidak membuat file apa pun secara lokal yang namanya cocok user@remote:~/dir/*.xml, perintah Anda berfungsi tanpa mengutip.


9
Dan juga tidak memungkinkan nullglobyang mana akan diperluas ke string kosong
Eric Renouf

1
nullglobtidak menyebabkan pola meluas ke string kosong; itu menyebabkannya hilang sama sekali. Ini perbedaan antara scp "" .(dua argumen, salah satunya adalah string kosong) dan scp .(argumen tunggal dan panggilan tidak valid ke scp).
chepner
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.