"WC -c" কেন প্রতিধ্বনি সহ আরও একটির মান মুদ্রণ করে?


13

দৌড়ানোর সময়

echo abcd | wc -c

এটি ফিরে আসে 5
তবে শব্দটি abcdকেবল 4 টি অক্ষর দীর্ঘ।

echoশব্দের পরে কি কোনও বিশেষ চরিত্র ছাপানো হচ্ছে abcd?

এবং আমি echoযে মুদ্রণ থেকে প্রতিরোধ করতে পারেন ?



1
দয়া করে সচেতন হন যে wc -cকোনও কিছু অক্ষর কত তা আপনাকে জানায় না; এটি কেবল কতটি বাইট তা বলে।
tchrist

উত্তর:


21

echo\nলাইনের শেষে নিউলাইন ( ) মুদ্রণ করুন

echo abcd | xxd
0000000: 6162 6364 0a          abcd.

কিছু echoবাস্তবায়ন সহ, আপনি ব্যবহার করতে পারেন -n:

-n পেছনের নতুন লাইন আউটপুট করবেন না

এবং পরীক্ষা:

echo -n abcd | wc -c
4

অন্য কয়েকজনের সাথে আপনার \cপালানোর ক্রমটি দরকার :

\c: <newline>আউটপুটে চূড়ান্ত যুক্তি অনুসরণ করে তা দমন করুন । '\c'যুক্তি অনুসারে নিম্নলিখিত সমস্ত অক্ষর উপেক্ষা করা হবে।

echo -e 'abcd\c' | wc -c
4

বহনযোগ্যভাবে, ব্যবহার করুন printf:

printf %s abcd | wc -c
4

(দ্রষ্টব্য যে wc -cবাইটগুলি গণনা করা হয়েছে, অক্ষর নয় (যদিও abcdতারা সাধারণত সমতুল্য হয়। wc -mঅক্ষর গণনা করার জন্য ব্যবহার করুন )।


নোট করুন যে বিষয়টি হ'ল কিছু echoবাস্তবায়ন (কমপক্ষে সমস্ত ইউনিক্স অনুগত), এটি কেবল একা echo 'abcd\c'আউটপুট abcdecho -e 'abcd\c'ইউনিক্স-অনুবর্তী echoবাস্তবায়ন আউটপুট হবে -e abcd
স্টাফেন চেজেলাস

5

আপনি যদি বিকল্পটি echoছাড়া চালনা করেন তবে এটি -nআর্গুমেন্টের পরে একটি নতুন লাইন চরিত্র লিখবে। অন্যথায়, আপনি যদি টাইপ করেন তবে echo fooআপনার পরবর্তী শেল প্রম্পটটি ডানদিকে প্রদর্শিত হবে foo। সুতরাং  wcনিউলাইন গণনা করা হয়।

আমি কীভাবে এটি echoমুদ্রণ করা থেকে আটকাতে পারি ?

echo -n abcd | wc -c

2

ডিফল্টরূপে, স্ট্রিংয়ের পরে echoএকটি নতুন লাইন অক্ষর ( \n) মুদ্রণ করবে ( এজন্য আপনি যেখানে abcdপ্রিন্ট করেছেন একই লাইনের পরিবর্তে পরবর্তী লাইনে শেল প্রম্পটটি দেখেন ))

ট্রেলিং করা নতুন লাইনের চরিত্রটি অক্ষম -nকরতে echoআপনি একটি পরামিতি যুক্ত করার চেষ্টা করতে পারেন ।

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