লিনাক্সে স্পেস এবং বিশেষ অক্ষর থাকা ফাইলের নাম কীভাবে ম্যানিপুলেট করা যায়
আমরা খুব নিয়মিত ফাইল এবং ফোল্ডার নাম জুড়ে। বেশিরভাগ ক্ষেত্রে ফাইল/ফোল্ডারের নাম ফাইল/ফোল্ডারের সামগ্রীর সাথে সম্পর্কিত এবং সংখ্যা এবং অক্ষর দিয়ে শুরু হয়। আলফা-নুমেরিক ফাইলের নামটি বেশ সাধারণ এবং খুব ব্যাপকভাবে ব্যবহৃত হয়, তবে যখন ফাইল/ফোল্ডারের নামের সাথে আমাদের বিশেষ অক্ষর থাকে তখন আমাদের ক্ষেত্রে এটি হয় না।
দ্রষ্টব্য: আমাদের যে কোনও ধরণের ফাইল থাকতে পারে তবে সরলতা এবং সহজ প্রয়োগের জন্য আমরা নিবন্ধ জুড়ে পাঠ্য ফাইল (.txt) এর সাথে কাজ করব।
সর্বাধিক সাধারণ ফাইলের নামগুলি হ'ল:
abc.txt avi.txt debian.txt ...
সংখ্যার ফাইলের নামগুলির উদাহরণ:
121.txt 3221.txt 674659.txt ...
আলফা-সংখ্যা সংক্রান্ত ফাইলের নামগুলি হ'ল:
eg84235.txt 3kf43nl2.txt 2323ddw.txt ...
ফাইলের নামের উদাহরণগুলির মধ্যে বিশেষ অক্ষর রয়েছে এবং এটি খুব সাধারণ নয়:
#232.txt #bkf.txt #bjsd3469.txt #121nkfd.txt -2232.txt -fbjdew.txt -gi32kj.txt --321.txt --bk34.txt ...
এখানে সর্বাধিক সুস্পষ্ট প্রশ্নগুলির মধ্যে একটি হ'ল - পৃথিবীতে কে ফাইল/ফোল্ডার নামের সাথে একটি হাশ (#)
, একটি আধা-কোলন (;)
, একটি তৈরি করে ড্যাশ (-)
বা অন্য কোনও বিশেষ অক্ষর।
আমি আপনাকে সম্মত করি, এই জাতীয় ফাইলের নামগুলি সাধারণ নয় তবে যখনই আপনাকে এই জাতীয় কোনও ফাইলের নাম ব্যবহার করতে হয় তখন আপনার শেলটি ভাঙা/ছেড়ে দেওয়া উচিত নয়। প্রযুক্তিগতভাবে প্রতিটি জিনিসই ফোল্ডার, ড্রাইভার বা অন্য যে কোনও কিছুই লিনাক্সে ফাইল হিসাবে বিবেচিত হয়।
এর নামে ড্যাশ (-) রয়েছে এমন ফাইলের সাথে কাজ করা
একটি ফাইল তৈরি করুন যা ড্যাশ (-)
দিয়ে শুরু হবে, বলুন -abx.txt।
$ touch -abc.txt
touch: invalid option -- 'b' Try 'touch --help' for more information.
উপরের ত্রুটির কারণ, শেলটি কোনও ড্যাশ (-)
এর পরে যে কোনও কিছুকে বিকল্প হিসাবে ব্যাখ্যা করে এবং স্পষ্টতই এরূপ কোনও বিকল্প নেই, সুতরাং ত্রুটিটি।
এই ধরনের ত্রুটি সমাধানের জন্য, আমাদের বাশ শেলটি (এই এবং নিবন্ধের অন্যান্য উদাহরণগুলির বেশিরভাগই BASH এর জন্য) বলতে হবে বিকল্প হিসাবে বিশেষ চরিত্রের (এখানে ড্যাশ) কোনও কিছুর ব্যাখ্যা না করা।
এই ত্রুটিটি সমাধান করার দুটি উপায় রয়েছে:
$ touch -- -abc.txt [Option #1] $ touch ./-abc.txt [Option #2]
আপনি দীর্ঘ তালিকা জন্য ls বা ls -l কমান্ড চালিয়ে উপরের দুটি উপায়ে তৈরি করা ফাইলটি যাচাই করতে পারেন।
$ ls -l total 0 -rw-r--r-- 1 avi avi 0 Jun 8 11:05 -abc.txt
উপরের ফাইলটি সম্পাদনা করতে আপনি করতে পারেন:
$ nano -- -abc.txt or $ nano ./-abc.txt
দ্রষ্টব্য: আপনি ন্যানোর প্রতিস্থাপন করতে পারেন আপনার পছন্দের অন্য কোনও সম্পাদককে ভিম হিসাবে:
$ vim -- -abc.txt or $ vim ./-abc.txt
একইভাবে এই জাতীয় ফাইলটি স্থানান্তর করতে আপনাকে করতে হবে:
$ mv -- -abc.txt -a.txt or $ mv -- -a.txt -abc.txt
এবং এই ফাইলটি মুছতে, আপনাকে করতে হবে:
$ rm -- -abc.txt or $ rm ./-abc.txt
যদি আপনার ফোল্ডারে প্রচুর ফাইল থাকে যার নামটিতে ড্যাশ থাকে এবং আপনি সেগুলি একবারে মুছতে চান তবে এটি করুন:
$ rm ./-*
১. উপরে উল্লিখিত একই নিয়মটি ফাইলের নাম এবং তাদের উপস্থিতির সংখ্যার হাইপেনের জন্য অনুসরণ করে। যেমন, -a-b-c.txt, ab-c.txt, abc-.txt ইত্যাদি
২. উপরে উল্লিখিত একই নিয়মটি ফোল্ডারের নাম এবং যেকোন সংখ্যক হাইপেন এবং তার উপস্থিতি অনুসরণ করে, ফোল্ডারটি মুছে ফেলার জন্য আপনাকে এইভাবে "rm -rf 'ব্যবহার করতে হবে তা বাদ দিয়ে:
$ rm -rf -- -abc or $ rm -rf ./-abc
নামে হ্যাশ (#) থাকা ফাইলগুলি নিয়ে কাজ করা
# প্রতীকটির বেসে খুব আলাদা অর্থ রয়েছে।
#
এর পরে যে কোনও কিছুই মন্তব্য হিসাবে ব্যাখ্যা করা হয় এবং তাই BASH দ্বারা অবহেলিত।
একটি ফাইল তৈরি করুন # abc.txt।
$ touch #abc.txt
touch: missing file operand Try 'touch --help' for more information.
উপরের ত্রুটির কারণ, বাশ # abc.txt একটি মন্তব্যে ব্যাখ্যা করছেন এবং তাই উপেক্ষা করছেন। সুতরাং কোনও ফাইল অপেরাড ছাড়াই কমান্ড টাচ পাস করা হয়েছে, এবং তাই ত্রুটি।
এই জাতীয় ত্রুটি সমাধানের জন্য, আপনি BASH কে # মন্তব্য হিসাবে ব্যাখ্যা না করার জন্য বলতে পারেন।
$ touch ./#abc.txt or $ touch '#abc.txt'
এবং স্রেফ তৈরি করা ফাইলটি যাচাই করুন:
$ ls -l total 0 -rw-r--r-- 1 avi avi 0 Jun 8 12:14 #abc.txt
এখন একটি ফাইল তৈরি করুন যার নাম ভিক্ষা ছাড়া কোথাও #
রয়েছে।
$ touch ./a#bc.txt $ touch ./abc#.txt or $ touch 'a#bc.txt' $ touch 'abc#.txt'
এটি যাচাই করতে ‘ls -l’ চালান:
$ ls -l total 0 -rw-r--r-- 1 avi avi 0 Jun 8 12:16 a#bc.txt -rw-r--r-- 1 avi avi 0 Jun 8 12:16 abc#.txt
আপনি একবারে দুটি ফাইল (একটি এবং # বিসি বলুন) তৈরি করলে কী হবে:
$ touch a.txt #bc.txt
সদ্য নির্মিত ফাইলটি যাচাই করুন:
$ ls -l total 0 -rw-r--r-- 1 avi avi 0 Jun 8 12:18 a.txt
উপরের উদাহরণ থেকে স্পষ্টতই এটি কেবল ফাইল তৈরি করেছে ‘একটি’ এবং ফাইল ‘# বিসি’ উপেক্ষা করা হয়েছে। উপরের পরিস্থিতিটি সফলভাবে সম্পাদন করতে আমরা করতে পারি,
$ touch a.txt ./#bc.txt or $ touch a.txt '#bc.txt'
এবং এটি যাচাই করুন:
$ ls -l total 0 -rw-r--r-- 1 avi avi 0 Jun 8 12:20 a.txt -rw-r--r-- 1 avi avi 0 Jun 8 12:20 #bc.txt
আপনি ফাইলটি সরিয়ে নিতে পারেন:
$ mv ./#bc.txt ./#cd.txt or $ mv '#bc.txt' '#cd.txt'
এটি অনুলিপি করুন:
$ cp ./#cd.txt ./#de.txt or $ cp '#cd.txt' '#de.txt'
আপনি নিজের পছন্দ হিসাবে সম্পাদকের পছন্দ হিসাবে এটি সম্পাদনা করতে পারেন:
$ vi ./#cd.txt or $ vi '#cd.txt'
$ nano ./#cd.txt or $ nano '#cd.txt'
এবং এটি মুছুন:
$ rm ./#bc.txt or $ rm '#bc.txt'
ফাইলের নামে হ্যাশ (#) থাকা সমস্ত ফাইল মুছতে আপনি ব্যবহার করতে পারেন:
# rm ./#*
এর নামে সেমিকোলনযুক্ত ফাইলগুলি;);
আপনি যদি সচেতন না হন, সেমিকোলন BASH এবং সম্ভবত অন্যান্য শেলের মধ্যে কমান্ড বিভাজক হিসাবে কাজ করে। সেমিকোলন আপনাকে একসাথে বেশ কয়েকটি কমান্ড কার্যকর করতে দেয় এবং বিভাজক হিসাবে কাজ করে। আপনি কি কখনও কোনও ফাইলের সাথে সেমিকোলনযুক্ত নাম ব্যবহার করেছেন? এখানে না হলে আপনি করবেন।
এটিতে অর্ধ-কোলনযুক্ত একটি ফাইল তৈরি করুন।
$ touch ;abc.txt
touch: missing file operand Try 'touch --help' for more information. bash: abc.txt: command not found
উপরের ত্রুটির কারণ, আপনি উপরের কমান্ডটি চালনার সময় BASH স্পর্শকে একটি কমান্ড হিসাবে ব্যাখ্যা করে কিন্তু সেমিকোলনের আগে কোনও ফাইল অপরেন্ড খুঁজে পেলেন না এবং তাই এটি ত্রুটির খবর দেয়। এটি আরও একটি ত্রুটি জানিয়েছে যে ‘abc.txt’ কমান্ডটি পাওয়া যায় নি, কেবল কারণ সেমিকোলনের পরে BASH অন্য একটি কমান্ডের প্রত্যাশা করেছিল এবং ‘abc.txt’, কোনও আদেশ নয়।
এই ধরনের ত্রুটি সমাধানের জন্য, বেসকে বলুন সেমিকোলনকে কমান্ড বিভাজক হিসাবে ব্যাখ্যা করবেন না, যেমন:
$ touch ./';abc.txt' or $ touch ';abc.txt'
দ্রষ্টব্য: আমরা একক উক্তি
সহ ফাইলের নামটি বন্ধ করে দিয়েছি। এটি বেসকে বলে যে ;
ফাইল নামের একটি অংশ এবং কমান্ড বিভাজক নয়।
ফাইলের বাকি ক্রিয়াকলাপ (যেমন, অনুলিপি, সরানো, মুছুন) এবং সেমিকোলন থাকা নামে ফোল্ডারের নামটি একক উদ্ধৃতিতে সোজাসুজি চালানো যেতে পারে।
ফাইল/ফোল্ডারের নামে অন্যান্য বিশেষ অক্ষরের সাথে লেনদেন করা
অতিরিক্ত কিছু প্রয়োজন হয় না, কেবল নীচে দেখানো মত সাধারণ ফাইল নাম হিসাবে এটি স্বাভাবিক উপায়ে করুন।
$ touch +12.txt
আপনাকে সেমিকোলনের ক্ষেত্রে যেমন করা হয়েছিল, তেমনি আপনাকে একক উদ্ধৃতিতে ফাইলের নামটি বন্ধ করতে হবে। বাকি জিনিসগুলি সরাসরি এগিয়ে রয়েছে ..
$ touch '$12.txt'
আপনার আলাদাভাবে কিছু করার দরকার নেই, এটিকে সাধারণ ফাইল হিসাবে বিবেচনা করুন।
$ touch %12.txt
ফাইলের নামের সাথে অ্যাসিরিস্ক থাকলে কোনও পরিবর্তন হয় না এবং আপনি এটিকে সাধারণ ফাইল হিসাবে ব্যবহার চালিয়ে যেতে পারেন।
$ touch *12.txt
দ্রষ্টব্য: যখন আপনাকে *
দিয়ে শুরু হওয়া কোনও ফাইল মুছতে হয়, তখন এই জাতীয় ফাইলগুলি মুছতে নিম্নলিখিত আদেশগুলি কখনই ব্যবহার করবেন না।
$ rm * or $ rm -rf *
পরিবর্তে ব্যবহার করুন,
$ rm ./*.txt
একক উদ্ধৃতিতে কেবল ফাইলের নামটি সংযুক্ত করুন এবং বাকী জিনিসগুলি একই রকম।
$ touch '!12.txt'
অতিরিক্ত কিছু নয়, অ্যাট সাইন থাকা কোনও ফাইলের নাম নরমাল ফাইল হিসাবে বিবেচনা করুন।
$ touch '@12.txt'
কোন অতিরিক্ত মনোযোগ প্রয়োজন। সাধারণ ফাইল হিসাবে ফাইলনামে ^
থাকা একটি ফাইল ব্যবহার করুন।
$ touch ^12.txt
ফাইলের নামটি একক উদ্ধৃতিতে আবদ্ধ হওয়া উচিত এবং আপনি যেতে প্রস্তুত।
$ touch '&12.txt'
যদি ফাইলের নামটি প্যারেন্টেসিস থাকে তবে আপনার একক উদ্ধৃতি সহ ফাইলের নামটি বন্ধ করতে হবে।
$ touch '(12.txt)'
কোনও অতিরিক্ত যত্নের প্রয়োজন নেই। এটি কেবল অন্য ফাইল হিসাবে বিবেচনা করুন।
$ touch {12.txt}
শেভরনসযুক্ত একটি ফাইলের নাম অবশ্যই একক উদ্ধৃতিতে আবদ্ধ থাকতে হবে।
$ touch '<12.txt>'
স্কয়ার বন্ধনীযুক্ত ফাইলের নামটিকে সাধারণ ফাইল হিসাবে বিবেচনা করুন এবং আপনার এটির অতিরিক্ত যত্ন নেওয়ার দরকার নেই।
$ touch [12.txt]
এগুলি খুব সাধারণ এবং অতিরিক্ত কোনও কিছুর প্রয়োজন হয় না। আপনি একটি সাধারণ ফাইল দিয়ে যা করতেন তা কেবল করুন।
$ touch _12.txt
ইক্যুয়াল-টু সাইন থাকলে কোনও পরিবর্তন হয় না, আপনি এটিকে সাধারণ ফাইল হিসাবে ব্যবহার করতে পারেন।
$ touch =12.txt
ব্যাকস্ল্যাশ শেলকে পরবর্তী চরিত্রটিকে উপেক্ষা করতে বলে। আপনাকে সেমিকোলনের ক্ষেত্রে যেমন করা হয়েছিল, তেমনি আপনাকে একক উদ্ধৃতিতে ফাইলের নামটি বন্ধ করতে হবে। বাকি জিনিসগুলি সরাসরি এগিয়ে রয়েছে।
$ touch '.txt'
আপনার ফাইল সিস্টেমে ত্রুটি না হওয়া পর্যন্ত আপনি কোনও ফাইল তৈরি করতে পারবেন না যার মধ্যে একটি ফরোয়ার্ড স্ল্যাশ (/)
রয়েছে। ফরোয়ার্ড স্ল্যাশ থেকে বাঁচার কোনও উপায় নেই।
সুতরাং আপনি যদি ‘/12.txt’ বা ‘b/c.txt’ এর মতো কোনও ফাইল তৈরি করতে পারেন তবে আপনার ফাইল সিস্টেমে বাগ রয়েছে বা আপনার ইউনিকোড সমর্থন রয়েছে, যা আপনাকে ফরোয়ার্ড স্ল্যাশ সহ একটি ফাইল তৈরি করতে দেয়। এক্ষেত্রে ফরোয়ার্ড স্ল্যাশটি আসল ফরোয়ার্ড স্ল্যাশ নয় তবে একটি ইউনিকোড অক্ষর যা ফরোয়ার্ড স্ল্যাশের মতো দেখায়।
আবার, একটি উদাহরণ যেখানে আপনাকে কোনও বিশেষ প্রচেষ্টা করার দরকার নেই। প্রশ্ন চিহ্নযুক্ত একটি ফাইল নামকে সবচেয়ে সাধারণ উপায়ে চিকিত্সা করা যেতে পারে।
$ touch ?12.txt
ডট (।)
দিয়ে শুরু হওয়া ফাইলগুলি লিনাক্সে খুব বিশেষ এবং এগুলিকে ডট ফাইল বলা হয়। এগুলি হাইড ফাইলগুলি সাধারণত একটি কনফিগারেশন বা সিস্টেম ফাইল। এই জাতীয় ফাইলগুলি দেখতে আপনাকে ls কমান্ড সহ '-a' বা '-A' ব্যবহার করতে হবে।
এ জাতীয় ফাইল তৈরি, সম্পাদনা, নাম পরিবর্তন এবং মোছা সরাসরি এগিয়ে রয়েছে straight
$ touch .12.txt
দ্রষ্টব্য: লিনাক্সে আপনার কাছে ফাইলের নামে যতগুলি ডট প্রয়োজন হতে পারে (।)
থাকতে পারে। ফাইলের নামের অন্যান্য সিস্টেমের বিন্দুর বিপরীতে অর্থ নাম এবং এক্সটেনশানকে পৃথক করা নয়। আপনি একাধিক ডট যুক্ত ফাইল তৈরি করতে পারেন:
$ touch 1.2.3.4.5.6.7.8.9.10.txt
এবং এটি হিসাবে পরীক্ষা করুন:
$ ls -l total 0 -rw-r--r-- 1 avi avi 0 Jun 8 14:32 1.2.3.4.5.6.7.8.9.10.txt
আপনি যতটা চান ফাইলের নামে কমা রাখতে পারেন এবং আপনার অতিরিক্ত কোনও কিছুর প্রয়োজন নেই। সরল ফাইলের নাম হিসাবে কেবল এটি স্বাভাবিকভাবে করুন।
$ touch ,12.txt or $ touch ,12,.txt
আপনি যতটা চান ফাইলের নামে কোলন রাখতে পারেন এবং আপনার অতিরিক্ত কোনও প্রয়োজন নেই ’t সরল ফাইলের নাম হিসাবে কেবল এটি স্বাভাবিকভাবে করুন।
$ touch :12.txt or $ touch :12:.txt
ফাইলের নামে উদ্ধৃতি পেতে আমাদের এক্সচেঞ্জের নিয়ম ব্যবহার করতে হবে। উদাহরণস্বরূপ, যদি আপনার ফাইলের নামে একক উক্তি থাকা দরকার হয়, ফাইলের নামটি ডাবল উদ্ধৃতি দিয়ে আবদ্ধ করুন এবং যদি আপনার ফাইলের নামে ডাবল উদ্ধৃতি প্রয়োজন হয় তবে এটি একক উদ্ধৃতি দিয়ে সংযুক্ত করুন।
$ touch "15'.txt" and $ touch '15”.txt'
লিনাক্সের কিছু সম্পাদক যেমন ইমাক্স ফাইল সম্পাদনা করা ফাইলটির একটি ব্যাকআপ ফাইল তৈরি করে। ব্যাকআপ ফাইলটিতে ফাইলের নামের শেষে একটি টিলডের সাথে মূল ফাইলের নাম থাকে। আপনার কাছে এমন একটি ফাইল থাকতে পারে যার নামের সাথে টিল্ড রয়েছে, যে কোনও স্থানে কেবল হিসাবে:
$ touch ~1a.txt or $touch 2b~.txt
একটি ফাইল তৈরি করুন যার নামের মধ্যে অক্ষর/শব্দের মধ্যে স্থান রয়েছে, বলুন "হাই আমার নামটি অ্যাভিশেক.টেক্সট"।
ফাঁকা জায়গাগুলির সাথে ফাইলের নাম রাখা ভাল ধারণা নয় এবং যদি আপনার স্বতন্ত্র পাঠযোগ্য নাম রাখতে হয় তবে আপনার আন্ডারস্কোর বা ড্যাশ ব্যবহার করা উচিত। তবে আপনাকে যদি এই জাতীয় কোনও ফাইল তৈরি করতে হয় তবে আপনাকে পশ্চাদপট স্ল্যাশ ব্যবহার করতে হবে যা এটির পরবর্তী অক্ষরটিকে উপেক্ষা করে। উপরের ফাইলটি তৈরি করতে আমাদের এইভাবে করতে হবে ..
$ touch hi\ my\ name\ is\ avishek.txt hi my name is avishek.txt
আপনি যে সমস্ত দৃশ্য আসতে পারেন তা আমি coveringেকে দেওয়ার চেষ্টা করেছি। উপরোক্ত বাস্তবায়নগুলির বেশিরভাগই স্পষ্টভাবে BASH শেলের জন্য এবং অন্য শেলটিতে কাজ নাও করতে পারে।
আপনি যদি মনে করেন যে আমি কিছু মিস করেছি (এটি খুব সাধারণ এবং মানব প্রকৃতি), আপনি নীচের মন্তব্যে আপনার পরামর্শ অন্তর্ভুক্ত করতে পারেন। সংযুক্ত থাকুন, মন্তব্য রাখুন। থাকুন এবং সংযুক্ত থাকুন! আমাদের লাইক এবং শেয়ার করুন এবং আমাদের বিস্তার করতে সহায়তা করুন!