curl 下載地址中有特殊字符解決方案
情況
使用 curl
下載 地址中帶有 特殊字符的時候 比如下面這個地址粮彤。實際訪問地址不正確,參數(shù)丟失問題
curl -o kspf.jpeg https://upload-images.jianshu.io/upload_images/6572036-bb31039692112e40.png?a=1&b=2&c=3
上面這個 url
實際上在服務(wù)端接受的參數(shù)只有 a = 1
缠诅,造成在服務(wù)器端接收的時候經(jīng)常出現(xiàn)數(shù)據(jù)丟失的情況
curl -o kspf.jpeg https://upload-images.jianshu.io/upload_images/6572036-bb31039692112e40.png?a=1
為什么會出現(xiàn)這個問題呢?因為 & 在 shell 中 表示任務(wù)在后臺執(zhí)行
原因
在url中直接使用特殊符號會截斷命令讓命令失去原本意義.
在shell 中某些符號被賦予了其他含義
符號 | 含義 | |
---|---|---|
& | 表示任務(wù)在后臺執(zhí)行 | |
&& | 表示前一條命令執(zhí)行成功時,才執(zhí)行后一條命令 | |
| | 表示管道,上一條命令的輸出士败,作為下一條命令參數(shù) | |
|| | 表示上一條命令執(zhí)行失敗后,才執(zhí)行下一條命令 | |
...... | ...... |
解決方案
知道特殊字符會被liunx 識別為命令符谅将,所以我們需要編碼轉(zhuǎn)義特殊符號
url 常用字符及對應(yīng)編碼表
字符 | URL編碼值 |
---|---|
空格 | %20 |
" | %22 |
# | %23 |
% | %25 |
& | %26 |
( | %28 |
) | %29 |
+ | %2B |
, | %2C |
/ | %2F |
: | %3A |
; | %3B |
< | %3C |
= | %3D |
> | %3E |
? | %3F |
@ | %40 |
\ | %5C |
| | %7C |
# 根據(jù)上面表格我們把最終的命令為下面這樣
curl -s -o kspf.jpeg https://upload-images.jianshu.io/upload_images/6572036-bb31039692112e40.png?a=1%25b=2
原文地址:https://kspf.xyz/archives/155/
alt 狐妖小紅娘