বিশেষ অক্ষরগুলি কীভাবে প্রবেশ করবেন যাতে বাশ / টার্মিনাল তাদের বোঝে?


18

ধরা যাক একটি ফোল্ডারে একটি ফাইল রয়েছে Näyttökuva.png(যারা আগ্রহী তাদের জন্য এটি ফিনিশ ভাষায় "স্ক্রিনশট")। এটিই ঘটে:

$ ls
Näyttökuva.png

$ ls N*
Näyttökuva.png

$ ls Nä*
ls: Nä*: No such file or directory

এটি ট্যাব-অটো-সম্পূর্ণকরণকেও প্রভাবিত করে। আমি টাইপ করা ls Nএবং টিপতে শুরু tabকরলে এটি সঠিকভাবে প্রসারিত হয় ls Näyttökuva.png। তবে আমি টাইপিং শুরু করলে ls Näট্যাবিং কিছুই করে না।

আমি কীভাবে পারি:

  • বাশ / টার্মিনালটি কনফিগার করুন যাতে এটি বিশেষ অক্ষর বোঝে
  • বিশেষ অক্ষর টাইপ করুন যাতে বাশ / টার্মিনাল তাদের বোঝে?

টার্মিনালের এনকোডিংটি সেটিংস – ট্যাবে UTF-8 এ সেট করা আছে এবং এনকোডিং – ট্যাবটি তার ডিফল্ট অবস্থায় রয়েছে, অর্থাৎ। ইউটিএফ -8, ম্যাক ওএস রোমান, আইএসও ল্যাটিন 1, আইএসও লাতিন 9, উইন্ডোজ ল্যাটিন 1, এএসসিআইআই, নেক্সটস্টেপ + কিছু এশিয়ান কোডিং সক্ষম করা হয়েছে।


এমনকি অপরিচিত (যদিও এই প্রশ্নের জন্য সম্ভবত প্রয়োজনীয় নয়):

যদি আমি টাইপ করি ls N, টিপুন tab, অক্ষরটি শেষ থেকে মুছে ফেলুন যতক্ষণ না এটি পড়ে ls Näএবং tabআবার টিপতে থাকে , কমান্ডটি ls Nättökuva.png[sic] তে প্রসারিত হয় ।

আমি যদি অক্ষরগুলিকে দ্বিতীয়বার মুছে ফেলার চেষ্টা করি ls Näএবং ট্যাব টিপতে টিপলে এটি প্রসারিত হয় ls Nätökuva.png। তৃতীয় রান প্রসারিত হয় ls Näökuva.png

কোনও কারণে, চতুর্থ রান দেয় ls Nä̈kuva.png(আমলাটদের উপর আমলোটগুলি লক্ষ্য করুন)। Tabbing ls Nä̈দেয় ls Nä̈kuva.pngপ্রত্যেক সময়। তবুও, এটি কাজ করে:

$ ls Nä̈kuva.png
Näyttökuva.png

$ history 2
518  ls Näyttökuva.png 
519  history 2

উত্তর:


23

আমি মনে করি বাশ কিছু উত্তেজনাপূর্ণতার উপরে ট্রিপ করছে যাতে চাপড়া চরিত্রগুলি কীভাবে পরিচালনা করা হয়। আপনি কিছু পপকর্ন দখল করতে চাইতে পারেন, কারণ এটি কিছুটা প্রযুক্তিগত পেতে চলেছে ...

ইউনিকোড কিছু স্বীকৃত অক্ষরকে বিভিন্নভাবে উপস্থাপিত করার অনুমতি দেয়: উচ্চারণযুক্ত চরিত্রের প্রতিনিধিত্বকারী "কোড পয়েন্ট" হিসাবে বা অক্ষরের অলক্ষিত সংস্করণকে প্রতিনিধিত্বকারী কোড পয়েন্টগুলির একটি সিরিজ হিসাবে, এর পরে অ্যাকসেন্টগুলি বর্ণিত হয়। উদাহরণস্বরূপ, "ä" কে U + 00E4 (ইউটিএফ -8 0xc3a4, ডায়ারেসিস সহ লাতিন ছোট অক্ষর 1) হিসাবে উপস্থাপন করা যেতে পারে বা ইউ + 0061 ইউ + 0308 (ইউটিএফ -8 0x61cc88, ল্যাটিন ছোট অক্ষর a + মিশ্রন ডায়ারিসিস হিসাবে চিহ্নিত করা যেতে পারে )।

ওএস এক্স এর এইচএফএস + ফাইল সিস্টেমের জন্য সমস্ত ফাইলের নামগুলি তাদের সম্পূর্ণরূপে পচে যাওয়া রূপের UTF-8 উপস্থাপনে সংরক্ষণ করা উচিত । এইচএফএস + ফাইলনামে, "ä" 0x61cc88 হিসাবে এনকোড করা উচিত এবং "ö" 0x6fcc88 হিসাবে এনকোড হওয়া আবশ্যক।

আমি নিশ্চিত যে এখানে কি ঘটছে তা হ'ল আপনি যখন কমান্ড লাইনে "Näyttökuva.png" টাইপ করবেন, তখন অক্ষরগুলি পূর্বনির্ধারিত আকারে "টাইপ" করুন। ফাইলটি তৈরি করা হলে ফাইল সিস্টেম স্টোরেজের জন্য অক্ষরগুলিকে পচিয়ে দেয়। এখন পর্যন্ত সবকিছু ঠিক আছে। আপনি যখন "Nä" দিয়ে শুরু করে ট্যাব-সমাপ্তিটি ব্যবহার করার চেষ্টা করবেন তখন আমার মনে হয় বাশ ম্যাচগুলি অনুসন্ধানের আগে "" dec "পচন করতে ব্যর্থ হচ্ছে, এবং অবশ্যই এটির কোনও সন্ধান পায় না।

পার্থক্যটি চিত্রিত করার জন্য, কমান্ড লাইনে আমি যখন "Näyttökuva.png" টাইপ করি তখন বনাম কী ব্যবহার করা হয় তার উদাহরণ এখানে একটি ফাইলনাম হিসাবে সংরক্ষণ করি এবং তা পূরণ করার জন্য ট্যাব সমাপ্তি ব্যবহার করি:

$ printf Näyttökuva.png | xxd    # This time I pasted the it in from this web page
0000000: 4ec3 a479 7474 c3b6 6b75 7661 2e70 6e67  N..ytt..kuva.png
$ touch Näyttökuva.png           # Also pasted from the web
$ printf Näyttökuva.png | xxd    # This time I tab-completed it after N
0000000: 4e61 cc88 7974 746f cc88 6b75 7661 2e70  Na..ytto..kuva.p
0000010: 6e67                                     ng

মুছে ফেলা এবং পুনরায় ট্যাব-সমাপ্তির সময় চরিত্রগুলি হারিয়ে যাওয়ার বিষয়ে আমি সন্দেহ করি যে এটি খুব ঘনিষ্ঠভাবে সম্পর্কিত। বিশেষত, আমি মনে করি বাশ মুছুন কীটির প্রেসের জন্য একটি কোড পয়েন্ট "মুছে ফেলছে", তবে প্রতি প্রেসের টার্মিনাল উইন্ডো থেকে একটি অক্ষর মুছে ফেলছে। কারণ মুছে ফেলা একটি অক্ষর ("" "এবার) দুটি কোড পয়েন্ট নিয়ে গঠিত তবে কেবল একটি অক্ষর, টার্মিনাল প্রদর্শনটি সিঙ্কের বাইরে চলে যায়। পুরো ফাইলের নামটি ট্যাব-সম্পূর্ণ করার চেষ্টা করুন, এটি "Näytt" এ আবার মুছে ফেলা, তারপরে পুনরায় ট্যাব-সমাপ্তি: ব্যাশকে মনে হয় যে কেবল সংযুক্ত ডায়ারেসিস মুছে ফেলা হয়েছে, পুরো "ö" নয়, সুতরাং এটি সংমিশ্রিত ডায়ারেসিস পুনরায় যুক্ত করে , তবে এবার এটি "টি" এর সাথে সংযুক্ত:

$ echo Näytkuva.png 
Näyttökuva.png

মনে রাখবেন যে আমি যখন রিটার্ন টিপব তখন বাশের সেখানে পুরো ফাইলের নাম থাকে; এটি কেবলমাত্র টার্মিনাল প্রদর্শন যা বিভ্রান্ত হয়েছিল।

টিএল; ডিআর ব্যাশের কিছু বাগ রয়েছে যার ফলে সংক্ষিপ্ত আকারে উচ্চারণযোগ্য অক্ষর রয়েছে।

সম্পাদনা: কিছুটা ঝাঁকুনির পরে, আমি মনে করি বাশ ঠিক করা (/ এটির বিকাশকারীরা এটি ঠিক করার জন্য অপেক্ষা করুন) কেবলমাত্র সম্পূর্ণ সমাধান। পচনশীল আকারে অক্ষরগুলি ইনপুট করার একটি উপায়ও থাকতে পারে, তবে এটি কী হবে তা আমার কোনও ধারণা নেই। তবে আমি কিছু আংশিক কাজের সন্ধান পেয়েছি:

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

  2. আপনি প্রকৃতপক্ষে উচ্চারণকৃত চরিত্রটি ট্যাব-সম্পূর্ণ করতে পারেন। উদাহরণস্বরূপ, আপনি "Na" এবং তারপরে ট্যাবটি লিখলে এটি "Näyttökuva.png" এর সাথে মিলবে কারণ "ä" এর নমনীয় পচন "a" দিয়ে শুরু হয়। তবে একই ডিরেক্টরিতে যদি আপনার কাছে "নারওয়াল.gif" নামে একটি ফাইল থাকে, তবে এটি খুব সহায়ক হবে না ...

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

  4. টার্মিনাল ডিসপ্লেটি সিঙ্ক থেকে বেরিয়ে আসার সাথে সমস্যার সমাধানের জন্য, আপনি কিছু কিছু পুনরায় আঁকতে-বর্তমান-লাইনকে আবদ্ধ করতে পারেন - এটি সমস্যাটি ঘটতে বাধা দেবে না, তবে এটি আপনাকে ডিসপ্লেটিকে পুনরায় সংশ্লেষিত করার একটি উপায় দেবে।


ধন্যবাদ, আমি পপকর্ন উপভোগ করেছি। আমি মনে করি আপনি সমস্যার কারণটি পেরেক দিয়ে গেছেন: ফলাফল $ echo -e "N\xC3\xA4*" | ls(প্রতিধ্বনি দেয় Nä*) ব্যবহার করে Näyttökuva.png। ম্যাক ওএসের অন্যান্য শেলগুলির সাথেও সমস্যাটি রয়েছে; এবং উদাহরণস্বরূপ zsh এর সাথে ls Nস্বয়ংক্রিয়ভাবে সমাপ্ত হয়ls Na<0308>ytto<0308>kuva.png
জারি কেইনেনেন

আমি জুবুন্টুতে স্বতঃসম্পূর্ণতা এবং ব্যাশে চেষ্টাও করেছি ls Nä*এবং এটি সঠিকভাবে কাজ করেছে, তাই এটি কীবোর্ড এবং ওএস এক্স এবং টার্মিনালের মধ্যে কোথাও বাগ যায়। বুটক্যাম্প পার্টিশনের মধ্যেও আমি এটি পরীক্ষা করেছি, তবে সমস্যাটি অব্যাহত রয়েছে (যেমন, এটি কেবল এইচএফএস + ফাইলগুলির সাথে ঘটে না)।
জারি কেইনেনেন

(এখন কাজের সম্পাদনা সম্পর্কিত আপনার সম্পাদনা দেখেছেন) কমপক্ষে প্রথম দুটি কাজ। # 2 আকর্ষণীয়: autocompleting Naকাজ, কিন্তু Nayনা (যদিও এটা বোধগম্য না থাকায় আসলে ¨মধ্যে aএবং y। ইন Xubuntu ls Na*না কাজ (যদিও Nä*। কাজ করে, তাই এটা সত্যিই একটি বিষয় নয়) ওয়াইল্ডকার্ড বিষয়ে - অন্য একটি কার্যসংক্রান্ত হতে পারে প্রতিস্থাপন äএবং এর öসাথে a?এবং o?উদাহরণস্বরূপ ls Na?y*, অবশ্যই এটি অস্পষ্টতা বাড়ায় তবে এটি কোনও কোনও ক্ষেত্রে কার্যকর হতে পারে
জারি কেইনেনেন

2
এটি জুবুন্টুতে কাজ করার কারণটি হ'ল ফাইল সিস্টেম টার্মিনাল ইন্টারফেসের মতো একই রূপ ব্যবহার করে। আপনি যদি ls N* | xxdজুবুন্টুতে করেন, এটি কি রচনা বা পচে যাওয়া চরিত্র দেয়?
গর্ডন ডেভিসন

ধরে নিই যে জুবুন্টু ফাইলের touch $'Na\xcc\x88ytto\xcc\x88kuva.png'নামটি রচনা আকারে সঞ্চয় করে, কমান্ডটি চালিয়ে দেখুন এবং দেখুন কী ঘটে - আমার ধারণা এটি খুব অনুরূপ নামের সাথে একটি নতুন ফাইল তৈরি করবে।
গর্ডন ডেভিসন

4

এটি একটি পুরানো প্রশ্ন, এবং কোনও নির্দিষ্ট উত্তর নেই। শুধু workaround।

তবে আমি এই পুরাতন গাইড থেকে কিছু তথ্য একত্রিত করেছি, এবং এখানে পরামর্শ ও নির্দেশ হিসাবে দেওয়া হয়েছে :

আমি আমার স্নো চিতাবাঘে একটি নতুন বাশ ইনস্টল করেছি। এটি ইনস্টল করার পরে, ব্যাশ সমাপ্তি সঠিকভাবে কাজ করে! (স্নো চিতাবাঘটি 3.2.48 (1) এবং ম্যাকপোর্টস 4.2.45_1 ইনস্টল করা রয়েছে) ipped পরিবর্তন /etc/shellsএবং চলমান মনে রাখবেন chsh

এছাড়াও, কিছু অন্যান্য নির্দেশের কারণে আমার মধ্যে রয়েছে .inputrc:

set meta-flag on
set input-meta on
set output-meta on
set convert-meta off

সঠিক অপারেশনের জন্য তাদের প্রয়োজন আছে কিনা তা নিশ্চিত নন।


আপনি ঠিক বলেছেন: ব্যাশ ৪.২ সম্পন্ন (যেখানে äপ্রাক্পোজিত রয়েছে) Näyttökuva.pngতবে ব্যাশ ৩.২ পূরণ করে না।
ল্রি

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