টার্মিনাল পেস্ট অবিশ্বাস্য


5

আমি টার্মিনালে টেক্সটটি আটকানোর চেষ্টা করছি (v2.5 বিল্ড 343, আমি ইয়োসেমাইট চালাচ্ছি) এবং এটি ধারাবাহিকভাবে অক্ষরগুলি বাদ দেয় বলে মনে হচ্ছে।

উদাহরণস্বরূপ যদি আমি নিম্নলিখিত পাঠ্যটি পেস্টবোর্ডে অনুলিপি করি:

1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890

তারপরে ফাইন্ডারে সম্পাদনা -> ক্লিপবোর্ড দেখান আমি যাচাই করতে পারি যে পাঠ্যটি সেখানে রয়েছে।

পরবর্তী আমি টার্মিনাল খুলি এবং টাইপ করুন:

cat > test

তারপর উপরে লেখা এবং প্রেস পেস্ট Ctrl+ + d

স্ক্রিনে আমি এটি পেয়েছি:

1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
1234567890,12345678,1234567890,1234567890,1234567890
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890

তবে "টেস্ট" ফাইলটির সামগ্রীগুলি মূল পাঠ্যের সাথে মেলে যা আমি পেস্টবোর্ডে অনুলিপি করেছি।

পেস্ট অপারেশনের সময় টার্মিনালটি পর্দার প্রতিধ্বনি করার সময় অক্ষরগুলি ফেলে দেওয়ার কি কোনও কারণ আছে ?


1
কি দুর্দান্ত
Asmus

প্রথম পরীক্ষার থেকে মনে হয় পেস্ট করার সময়, অনুপস্থিত অক্ষরগুলি 1024 তম অক্ষরের আগে থাকে; সুতরাং আপনার উদাহরণে 1024 সংখ্যার আগে 14 অক্ষর অনুপস্থিত রয়েছে, আপনি যদি প্রতি লাইনে "1234567890," এর দুটি কলাম যুক্ত করেন, 1024 তম আগে 10 টি অক্ষর অনুপস্থিত থাকে। যদিও এটি তৈরি করবেন তা নিশ্চিত নন।
Asmus

2
এটি মোটামুটি সাধারণ, আপনি কেবল টার্মিনালের ইনপুট বাফারের বিপরীতে ঝাঁপিয়ে পড়ছেন। আমি কেবল pbpaste > testপরিবর্তে করার পরামর্শ দিই ।
miken32

@ মিকেন 32 এটি আকর্ষণীয়, আমি মনে করব যে প্রক্রিয়াগুলি ইনপুট বাফার পূর্ণ হওয়ার কারণে অবরুদ্ধ হবে বা খুব কমপক্ষে ইনপুটটির শেষে নেমে যাবে। কীভাবে ইনপুট বাফার ফিলিংটি আটকানো স্ট্রিংয়ের মাঝখানে বাদ দেওয়া অক্ষরগুলিতে নেতৃত্ব দিতে পারে?
নোনগন

আমি এই অনুমানের মধ্যে যাচ্ছিলাম যে 1024 বাইট চিহ্নের ঠিক পরে অক্ষরগুলি বাদ দেওয়া হচ্ছে। আরও ঘনিষ্ঠভাবে তাকান, আমি এখন এটি সামান্য আগে দেখতে পাচ্ছি। তাই নিশ্চিত যে এটি কি করতে হবে। 256 টি অক্ষরের রেখার সাথে এটি কেবল 1022 এ ধারাবাহিকভাবে মিস করে।
মিকেন 32

উত্তর:


3

এই ক্ষেত্রে স্টাডআউট লাইন-বাফার এবং এটি 1024 বাইট যা ডিসপ্লেতে আউটপুট কেটে ফেলছে। আপনি যখন ক্লিপবোর্ড থেকে পেস্ট করবেন তখন প্রতিটি লাইনের শেষে মুদ্রণযোগ্য নতুন-লাইন (EOL) অক্ষরগুলি কেবল বাফার গণনার সাথে সম্পর্কিত হিসাবে লাইনটিতে অন্য একটি চরিত্র হিসাবে গণনা করা হয়। যেখানে গণিতটি যুক্ত না হওয়ার কারণ যেখানে কাটা কাটা ঘটেছিল যে @ মিকেন 32 গণনা করার চেষ্টা করেছিল, এটি কারণ আপনি নিউ-লাইন অক্ষর গণনা করছেন না।

যদি আপনি পরীক্ষা ফাইলটি cate বিকল্পটি ব্যবহার করে থাকেন তবে আপনি প্রিন্টযোগ্য ইওএল অক্ষরগুলি $ হিসাবে দেখতে পারবেন, এগুলিতে গণিতে সেগুলি যুক্ত করা উচিত।

$ cat -e test
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890$
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890$
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890$
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890$
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890$
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890$
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890$
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890$
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890$
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890$
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890$
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890$
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890$
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890$
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890$
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890$
1234567890,1234567890,1234567890,1234567890,1234567890,1234567890$

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

আপনি এর মতো কিছু করতে পারেন:

cat << EOF > test

স্টিডিন পুনঃনির্দেশ (<< ইওএফ) বিড়ালকে একটি নতুন লাইনে নির্দিষ্ট বর্ণনাকারী ফাইলের অক্ষরের সাথে মিল না দেওয়া পর্যন্ত মুদ্রণ চালিয়ে যেতে বলে। এইভাবে স্টাডআউটটি প্রতিটি আটকানো মুদ্রণযোগ্য অক্ষর রেখাটি লাইন প্রিন্ট করবে, ত্রুটিটি হ'ল আপনি প্রতিটি নতুন লাইনের শুরুতে আউটপুটে একটি ">" অক্ষর পাবেন।

$ cat << EOF > test
> 1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
> 1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
> 1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
> 1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
> 1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
> 1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
> 1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
> 1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
> 1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
> 1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
> 1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
> 1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
> 1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
> 1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
> 1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
> 1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
> 1234567890,1234567890,1234567890,1234567890,1234567890,1234567890
> EOF

ফাইল-এর শেষে চিহ্নিতকারীটি আক্ষরিকভাবে আপনার পেস্টের পরে E, O, F, অক্ষর হিসাবে টাইপ করা হয় এবং আপনার পছন্দ মতো কিছু হতে পারে। এছাড়াও ইওএফ অক্ষর এবং> অক্ষরগুলি ফাইলে পাঠানো পুনঃনির্দেশিত আউটপুটে অন্তর্ভুক্ত নয়। ইওএফ হিসাবে অক্ষরগুলি টাইপ করা কেবল প্রতীকী এবং আপনার পছন্দ মতো কিছু হতে পারে, উদাহরণস্বরূপ, আপনাকে অবশ্যই নিশ্চিত হতে হবে যে আপনি যে কোনও ইওএফ চিহ্নিতকারী নির্দিষ্ট করেছেন তা পেস্ট বাফারে প্রদর্শিত হবে না।

রেকর্ডের জন্য, আপনি স্টিডিন ব্যবহার করার সময় আপনি এখনও ইওএফ চিহ্নিতকারী হিসাবে ^ D ব্যবহার করতে পারেন, আপনি অন্য কিছু নির্দিষ্ট করে থাকলেও। ইওএফ স্ট্রিংয়ের ব্যবহারটি স্ক্রিপ্টের মধ্যে থেকে পুনর্নির্দেশের জন্য পাঠ্যের একটি ব্লক সীমিত করার জন্য একটি পুরাতন স্কুল স্ক্রিপ্টিং কনভেনশন।

আশাকরি এটা সাহায্য করবে.


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

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

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