প্রতিধ্বনি যে stderr আউটপুট


1113

স্ট্যাডআউটের পরিবর্তে স্ট্যাডারের আউটপুটগুলির মতো প্রতিধ্বনির মতো কাজ করে এমন কোনও স্ট্যান্ডার্ড বাশ সরঞ্জাম রয়েছে?

আমি জানি আমি এটি করতে পারি echo foo 1>&2তবে এটি কৃপণ এবং আমি সন্দেহ করি ত্রুটির প্রবণতা (উদাহরণস্বরূপ যখন বিষয়গুলি পরিবর্তিত হয় তখন ভুল সম্পাদনা হওয়ার সম্ভাবনা বেশি থাকে)।


সংশ্লিষ্ট: stackoverflow.com/a/12704488/194894
ফ্লো

উত্তর:


1449

আপনি এটি করতে পারেন, যা পড়ার সুবিধে করে:

>&2 echo "error"

>&2ডেস্ক্রিপ্ট # 1 ফাইল করতে ডেস্ক্রিপ্ট # 2 ফাইল অনুলিপি করে। সুতরাং, এই পুনঃনির্দেশ সঞ্চালনের পরে, উভয় ফাইল বর্ণনাকারী একই ফাইলটিকে উল্লেখ করবে: একটি ফাইল বর্ণনাকারী # 2 মূলত উল্লেখ করা হয়েছিল। আরও তথ্যের জন্য দেখুন ব্যাশ হ্যাকারস সচিত্র পুনঃনির্দেশ টিউটোরিয়াল


2
আমি এই কৌশলটি বেশ কিছুক্ষণ আগে শিখেছি। এই পৃষ্ঠায় এটি ভাল কিছু তথ্য আছে। tldp.org/LDP/abs/html/io-redirection.html
মার্কো অরেলিও

46
@ বিবিএস আমি aliasশেল স্ক্রিপ্টে একটি ব্যবহার সম্পর্কে জেনে থাকি না । এটি ব্যবহার করা সম্ভবত নিরাপদ হবেerrcho(){ >&2 echo $@; }
ব্র্যাডেন সেরা

3
> & 2 সাধারণত শেষে রাখা হয়। এটি কাজ করবে, তবে এটি প্রায়শই কম ব্যবহৃত হয়
ইস্ক্রেন আইভভ চের্নেভ

158
আমি প্রায় ৪০ বছর ধরে যেহেতু আমি ইউনিক্স-এর মতো সিস্টেমগুলি ব্যবহার করেছি এটি আমার কাছে কখনও ঘটেনি যে আপনি অন্য কোনও জায়গায় পুনর্নির্দেশ করতে পারেন তবে শেষ পর্যন্ত। এটিকে সামনে রেখে এটি আরও স্পষ্ট করে তোলে (বা "মার্কো অরেলিও বলেছে" পাঠের সুবিধার্থে)। আমাকে নতুন কিছু শেখানোর জন্য +1।
হেফেস্টাস

এফওয়াইআই: আপনি যদি স্ট্রিং প্রতিধ্বনি ছাড়াও ফর্ম্যাট করতে বা কিছু করতে চান তবে আপনাকে পুনঃনির্দেশটি শেষ পর্যন্ত সরিয়ে ফেলতে হবে। উদাহরণস্বরূপ errcho(){ >&2 echo $@|pr -To5;}কাজ করবে না। এর মতো কিছু করতে আপনাকে সর্বশেষ পাইপের পরে পুনর্নির্দেশটি অন্য কোথাও রেখে দিতে হবে:errcho(){ echo $@|>&2 pr -To5;}
জন রেড

423

আপনি একটি ফাংশন সংজ্ঞায়িত করতে পারে:

echoerr() { echo "$@" 1>&2; }
echoerr hello world

এটি কোনও স্ক্রিপ্টের চেয়ে দ্রুত হবে এবং এর কোনও নির্ভরতা নেই।

ক্যামিলো মার্টিনের বাশ নির্দিষ্ট পরামর্শটিতে একটি "এখানে স্ট্রিং" ব্যবহার করা হয়েছে এবং আপনি এতে যা যা কিছু প্রিন্ট করবেন, আর্গুমেন্ট (-এন) সহ যা প্রতিধ্বনিকে সাধারণত গ্রাস করবে:

echoerr() { cat <<< "$@" 1>&2; }

গ্লেন জ্যাকম্যানের সমাধান যুক্তি গিলতে সমস্যা এড়ানো:

echoerr() { printf "%s\n" "$*" >&2; }

7
আমি অবশ্যই বলতে পারি যে প্রতিধ্বনি অবিশ্বাস্য। echoerr -ne xt"-ne xt" মুদ্রণ করতে যাচ্ছে না। তার printfজন্য আরও ভাল ব্যবহার ।
ক্যামিলো মার্টিন

10
ওহ, আপনি আসলে বিড়ালটিও ব্যবহার করতে পারেন:echoerr() { cat <<< "$@" 1>&2; }
ক্যামিলো মার্টিন

2
আমি এটা সম্পর্কে অবগত ছিল না। যোগ করা হয়েছে।
জেমস রথ

4

4
@GKFX অবশ্যই উদ্ধৃত করার সময় এটি সঠিকভাবে কাজ করে। লোকেরা কেন তাদের স্ট্রিং উদ্ধৃত করে না তা আমার বাইরে। (যখন আপনি উদ্ধৃতি দেবেন না, এক বা একাধিক $IFSসাদা স্থানের দ্বারা পৃথক করা সমস্ত কিছু পৃথক যুক্তি হিসাবে প্রেরণ করা হয়, যা এর ক্ষেত্রে echoতাদের সাথে যুক্ত করে বোঝানো হয় 0x20, তবে টাইপ করার জন্য 2 কম অক্ষরের সুবিধার তুলনায় বেশি পরিমাণে ওজন না দেওয়ার ঝুঁকিগুলি) ।
ক্যামিলো মার্টিন

252

যেহেতু 1স্ট্যান্ডার্ড আউটপুট, তাই আপনাকে পরিষ্কারভাবে কোনও আউটপুট পুনঃনির্দেশের সামনে এটির নামকরণ করতে হবে না >তবে পরিবর্তে কেবল টাইপ করতে পারেন:

প্রতিধ্বনিটি এই বার্তাটি স্টাডার> & 2 এ যায়

যেহেতু আপনি উদ্বিগ্ন বলে মনে করছেন যা 1>&2আপনার পক্ষে নির্ভরযোগ্যভাবে টাইপ করা শক্ত হবে, তাই অপ্রয়োজনীয় বর্জন আপনার জন্য 1সামান্য উত্সাহ হতে পারে!


59

অন্য একটি বিকল্প

echo foo >>/dev/stderr

4
এই বিকল্পটি কি বহনযোগ্য? কেউ যদি জানেন যে এটি কিছু ইউনিক্স গন্ধের জন্য কাজ করছে না?
ডাকাভ

7
এটি নির্দিষ্ট ক্রুটে কাজ করে না, যা / dev / stderr অ্যাক্সেস করতে পারে না।
জ্যাকারি ভ্যানস

12
যদি এই স্ক্রিপ্টটি এই লাইনটি কার্যকর করে - আসুন এটি কল করুন foo- এর নিজস্ব স্টারডার পুনঃনির্দেশিত হয়েছে - যেমন foo >foo.log 2>&1- তারপরে echo foo >/dev/stderrতার আগে সমস্ত আউটপুট ক্লোবার করে। >>পরিবর্তে ব্যবহার করা উচিত:echo foo >>/dev/stderr
দোষিয়া

একইভাবে, আপনি আছে /dev/fd/2
jbruni

@Dacav এই নিশ্চিত পোর্টেবল জন্য: /proc/self/fd/2। নীচে আমার উত্তর দেখুন :)
সেবাস্তিয়ান

31

না, এটি করার আদর্শ উপায় এটি ত্রুটি সৃষ্টি না করা উচিত।


9
এটি ত্রুটি সৃষ্টি না করা উচিত, তবে আমার সম্ভবত এটির সম্ভাবনা বেশি। ওটিওহ এটি এত বড় বিষয় নয়।
বিসিএস

6
@ মাইক ডিসিমোন: যদি অন্য কেউ কোডটি নিয়ে গোলমাল করে, আউটপুটটি ঘিরে 1>&2। আমরা সকলেই আশা করি এটি ঘটবে না, তবে আমি নিশ্চিত যে আমরা সবাই যেখানে ছিল সেখানে ছিলাম।
ক্যাসকেবেল

2
( echo something 1>&2 ; something else ) > log-> (echo something; cp some junk 1>&2 ; something else) > logউফ!
বিসিএস

29
আইএমএইচও, যদি কেউ কোডটি নিয়ে ভুল করে এবং ব্যাশ না জানে, তবে এটি আপনার সমস্যাগুলির মধ্যে সবচেয়ে কম হতে পারে।
মাইক ডিসিমোন

7
আমি মনে করি যদি এটির সমস্যা হওয়ার সম্ভাবনা থাকে তবে আপনার আলাদা ভাষা ব্যবহার করা উচিত: বাশকে বোকা বানানোর চেষ্টা করা বোকাদের উদ্যোগ।
অনুপ্রেরণা

17

যদি আপনি বার্তাটি সিসলগেও লগ করতে আপত্তি করেন না, তবে_সাগতভাবে নয়:

logger -s $msg

-S বিকল্পটির অর্থ: "বার্তাটি স্ট্যান্ডার্ড ত্রুটির পাশাপাশি সিস্টেম লগের আউটপুট করে।"


1
এটা অসাধারণ! এটা কিভাবে বহনযোগ্য?
কোড_মনক

@ কোড_মনক: লগার কমান্ডটি আইইইই স্ট্যান্ড 1003.2 ("POSIX.2") উপযুক্ত হবে বলে আশা করা হচ্ছে, লগার কমান্ডটি ইউট-লিনাক্স প্যাকেজের অংশ এবং লিনাক্স কার্নেল সংরক্ষণাগার ⟨kernel.org/pub/ linux/ utils থেকে উপলব্ধ / ইউজার- লিনাক্স⟩।
মিকু

12

এটি একটি সাধারণ STDERR ফাংশন, যা পাইপ ইনপুটটি STDERR এ পুনর্নির্দেশ করে।

#!/bin/bash
# *************************************************************
# This function redirect the pipe input to STDERR.
#
# @param stream
# @return string
#
function STDERR () {

cat - 1>&2

}

# remove the directory /bubu
if rm /bubu 2>/dev/null; then
    echo "Bubu is gone."
else
    echo "Has anyone seen Bubu?" | STDERR
fi


# run the bubu.sh and redirect you output
tux@earth:~$ ./bubu.sh >/tmp/bubu.log 2>/tmp/bubu.err

2
আমি মনে করি আপনি ওরফে দিয়ে একই জিনিসটি করতে পারেন এবং আরও কমপ্যাক্ট হতে পারেন
বিসিএস

অথবা আপনি যা করতে পারেন সরাসরি ডিভাইস ফাইলের নল echo what | /dev/stderr...
ardnew

11

দ্রষ্টব্য: আমি পোস্টটির উত্তর দিচ্ছি- বিভ্রান্তিকর / অস্পষ্ট "প্রতিধ্বনি যে স্ট্যাডারকে আউটপুট দেয়" নয় (ইতিমধ্যে ওপি দ্বারা জবাব দেওয়া হয়েছে)।

আপনি চান বাস্তবায়ন উদ্দেশ্য এবং উত্স দেখানোর জন্য একটি ফাংশন ব্যবহার করুন । যেমন

#!/bin/bash

[ -x error_handling ] && . error_handling

filename="foobar.txt"
config_error $filename "invalid value!"

output_xml_error "No such account"

debug_output "Skipping cache"

log_error "Timeout downloading archive"

notify_admin "Out of disk space!"

fatal "failed to open logger!"

এবং error_handlingহচ্ছে:

ADMIN_EMAIL=root@localhost

config_error() { filename="$1"; shift; echo "Config error in $filename: $*" 2>&1; }

output_xml_error() { echo "<error>$*</error>" 2>&1; }

debug_output() { [ "$DEBUG"=="1" ] && echo "DEBUG: $*"; }

log_error() { logger -s "$*"; }

fatal() { which logger >/dev/null && logger -s "FATAL: $*" || echo "FATAL: $*"; exit 100; }

notify_admin() { echo "$*" | mail -s "Error from script" "$ADMIN_EMAIL"; }

ওপিতে উদ্বেগগুলি পরিচালনা করার কারণগুলি:

  • সর্বোত্তম সিনট্যাক্স সম্ভব (কুৎসিত চিহ্নগুলির পরিবর্তে অর্থবহ শব্দ)
  • একটি ত্রুটি করা কঠিন (বিশেষত আপনি যদি স্ক্রিপ্টটি পুনরায় ব্যবহার করেন)
  • এটি কোনও স্ট্যান্ডার্ড বাশ সরঞ্জাম নয়, তবে এটি আপনার বা আপনার সংস্থা / সংস্থার জন্য একটি আদর্শ শেল গ্রন্থাগার হতে পারে

অন্যান্য কারণ:

  • স্পষ্টতা - অন্যান্য রক্ষণাবেক্ষণকারীদের অভিপ্রায় দেখায়
  • গতি - ফাংশনগুলি শেল স্ক্রিপ্টগুলির চেয়ে দ্রুত
  • পুনরায় ব্যবহারযোগ্যতা - একটি ফাংশন অন্য ফাংশন কল করতে পারে
  • কনফিগারেশন - মূল স্ক্রিপ্ট সম্পাদনা করার প্রয়োজন নেই
  • ডিবাগিং - ত্রুটির জন্য দায়ী লাইনটি খুঁজে পাওয়া সহজ (বিশেষত যদি আপনি এক টন পুনর্নির্দেশ / ফিল্টারিং আউটপুট নিয়ে শেষ হয়ে যাচ্ছেন)
  • দৃust়তা - যদি কোনও ফাংশন অনুপস্থিত এবং আপনি স্ক্রিপ্টটি সম্পাদনা করতে না পারেন তবে আপনি একই নামের সাথে বাহ্যিক সরঞ্জাম ব্যবহার করতে ফিরে যেতে পারেন (উদাহরণস্বরূপ লগইনরেক্স লিনাক্সে লগারের সাথে যুক্ত হতে পারে)
  • বাস্তবায়নগুলি স্যুইচিং - আপনি গ্রন্থাগারের "এক্স" বৈশিষ্ট্যটি সরিয়ে বাইরের সরঞ্জামগুলিতে স্যুইচ করতে পারেন
  • আজিস্টিক আউটপুট - এটি STDERR বা অন্য কোথাও চলে গেলে আপনাকে আর যত্ন করতে হবে না
  • ব্যক্তিগতকরণ - আপনি পরিবেশের ভেরিয়েবলের সাথে আচরণটি কনফিগার করতে পারেন

10

আমার পরামর্শ:

echo "my errz" >> /proc/self/fd/2

অথবা

echo "my errz" >> /dev/stderr

echo "my errz" > /proc/self/fd/2হবে কার্যকরভাবে আউটপুট stderrকারণ /proc/selfবর্তমান প্রক্রিয়া একটি লিঙ্ক, এবং /proc/self/fdপ্রক্রিয়া খোলা ফাইল বর্ণনাকারী ঝুলিতে, এবং তারপর, 0, 1, এবং 2জন্য দাঁড়ানো stdin, stdoutএবং stderrযথাক্রমে।

/proc/selfলিংক MacOS এর কাজ করে না, কিন্তু, /proc/self/fd/*Android এর উপর Termux পাওয়া যায়, কিন্তু না /dev/stderrবাশ স্ক্রিপ্ট থেকে কীভাবে ওএস সনাক্ত করবেন? কোন স্ক্রিনটি ব্যবহার করতে হবে তা নির্ধারণ করে আপনার স্ক্রিপ্টটিকে আরও বহনযোগ্য করে তুলতে চাইলে সহায়তা করতে পারে।


5
/proc/selfলিংক না, তাই আমি আরো সোজা সম্মুখগামী দিয়ে বিদ্ধ করব, MacOS এর উপর কাজ করে /dev/stderrপদ্ধতি। এছাড়াও, অন্যান্য উত্তর / মন্তব্যে উল্লিখিত হিসাবে >>সংযোজন করার জন্য এটি ব্যবহার করা ভাল ।
মার্কহু

4
/proc/self/fd/*অ্যান্ড্রয়েডে টার্মাক্সে উপলব্ধ, তবে তা নয় /dev/stderr
go2null

9

catকিছু এখানে উল্লিখিত হিসাবে ব্যবহার করবেন না । catএকটি প্রোগ্রাম যখনecho এবং printfব্যাশ হয় (শেল) builtins। একটি প্রোগ্রাম বা অন্য স্ক্রিপ্ট চালু করা (উপরেও উল্লিখিত) অর্থ এর সমস্ত ব্যয় সহ একটি নতুন প্রক্রিয়া তৈরি করা। বিল্টিনগুলি ব্যবহার করে, লেখার ফাংশনগুলি বেশ সস্তা, কারণ একটি প্রক্রিয়া (পরিবেশ) তৈরি করার প্রয়োজন নেই।

অপার জিজ্ঞাসা করে "আউটপুট দেওয়ার কোনও মানক সরঞ্জাম আছে ( পাইপ থেকে স্টডারার) এর ", স্কোর্ট উত্তরটি হ'ল: না ... কেন? ... পুনর্নির্দেশ পাইপগুলি ইউনিক্স (লিনাক্স ...) এবং বাশ (শ) এর মতো সিস্টেমে একাদশ ধারণা রয়েছে যা এই ধারণাগুলির উপর নির্ভর করে।

আমি এই ওপেনারের সাথে একমত যে এই জাতীয় স্বরলিপিগুলি পুনঃনির্দেশিত করা: &2>1আধুনিক প্রোগ্রামারদের পক্ষে খুব আনন্দদায়ক নয়, তবে এটি বাশ। বাশ বিশাল এবং শক্তিশালী প্রোগ্রাম লেখার উদ্দেশ্যে নয়, অ্যাডমিনদের কম কী-চাপ দিয়ে সেখানে কাজ করতে সহায়তা করার উদ্দেশ্যে ;-)

এবং কমপক্ষে, আপনি লাইনটির যে কোনও জায়গায় পুনঃনির্দেশটি রাখতে পারেন:

$ echo This message >&2 goes to stderr 
This message goes to stderr

1
ডেভসকে কেবলমাত্র পারফরম্যান্সের কারণে প্রোগ্রামগুলি ব্যবহার না করা বলা অকালীন অপটিমাইজেশন। মার্জিত, সহজে অনুসরণযোগ্য পদ্ধতির পক্ষে হার্ড-টু-বোঝা কোডের চেয়ে বেশি ভাল পছন্দ করা উচিত যা আরও ভাল পারফর্ম করে (মিলিসেকেন্ডের ক্রমে))
গাইপ্যাডক

@ গুয়্যপ্যাডক দুঃখিত, আপনি এটি সঠিকভাবে পড়ে নি। ফার; এটি পাইপগুলি পুনর্নির্দেশ সম্পর্কে যা বাশ দ্বারা ভালভাবে পরিচালিত হয়। যদি কেউ (কুরুচিপূর্ণ) সিনট্যাক্সটি পছন্দ না করে তবে কীভাবে বাশ পুনঃনির্দেশ করে, তার বাশ স্ক্রিপ্টগুলি প্রয়োগ করা বা ব্যাশ পদ্ধতি শিখতে হবে। দ্বিতীয়ত; আপনার জানা উচিত যে ইয়াস্ট কল ব্যাশ বিল্টিনের তুলনায় নতুন প্রক্ষেপণ চালু করা কত ব্যয়বহুল।
ফিরুন 42

1
কাউকে বাশ অন্তর্নির্মিত বনামগুলির পারফরম্যান্স ট্রেড-অফগুলি জানাতে catএবং কাউকে বিড়াল ব্যবহার না করার নির্দেশ দেওয়ার মধ্যে পার্থক্য রয়েছে কারণ এটি ধীর। এমন অসংখ্য ব্যবহারের কেস রয়েছে যেখানে বিড়ালটি সঠিক পছন্দ, তাই আমি আপনার উত্তরটি নিয়ে আপত্তি জানাই।
গাইপ্যাডক

@ গুয়াপ্যাডডক ওপেনার একটি echoপ্রতিস্থাপনের জন্য বলেছেন । এমনকি যদি সে ব্যবহার করে তবে তাকে catবাশ পুনর্নির্দেশ ব্যবহার করতে হবে। যাহাই হউক না কেন। সুতরাং, catএখানে ব্যবহার করার নিখুঁত কোনও ধারণা নেই। বিটিডাব্লু আমি catদিনে 100 বার ব্যবহার করি , তবে প্রসঙ্গে কখনই ওপেনারের কাছে জিজ্ঞাসা করা হয়নি ... আপনি পেয়েছেন?
ফেরান 42

8

আমি সম্প্রতি হোঁচট খেয়েছি এমন আরও একটি বিকল্প হ'ল:

    {
        echo "First error line"
        echo "Second error line"
        echo "Third error line"
    } >&2

মাল্টি-লাইন ত্রুটি আউটপুট কম ত্রুটি প্রবণ করার সময় এটি কেবল বাশ-র অন্তর্নির্মিত ব্যবহার করে (যেহেতু আপনাকে &>2প্রতিটি লাইনে যুক্ত করতে হবে না )।


1
এটি বিশ্বাস করা যায় না, যখন আমি ব্যাশ-রিডাইরেক্ট ব্যবহার করার পরামর্শ দিই এবং আপনি নিজের উত্তরটিতে আপনি ব্যাশ-রিডাইরেক্ট ব্যবহার করছেন তখন আপনি আমাকে ভোট দিন।
ফিরুন 42

1
@ রিটার্ন ৪২ আমি আপনার জবাবটি নীচে দিয়েছি কারণ এগুলিই ওপিকে জানিয়েছিল যে তারা যেটি শুরু করেছিল তার চেয়ে উত্তম উত্তর আর নেই really এটি আসলে কোনও উত্তর নয়। আমি আপনার উত্তরে একটি সাব-শেল পরামর্শও দেখতে পাচ্ছি না ... আপনার উত্তরটি সত্যই কেবল ওপিকে ব্যবহার না করার catবা অন্য কোনও ইউটিলিটি, যা প্রশ্নের জন্য বিষয়বস্তু হিসাবে পরামর্শ দেয় adv
গাইপ্যাডক


6

read হ'ল শেল বিল্টিন কমান্ড যা স্ট্ডারকে প্রিন্ট করে এবং পুনর্নির্দেশ কৌশল না করে প্রতিধ্বনির মতো ব্যবহার করা যেতে পারে:

read -t 0.1 -p "This will be sent to stderr"

-t 0.1সময় পার হয়ে যে অক্ষম পড়তে প্রধান কার্যকারিতা একটি পরিবর্তনশীল মধ্যে stdin- র অভ্যন্তরস্থ এক লাইন সংরক্ষণ করা হয়।


5
ওএস এক্স-তে বাশ "0.1"
জেমস রথ

2

একটি স্ক্রিপ্ট তৈরি করুন

#!/bin/sh
echo $* 1>&2

এটা আপনার হাতিয়ার হবে।

বা আলাদা ফাইলে স্ক্রিপ্ট না রাখতে চাইলে একটি ফাংশন তৈরি করুন।


6
এটি একটি ফাংশন (জেমস রথের জবাবের মতো) হওয়া ভাল এবং কেবল প্রথমটি নয়, সমস্ত যুক্তি দিয়ে।
ক্যাসাবেল

2
কেন একটি ফাংশন ভাল হবে? (বা, বিকল্পভাবে: "কেন এটি আরও ভাল হবে তা
বোঝানো

3
@ ওগ্রেপসামেম 33 একটি ফাংশন আরও ভাল হবে এর একটি কারণ হ'ল স্ক্রিপ্টটি কল করার সময়, সাধারণত স্ক্রিপ্টটি কার্যকর করতে পারে এমন পরিবেশ সরবরাহের জন্য একটি নতুন শেল ঘটনা তৈরি করা হয়। অন্যদিকে একটি ফাংশন বর্তমানে চলমান শেলের পরিবেশে স্থাপন করা হয়। এই ক্ষেত্রে কোনও ফাংশন কল করা অনেক বেশি কার্যকর অপারেশন হবে যেহেতু শেলের আরও একটি উদাহরণ তৈরি করা এড়ানো হবে।
ডেসটেনসন

-10

ম্যাক ওএস এক্স: আমি স্বীকৃত উত্তর এবং কয়েকটি অন্যান্য উত্তর চেষ্টা করেছিলাম এবং সেগুলির ফলস্বরূপ আমার ম্যাকে STDOR নয় STDOUT লেখার ফলস্বরূপ।

পার্ল ব্যবহার করে স্ট্যান্ডার্ড ত্রুটিতে লেখার একটি পোর্টেবল উপায়:

echo WARNING! | perl -ne 'print STDERR'

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