আজ সকালে বাশ টার্মিনালে আমার এই অদ্ভুত আচরণ ছিল:
user@home:/home/user$ [ -f /etc/openvpn/client.conf ] && echo true
bash: [: missing «]»
user@home:/home/user$ [ -f /etc/openvpn/client.conf ] && echo true
true
- প্রথম কমান্ডটি জিডিট দিয়ে সম্পাদিত স্ক্রিপ্ট থেকে আটকানো হয়েছিল ।
- দ্বিতীয়টি সরাসরি টার্মিনালে টাইপ করা হয়েছিল।
কিছু খনন করার পরে, আমি খুঁজে পেলাম যে 30 তম অক্ষর (ক্লায়েন্ট.কনফ এবং "]" এর মধ্যে স্থান) মুছে ফেলা এবং একটি স্থান দিয়ে এটি প্রতিস্থাপন করা কমান্ডটি আবার কাজ করে work
আমার ধারণা ঠিক ছিল: একটি অজানা ফাঁকা চরিত্র কমান্ডের মধ্যে পড়েছে , তবে প্রশ্নটি হ'ল:
- টার্মিনালে এই অক্ষরগুলি কীভাবে প্রকাশ করব যাতে আমি কমান্ডটি ডিবাগ করতে পারি? এবং আরও গুরুত্বপূর্ণ:
- কীভাবে আমি আবার এটি হতে রোধ করতে পারি?
বিটিডাব্লু, আমি উবুন্টু 18.04 / ফরাসী ভাষা চালাচ্ছি, আমি যে স্ক্রিপ্টটি থেকে কমান্ডটি পেস্ট করেছি তা ইউএসবি ড্রাইভে রয়েছে এবং এটি উইন্ডোতেও সম্পাদিত হতে পারে।
আপনার খুব ভাল উত্তরের জন্য ধন্যবাদ। খারাপ চরিত্রটি একটি সি 2 এ0 নন-ব্রেকিং স্পেস ইউটিএফ -8 অক্ষর। সেডের সাহায্যে বিশেষ 'এম-বিএম-' চরিত্রটি কীভাবে সরিয়ে ফেলা হবে সে প্রশ্নে সেই চরিত্রটি সম্পর্কে আকর্ষণীয় তথ্য রয়েছে।
আশ্চর্যের বিষয় হ'ল স্ক্রিপ্টটি এই চরিত্র থেকে মুক্ত। সুতরাং কোথা থেকে এসেছে তা আমি জানি না।
history 2|xxd
(কারণ history
কমান্ডটি সর্বদা তালিকার সর্বশেষে থাকে), বা টাইপ করুন history|grep "CommandWithProblem"|xxd
। আপনি এর পরিবর্তে অন্য কোনও হেক্স ডিসপ্লে প্রোগ্রাম ব্যবহার করতে পারেন xxd
তবে এটি আমার পছন্দ মতো ফর্ম্যাটে ডিফল্ট।
set -x
। এটি আপনাকে আদেশটি এবং এটি কীভাবে বিভক্ত হবে তা দেখাবে। এটি অগত্যা "এখানে খারাপ চরিত্র" বলবে না, তবে এটি আপনাকে দেখায় যে বাশ সেই চরিত্রটির উপর বিভক্ত ছিল না।