কার্ল প্রতিক্রিয়া বডি শেষে স্বয়ংক্রিয়ভাবে নিউলাইন যুক্ত করুন


234

যদি কার্ল অনুরোধের জন্য এইচটিটিপি রেসপন্সের বডিটিতে কোনও অনুমানযোগ্য নতুন লাইন না থাকে তবে আমি এই সত্যিই বিরক্তিকর অবস্থার সাথে শেষ করি যেখানে শেল প্রম্পটটি লাইনের মাঝখানে থাকে, এবং পালানো যথেষ্ট গণ্ডগোল হয় যে যখন আমি শেষ কার্লটি রাখি তখন স্ক্রিনে কমান্ড, সেই কার্ল থেকে অক্ষর মুছে ফেলা কমান্ডটি ভুল অক্ষর মুছবে।

উদাহরণ স্বরূপ:

[root@localhost ~]# curl jsonip.com
{"ip":"10.10.10.10","about":"/about"}[root@localhost ~]#

পর্দার বাম প্রান্তে প্রম্পটটি ফিরে পেতে, কার্ল প্রতিক্রিয়া শেষে স্বয়ংক্রিয়ভাবে একটি নতুন লাইন যুক্ত করতে আমি কোন কৌশলটি ব্যবহার করতে পারি?


আমার সাইগউইন ইনস্টলটি কার্লের যে কোনও সংস্করণেই এই উত্তরগুলির কোনওটিই আমার পক্ষে কাজ করে না; প্রতিধ্বনি বিবৃতিতে পুরো কার্ল কমান্ডটি কেবল মোড়ানোই যেমন echo "$(curl localhost:8001/api)"উত্তরটি দেয়: unix.stackexchange.com/a/217611/110338
অ্যালেক্স হল

উত্তর:


418

ম্যান ফাইল থেকে:

স্ক্রিপ্ট প্রোগ্রামারদের কার্লের অগ্রগতি সম্পর্কে আরও ভালভাবে জানতে, -w / - রাইটিং-আউট বিকল্পটি চালু করা হয়েছিল। এটি ব্যবহার করে, আপনি পূর্ববর্তী স্থানান্তর থেকে কোন তথ্যটি বের করতে চান তা নির্দিষ্ট করতে পারেন।

কিছু পাঠ্য এবং একটি শেষ নিউলাইন সহ এক সাথে ডাউনলোড করা বাইটের পরিমাণ প্রদর্শন করতে:

curl -w 'We downloaded %{size_download} bytes\n' www.download.com

সুতরাং আপনার ~/.curlrcফাইলটিতে নিম্নলিখিতগুলি যুক্ত করার চেষ্টা করুন:

-w "\n"

46
আপনি নিম্নলিখিত কমান্ডটি চালাতে পারেন যা এটি আপনার জন্য করে:echo '-w "\n"' >> ~/.curlrc
tbraun

5
আমি সর্বদা -w "\n"প্রতিটি কার্ল কমান্ডে ম্যানুয়ালি যুক্ত করি এবং টিআইএল ~/.curlrcউপস্থিত রয়েছে!
Zhuoyun ওয়েই

2
এটি উইন্ডোজে গিট-ব্যাশের অধীনে কাজ করতে পারে না; আমি আমার সাথে যুক্ত -w "\nKLJLJKLJ LJKLLKJ"হয়ে ~/.curlrcএকটি কার্ল চালিয়েছি এবং একটি নতুন লাইন বা উদ্ভট চরিত্রগুলিও পাই নি।
jcollum

@ জ্যাকলুম কিছু উইন্ডোজ পোর্ট _তার চেয়ে বেশি পছন্দ করে .। আপনার কার্ল খুঁজছেন এমন সম্ভাবনা রয়েছে ~/_curlrcএবং ফলস্বরূপ echo '-w "\n"' >> ~/_curlrcসম্ভবত এটি কাজ করবে। এটা আমার জন্য। বিটিডাব্লু: কার্ল
অনস্কেপড

সেখানে সঙ্গে কমান্ড লাইন ব্যবহার করে মান -w "\n"বা সংযোজন ; echoআপনার পরিবর্তন ওভার .curlrc। আপনি যদি আপনার কার্লসিআরসি পরিবর্তন করেন তবে প্রতিক্রিয়া ডেটার শেষে কোনও নতুন লাইন হ্যান্ডেল না করলে কিছু স্ক্রিপ্ট ভেঙে যেতে পারে। আমি ব্যক্তিগতভাবে আরসি পরিবর্তন করার মাধ্যমে কমান্ড লাইনে সংযোজনগুলি দিয়ে থাকব।
জেসন

99

চেষ্টা কর :

curl jsonip.com; echo 

আউটপুট

{"ip":"x.x.x.x","about":"/about"}

এটি যে সহজ;)

(এবং কার্ল কমান্ডের মধ্যে সীমাবদ্ধ নয় তবে সমস্ত কমান্ড যা নতুন লাইনের সাথে শেষ হয় না)


3
কোনও স্ক্রিপ্ট বা বাশ ওরফে বা অনুরূপ কিছুতে এটি মোড়ানোর কোনও উপায় আছে কি? প্রতিটি লাইনের শেষে "; প্রতিধ্বনি" টাইপ করা ক্লান্তিকর হতে পারে এবং আমার মনে হয় এটি কোনওভাবে স্বয়ংক্রিয়ভাবে সক্ষম হওয়া উচিত।
ম্যাথু জি

সুতরাং, কিছু অনুসন্ধান প্রচেষ্টা সরবরাহ করা ভাল। কীভাবে এটি একটি উপনাম বা স্ক্রিপ্টে রাখবেন তা সন্ধান করা সুস্পষ্ট।
গিলস কুইনট

2
লক্ষ্য করুন যে ইকো কমান্ড যুক্ত করাল কমান্ড থেকে প্রস্থান কোড সাফ করে। সর্বাধিক জনপ্রিয় উত্তরে প্রস্তাবিত কার্ল করার জন্য -w "\ n" বিকল্পটি কার্লের প্রস্থান কোডটি পরিদর্শন করার জন্য উপলব্ধ রাখে।
ব্র্যাডোয়াক্স

14

আরও তথ্যের পাশাপাশি কার্লের পরে একটি পরিষ্কার নতুন লাইন

~/.curlrc

-w "\nstatus=%{http_code} %{redirect_url} size=%{size_download} time=%{time_total} content-type=\"%{content_type}\"\n"

(আরও বিকল্প এখানে পাওয়া যায় )

redirect_urlযদি অনুরোধটি পুনঃনির্দেশিত না হয় বা আপনি -Lপুনঃনির্দেশটি অনুসরণ করতে ব্যবহার করেন তবে তা ফাঁকা হবে ।

উদাহরণ আউটপুট:

~ ➤  curl https://www.google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="https://www.google.co.uk/?gfe_rd=cr&amp;ei=FW">here</A>.
</BODY></HTML>

status=302 https://www.google.co.uk/?gfe_rd=cr&ei=FW size=262 time=0.044209 content-type="text/html; charset=UTF-8"
~ ➤  

সম্পাদনা করুন , আপনি ANSI রং যোগ করতে পারেন জিনিষ আরো পাঠযোগ্য করতে -wলাইন, এটা যে সহজ সরাসরি লিখতে না, কিন্তু এই স্ক্রিপ্ট একটি তৈরি করতে পারেন ~/.curlrcরং দিয়ে ফাইল।

#!/usr/bin/env python3
from pathlib import Path
import click
chunks = [
    ('status=', 'blue'),
    ('%{http_code} ', 'green'),
    ('%{redirect_url} ', 'green'),
    ('size=', 'blue'),
    ('%{size_download} ', 'green'),
    ('time=', 'blue'),
    ('%{time_total} ', 'green'),
    ('content-type=', 'blue'),
    ('\\"%{content_type}\\"', 'green'),
]
content = '-w "\\n'
for chunk, colour in chunks:
    content += click.style(chunk, fg=colour)
content += '\\n"\n'

path = (Path.home() / '.curlrc').resolve()
print('writing:\n{}to: {}'.format(content, path))
path.write_text(content)

1

বাশের সাধারণ সমাধান হ'ল কমান্ড প্রম্পটে একটি নতুন লাইন চিহ্ন যুক্ত করা:

সম্পর্কিত প্রশ্ন ( বাশ প্রম্পটের আগে একটি নতুন লাইন কীভাবে রাখবেন? ) এবং সংশ্লিষ্ট উত্তর দেখুন

এই সমাধানটি প্রতিটি কমান্ডকে কভার করে না, কেবল।

echo $PS1 # To get your current PS1 env variable's value aka '_current_PS1_'
PS1='\n_current_PS1_'

কেবলমাত্র পার্শ্ব-প্রতিক্রিয়াটি হ'ল আপনি প্রতিটি ২ য় লাইনের পরে কমান্ড প্রম্পট পাবেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.