เหตุใดอักขระตัวแทนที่ไม่มีเครื่องหมายในการทำงานระยะไกลจึงใช้ scp


24

ฉันพิมพ์สิ่งนี้ใน Bash:

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

และใช้งานได้รับไฟล์ทั้งหมดที่สร้างไวด์การ์ดบนเซิร์ฟเวอร์ระยะไกล แต่ทำไมถึงใช้งานได้? scpผมคิดว่าทุบตีขยายนิพจน์ตัวแทนในการขัดแย้งก่อนที่จะกลายเป็นข้อโต้แย้งที่มองเห็นเครื่องมือเช่น

คำตอบ:


31

หากไม่มีชื่อไฟล์ที่ตรงกันแล้วนิพจน์ตัวแทนใน bash จะขยายออกไปเอง ดังนั้นตราบใดที่คุณไม่สร้างไฟล์ใด ๆ ในเครื่องซึ่งมีชื่อตรงกันuser@remote:~/dir/*.xmlคำสั่งของคุณจะทำงานโดยไม่ต้องพูด


9
และยังไม่เปิดใช้งานnullglobซึ่งมันจะขยายไปยังสตริงที่ว่างเปล่า
Eric Renouf

1
nullglobไม่ทำให้รูปแบบขยายเป็นสตริงว่าง มันทำให้มันหายไปโดยสิ้นเชิง มันเป็นความแตกต่างระหว่างscp "" .(สองข้อโต้แย้งหนึ่งในนั้นคือสตริงที่ว่างเปล่า) และscp .(อาร์กิวเมนต์เดียวและการเรียกที่ไม่ถูกต้องscp)
chepner
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.