为何curl无法下载指定图片?zsh提示‘no matches found’求助
问题
尝试使用curl工具下载指定URL的图片,执行命令如下:
curl -O https://www.augsburger-allgemeine.de/img/panorama/crop61911941/0409422329-cv16_9-w940-owebp/Wassermassen-in-Australien?t=.jpg
收到报错信息:
zsh: no matches found: https://www.augsburger-allgemeine.de/img/panorama/crop61911941/0409422329-cv16_9-w940-owebp/Wassermassen-in-Australien?t=.jpg
问题原因
这个错误由zsh的文件名通配符匹配规则导致:
- URL中的
?是zsh的特殊通配符,作用是匹配本地任意单个字符 - 在执行
curl命令前,zsh会先对包含?的URL进行本地文件匹配尝试,当找不到符合该模式的本地文件时,就会抛出no matches found错误 - 该问题和
curl工具本身无关,属于shell对命令参数的预处理行为
解决方法
将整个URL用单引号或双引号包裹,让zsh将其视为普通字符串而非通配符模式,命令示例:
curl -O 'https://www.augsburger-allgemeine.de/img/panorama/crop61911941/0409422329-cv16_9-w940-owebp/Wassermassen-in-Australien?t=.jpg'
内容的提问来源于stack exchange,提问作者Boris Grunwald
相关产品推荐
相关产品推荐

