"বিড়াল ফাইল | এর মধ্যে পার্থক্য কি?" । / বাইনারি "এবং" ./ বাইনারি <ফাইল "?


102

আমার একটি বাইনারি রয়েছে (যা আমি সংশোধন করতে পারি না) এবং আমি এটি করতে পারি:

./binary < file

আমিও করতে পারি:

./binary << EOF
> "line 1 of file"
> "line 2 of file"
...
> "last line of file"
> EOF

কিন্তু

cat file | ./binary

আমাকে একটি ত্রুটি দেয় কেন জানি না এটি পাইপ দিয়ে কাজ করে না। সমস্ত 3 ক্ষেত্রে ফাইলের বিষয়বস্তু বাইনারি (বিভিন্ন উপায়ে) এর স্ট্যান্ডার্ড ইনপুটকে দেওয়া হয় :

  1. বাশ ফাইলটি পড়ে এবং বাইনারি স্টিনকে দেয়
  2. বাশ স্টিডিন (ইওএফ অবধি) থেকে লাইন পড়ে এবং বাইনারি স্টিনকে দেয়
  3. বিড়াল স্টাডাউটে ফাইলের লাইনগুলি পড়ে এবং রাখে, বাশ তাদের বাইনারি স্টিনে পুনঃনির্দেশ করে

বাইনারিটি 3 টির মধ্যে পার্থক্যটি লক্ষ্য করা উচিত নয় যতদূর আমি এটি বুঝতে পেরেছি। কেউ ব্যাখ্যা করতে পারবেন যে তৃতীয় মামলা কেন কাজ করে না?

বিটিডাব্লু: বাইনারি দ্বারা প্রদত্ত ত্রুটিটি হ'ল:

20170116 / 125624.689 - U3000011 স্ক্রিপ্ট ফাইল '' পড়তে পারেনি, ত্রুটি কোড '14'।

তবে আমার মূল প্রশ্নটি হল যে 3 টি বিকল্পের সাথে কোনও প্রোগ্রামের জন্য কীভাবে পার্থক্য রয়েছে ।

এখানে কিছু আরও বিস্তারিত জানার আছেন: আমি আবার চেষ্টা সঙ্গে strace, এবং কিছু ত্রুটি আসলে ছিল ESPIPE (অবৈধ চাইতে) থেকে lseek দ্বারা অনুসরণ EFAULT (ত্রুটিযুক্ত ঠিকানা) থেকে পড়া ডান ত্রুটি বার্তা আগে।

বাইনারি আমি রুবি স্ক্রিপ্ট (অস্থায়ী ফাইল ব্যবহার না করেই) সঙ্গে নিয়ন্ত্রণ করতে চেষ্টা করছে তার অংশ callapi থেকে Automic (UC4)


25
শীতল, আপনার বাইনারি এমবেড একটি UUOC সনাক্তকারী আছে । আমি ইহা চাই.
xhienne

4
এটি কোন ওএস (তাই আমরা যদি বলতে পারি যে এটি কীভাবে বোঝানো হয়েছে তবে 14 কি?)
স্টাফেন চেজেলাস

6
যদিও কোনও প্রোগ্রামের পক্ষে এইভাবে প্রতিক্রিয়া দেখা সম্ভব , এটি একটি চূড়ান্ত বগী হবে যা তা করেছিল। প্রতিটি অ-পাগল প্রোগ্রাম যা স্টিডিন যখন tty হয় তখন স্টিডিন থেকে কোনও ইনপুট কাজ করা প্রয়োজন, এবং যদি এটি টিটিআই এবং ফাইল উভয় দিয়েই কাজ করতে পারে তবে পাইপগুলিকে সমর্থন না করার সামান্য কারণ আছে। সম্ভবত প্রোগ্রামটির লেখকের একটি অস্থায়ী রক্তক্ষরণ ছিল এবং যদিও এর জন্য যা কিছু isatty()মিথ্যা প্রত্যাবর্তিত হবে তা অনুসন্ধানযোগ্য বা ম্যাম্পেবল ফাইল হতে পারে ...
হেনিং মখোলম

9
ত্রুটি কোড 14 এর অর্থ EFULT। আপনি যে ঘোষিত বাফারটি অবৈধ তা যদি পঠন হয় তখন ঘটে On আমি প্রোগ্রামটি স্ট্রেস করব তবে আমার সন্দেহ হয় যে এটি ফাইলের শেষের দিকে তথ্যটি পড়ার জন্য বাফার আকার পেতে চাইছে, খারাপভাবে কাজটি সন্ধান করে না এবং এটি একটি নেতিবাচক আকার বরাদ্দ করার চেষ্টা করার চেষ্টা করে (কোনও খারাপ ম্যালোক পরিচালনা করে না) । বাফার প্রদত্ত কোন ত্রুটিগুলি পড়ার জন্য বাফারটি পাস করা বৈধ নয়।
ম্যাথু ইফে

3
@ xhienne না, এটিতে একটি catপ্রতিরোধক রয়েছে। মনে হচ্ছে আপনি দুটি ফাইল একত্রিত করতে এটি ব্যবহার করতে পারবেন না, যেমন উদ্দেশ্যে করা ব্যবহার।
jpmc26

উত্তর:


150

মধ্যে

./binary < file

binaryস্ট্যান্ডিন ফাইলটি কেবল পঠন মোডে খোলা। নোট করুন যে bashফাইলটি মোটেও পড়েন না, এটি কেবল প্রক্রিয়াটি চালায় এমন ফাইলের বর্ণনাকারী 0 (স্টিডিন) এ পড়ার জন্য এটি খুলবে binary

ইন:

./binary << EOF
test
EOF

শেলের উপর নির্ভর করে binaryস্ট্যান্ডিন হ'ল একটি মুছে ফেলা অস্থায়ী ফাইল (এটিএন্ডটি কেএসএস, জেডএস, বাশ ...) থাকবে যা test\nশেলের দ্বারা রাখা আছে বা পাইপের রিডিং শেষে ( dash, yash; এবং শেলটি test\nসমান্তরালে লিখেছে) পাইপের অন্য প্রান্তে)। আপনার ক্ষেত্রে, আপনি যদি ব্যবহার করছেন bashতবে এটি একটি অস্থায়ী ফাইল হবে।

ইন:

cat file | ./binary

শেলের উপর নির্ভর করে binaryস্টিডিনটি হয় পাইপের পড়ার শেষ প্রান্ত বা সকেট জুটির এক প্রান্ত যেখানে লেখার দিকটি বন্ধ হয়ে গেছে (ksh93) এবং অন্য প্রান্তে catলিখিত লিখন রয়েছে file

যখন স্টিডিন একটি নিয়মিত ফাইল হয় (অস্থায়ী বা না), এটি সন্ধানযোগ্য। binaryশুরুর দিকে বা শেষ দিকে যেতে পারে, রিওয়াইন্ড ইত্যাদি হতে পারে এটি এটিকে ioctl()sএমএমএপ করতে পারে, কিছু এফআইএমএপি / এফআইবিএম্যাপের মতো করে (যদি এর <>পরিবর্তে ব্যবহার করা হয় তবে <এটি এতে ছিদ্র / ঘুষি কাটাতে পারে ইত্যাদি)।

অন্যদিকে পাইপ এবং সকেট জোড় একটি আন্ত-প্রক্রিয়া যোগাযোগের মাধ্যম, ডেটা আইংয়ের binaryপাশাপাশি খুব বেশি কিছু করতে পারে না read(যদিও কিছু পাইপ-নির্দিষ্ট ioctl()এর মতো কিছু অপারেশন রয়েছে যা এটি তাদের উপর প্রয়োগ করতে পারে এবং নিয়মিত ফাইলগুলিতে নয়) ।

সময়ের সর্বাধিক, তখন তা অনুপস্থিত ক্ষমতা নেই seekযে ব্যর্থ অ্যাপ্লিকেশন ঘটায় / যখন পাইপ সঙ্গে কাজ অভিযোগ, কিন্তু এটা অন্যান্য সিস্টেম কল নিয়মিত ফাইল বৈধ কিন্তু ফাইল বিভিন্ন ধরনের এ নেই কোন কিছু হতে পারে (যেমন mmap(), ftruncate(), fallocate()) । লিনাক্সে, আপনি /dev/stdinযখন fd 0 টি পাইপ বা নিয়মিত ফাইলের সাথে খুলেন তখন আচরণের ক্ষেত্রেও বড় পার্থক্য রয়েছে ।

অনেক কমান্ড সেখানে আউট যে শুধুমাত্র সাথে মোকাবিলা করতে পারে seekable ফাইল, কিন্তু যখন সেই ক্ষেত্রে, পুরোপুরি অন্য ফাইলের জন্য তাদের stdin খোলার নয়।

$ unzip -l file.zip
Archive:  file.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
       11  2016-12-21 14:43   file
---------                     -------
       11                     1 file
$ unzip -l <(cat file.zip)
     # more or less the same as cat file.zip | unzip -l /dev/stdin
Archive:  /proc/self/fd/11
  End-of-central-directory signature not found.  Either this file is not
  a zipfile, or it constitutes one disk of a multi-part archive.  In the
  latter case the central directory and zipfile comment will be found on
  the last disk(s) of this archive.
unzip:  cannot find zipfile directory in one of /proc/self/fd/11 or
        /proc/self/fd/11.zip, and cannot find /proc/self/fd/11.ZIP, period.

unzipফাইলের শেষে সঞ্চিত সূচকটি পড়তে হবে এবং সংরক্ষণাগার সদস্যদের পড়ার জন্য ফাইলের মধ্যে অনুসন্ধান করতে হবে। তবে এখানে, ফাইলটি (প্রথম ক্ষেত্রে নিয়মিত, দ্বিতীয়টিতে পাইপ) একটি পাথ আর্গুমেন্ট হিসাবে দেওয়া হয় unzipএবং unzipএটি প্যারেন্টের দ্বারা ইতিমধ্যে খোলা একটি fd উত্তরাধিকারী না হয়ে নিজেই খোলে (সাধারণত 0 এর বাইরে অন্য কোনও এফডি তে)। এটি এর স্টিন থেকে জিপ ফাইলগুলি পড়ে না। stdin বেশিরভাগ ব্যবহারকারীর মিথস্ক্রিয়া জন্য ব্যবহৃত হয়।

যদি আপনি binaryটার্মিনাল এমুলেটরটিতে চলমান একটি ইন্টারেক্টিভ শেলের প্রম্পটে পুনর্নির্দেশ ছাড়াই এটি চালান , তবে binaryএর স্টিডিনটি তার পিতামাতার কাছ থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হবে, যা নিজেই এটি তার পিতামাতার কাছ থেকে উত্তরাধিকার সূত্রে টার্মিনাল এমুলেটর থেকে প্রাপ্ত হবে এবং একটি হবে pty ডিভাইস রিড + রাইটিং মোডে খোলা থাকে (এরকম কিছু /dev/pts/n)।

এই ডিভাইসগুলিও অনুসন্ধানযোগ্য নয়। সুতরাং, যদি binaryটার্মিনাল থেকে ইনপুট নেওয়ার সময় ঠিকঠাক কাজ করা হয়, সম্ভবত সমস্যাটি সন্ধানের ক্ষেত্রে নয়।

যদি 14 টি বোঝানো হয় তবে এটি ভুল (সিস্টেম কলের মাধ্যমে একটি ত্রুটি কোড সেট করা), তবে বেশিরভাগ সিস্টেমে সেটি EFAULT( খারাপ ঠিকানা ) হবে। read()সিস্টেম কল যে ত্রুটি ব্যর্থ একটি মেমরি অ্যাড্রেস যে লিখনযোগ্য নয় মধ্যে পড়ার জন্য অনুরোধ করবে। এটি এফডি পয়েন্ট থেকে কোনও পাইপ বা নিয়মিত ফাইলের তথ্য পড়তে পারে এবং এটি একটি বাগ 1 নির্দেশ করে কিনা তা থেকে স্বাধীন হবে ।

binaryসম্ভবত তার স্টিডিনে (ফাইলটি) খোলা ফাইলের ধরণটি নির্ধারণ করে fstat()এবং কোনও বাগডে চালিত হয় যখন এটি কোনও নিয়মিত ফাইল বা টিটিআই ডিভাইস নয়।

অ্যাপ্লিকেশন সম্পর্কে আরও না জেনে বলা শক্ত। নীচে চলমান strace(অথবা truss/ tuscআপনার সিস্টেমে সমতুল্য) সাহায্য করতে পারে আমাদের দেখতে সিস্টেম কল কি যদি থাকে যে এখানে ব্যর্থ হচ্ছে।


1 আপনার প্রশ্নের মন্তব্যে ম্যাথু ইফের দ্বারা কল্পনা করা দৃশ্যটি এখানে অনেক প্রশংসনীয় বলে মনে হচ্ছে। তাকে উদ্ধৃত করে:

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


14
খুব আকর্ষণীয় ... আমি এটি প্রথম শুনেছি যে স্টাইলের মধ্যে পুনর্নির্দেশিত স্ট্যান্ডার্ড ইনপুটটি অনুসন্ধানযোগ্য ./binary < file!
ডেভিড জেড

2
@ ডেভিডজেড এটি এমন একটি ফাইল যা এডিট করা হয়েছে openএবং এটি যে কোনও ফাইল openসম্পাদিত হয়েছে তার মতোই আচরণ করে । এটি কেবলমাত্র পিতামাতার প্রক্রিয়া থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হয়েছে, তবে এটি এতটা অস্বাভাবিক নয়।
hobbs

3
সিস্টেমে স্ট্রেস বা অনুরূপ সরঞ্জাম রয়েছে এটি কোন সিস্টেমে বাইনারি কল করে তা পরীক্ষা করতে এটি ব্যবহার করা যেতে পারে।
পাবউক

2
"এটি এটিকে ছাঁটাই করতে পারে, এটিকে এমএমএপ করতে পারে, এতে পঞ্চ গর্ত করতে পারে ইত্যাদি" " - আচ্ছা, না। ফাইলটি কেবল পঠন মোডে খোলা আছে। প্রোগ্রামটি এটি করতে লিখিত মোডে খুলতে হবে। তবে এটি এটিকে লিখিত মোডে খুলতে পারে না, কারণ সরাসরি তা করার জন্য কোনও ইন্টারফেস নেই বা খোলা ফাইলের সাথে মিলে "ডিরেক্টরি" ডিরেক্টরিতে প্রবেশের কোনও ইন্টারফেস নেই (যদি এমন দুটি ডেন্ট্রি বা শূন্য থাকে তবে কী হবে?) । এটি ফাইলটি স্থির করতে হবে এবং তারপরে একই ইনোড নম্বরযুক্ত কোনও বস্তুর জন্য ফাইল সিস্টেমটি স্ক্যান করতে হবে। এটি অযৌক্তিকভাবে ধীর হবে।
কেভিন

1
@ স্টাফেনচেজেলাস: ঠিক আছে open("/proc/self/fd/0", O_RDWR), এমনকি মুছে ফেলা ফাইলগুলিতেও কাজ করে। বোকা আমি: পি। a.out এর echo foo>foo; (sleep 0.5; ll -L /proc/self/fd/0; strace ./a.out; ll -L /proc/self/fd/0) < foo & sleep 0.1 && rm fooস্টিডিন fooথেকে পুনঃনির্দেশিত হয়ে চালানোর আগে লিঙ্কগুলি লিঙ্ক করে foo
পিটার কর্ডেস

46

এখানে একটি সাধারণ উদাহরণ রয়েছে যা এটিতেlseek(2) ইনপুট ব্যবহার করে স্টাফেন চেজেলাসের উত্তর চিত্রিত করে :

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main(void)
{
    int c;
    off_t off;
    off = lseek(0, 10, SEEK_SET);
    if (off == -1)
    {
        perror("Error");
        return -1;
    }
    c = getchar();
    printf("%c\n", c);
}

পরীক্ষামূলক:

$ make seek
cc     seek.c   -o seek
$ cat foo
abcdefghijklmnopqrstuwxyz
$ ./seek < foo
k
$ ./seek <<EOF
> abcdefghijklmnopqrstuvwxyz
> EOF
k
$ cat foo | ./seek
Error: Illegal seek

পাইপগুলি সন্ধানযোগ্য নয় এবং এটি এমন এক জায়গা যেখানে কোনও প্রোগ্রাম পাইপ সম্পর্কে অভিযোগ করতে পারে।


21

পাইপ এবং পুনঃনির্দেশ বিভিন্ন প্রাণী, তাই কথা বলতে। আপনি যখন here-docপুনঃনির্দেশ ( <<) বা স্টিডিন পুনর্নির্দেশটি ব্যবহার করেন তখন < পাঠ্যটি পাতলা বাতাসের বাইরে আসে না - এটি আসলে কোনও ফাইল বর্ণনাকারী (বা অস্থায়ী ফাইল, আপনি যদি চান) তে যায় এবং সেখানে বাইনারি স্টিডিনটি নির্দেশ করবে।

বিশেষত, bash'sসোর্স কোড, redir.c ফাইল (সংস্করণ 4.3) এর একটি উদ্ধৃতি এখানে রয়েছে :

/* Create a temporary file holding the text of the here document pointed to
   by REDIRECTEE, and return a file descriptor open for reading to the temp
   file.  Return -1 on any error, and make sure errno is set appropriately. */
static int
here_document_to_fd (redirectee, ri)

সুতরাং যেহেতু পুনঃনির্দেশটি মূলত ফাইল হিসাবে বিবেচনা করা যায় তাই বাইনারিগুলি সেগুলি নেভিগেট করতে পারে বা seek()সহজেই ফাইলের মাধ্যমে ফাইলের কোনও বাইটে ঝাঁপিয়ে যায়।

পাইপগুলি, যেহেতু তারা 6৪ কিবি (কমপক্ষে লিনাক্সে) এর বাফার হিসাবে 4096 বাইট বা কম পারমাণবিক বলে গ্যারান্টিযুক্ত লেখেন, সন্ধানযোগ্য নয়, অর্থাত আপনি এগুলিতে নির্বিঘ্নে চলাচল করতে পারবেন না - কেবল ক্রমানুসারে পড়ুন। আমি একবার tailপাইথনে কমান্ড প্রয়োগ করেছি । পুনঃনির্দেশিত হলে মাইক্রোসেকেন্ডগুলিতে 29 মিলিয়ন পাঠ্য পাঠ সন্ধান করা যেতে পারে, তবে যদি catপাইপের মাধ্যমে সম্পাদনা করা হয় তবে ঠিক আছে, কিছুই করা যায় না - তাই এটি সমস্ত ক্রমিকভাবে পড়তে হবে।

আরেকটি সম্ভাবনা হ'ল বাইনারি সম্ভবত বিশেষত কোনও ফাইল খুলতে চায় এবং পাইপ থেকে ইনপুট নিতে চায় না। এটি সাধারণত fstat()সিস্টেম কলের মাধ্যমে করা হয় এবং ইনপুটটি কোনও S_ISFIFOধরণের ফাইল থেকে আসে কিনা তা পরীক্ষা করে নেওয়া হয় (যা কোনও পাইপ / নামযুক্ত পাইপকে বোঝায়)।

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

দ্রষ্টব্য : কিছু শেল, যেমন ড্যাশ ( /bin/shউবুন্টুতে ডেবিয়ান অ্যালকুইস্ট শেল, ডিফল্ট ) পাইপের সাহায্যে অভ্যন্তরীণভাবেhere-doc পুনঃনির্দেশ প্রয়োগ করে , সুতরাং এটি অনুসন্ধানযোগ্য হতে পারে না। বিষয়টি একইরূপ থেকে যায় - পাইপগুলি ক্রমানুসারে থাকে এবং সহজেই নেভিগেট করা যায় না এবং এটি করার চেষ্টা করলে ত্রুটি হয়।


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

@ পিটারকর্ডস যা একেবারে তাই, এবং আমি কেবল এটি dashআমার সিস্টেমে যাচাই করেছি । আমি এর আগে জানতাম না। নির্দেশ করার জন্য ধন্যবাদ
সের্গেই কলডিয়াজহনি

অন্য মন্তব্য: আপনি fstat()স্টিডিনে এটি কোনও পাইপ কিনা তা পরীক্ষা করতে ব্যবহার করবেন । statএকটি পথ নাম নেয়। তবে সত্যই, lseekএফডি এটি ইতিমধ্যে খোলার পরে সন্ধানযোগ্য কিনা তা নির্ধারণের জন্য সবচেয়ে চেষ্টা করা সম্ভবত সবচেয়ে চেষ্টা করা ।
পিটার কর্ডেস

5

মূল পার্থক্যটি হ'ল ত্রুটি পরিচালনার মধ্যে।

নিম্নলিখিত ক্ষেত্রে ত্রুটি রিপোর্ট করা হয়

$ /bin/cat < z.txt
-bash: z.txt: No such file or directory
$ echo $?
1

নিম্নলিখিত ক্ষেত্রে ত্রুটি রিপোর্ট করা হয় না।

$ cat z.txt | /bin/cat
cat: z.txt: No such file or directory
$ echo $?
0

ব্যাশ সহ, আপনি এখনও পাইপস্ট্যাটাস ব্যবহার করতে পারেন:

$ cat z.txt | /bin/cat
cat: z.txt: No such file or directory
$ echo ${PIPESTATUS[0]}
1

তবে এটি কমান্ড কার্যকর হওয়ার সাথে সাথেই পাওয়া যায়:

$ cat z.txt | /bin/cat
cat: z.txt: No such file or directory
$ echo $?
0
$ echo ${PIPESTATUS[0]}
0
# oops !

আরেকটি পার্থক্য আছে, যখন আমরা বাইনারিগুলির পরিবর্তে শেল ফাংশন ব্যবহার করি। ইন bash, একটি পাইপলাইনের অংশ যা ফাংশনগুলি সাব-শেলগুলিতে কার্যকর করা হয় ( lastpipeবিকল্পটি সক্রিয় এবং bashঅ-ইন্টারেক্টিভ থাকলে শেষ পাইপলাইন উপাদানটি বাদে ), সুতরাং ভেরিয়েবলগুলির পরিবর্তনের প্যারেন্ট শেলের কোনও প্রভাব নেই:

$ a=a
$ b=b
$ x(){ a=x;}
$ y(){ b=y;}

$ echo $a $b
a b

$ x | y
$ echo $a $b
a b

$ cat t.txt | y
$ echo $a $b
a b

$ x | cat
$ echo $a $b
a b

$ x < t.txt
$ y < t.txt
$ echo $a $b
x y

4
সুতরাং, আপনি যে ত্রুটিটি পরিচালনা করছেন >তা শেল দ্বারা সম্পন্ন করে দেখিয়েছেন , তবে পাইপ দিয়ে এটি কমান্ড দ্বারা সম্পন্ন হয়েছে যা পাঠ্য উত্পাদন করে। ঠিক আছে. তবে এই নির্দিষ্ট প্রশ্নে ওপি একটি বিদ্যমান ফাইল ব্যবহার করছে, সুতরাং এটি সমস্যা নয় এবং পরিষ্কারভাবে উত্পন্ন ত্রুটি বাইনারি দ্বারা।
সের্গেই কোলোডিয়াজনি

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

@ সার্জ: আপনি কমান্ড লাইন হিসাবে শেলটি ব্যবহার করার সময় এটি গুরুত্বপূর্ণ নয়। তবে স্ক্রিপ্টগুলিতে ত্রুটিগুলি পরিচালনা করা খুব গুরুত্বপূর্ণ হতে পারে।
ভাউজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.