ব্যাশ ইতিহাসের শর্টকাটগুলির বেশিরভাগ গাইডগুলি উপলব্ধ প্রতিটি একককে সম্পূর্ণভাবে তালিকাভুক্ত করে। এর সাথে সমস্যা হল আমি একবার একটি শর্টকাট ব্যবহার করব, তারপরে আমি সমস্ত সম্ভাবনার চেষ্টা করার সাথে সাথে চটকতে থাকব। তারপর আমি আমার কর্মদিবসে চলে যাব এবং সেগুলি সম্পূর্ণরূপে ভুলে যাব, শুধুমাত্র সুপরিচিত !! ট্রিক আমি শিখেছিলাম যখন আমি প্রথম ব্যাশ ব্যবহার শুরু করি।
তাই তাদের বেশিরভাগই স্মৃতিতে প্রতিশ্রুতিবদ্ধ ছিল না।
এই নিবন্ধটি আমি আসলে ব্যবহার করি শর্টকাটগুলির রূপরেখা দেয়৷ প্রতিদিন. এটা আমার বইয়ের কিছু বিষয়বস্তুর উপর ভিত্তি করে, Learn Bash the hard way; (আরো জানতে আপনি এটির একটি পূর্বরূপ পড়তে পারেন)।
যখন লোকেরা আমাকে এই শর্টকাটগুলি ব্যবহার করতে দেখে, তারা প্রায়ই আমাকে জিজ্ঞাসা করে, "আপনি সেখানে কী করেছিলেন!?" ন্যূনতম প্রচেষ্টা বা বুদ্ধিমত্তার প্রয়োজন আছে, কিন্তু সত্যিই সেগুলি শিখতে, আমি এক সপ্তাহের জন্য প্রতিদিন একটি ব্যবহার করার পরামর্শ দিই, তারপর পরেরটিতে চলে যান। সেগুলিকে আপনার আঙুলের নীচে পেতে আপনার সময় নেওয়া মূল্যবান, কারণ আপনি যে সময় সংরক্ষণ করবেন তা দীর্ঘমেয়াদে তাৎপর্যপূর্ণ হবে৷
1. "শেষ যুক্তি" এক: !$
আপনি যদি এই নিবন্ধটি থেকে শুধুমাত্র একটি শর্টকাট গ্রহণ করেন তবে এটি একটি করুন৷ এটি আপনার লাইনে শেষ কমান্ডের শেষ আর্গুমেন্টে প্রতিস্থাপন করে।
এই দৃশ্যটি বিবেচনা করুন:
$ mv /path/to/wrongfile /some/other/place
mv: cannot stat '/path/to/wrongfile': No such file or directory
হ্যাঁ, আমি ভুল ফাইল রেখেছি আমার কমান্ডে ফাইলের নাম। আমার রাইটফাইল রাখা উচিত ছিল পরিবর্তে।
আপনি শেষ কমান্ড পুনরায় টাইপ করার সিদ্ধান্ত নিতে পারেন এবং রাইটফাইল দিয়ে ভুল ফাইল প্রতিস্থাপন করতে পারেন। পরিবর্তে, আপনি টাইপ করতে পারেন:
$ mv /path/to/rightfile !$
mv /path/to/rightfile /some/other/place
এবং কমান্ড কাজ করবে।
শর্টকাট সহ ব্যাশে একই জিনিস অর্জন করার অন্যান্য উপায় রয়েছে, তবে শেষ কমান্ডের শেষ আর্গুমেন্টটি পুনরায় ব্যবহার করার এই কৌশলটি আমি সবচেয়ে বেশি ব্যবহার করি৷
2. "n তম যুক্তি" এক: !:2
কখনো এরকম কিছু করেছেন?
$ tar -cvf afolder afolder.tar
tar: failed to open
অন্য অনেকের মতো, আমিও tar এর জন্য যুক্তি পাই (এবং ln ) আমি যতটা না স্বীকার করতে চাই তার চেয়ে বেশিবার ভুল।
আপনি যখন এই ধরনের যুক্তি মিশ্রিত করেন, আপনি চালাতে পারেন:
$ !:0 !:1 !:3 !:2
tar -cvf afolder.tar afolder
এবং আপনার খ্যাতি সংরক্ষিত হবে।
শেষ কমান্ডের আইটেমগুলি শূন্য-সূচীযুক্ত এবং !: এর পরে সংখ্যার সাথে প্রতিস্থাপিত হতে পারে .
স্পষ্টতই, আপনি শেষ কমান্ড থেকে নির্দিষ্ট আর্গুমেন্ট পুনঃব্যবহার করতেও এটি ব্যবহার করতে পারেন।
3. "সমস্ত আর্গুমেন্ট" এক:!:1-$
কল্পনা করুন আমি একটি কমান্ড চালাই যেমন:
$ grep '(ping|pong)' afile
যুক্তিগুলো সঠিক; যাইহোক, আমি পিং এর সাথে মিল রাখতে চাই অথবা পং একটি ফাইলে, কিন্তু আমি grep ব্যবহার করি egrep এর পরিবর্তে .
আমি egrep টাইপ করা শুরু করি , কিন্তু আমি অন্য আর্গুমেন্ট পুনরায় টাইপ করতে চাই না। তাই আমি !:1$ ব্যবহার করতে পারি পূর্ববর্তী কমান্ডের সমস্ত আর্গুমেন্ট জিজ্ঞাসা করার শর্টকাট দ্বিতীয়টি (মনে রাখবেন তারা শূন্য-সূচীযুক্ত) থেকে শেষটি ($ দ্বারা প্রতিনিধিত্ব করা হয়েছে) চিহ্ন)।
$ egrep !:1-$
egrep '(ping|pong)' afile
ping
আপনাকে 1-$ বাছাই করতে হবে না; আপনি 1-2 এর মত একটি উপসেট বেছে নিতে পারেন অথবা 3-9 (যদি আপনার আগের কমান্ডে অনেক আর্গুমেন্ট থাকে)।
4. "শেষ কিন্তু n " এক: !-2:$
উপরের শর্টকাটগুলি দুর্দান্ত যখন আমি অবিলম্বে জানি কীভাবে আমার শেষ কমান্ডটি সংশোধন করতে হয়, তবে প্রায়শই আমি পরে কমান্ড চালাই আসলটি, যার মানে শেষ কমান্ডটি আর নেই যা আমি উল্লেখ করতে চাই৷
৷উদাহরণস্বরূপ, mv ব্যবহার করে আগে থেকে উদাহরণ, যদি আমি একটি ls দিয়ে আমার ভুল অনুসরণ করি ফোল্ডারের বিষয়বস্তু পরীক্ষা করুন:
$ mv /path/to/wrongfile /some/other/place
mv: cannot stat '/path/to/wrongfile': No such file or directory
$ ls /path/to/
rightfile
আমি আর !$ ব্যবহার করতে পারি না শর্টকাট।
এই ক্ষেত্রে, আমি একটি -n সন্নিবেশ করতে পারি : (যেখানে n ! এর পরে ইতিহাসে ফিরে যাওয়ার জন্য কমান্ডের সংখ্যা একটি পুরানো কমান্ড থেকে শেষ আর্গুমেন্ট ধরতে:
$ mv /path/to/rightfile !-2:$
mv /path/to/rightfile /some/other/place
আবার, একবার আপনি এটি শিখলে, আপনি কত ঘন ঘন এটি প্রয়োজন তা ভেবে অবাক হতে পারেন৷
5. "আমাকে ফোল্ডারটি পান" একটি: !$:h
এটির চেহারায় এটি কম আশাব্যঞ্জক দেখাচ্ছে, তবে আমি এটি প্রতিদিন কয়েক ডজন বার ব্যবহার করি।
কল্পনা করুন আমি এইরকম একটি কমান্ড চালাই:
$ tar -cvf system.tar /etc/system
tar: /etc/system: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors.
আমি প্রথমে যা করতে চাই তা হল /etc-এ যান৷ ফোল্ডারে কি আছে তা দেখতে এবং আমি কি ভুল করেছি তা বের করতে।
আমি এটির সাথে একটি স্ট্রোকে এটি করতে পারি:
$ cd !$:h
cd /etc
এটি বলে:"শেষ কমান্ডে শেষ আর্গুমেন্ট পান (/etc/system ) এবং শুধুমাত্র /etc রেখে এর শেষ ফাইলের নাম উপাদানটি খুলে ফেলুন "
6. "বর্তমান লাইন" এক: !#:1
বছরের পর বছর ধরে, আমি মাঝে মাঝে ভাবতাম যে আমি বর্তমান লাইনে একটি যুক্তি উল্লেখ করতে পারি কিনা তা শেষ পর্যন্ত দেখার আগে এবং এটি শেখার আগে। আমি অনেক আগে তাই করতে চাই. আমি সাধারণত এটি ব্যাকআপ ফাইল তৈরি করতে ব্যবহার করি:
$ cp /path/to/some/file !#:1.bak
cp /path/to/some/file /path/to/some/file.bak
কিন্তু একবার আঙ্গুলের নিচে, এটি একটি খুব দ্রুত বিকল্প হতে পারে …
7. "অনুসন্ধান এবং প্রতিস্থাপন" এক:!!:gs
এটি একটি উল্লেখিত কমান্ড জুড়ে অনুসন্ধান করে এবং প্রথম দুটি /-এ যা আছে তা প্রতিস্থাপন করে দ্বিতীয় দুটিতে যা আছে তার সাথে অক্ষর।
বলুন আমি বিশ্বকে বলতে চাই যে আমার s কী কাজ করে না এবং f আউটপুট দেয় পরিবর্তে:
$ echo my f key doef not work
my f key doef not work
তারপর আমি বুঝতে পারি যে আমি শুধু f আঘাত করছিলাম দুর্ঘটনাক্রমে চাবি। সমস্ত f প্রতিস্থাপন করতে s এর সাথে s es, আমি টাইপ করতে পারি:
$ !!:gs/f /s /
echo my s key does not work
my s key does not work
এটি শুধুমাত্র একক অক্ষরের উপর কাজ করে না; আমিও শব্দ বা বাক্য প্রতিস্থাপন করতে পারি:
$ !!:gs/does/did/
echo my s key did not work
my s key did not work
তাদের পরীক্ষা করুন
৷এই শর্টকাটগুলিকে কীভাবে একত্রিত করা যায় তা দেখানোর জন্য, আপনি কি এই পায়ের নখের ক্লিপিংগুলি কী আউটপুট করবে তা খুঁজে বের করতে পারেন?
$ ping !#:0:gs/i/o
$ vi /tmp/!:0.txt
$ ls !$:h
$ cd !-2:h
$ touch !$!-3:$ !! !$.txt
$ cat !:1-$
উপসংহার
ব্যাশ প্রতিদিনের কমান্ড-লাইন ব্যবহারকারীর জন্য শর্টকাটের একটি মার্জিত উত্স হতে পারে। যদিও শেখার জন্য হাজার হাজার টিপস এবং কৌশল রয়েছে, এইগুলি আমার প্রিয় যেগুলি আমি প্রায়শই ব্যবহার করি৷
আপনি যদি ব্যাশ আপনাকে যে সমস্ত কিছু শেখাতে পারে তার আরও গভীরে যেতে চান, আমার বইটি নিন, বাশকে কঠিন উপায়ে শিখুন অথবা আমার অনলাইন কোর্স দেখুন, ব্যাশ শেল মাস্টার।
এই নিবন্ধটি মূলত ইয়ানের ব্লগ, Zwischenzugs.com-এ পোস্ট করা হয়েছিল এবং অনুমতি নিয়ে পুনরায় ব্যবহার করা হয়েছে।