নতুন লাইন ইস্যু না করে কীভাবে “-n” মুদ্রণ করবেন?


16

আমি কমান্ডটি -nব্যবহার করে মুদ্রণের চেষ্টা করছি echo। তবে আমি যদি সহজভাবে টাইপ করি তবে echo -nএটি কেবল একটি নতুন লাইন জারি করে, প্রদর্শিত হবে না -n, পরিবর্তে এটি একটি নতুন লাইন জারি করে।


না echo -n -- -nকাজ (পরীক্ষা কুশলী কোন লিনাক্স বক্স না থাকে)?
n0rd

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

1
আমি যাচাই করেছি - এটি হয় না। সম্ভবত কারণ এটি অভ্যন্তরীণ বাশ কমান্ড এবং এটি getoptকমান্ড লাইনটি পার্স করতে (???) ব্যবহার করছে না
n0rd

1
এই প্রশ্নটি pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html - এ জিজ্ঞাসা করা হয়েছে এবং উত্তর দেওয়া হয়েছে - "অ্যাপ্লিকেশনগুলি যে ... সম্ভবত একটি -n প্রতিধ্বনিত হওয়ার প্রত্যাশা রাখতে পারে, নবম থেকে প্রাপ্ত প্রিন্টফ ইউটিলিটি ব্যবহার করা উচিত সংস্করণ সিস্টেম "
ব্র্যান্ডিন

আমি তৈরি প্রথম জনপ্রিয় প্রশ্ন। হ্যাঁ?
তারকা ওএস

উত্তর:


28

সমস্যাটি হ'ল আর্গুমেন্ট হিসাবে echoব্যাখ্যা করে -n। ডিফল্ট বাশ প্রয়োগে, এর অর্থ (থেকে help echo):

  -n  do not append a newline

এটি প্রায় বিভিন্ন উপায় আছে:

  1. এটিকে এমন কোনও কিছুতে পরিণত করুন যা অন্য চরিত্রটি অন্তর্ভুক্ত করে কোনও বিকল্প নয়। উদাহরণস্বরূপ, এর echoসাথে একটি নতুন লাইন প্রিন্ট না করতে বলুন -n, তারপরে ব্যাকস্ল্যাশ পলায়নের সাথে ব্যাখ্যা করতে বলুন -eএবং স্পষ্টভাবে নিউলাইন যুক্ত করুন।

    $ echo -ne '-n\n'
    -n
  2. বিকল্পভাবে, কেবল একটি স্থান অন্তর্ভুক্ত করুন

    $ echo " -n"
     -n

    এটি তবে একটি স্থান যুক্ত করেছে যা আপনি সম্ভবত চান না।

  3. এর আগে একটি মুদ্রণবিহীন অক্ষর ব্যবহার করুন। এখানে. আমি ব্যাকস্পেস ব্যবহার করছি ( \b)

    $ echo -e "\b-n"
    -n

    এটি সম্ভবত আপনি চান না এমন একটি অতিরিক্ত চরিত্রও যুক্ত করে।

  4. কৌতুক ব্যবহার করুন

    $ echo n- | rev
    -n

    revকমান্ড কেবল ছাপে তার আউটপুট বিপরীত।

  5. ব্যবহার করুন কাজের জন্য ডান টুল

    $ printf -- '-n\n'
    -n

আপনি সঠিক যে কোনও বৈধ অক্ষর করবে।
পাইলট 6

@ পাইলট y হ্যাঁ তবে সেই পদ্ধতির (আপনার এবং আমার) সমস্যাটি হ'ল এটি একটি অতিরিক্ত চরিত্র যুক্ত করে। এটি লাইনে সমস্যা সৃষ্টি করতে পারে। বিশেষত আপনি যদি পরে এটি বিশ্লেষণ করতে চান এবং এরকম কিছু চেষ্টা করতে চান grep '^-n'pritnfসত্যিই যাওয়ার উপায়।
টেরডন

ঠিক আছে, printfযাইহোক ভাল, কিন্তু প্রশ্নটি ন্যায়সঙ্গত echo
পাইলট 6

2
দেখে মনে হচ্ছে echo -e "-n\c"ঠিক কাজটি করে।
পাইলট 6

1
\cআরও আউটপুট দমন করা হয়
পাইলট 6

15

কখনও কখনও সঠিক সরঞ্জামটি ব্যবহার করা ভাল ধারণা। printfপরিবর্তে আপনি ব্যবহার করতে পারেন :

% printf "-n\n"       
-n


এটি বহনযোগ্যতার জন্য পছন্দসই ধারণা
সের্গেই কোলডিয়াজহনি

7

আপনি এই আদেশটি ব্যবহার করতে পারেন তবে এটি একটি অতিরিক্ত স্থান যুক্ত করে।

echo -e  "\r-n"

এটি হ্যাক এক ধরণের।

-e ব্যাকস্ল্যাশ কমান্ড প্রতীকগুলি সক্ষম করে।

\r একটি গাড়ী চালনা।

আসলে কোনও \বৈধ অক্ষর স্ট্রিংয়ের যে কোনও জায়গায় করবে place

আপনি দেখতে পারেন যা দ্বারা বৈধ help echo

echo "-n"-nপ্যারামিটার হিসাবে ব্যবহৃত হয় কারণ কাজ করে না echo

পিএস সেরা সমাধান আইএমএইচও হয়

echo -e "-n\c"

এটি কোনও অতিরিক্ত অক্ষর যুক্ত করে না ।

echo -e "-n\n"

একই তবে নতুন লাইনের চর দিয়ে মুদ্রণ করে।


1
Wov! এটা আমার চেয়ে ভাল; আপনি কি "নতুনদের" জন্য কিছুটা ব্যাখ্যা করতে পারেন ;-)
সাদি

ধন্যবাদ, আমি এটাও লক্ষ্য করেছি যে আপনি শুরুতে বা শেষে গাড়ীর ফেরত যোগ করবেন সেখানে কিছু আসে যায় না।
সাদি

@ সাদি হ্যাঁ, কারণ কিছু যোগ করা এটি একটি অ-বৈধ বিকল্পে পরিণত হয়েছে। -nবৈধ, -nfooপ্রিন্ট করা হবে না তাই।
টেরডন

@terdon এটিও man echoআছে। তবে helpকিছুটা ভাল।
পাইলট 6

আমি জানি এটি আছে, এটি কেবল প্রাসঙ্গিক নয়। /bin/echoসম্পূর্ণ ভিন্ন জিনিস এবং আপনি যখন echoব্যাশে দৌড়ান , আপনি বিল্টিন পাবেন যা আপনার শেলের উপর নির্ভর করে বেশ আলাদা হতে পারে।
টেরডন

5

আমি মনে করি আপনি যদি echoকেবলমাত্র ব্যবহার করতে চান তবে এটি আপনাকে সন্তুষ্ট করা উচিত:

echo "-n "

এই কাজ করে কারণ যখন -nজন্য একটি বৈধ বিকল্প echo, -nএকটি স্পেস দিয়ে পরে এটি নয়। যেহেতু এটি কোনও বিকল্প নয়, echoকেবল এটি মুদ্রণ করুন।


এখানে বেশিরভাগ দর্শক কেবল "-n" চাইবেন, "-n" নয় not
তারকা ওএস

5

আপনি ছেলেরা সত্যিই এটি overthink হয়।

 echo -e \\055n

অথবা কোনও পেছনের নিউলাইন নেই

 echo -en \\055n

কেমন আছে printf "-n\n" একটি overthinking?
দিমিত্রি গ্রিগরিয়েভ

হ্যাঁ, আমি এইভাবে উত্তর দিয়েছি। আমার উত্তর মুছে ফেলবে। এটি তুলনামূলকভাবে বহনযোগ্য যে এটি অন্তর্নির্মিত প্রতিধ্বনির সাথে কাজ করে এবং /bin/echoকমপক্ষে যদি আহ্বান জানানো হয়echo -e "\055n"
অবলম্বন করুন

-আমি যা চাই তা নয়।
স্টার ওএস

2

@ এবি এর উত্তর প্রসারিত করার জন্য, কেবলমাত্র পোর্টেবল উপায় echoহ'ল কোনও বিকল্প ব্যবহার করা থেকে বিরত থাকুন -nprintfপরিবর্তে যেখানে উপলব্ধ সেখানে ব্যবহার বিবেচনা করুন । এই রেফারেন্স পৃষ্ঠাটি আরও বিশদ সরবরাহ করে এবং কখন এবং কীভাবে echoএবং কীভাবে খুব ভালভাবে ব্যাখ্যা করেprintf ব্যবহার করা উচিত:

আজকাল, ইকো (1) কেবলমাত্র বহনযোগ্য যদি আপনি পতাকা বাদ দেন এবং সিকোয়েন্স ক্রমগুলি রেখে যান। এর পরিবর্তে প্রিন্টফ (1) ব্যবহার করুন, যদি আপনার সরল পাঠ্যের চেয়ে আরও বেশি প্রয়োজন হয়।


আমি একটি উত্তর প্রসারিত করব, দয়া করে উত্তরটি সম্পাদনা করুন।
তারকা ওএস

আমি নিশ্চিত নই যে এটির মূল লেখকের চেয়ে আমার কাছে আরও লেখা থাকবে তখন অন্যটির উত্তরকে বিন্দুতে পরিবর্তন করা ভাল ধারণা।
দিমিত্রি গ্রিগরিয়েভ

2

বাশ স্ক্রিপ্টে আপনি চালাতে পারেন:

echo -n -
echo n

বা ইন্টারেক্টিভ শেল এ:

echo -n - ; echo n

এটি echoএকটি -চরিত্র এবং একটি nচরিত্র।


তুমি কি চেষ্টা করেছ? এটি ভুল.
পাইলট 6


প্রথম কমান্ড আউটপুট -pilot6@Pilot6:~$। দ্বিতীয় ফলাফল n
পাইলট 6

@ পাইলট নির্ভর করে আপনি এটি ইন্টারেক্টিভ টার্মিনালে বা ব্যাশ স্ক্রিপ্টে চালাচ্ছেন কিনা, যা প্রশ্নের মধ্যে নির্দিষ্ট নেই। OTOH আপনার যদি টার্মিনালে এটির প্রয়োজন হয় তবে কেবল দুটি লাইনের সাথে একত্রিত করা সহজ &&- আমি সত্যিই বলব না যে এই উত্তরটি ভুল
ব্যবহারকারী 12205

আমি এটি সম্পাদনা করব যাতে এটি ব্যাশ স্ক্রিপ্টের জন্য আরও স্পষ্ট হয়।
তারকা ওএস

1

আরও তিনটি উপায়:

$ echo -e '\x2dn' # ASCII hexadecimal value
-n
$ echo -e '\u002dn' # Unicode code point
-n
$ echo -e '\u2dn' # Unicode code point shortened
-n

0

আপনি চালাতে পারেন

printf -n;echo

ব্যস্তবক্স অ্যাশে পরীক্ষিত


অ্যাশ? অ্যাশ? পোকমন মানে, কী?
তারকা ওএস


"ব্যস্তবক্স" বা "ব্যসিবক্স অ্যাশ" বলুন। কেবল "অ্যাশ" বিকাশ নয় লোকেরা সেই পোকেমন চরিত্র বা আগ্নেয়গিরির থেকে আসা ******* ছাই সম্পর্কে ভাবতে পারে।
তারকা ওএস

উত্তম. alt255alt255
তারকা ওএস

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