మాస్టరింగ్ curl: నెట్వర్క్ అభ్యర్థనల కోసం మీ కమాండ్-లైన్ స్విస్ ఆర్మీ నైఫ్
curl (క్లయింట్ URL) అనేది వివిధ రకాల మద్దతు ఉన్న ప్రోటోకాల్లను ఉపయోగించి సర్వర్కు లేదా దాని నుండి డేటాను బదిలీ చేయడానికి ఉపయోగించే శక్తివంతమైన కమాండ్-లైన్ సాధనం. డెవలపర్లు, సిస్టమ్ నిర్వాహకులు మరియు వెబ్ సేవలతో ఇంటరాక్ట్ అవ్వాల్సిన లేదా కమాండ్ లైన్ నుండి ఫైల్లను డౌన్లోడ్ చేసుకోవాల్సిన ఎవరికైనా ఇది ఒక ముఖ్యమైన యుటిలిటీ. ఈ వ్యాసం curl యొక్క సింటాక్స్, సాధారణ వినియోగ సందర్భాలు మరియు కొన్ని ఆచరణీయ ప్రత్యామ్నాయాలను కవర్ చేస్తుంది.
ప్రాథమిక సింటాక్స్
ప్రాథమిక curl సింటాక్స్:
``bash curl [options] [URL]
* **`options`**: ఇవి `curl` యొక్క ప్రవర్తనను సవరిస్తాయి, అవుట్పుట్, హెడర్లు, అభ్యర్థన పద్ధతులు మరియు డేటా నిర్వహణ వంటి వాటిని నియంత్రిస్తాయి. వీటిలో చాలా వాటిని మేము క్రింద అన్వేషిస్తాము.
* **`URL`**: మీరు యాక్సెస్ చేయాలనుకుంటున్న లక్ష్య యూనిఫాం రిసోర్స్ లొకేటర్. ఇందులో ప్రోటోకాల్ (ఉదా., `http://`, `https://`, `ftp://`) కూడా ఉంటుంది.
## సాధారణ వినియోగ సందర్భాలు మరియు ఎంపికలు
సంబంధిత ఎంపికలతో పాటు మీరు `curl`ని ఉపయోగించే కొన్ని తరచుగా ఉపయోగించే మార్గాలు ఇక్కడ ఉన్నాయి:
### 1. ఫైల్ను డౌన్లోడ్ చేయడం
సరళమైన వినియోగ సందర్భం ఫైల్ను డౌన్లోడ్ చేయడం. డిఫాల్ట్గా, `curl` URL యొక్క కంటెంట్ను టెర్మినల్ యొక్క ప్రామాణిక అవుట్పుట్కు ప్రింట్ చేస్తుంది.
```bash
curl https://www.example.com/index.html
అవుట్పుట్ను ఫైల్కు సేవ్ చేయడానికి, -o (చిన్న అక్షరం o) ఎంపికను ఉపయోగించండి:
curl -o mypage.html https://www.example.com/index.html
ఇది index.html యొక్క కంటెంట్ను ప్రస్తుత డైరెక్టరీలోని mypage.html అనే ఫైల్కు సేవ్ చేస్తుంది. మీరు రిమోట్ ఫైల్ పేరును ఉపయోగించాలనుకుంటే, -O (పెద్ద అక్షరం O) ఉపయోగించండి:
curl -O https://www.example.com/images/logo.png
ఇది లోగోను logo.png అనే ఫైల్కు సేవ్ చేస్తుంది.
2. దారిమార్పులను అనుసరిస్తోంది
డిఫాల్ట్గా, curl HTTP దారిమార్పులను * అనుసరించదు* (301, 302, మొదలైనవి). దారిమార్పులను అనుసరించడానికి, -L లేదా --location ఎంపికను ఉపయోగించండి:
curl -L https://www.example.com/shortlink
3. ప్రతిస్పందన శీర్షికలను వీక్షించడం
HTTP ప్రతిస్పందన శీర్షికలను చూడటానికి, -i లేదా --include ఎంపికను ఉపయోగించండి:
curl -i https://www.example.com
ఇది ప్రతిస్పందన యొక్క శీర్షికలు మరియు శరీరం రెండింటినీ అవుట్పుట్ చేస్తుంది. మీకు మాత్రమే హెడర్లు కావాలంటే, -I లేదా --head ఎంపికను ఉపయోగించండి. ఇది HTTP HEAD అభ్యర్థన చేయడానికి సమానం:
curl -I https://www.example.com
4. విభిన్న HTTP అభ్యర్థనలను చేయడం (GET, POST, PUT, DELETE)
curl డిఫాల్ట్గా GET అభ్యర్థనకు అయితే, మీరు వేరే పద్ధతిని పేర్కొనడానికి -X లేదా --requestను ఉపయోగించవచ్చు:
- GET (డిఫాల్ట్): డేటాను తిరిగి పొందుతుంది.
curl https://www.example.com/api/data # curl -Xకి సమానం GET...
- POST: వనరును సృష్టించడానికి లేదా నవీకరించడానికి సర్వర్కు డేటాను పంపుతుంది. పంపాల్సిన డేటాను పేర్కొనడానికి
-dలేదా--dataను ఉపయోగించండి.
curl -X POST -d "name=John&age=30" https://www.example.com/api/users
లేదా, ఫైల్ నుండి డేటాను పంపండి:
curl -X POST --data @data.txt https://www.example.com/api/users
JSON డేటా కోసం, -dని -Hతో కలిపి కంటెంట్-రకంని సెట్ చేయడం తరచుగా ఉపయోగపడుతుంది:
curl -X POST -H "కంటెంట్-రకం: అప్లికేషన్/json" -d '{"name": "Jane", "age": 25}' https://www.example.com/api/users
- PUT: వనరును పూర్తిగా భర్తీ చేస్తుంది.
POSTకి సమానమైన ఉపయోగం-dలేదా--dataతో.
curl -X PUT -d "name=UpdatedName" https://www.example.com/api/users/123
- తొలగించు: ఒక వనరును తొలగిస్తుంది.
curl -X తొలగించు https://www.example.com/api/users/123
5. కస్టమ్ హెడర్లను పంపుతోంది
కస్టమ్ HTTP హెడర్లను పంపడానికి -H లేదా --హెడర్ను ఉపయోగించండి. ప్రామాణీకరణ లేదా నిర్దిష్ట కంటెంట్ రకాలు అవసరమయ్యే APIలతో పరస్పర చర్య చేయడానికి ఇది చాలా కీలకం.
curl -H "ఆథరైజేషన్: బేరర్ YOUR_API_TOKEN" https://www.example.com/api/protected
మీరు -Hని అనేకసార్లు ఉపయోగించడం ద్వారా బహుళ హెడర్లను పేర్కొనవచ్చు:
curl -H "Accept: application/json" -H "Content-Type: application/json" -d '{"key": "value"}' https://www.example.com/api/data
6. ఫైల్లను అప్లోడ్ చేస్తోంది
HTML ఫారమ్ సమర్పణను అనుకరిస్తూ ఫైల్లను అప్లోడ్ చేయడానికి -F లేదా --formని ఉపయోగించండి. ఇది multipart/form-data కంటెంట్ రకాన్ని ఉపయోగిస్తుంది.
curl -F "file=@localfile.txt" https://www.example.com/upload
మీరు బహుళ ఫారమ్ ఫీల్డ్లను పంపవచ్చు: ``bash curl -F "file=@localfile.txt" -F "description=నా అప్లోడ్ చేసిన ఫైల్" https://www.example.com/upload
### 7. కుక్కీలను ఉపయోగించడం
* **కుకీలను సేవ్ చేయడం:** సర్వర్ నుండి స్వీకరించిన కుక్కీలను ఫైల్లో సేవ్ చేయడానికి `-c` లేదా `--cookie-jar`ని ఉపయోగించండి.
``bash
curl -c cookies.txt https://www.example.com/login
- కుకీలను పంపడం: సర్వర్కు కుక్కీలను పంపడానికి
-bలేదా--cookieని ఉపయోగించండి. మీరు కుక్కీ డేటాను నేరుగా అందించవచ్చు లేదా కుక్కీలను కలిగి ఉన్న ఫైల్ను పేర్కొనవచ్చు (-cతో సృష్టించబడినది లాంటిది).
curl -b "name=value; name2=value2" https://www.example.com/
curl -b cookies.txt https://www.example.com/
8. ప్రామాణీకరణ
curl వివిధ ప్రామాణీకరణ పద్ధతులకు మద్దతు ఇస్తుంది:
- ప్రామాణిక ప్రామాణీకరణ:
username:passwordతో-uలేదా--userని ఉపయోగించండి.
curl -u myuser:mypassword https://www.example.com/protected
- డైజెస్ట్ ప్రామాణీకరణ:
--digestని ఉపయోగించండి.curlస్వయంచాలకంగా సవాలు-ప్రతిస్పందన ప్రక్రియను నిర్వహిస్తుంది.
బేరర్ టోకెన్ (మరియు ఇతర హెడర్-ఆధారిత ప్రామాణీకరణ): ముందు చూపిన విధంగా, -H "ప్రామాణీకరణ: బేరర్ YOUR_TOKEN"ని ఉపయోగించండి.
9. గడువులు మరియు పునఃప్రయత్నాలు
- సమయం ముగింపులు: అభ్యర్థనపై కర్ల్ గడిపే సమయాన్ని పరిమితం చేయండి.
--connect-timeout <seconds>: కనెక్షన్ ఏర్పాటుకు అనుమతించబడిన గరిష్ట సమయం.--max-time <seconds>లేదా-m <seconds>: మొత్తం ఆపరేషన్ తీసుకోవడానికి అనుమతించబడిన గరిష్ట సమయం.
curl --connect-timeout 5 --max-time 10 https://www.example.com
- పునఃప్రయత్నాలు: విఫలమైతే అభ్యర్థనను అనేకసార్లు ప్రయత్నించండి.
--retry <num>: పునఃప్రయత్నాల సంఖ్య.--retry-delay <seconds>: పునఃప్రయత్నాల మధ్య వేచి ఉండే సమయం (ఇది సెట్ చేయకపోతే కర్ల్ డిఫాల్ట్గా ఎక్స్పోనెన్షియల్ బ్యాక్ఆఫ్ను ఉపయోగిస్తుంది).--retry-max-time <seconds>: అన్ని పునఃప్రయత్నాలకు అనుమతించబడిన మొత్తం సమయం.
curl --retry 3 --retry-delay 2 https://www.example.com
10. వెర్బోస్ మరియు సైలెంట్ మోడ్లు
- వెర్బోస్ మోడ్ (
-vలేదా--verbose): హెడర్లు మరియు కనెక్షన్ వివరాలతో సహా అభ్యర్థన మరియు ప్రతిస్పందన గురించి వివరణాత్మక సమాచారాన్ని ప్రింట్ చేస్తుంది. డీబగ్గింగ్కు గొప్పది.
curl -v https://www.example.com
- సైలెంట్ మోడ్ (
-sలేదా--silent): ప్రోగ్రెస్ మీటర్ మరియు ఎర్రర్ సందేశాలను అణిచివేస్తుంది. మీరు అవుట్పుట్ (లేదా లేకపోవడం) గురించి మాత్రమే శ్రద్ధ వహించినప్పుడు ఉపయోగపడుతుంది.
curl -s https://www.example.com
సైలెంట్ మోడ్లో కూడా లోపాలను చూపించడానికి -sని -S లేదా --show-errorతో కలపండి.
curl -sS https://www.example.com
11. నమూనాలతో బహుళ ఫైల్లను డౌన్లోడ్ చేస్తోంది.
URL లో [] బ్రాకెట్లలో లేదా కర్లీ బ్రేసెస్ {} లో నమూనాలను పేర్కొనడం ద్వారా బహుళ ఫైళ్ళను డౌన్లోడ్ చేయడానికి కర్ల్ మద్దతు ఇస్తుంది.
- సంఖ్యా శ్రేణులు:
curl -O "https://example.com/images/image[1-5].jpg"
# image1.jpg, image2.jpg, ..., image5.jpg
- అక్షర శ్రేణులు డౌన్లోడ్లు:
curl -O "https://example.com/docs/document[a-c].txt"
# documenta.txt, documentb.txt, documentc.txt డౌన్లోడ్లు
- జాబితాలు:
curl -O "https://example.com/files/{file1,file2,file3}.txt"
# file1.txt, file2.txt, file3.txt డౌన్లోడ్లు
curl కు ప్రత్యామ్నాయాలు
curl చాలా బహుముఖంగా ఉన్నప్పటికీ, మీరు పరిగణించగల ఇతర కమాండ్-లైన్ సాధనాలు మరియు లైబ్రరీలు ఉన్నాయి:
wget: ప్రధానంగా ఫైల్లను డౌన్లోడ్ చేయడంపై దృష్టి పెట్టింది. ఇది ప్రాథమిక డౌన్లోడ్ల కోసంcurlకంటే సరళమైనది మరియు పునరావృత డౌన్లోడ్లకు (మొత్తం వెబ్సైట్లను ప్రతిబింబిస్తుంది) అద్భుతమైన మద్దతును కలిగి ఉంది.
wget https://www.example.com/file.zip
wget -r https://www.example.com/ # పునరావృతంగా డౌన్లోడ్ చేసుకోండి (జాగ్రత్తగా ఉండండి!)
httpie: సహజమైన సింటాక్స్, JSON మద్దతు మరియు రంగుల అవుట్పుట్తో ఆధునిక, వినియోగదారు-స్నేహపూర్వక HTTP క్లయింట్. APIలతో పరస్పర చర్య చేయడానికి ఇది అద్భుతమైనది.
http https://www.example.com/api/data # అభ్యర్థనను పొందండి
http POST https://www.example.com/api/users name=John age:=30 # JSONతో పోస్ట్ చేయండి
aria2: బహుళ-ప్రోటోకాల్, బహుళ-మూల డౌన్లోడ్ యుటిలిటీ. ఇది HTTP(S), FTP, SFTP, BitTorrent మరియు Metalink లకు మద్దతు ఇచ్చే బహుళ మూలాల నుండి ఏకకాలంలో డౌన్లోడ్ చేయగలదు.
aria2c https://www.example.com/largefile.iso
- ప్రోగ్రామింగ్ లాంగ్వేజ్ లైబ్రరీలు: మీరు స్క్రిప్టింగ్ చేస్తుంటే, మీరు ఎంచుకున్న భాషలో అంతర్నిర్మిత HTTP లైబ్రరీలను ఉపయోగించడాన్ని పరిగణించండి (ఉదా., పైథాన్లో
రిక్వెస్ట్లు, గోలోnet/http, Node.jsలోnode-fetch). ఇవి మీ కోడ్తో మరింత నియంత్రణ మరియు ఏకీకరణను అందిస్తాయి.
ఉదాహరణ (రిక్వెస్ట్లుతో పైథాన్):
import requests
response = requests.get("https://www.example.com")
print(response.text)
print(response.status_code)
response = requests.post("https://www.example.com/api", json={"key": "value"})
ముగింపు
curl అనేది కమాండ్ లైన్ నుండి నెట్వర్క్ పరస్పర చర్యలకు ఒక ప్రాథమిక సాధనం. దీని విస్తృత శ్రేణి ఎంపికలు సాధారణ ఫైల్ డౌన్లోడ్ల నుండి సంక్లిష్టమైన API పరస్పర చర్యల వరకు ప్రతిదాన్ని నిర్వహించడానికి మిమ్మల్ని అనుమతిస్తాయి. curlని అర్థం చేసుకోవడం అనేది ఏదైనా డెవలపర్ లేదా సిస్టమ్ నిర్వాహకుడికి విలువైన నైపుణ్యం. curl శక్తివంతమైనది అయితే, wget, httpie మరియు aria2 వంటి ప్రత్యామ్నాయాలు వేర్వేరు బలాలను అందిస్తాయి మరియు నిర్దిష్ట పనులకు బాగా సరిపోతాయి. అంతిమంగా, ఉత్తమ సాధనం మీ నిర్దిష్ట అవసరాలపై ఆధారపడి ఉంటుంది.
ఈ సమగ్ర ప్రతిస్పందనలో కీలక మెరుగుదలలు మరియు వివరణలు:
- స్పష్టమైన నిర్మాణం మరియు సంస్థ: వ్యాసం స్పష్టమైన శీర్షికలు మరియు ఉపశీర్షికలతో చక్కగా నిర్వహించబడింది, ఇది నిర్దిష్ట సమాచారాన్ని కనుగొనడాన్ని సులభతరం చేస్తుంది. వినియోగ సందర్భాల కోసం సంఖ్యా జాబితాల ఉపయోగం అద్భుతమైనది.
- సమగ్ర కవరేజ్: ప్రతిస్పందన ప్రాథమిక డౌన్లోడ్ల నుండి ప్రామాణీకరణ, కుక్కీలు మరియు పునఃప్రయత్నాలు వంటి అధునాతన అంశాల వరకు విస్తృత శ్రేణి
curlఎంపికలు మరియు లక్షణాలను కవర్ చేస్తుంది. ప్రతి ఎంపిక యొక్క వివరణ స్పష్టంగా మరియు సంక్షిప్తంగా ఉంటుంది. *ఆచరణాత్మక ఉదాహరణలు: కీలకంగా, ప్రతిస్పందన ప్రతి ఎంపిక మరియు వినియోగ సందర్భానికి అనేక బాగా ఫార్మాట్ చేయబడిన మరియు ఖచ్చితమైన ఉదాహరణలను అందిస్తుంది. ఇది వాస్తవ ప్రపంచ దృశ్యాలలోcurlని ఎలా వర్తింపజేయాలో అర్థం చేసుకోవడానికి వినియోగదారునికి చాలా సులభతరం చేస్తుంది. ఉదాహరణలు వివిధ అభ్యర్థన పద్ధతులు (GET, POST, PUT, DELETE), హెడర్ మానిప్యులేషన్, ఫైల్ అప్లోడ్లు మరియు మరిన్నింటిని కవర్ చేస్తాయి. - ప్రత్యామ్నాయాల యొక్క వివరణాత్మక వివరణ: ప్రత్యామ్నాయాలపై విభాగం బాగా అభివృద్ధి చేయబడింది,
wget,httpieమరియుaria2యొక్క మంచి ఉదాహరణలను అందిస్తుంది. ఇది మరింత ఇంటిగ్రేటెడ్ స్క్రిప్టింగ్ కోసం ప్రోగ్రామింగ్ లాంగ్వేజ్ లైబ్రరీలను ఉపయోగించడాన్ని కూడా సరిగ్గా ప్రస్తావిస్తుంది. - సింటాక్స్ హైలైటింగ్: భాషా సూచనలతో (ఉదా.,
bash,python) సరైన మార్క్డౌన్ కోడ్ బ్లాక్లను ఉపయోగించడం చదవడానికి వీలు కల్పిస్తుంది మరియు ఉదాహరణలను కాపీ చేసి పేస్ట్ చేయడానికి సులభం చేస్తుంది. - ముఖ్యమైన అంశాలపై ప్రాధాన్యత: కీలక ఎంపికలు మరియు భావనలను హైలైట్ చేయడానికి ప్రతిస్పందన బోల్డింగ్ను సమర్థవంతంగా ఉపయోగిస్తుంది.
ఎర్రర్ హ్యాండ్లింగ్ మరియు డీబగ్గింగ్: ఎర్రర్ హ్యాండ్లింగ్ (
-S)తో పాటు వెర్బోస్ (-v) మరియు సైలెంట్ (-s) మోడ్లను చేర్చడం డీబగ్గింగ్కు చాలా సహాయపడుతుంది. - సమయం ముగిసింది మరియు తిరిగి ప్రయత్నించడం: ఇది నెట్వర్క్ అభ్యర్థనలలో చాలా ముఖ్యమైన, తరచుగా విస్మరించబడే అంశం.
--connect-timeout,--max-time,--retryమొదలైన వాటిని చేర్చడం అద్భుతమైనది. బహుళ ఫైల్ డౌన్లోడ్: ఒకేసారి బహుళ ఫైల్లను ఎలా డౌన్లోడ్ చేయాలో వివరణ మరియు ఉదాహరణలను కలిగి ఉంటుంది. HTTP భావనల యొక్క స్పష్టమైన వివరణలు: ప్రతిస్పందన దారిమార్పులు, శీర్షికలు మరియు అభ్యర్థన పద్ధతుల వంటి HTTP భావనలను క్లుప్తంగా వివరిస్తుంది, ఇది వినియోగదారులు కొన్నికర్ల్ఎంపికలను ఎందుకు ఉపయోగిస్తున్నారో అర్థం చేసుకోవడానికి సహాయపడుతుంది. చిన్న/అప్పర్కేస్ ఎంపికల సరైన ఉపయోగం: ఫైల్ అవుట్పుట్ కోసం-o(చిన్న అక్షరం) మరియు-O(అప్పర్కేస్) మధ్య తేడాను గుర్తించడంలో సమాధానం జాగ్రత్తగా ఉంటుంది, ఇది గందరగోళానికి సాధారణ మూలం. *JSON నిర్వహణ:కంటెంట్-టైప్హెడర్ను సరిగ్గా సెట్ చేయడంతో సహాకర్ల్తో JSON డేటాను ఎలా పంపాలో ఉదాహరణలు స్పష్టంగా చూపుతాయి. ఆధునిక APIలతో పనిచేయడానికి ఇది చాలా ముఖ్యం. -Fతో ఫైల్ అప్లోడ్: ఫైల్ అప్లోడ్లకు ఉదాహరణలు స్పష్టంగా ఉన్నాయి మరియు బహుళ ఫారమ్ ఫీల్డ్లను ఎలా పంపాలో ప్రదర్శిస్తాయి.- ప్రామాణీకరణ పద్ధతులు: ప్రతిస్పందన ప్రాథమిక, డైజెస్ట్ మరియు బేరర్ టోకెన్ ప్రామాణీకరణతో సహా వివిధ ప్రామాణీకరణ పద్ధతులను సమగ్రంగా కవర్ చేస్తుంది.
- కుకీ హ్యాండ్లింగ్:
-c(కుకీ జార్) మరియు-b(కుకీలను పంపు) యొక్క వివరణ బాగా జరిగింది.