উত্তর:
-s
অগ্রগতি মিটার অপসারণের জন্য (নীরব) বিকল্পটি যুক্ত করুন, তারপরে প্রতিক্রিয়া বডির মতো একই এফডিতে ভার্বোজ আউটপুট পেতে স্টার্ডারকে স্টার্ডারে পুনর্নির্দেশ করুন
curl -vs google.com 2>&1 | less
2>&1
।
আপনার ইউআরএলের সম্ভবত এটিতে অ্যাম্পারস্যান্ড রয়েছে। আমারও এই সমস্যাটি ছিল এবং আমি বুঝতে পেরেছিলাম যে আমার ইউআরএলটি অ্যাম্পারস্যান্ডে পূর্ণ ছিল (সিজিআই ভেরিয়েবলগুলি পেরিয়ে যাচ্ছিল) এবং তাই সবকিছু অদ্ভুতভাবে পটভূমিতে প্রেরণ করা হচ্ছিল এবং এভাবে সঠিকভাবে পুনঃনির্দেশ করা হয়নি। আপনি যদি ইউআরএল এর চারপাশে কোটস রাখেন তবে এটি ঠিক হয়ে যাবে।
উপরের উত্তরটি আমার পক্ষে কাজ করে নি, শেষ পর্যন্ত এই বাক্য গঠনটি কী ছিল:
curl https://${URL} &> /dev/stdout | tee -a ${LOG}
টি স্ক্রিনে আউটপুট রাখে, তবে এটি আমার লগে যুক্ত করে।
&> /dev/stdout
অবশ্যই অনুপস্থিত অংশ ছিল, ধন্যবাদ
আপনার যদি কোনও ফাইলে আউটপুট প্রয়োজন হয় তবে আপনি পুনর্নির্দেশটি ব্যবহার করতে পারেন:
curl https://vi.stackexchange.com/ -vs >curl-output.txt 2>&1
দয়া করে নিশ্চিত করুন যে ফ্লিপ করবেন না >curl-output.txt
এবং 2>&1
যা বাশের পুনঃনির্দেশ আচরণের কারণে কাজ করবে না ।
আমি একই জিনিসটি পেয়েছি: কার্ল নিজে থেকে মুদ্রণ করবে STDOUT এ, তবে অন্য প্রোগ্রামে পাইপ করা যায়নি।
প্রথমে, আমি ভেবেছিলাম আমি আউটপুট প্রতিধ্বনি করতে xargs ব্যবহার করে এটি সমাধান করেছি:
curl -s ... <url> | xargs -0 echo | ...
কিন্তু তারপরে, মন্তব্যে উল্লিখিত হিসাবে, এটি xargs অংশ ব্যতীতও কাজ করে, সুতরাং -s
(নিঃশব্দ মোড) স্ট্রডিউটের বহিরাগত অগ্রগতি রোধের মূল বিষয়:
curl -s ... <url> | perl -ne 'print $1 if /<sometag>([^<]+)/'
উপরের উদাহরণটি <sometag>
কার্ল স্টেটমেন্টের এক্সএমএল আউটপুট থেকে সাধারণ বিষয়বস্তু (কোনও এমবেডড ট্যাগ নেই) ধরে।
শুধু আমার 2 সেন্ট। নীচের কমান্ডটি কৌশলটি করা উচিত, যেমনটি আগে উত্তর দেওয়া হয়েছিল answered
curl -vs google.com 2>&1
তবে যদি কোনও ফাইলের আউটপুট পাওয়ার প্রয়োজন হয়,
curl -vs google.com > out.txt 2>&1
কাজ করা উচিত.
এই সাধারণ উদাহরণটি দেখায় কীভাবে কার্ল আউটপুট ক্যাপচার করা যায় এবং এটি ব্যাশ স্ক্রিপ্টে ব্যবহার করা যায়
function main
{
\curl -vs 'http://google.com' 2>&1
# note: add -o /tmp/ignore.png if you want to ignore binary output, by saving it to a file.
}
# capture output of curl to a variable
OUT=$(main)
# search output for something using grep.
echo
echo "$OUT" | grep 302
echo
echo "$OUT" | grep title
curl -v url 2>&1
, ত্রুটিগুলি সঠিকভাবে আমার জন্য স্ট্যান্ডার্ড আউটপুটে পুনঃনির্দেশিত।