যখন আপনি লিনাক্স কমান্ড লাইন ঘন ঘন ব্যবহার করেন, তবে হিস্টরি কার্যকরভাবে ব্যবহার করা আপনার প্রোডাক্টিভিটি বাড়াতে পারে। আসলে, একবার আপনি এখানে দেওয়া ১৫টি উদাহরণে দক্ষ হলে, আপনি কমান্ড লাইন ব্যবহার আরও উপভোগ্য এবং মজাদার পাবেন।
১. HISTTIMEFORMAT ব্যবহার করে টাইমস্ট্যাম্প দেখান
সাধারণত কমান্ড লাইন থেকে history টাইপ করলে, এটি কমান্ড নম্বর এবং কমান্ড দেখায়। অডিটিং উদ্দেশ্যে, টাইমস্ট্যাম্প কমান্ডসহ দেখাতে উপকারী হতে পারে নিচে দেখানো পদ্ধতিতে।
# export HISTTIMEFORMAT='%F %T ' # history | more 1 2008-08-05 19:02:39 service network restart 2 2008-08-05 19:02:39 exit 3 2008-08-05 19:02:39 id 4 2008-08-05 19:02:39 cat /etc/redhat-release
২. Control+R ব্যবহার করে হিস্টরি সার্চ করুন
আমি দৃঢ়ভাবে বিশ্বাস করি, এটি আপনার সবচেয়ে ঘন ঘন ব্যবহৃত হিস্টরি ফিচার হতে পারে। যখন আপনি ইতিমধ্যে একটি খুব লম্বা কমান্ড এক্সিকিউট করেছেন, তবে আপনি কীওয়ার্ড দিয়ে হিস্টরি সার্চ করে সেই কমান্ডটি পুনরায় এক্সিকিউট করতে পারেন, পুরো কমান্ডটি টাইপ না করেই। Control+R চাপুন এবং কীওয়ার্ড টাইপ করুন। নিচের উদাহরণে, আমি red সার্চ করলাম, যা হিস্টরিতে "cat /etc/redhat-release" কমান্ডটি দেখিয়েছে যাতে red শব্দটি ছিল।
# [কমান্ড প্রম্পট থেকে Ctrl+R চাপুন, যা রিভার্স-আই-সার্চ প্রম্পট দেখাবে] (reverse-i-search)`red': cat /etc/redhat-release [নোট: আপনার কমান্ড দেখতে পেলে এন্টার চাপুন, যা হিস্টরি থেকে কমান্ডটি এক্সিকিউট করবে] # cat /etc/redhat-release Fedora release 9 (Sulphur)
কখনো কখনো আপনি এক্সিকিউট করার আগে হিস্টরি থেকে কমান্ড এডিট করতে চান। উদাহরণস্বরূপ, আপনি httpd সার্চ করতে পারেন, যা কমান্ড হিস্টরি থেকে service httpd stop দেখাবে, এই কমান্ডটি সিলেক্ট করে stop কে start এ পরিবর্তন করুন এবং আবার এক্সিকিউট করুন নিচে দেখানো পদ্ধতিতে।
# [কমান্ড প্রম্পট থেকে Ctrl+R চাপুন, যা রিভার্স-আই-সার্চ প্রম্পট দেখাবে] (reverse-i-search)`httpd': service httpd stop [নোট: আপনার কমান্ড দেখতে পেলে লেফট অ্যারো বা রাইট অ্যারো কী চাপুন, যা কমান্ডটি এডিট করার জন্য দেখাবে, এক্সিকিউট করার আগে] # service httpd start
৩. পূর্বের কমান্ড দ্রুত রিপিট করুন ৪টি ভিন্ন পদ্ধতিতে
কখনো কখনো আপনি বিভিন্ন কারণে পূর্বের কমান্ডগুলো রিপিট করতে পারেন। পূর্বে এক্সিকিউট করা কমান্ড রিপিট করার ৪টি ভিন্ন পদ্ধতি নিচে দেওয়া হলো।
- আপ অ্যারো ব্যবহার করে পূর্বের কমান্ড দেখুন এবং এন্টার চাপুন এক্সিকিউট করার জন্য।
- কমান্ড লাইন থেকে !! টাইপ করে এন্টার চাপুন।
- কমান্ড লাইন থেকে !-1 টাইপ করে এন্টার চাপুন।
- Control+P চাপুন যা পূর্বের কমান্ডটি দেখাবে, এন্টার চাপুন এক্সিকিউট করার জন্য।
৪. হিস্টরি থেকে নির্দিষ্ট কমান্ড এক্সিকিউট করুন
নিচের উদাহরণে, আপনি যদি কমান্ড #4 রিপিট করতে চান, তবে !4 করতে পারেন নিচে দেখানো পদ্ধতিতে।
# history | more 1 service network restart 2 exit 3 id 4 cat /etc/redhat-release # !4 cat /etc/redhat-release Fedora release 9 (Sulphur)
৫. নির্দিষ্ট শব্দ দিয়ে শুরু হওয়া পূর্বের কমান্ড এক্সিকিউট করুন
! টাইপ করুন এবং তারপর সেই কমান্ডের শুরুয়ের কিছু অক্ষর টাইপ করুন যা আপনি রি-এক্সিকিউট করতে চান। নিচের উদাহরণে, !ps টাইপ করে এন্টার চাপলে, ps দিয়ে শুরু হওয়া পূর্বের কমান্ডটি এক্সিকিউট হয়েছে, যা 'ps aux | grep yp'।
# !ps ps aux | grep yp root 16947 0.0 0.1 36516 1264 ? Sl 13:10 0:00 ypbind root 17503 0.0 0.0 4124 740 pts/0 S+ 19:19 0:00 grep yp
৬. HISTSIZE ব্যবহার করে হিস্টরির মোট লাইন সংখ্যা কন্ট্রোল করুন
.bash_profile-এ নিচের দুটি লাইন যোগ করুন এবং বাশ শেলে পুনরায় লগইন করুন পরিবর্তন দেখতে। এই উদাহরণে, বাশ হিস্টরিতে শুধু ৪৫০ কমান্ড সংরক্ষিত থাকবে।
# vi ~/.bash_profile HISTSIZE=450 HISTFILESIZE=450
৭. HISTFILE ব্যবহার করে হিস্টরি ফাইল নেম পরিবর্তন করুন
ডিফল্টভাবে, হিস্টরি ~/.bash_history ফাইলে সংরক্ষিত হয়। .bash_profile-এ নিচের লাইন যোগ করুন এবং বাশ শেলে পুনরায় লগইন করুন, .bash_history ফাইলের বদলে .commandline_warrior ফাইলে কমান্ড সংরক্ষিত করতে। আমি এখনও এর কোনো প্র্যাকটিক্যাল ইউজ খুঁজে পাইনি। আমি মনে করি এটি ব্যবহার হয় যখন আপনি ভিন্ন টার্মিনাল থেকে এক্সিকিউট করা কমান্ডগুলো ভিন্ন হিস্টরি ফাইল নাম ব্যবহার করে ট্র্যাক করতে চান।
# vi ~/.bash_profile HISTFILE=/root/.commandline_warrior
আপনার যদি হিস্টরি ফাইলের নাম পরিবর্তন করার কোনো ভালো কারণ থাকে, তবে আমার সাথে শেয়ার করুন, কারণ আমি জানতে আগ্রহী কিভাবে আপনি এই ফিচারটি ব্যবহার করছেন।
৮. HISTCONTROL ব্যবহার করে ইত্যাদি রিপিটেড এন্ট্রি হিস্টরি থেকে এলিমিনেট করুন
নিচের উদাহরণে pwd তিনবার টাইপ করা হয়েছে, history করলে সব ৩টি pwd দেখাবে। ডুপ্লিকেট এলিমিনেট করতে HISTCONTROL কে ignoredups সেট করুন নিচে দেখানো পদ্ধতিতে।
# pwd # pwd # pwd # history | tail -4 44 pwd 45 pwd 46 pwd [নোট: উপরে pwd ৩ বার এক্সিকিউট করার পর হিস্টরিতে তিনটি pwd কমান্ড আছে] 47 history | tail -4 # export HISTCONTROL=ignoredups # pwd # pwd # pwd # history | tail -3 56 export HISTCONTROL=ignoredups 57 pwd [নোট: উপরে pwd ৩ বার এক্সিকিউট করার পর হিস্টরিতে শুধু একটি pwd কমান্ড আছে] 58 history | tail -4
৯. HISTCONTROL ব্যবহার করে পুরো হিস্টরিতে ডুপ্লিকেট মুছুন
উপরে 보여준 ignoredups শুধু কনsekutিভ কমান্ড হলে ডুপ্লিকেট মুছে। পুরো হিস্টরির জুড়ে ডুপ্লিকেট এলিমিনেট করতে HISTCONTROL কে erasedups সেট করুন নিচে দেখানো পদ্ধতিতে।
# export HISTCONTROL=erasedups # pwd # service httpd stop # history | tail -3 38 pwd 39 service httpd stop 40 history | tail -3 # ls -ltr # service httpd stop # history | tail -6 35 export HISTCONTROL=erasedups 36 pwd 37 history | tail -3 38 ls -ltr 39 service httpd stop [নোট: pwd-এর পরের service httpd stop মুছে গেছে] 40 history | tail -6
১০. HISTCONTROL ব্যবহার করে নির্দিষ্ট কমান্ড হিস্টরিতে সেভ না করার জন্য ফোর্স করুন
যখন আপনি একটি কমান্ড এক্সিকিউট করেন, তবে আপনি হিস্টরিকে সেটা ইগনোর করতে পারেন HISTCONTROL কে ignorespace সেট করে এবং কমান্ডের সামনে স্পেস দিয়ে নিচে দেখানো পদ্ধতিতে। আমি অনেক জুনিয়র সিসাডমিনকে এই ফিচার সম্পর্কে জানলে খুশি হয়ে যাওয়া দেখি, কারণ তারা হিস্টরি থেকে কমান্ড হাইড করতে পারেন। এটি ভালো যে ignorespace কিভাবে কাজ করে বুঝতে পারা। কিন্তু, সেরা অভ্যাস হিসেবে, যেকোনো কিছু উদ্দেশ্যপূর্ণভাবে হিস্টরি থেকে হাইড করবেন না।
# export HISTCONTROL=ignorespace # ls -ltr # pwd # service httpd stop [নোট: service-এর শুরুতে স্পেস আছে, যাতে এই কমান্ডটি হিস্টরি থেকে ইগনোর হয়] # history | tail -3 67 ls -ltr 68 pwd 69 history | tail -3
১১. -c অপশন ব্যবহার করে সকল পূর্বের হিস্টরি ক্লিয়ার করুন
কখনো কখনো আপনি সকল পূর্বের হিস্টরি ক্লিয়ার করতে চাইতে পারেন, কিন্তু 앞으로 হিস্টরি চলতে দিতে চান।
# history -c
১২. হিস্টরি কমান্ড থেকে ওয়ার্ড সাবস্টিটিউট করুন
যখন আপনি হিস্টরি সার্চ করেন, তবে আপনি ভিন্ন কমান্ড এক্সিকিউট করতে চাইতে পারেন কিন্তু সার্চ করা কমান্ডের প্যারামিটার ব্যবহার করে।
নিচের উদাহরণে, vi কমান্ডের পাশে !!:$ পূর্বের কমান্ডের আর্গুমেন্ট বর্তমান কমান্ডে আনে।
# ls anaconda-ks.cfg anaconda-ks.cfg # vi !!:$ vi anaconda-ks.cfg
নিচের উদাহরণে, vi কমান্ডের পাশে !^ পূর্বের কমান্ডের (যা cp কমান্ড) প্রথম আর্গুমেন্ট বর্তমান কমান্ডে (যা vi কমান্ড) আনে।
# cp anaconda-ks.cfg anaconda-ks.cfg.bak anaconda-ks.cfg # vi !^ vi anaconda-ks.cfg
১৩. নির্দিষ্ট কমান্ডের জন্য নির্দিষ্ট আর্গুমেন্ট সাবস্টিটিউট করুন
নিচের উদাহরণে, !cp:2 হিস্টরিতে cp দিয়ে শুরু হওয়া পূর্বের কমান্ড সার্চ করে এবং cp-এর দ্বিতীয় আর্গুমেন্টটি ls -l কমান্ডের জন্য সাবস্টিটিউট করে নিচে দেখানো পদ্ধতিতে।
# cp ~/longname.txt /really/a/very/long/path/long-filename.txt # ls -l !cp:2 ls -l /really/a/very/long/path/long-filename.txt
নিচের উদাহরণে, !cp:$ হিস্টরিতে cp দিয়ে শুরু হওয়া পূর্বের কমান্ড সার্চ করে এবং cp-এর শেষ আর্গুমেন্টটি (এই কেসে, যা দ্বিতীয় আর্গুমেন্টও) ls -l কমান্ডের জন্য সাবস্টিটিউট করে নিচে দেখানো পদ্ধতিতে।
# ls -l !cp:$ ls -l /really/a/very/long/path/long-filename.txt
১৪. HISTSIZE ব্যবহার করে হিস্টরি ব্যবহার ডিজেবল করুন
আপনি যদি পুরোপুরি হিস্টরি ডিজেবল করতে চান এবং বাশ শেল কমান্ড মনে রাখতে না চান, তবে HISTSIZE কে ০ সেট করুন নিচে দেখানো পদ্ধতিতে।
# export HISTSIZE=0 # history # [নোট: হিস্টরি কিছুই দেখাচ্ছে না]
১৫. HISTIGNORE ব্যবহার করে নির্দিষ্ট কমান্ডগুলো হিস্টরি থেকে ইগনোর করুন
কখনো কখনো আপনি pwd এবং ls মৌলিক কমান্ডগুলো দিয়ে আপনার হিস্টরি গুলিয়ে রাখতে চান না। HISTIGNORE ব্যবহার করে সেই সব কমান্ড নির্দিষ্ট করুন যা আপনি হিস্টরি থেকে ইগনোর করতে চান। দয়া করে নোট করুন যে, ls HISTIGNORE-এ যোগ করলে শুধু ls ইগনোর হবে, ls -l নয়। তাই আপনাকে সঠিক কমান্ডটি দিতে হবে যা আপনি হিস্টরি থেকে ইগনোর করতে চান।
# export HISTIGNORE="pwd:ls:ls -ltr:" # pwd # ls # ls -ltr # service httpd stop # history | tail -3 79 export HISTIGNORE="pwd:ls:ls -ltr:" 80 service httpd stop 81 history [নোট: হিস্টরিতে pwd, ls এবং ls -ltr রেকর্ড হয়নি]
প্রস্তাবিত পাঠ্য
Bash 101 Hacks, লেখক রামেশ নटरাজান. আমি আমার অধিকাংশ সময় লিনাক্স এনভায়রনমেন্টে কাটাই। তাই স্বাভাবিকভাবেই আমি বাশ কমান্ড লাইন এবং শেল স্ক্রিপ্টিংয়ের বড় ফ্যান। ১৫ বছর আগে, যখন আমি *nix-এর বিভিন্ন ফ্লেভারে কাজ করতাম, আমি সি শেল এবং কর্ন শেল-এ অনেক কোড লিখতাম। পরবর্তী বছরে, যখন আমি লিনাক্স সিস্টেম অ্যাডমিনিস্ট্রেটর হিসেবে কাজ শুরু করলাম, আমি বাশ শেল স্ক্রিপ্টিং ব্যবহার করে প্রায় সব সম্ভব টাস্ক অটোমেট করলাম। আমার বাশ অভিজ্ঞতার উপর ভিত্তি করে, আমি Bash 101 Hacks ইবুক লিখেছি যাতে ১০১টি প্র্যাকটিক্যাল উদাহরণ আছে বাশ কমান্ড লাইন এবং শেল স্ক্রিপ্টিংয়ের উপর। যদি আপনি বাশে দক্ষ হওয়া চান, তবে আপনার ভালো জন্য এই বইটি পড়ুন, যা আপনাকে আপনার বাশ কমান্ড লাইন এবং শেল স্ক্রিপ্টিং নিয়ন্ত্রণে নিতে সাহায্য করবে।
অসাধারণ লিনাক্স আর্টিকেল
নিচে কিছু অসাধারণ ১৫ উদাহরণ আর্টিকেল দেওয়া আছে যা আপনার কাজে আসতে পারে।
- ইউনিক্স LS কমান্ড: ১৫টি প্র্যাকটিক্যাল উদাহরণ
- গ্রেপ (Grep) কমান্ডে দক্ষতা হাসিল করুন! – ১৫টি প্র্যাকটিক্যাল Grep কমান্ড উদাহরণ
- লিনাক্স ক্রনট্যাব: ১৫টি অসাধারণ ক্রন জব উদাহরণ
- মাম্মি, আমি পেলাম! — ১৫টি প্র্যাকটিক্যাল লিনাক্স Find কমান্ড উদাহরণ