কম্পিউটার

অর্ধেক কীস্ট্রোকের সাথে দ্বিগুণ করতে আপনার .bashrc ফাইলটি কীভাবে ব্যবহার করবেন

Bash স্ক্রিপ্টগুলির সাথে উবুন্টু সেট আপ করার বিষয়ে আমার সাম্প্রতিক পোস্টে, আমি সংক্ষেপে .bashrc এর যাদুটির কথা উল্লেখ করেছি। . এটি সত্যিই ন্যায়বিচার করেনি, তাই এখানে একটি দ্রুত পোস্ট যা ব্যাশ কনফিগারেশন ফাইলটি কী করতে পারে সে সম্পর্কে আরও বিশদ বিবরণ দেয়৷

আমার বর্তমান কনফিগারেশনটি আমার কর্মপ্রবাহকে ব্যাপকভাবে উন্নত করে, এবং এটি ছাড়া আমাকে যে কীস্ট্রোক নিয়োগ করতে হবে তার 50% এরও বেশি সংরক্ষণ করে! আসুন উপনাম, ফাংশন এবং প্রম্পট কনফিগারেশনের কিছু উদাহরণ দেখি যা আমাদের কম কী প্রেসে আরও দক্ষ হতে সাহায্য করে আমাদের কর্মপ্রবাহকে উন্নত করতে পারে।

ব্যাশ উপনাম

একটি স্মার্টলি লেখা .bashrc অনেক কীস্ট্রোক সেভ করতে পারে। আমরা আক্ষরিক অর্থে ব্যাশ উপনাম ব্যবহার করে বা স্ট্রিং যা বড় কমান্ডে প্রসারিত করে এর সুবিধা নিতে পারি। একটি নির্দেশক উদাহরণের জন্য, টার্মিনালে ফাইল কপি করার জন্য এখানে একটি ব্যাশ উপনাম রয়েছে:

# Always copy contents of directories (r)ecursively and explain (v) what was done
alias cp='cp -rv'

alias কমান্ডটি আমরা যে স্ট্রিংটি টাইপ করব তা নির্ধারণ করে, তারপর সেই স্ট্রিংটি কী প্রসারিত হবে। আমরা বিদ্যমান কমান্ড যেমন cp ওভাররাইড করতে পারি উপরে নিজে থেকেই, cp কমান্ড শুধুমাত্র ফাইল কপি করবে, ডিরেক্টরি নয়, এবং নীরবে সফল হয়। এই উপনামের সাথে, আমাদের সেই দুটি পতাকা পাস করার কথা মনে রাখতে হবে না, না cd অথবা ls আমাদের কপি করা ফাইলের অবস্থান নিশ্চিত করতে যে এটি সেখানে আছে! এখন, শুধুমাত্র ঐ দুটি কী টিপুন (c এর জন্য এবং d ) আমাদের জন্য এটি সব করবে৷

এখানে আরো কিছু .bashrc আছে সাধারণ ফাংশন সহ পতাকা পাস করার জন্য উপনাম।

# List contents with colors for file types, (A)lmost all hidden files (without . and ..), in (C)olumns, with class indicators (F)
alias ls='ls --color=auto -ACF'
# List contents with colors for file types, (a)ll hidden entries (including . and ..), use (l)ong listing format, with class indicators (F)
alias ll='ls --color=auto -alF'

# Explain (v) what was done when moving a file
alias mv='mv -v'
# Create any non-existent (p)arent directories and explain (v) what was done
alias mkdir='mkdir -pv'
# Always try to (c)ontinue getting a partially-downloaded file
alias wget='wget -c'

উপনামগুলি কাজে আসে যখন আমরা দীর্ঘ কমান্ড টাইপ করা এড়াতে চাই। পাইথন পরিবেশের সাথে কাজ করার সময় আমি এখানে কয়েকটি ব্যবহার করি:

alias pym='python3 manage.py'
alias mkenv='python3 -m venv env'
alias startenv='source env/bin/activate && which python3'
alias stopenv='deactivate'

ব্যাশ উপনামগুলি যেভাবে সময় বাঁচাতে পারে সে সম্পর্কে আরও অনুপ্রেরণার জন্য, আমি এই নিবন্ধে উদাহরণগুলির সুপারিশ করছি৷

ব্যাশ ফাংশন

উপরের উপনামগুলির একটি নেতিবাচক দিক হল যে তারা বরং স্থির - তারা সর্বদা ঘোষণা করা পাঠ্যের সাথে প্রসারিত হবে। একটি ব্যাশ উপনামের জন্য যা আর্গুমেন্ট নেয়, আমাদের একটি ফাংশন তৈরি করতে হবে। আমরা এটি এভাবে করতে পারি:

# Show contents of the directory after changing to it
function cd () {
    builtin cd "$1"
    ls -ACF
}

আমি কতবার cd টাইপ করেছি তা গণনা করা শুরু করতে পারছি না এবং তারপর ls আমি এখন যে ডিরেক্টরির মধ্যে আছি তার বিষয়বস্তু দেখার পরপরই। এই ফাংশনটি সেট আপ করার সাথে, এটি কেবলমাত্র সেই দুটি অক্ষর দিয়েই ঘটে! ফাংশনটি প্রথম আর্গুমেন্ট নেয়, $1 , ডিরেক্টরি পরিবর্তন করার অবস্থান হিসাবে, তারপর ফাইল টাইপ সূচক সহ সুন্দরভাবে ফর্ম্যাট করা কলামগুলিতে সেই ডিরেক্টরির বিষয়বস্তু মুদ্রণ করে। builtin এই ডিফল্ট কমান্ডটি ওভাররাইড করার জন্য ব্যাশ পাওয়ার জন্য অংশটি প্রয়োজনীয়।

সফ্টওয়্যার ডাউনলোড বা আপগ্রেড করার ক্ষেত্রেও ব্যাশ ফাংশনগুলি খুব দরকারী। স্ট্যাটিক সাইট জেনারেটর হুগোর নতুন বর্ধিত সংস্করণ ডাউনলোড করতে প্রতি কয়েক সপ্তাহে আমি আগে অন্তত কয়েক মিনিট ব্যয় করতাম, তাদের চমৎকার শিপিং ফ্রিকোয়েন্সির জন্য ধন্যবাদ। একটি ফাংশনের সাথে, আমাকে শুধুমাত্র সংস্করণে পাস করতে হবে, এবং আপগ্রেড কয়েক সেকেন্ডের মধ্যে ঘটে।

# Hugo install or upgrade
function gethugo () {
    wget -q -P tmp/ https://github.com/gohugoio/hugo/releases/download/v"$@"/hugo_extended_"$@"_Linux-64bit.tar.gz
    tar xf tmp/hugo_extended_"$@"_Linux-64bit.tar.gz -C tmp/
    sudo mv -f tmp/hugo /usr/local/bin/
    rm -rf tmp/
    hugo version
}

$@ স্বরলিপি সহজভাবে প্রদত্ত সমস্ত আর্গুমেন্ট নেয়, ফাংশনে এর স্পট প্রতিস্থাপন করে। উপরের ফাংশনটি চালাতে এবং Hugo সংস্করণ 0.57.2 ডাউনলোড করতে, আমরা gethugo 0.57.2 কমান্ডটি ব্যবহার করি। .

আমিও গোলং এর জন্য একটি পেয়েছি:

function getgolang () {
    sudo rm -rf /usr/local/go
    wget -q -P tmp/ https://dl.google.com/go/go"$@".linux-amd64.tar.gz
    sudo tar -C /usr/local -xzf tmp/go"$@".linux-amd64.tar.gz
    rm -rf tmp/
    go version
}

অথবা বর্তমান সংগ্রহস্থলে গিটল্যাবের জন্য একটি দূরবর্তী মূল URL যোগ করে এমন একটি ফাংশন সম্পর্কে কেমন?

function glab () {
    git remote set-url origin --add git@gitlab.com:"$@"/"${PWD##*/}".git
    git remote -v
}

glab username সহ , আমরা একটি নতুন origin তৈরি করতে পারি আমাদের username সহ বর্তমান গিট সংগ্রহস্থলের URL GitLab.com-এ। একটি নতুন দূরবর্তী URL-এ ঠেলে স্বয়ংক্রিয়ভাবে একটি নতুন ব্যক্তিগত GitLab সংগ্রহস্থল তৈরি করে, তাই এটি ব্যাকআপ তৈরি করার জন্য একটি দরকারী শর্টকাট!

Bash ফাংশন সত্যিই শুধুমাত্র স্ক্রিপ্টিংয়ের সম্ভাবনার দ্বারা সীমিত, যার মধ্যে কার্যত কিছু সীমা রয়েছে। টার্মিনালে কিছু লাইন টাইপ করার প্রয়োজন হলে আমরা ঘন ঘন কিছু করি, তাহলে আমরা সম্ভবত এটির জন্য একটি ব্যাশ ফাংশন তৈরি করতে পারি!

ব্যাশ প্রম্পট

ডিরেক্টরির বিষয়বস্তু ছাড়াও, আমরা যে ডিরেক্টরিতে আছি তার পুরো পথটি দেখতেও এটি কার্যকর। ব্যাশ প্রম্পট আমাদের বর্তমান গিট শাখার মতো অন্যান্য দরকারী তথ্য সহ এই পথটি দেখাতে পারে। এটিকে আরও পঠনযোগ্য করতে, আমরা প্রম্পটের প্রতিটি অংশের জন্য রং নির্ধারণ করতে পারি। এখানে আমরা কিভাবে আমাদের প্রম্পট .bashrc সেট আপ করতে পারি এটি সম্পন্ন করতে:

# Colour codes are cumbersome, so let's name them
txtcyn='\[\e[0;96m\]' # Cyan
txtpur='\[\e[0;35m\]' # Purple
txtwht='\[\e[0;37m\]' # White
txtrst='\[\e[0m\]'    # Text Reset

# Which (C)olour for what part of the prompt?
pathC="${txtcyn}"
gitC="${txtpur}"
pointerC="${txtwht}"
normalC="${txtrst}"

# Get the name of our branch and put parenthesis around it
gitBranch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}

# Build the prompt
export PS1="${pathC}\w ${gitC}\$(gitBranch) ${pointerC}\$${normalC} "

ফলাফল:

~/github/myrepo (master) $

রঙের নামকরণ সহজেই সনাক্ত করতে সাহায্য করে যে একটি রঙ কোথায় শুরু হয় এবং থামে এবং পরেরটি কোথায় শুরু হয়। আমরা আমাদের টার্মিনালে যে প্রম্পটটি দেখি তা export PS1 নিম্নলিখিত স্ট্রিং দ্বারা সংজ্ঞায়িত করা হয় , প্রম্পটের প্রতিটি উপাদানের সাথে একটি এস্কেপ সিকোয়েন্স সেট করে। আসুন এটি ভেঙে দেওয়া যাক:

  • \w বর্তমান কার্যকারী ডিরেক্টরি প্রদর্শন করে,
  • \$(gitBranch) gitBranch কল করে উপরে সংজ্ঞায়িত ফাংশন, যা বর্তমান গিট শাখা প্রদর্শন করে,
  • \$ আপনি যদি একজন সাধারণ ব্যবহারকারী হন বা সাধারণ ব্যবহারকারী মোডে থাকেন তাহলে একটি "$" প্রদর্শন করবে এবং যদি আপনি রুট হন তাহলে একটি "#" প্রদর্শন করবে৷

ব্যাশ এস্কেপ সিকোয়েন্সের সম্পূর্ণ তালিকা আমাদের আরও অনেক বিট তথ্য প্রদর্শন করতে সাহায্য করতে পারে, এমনকি সময় এবং তারিখ সহ! ব্যাশ প্রম্পটগুলি অত্যন্ত কাস্টমাইজযোগ্য এবং স্বতন্ত্র, তাই আপনি যে কোনও উপায়ে এটিকে নির্দ্বিধায় সেট আপ করুন৷

এখানে কয়েকটি বিকল্প রয়েছে যা তথ্যকে সামনে এবং কেন্দ্রে রাখে এবং আমাদের আরও দক্ষতার সাথে কাজ করতে সাহায্য করতে পারে৷

বিলম্বিত-বিরুদ্ধের জন্য

ব্যবহারকারীর নাম এবং সেকেন্ড সহ বর্তমান সময়, 24-ঘন্টা HH:MM:SS ফর্ম্যাটে:

export PS1="${userC}\u ${normalC}at \t >"
user at 09:35:55 >

যারা সর্বদা জানতে চায় তারা কোথায় দাঁড়িয়ে আছে

একটি পৃথক লাইনে সম্পূর্ণ ফাইল পাথ, এবং ব্যবহারকারীর নাম:

export PS1="${pathC}\w${normalC}\n\u:"
~/github/myrepo
user:

মিনিমালিস্টের জন্য

export PS1=">"
>

আমরা শুধুমাত্র মৌলিক পালানোর ক্রম দিয়ে অনেক ব্যবহারিক প্রম্পট তৈরি করতে পারি; একবার আমরা প্রম্পটের সাথে ফাংশনগুলিকে সংহত করতে শুরু করি, যেমন গিট শাখার উদাহরণে, জিনিসগুলি সত্যিই জটিল হতে পারে। এই পরিমাণ জটিলতা আপনার উত্পাদনশীলতার জন্য একটি সংযোজন বা ক্ষতি কিনা, শুধুমাত্র আপনি নিশ্চিতভাবে জানতে পারবেন!

অনেক অভিনব ব্যাশ প্রম্পট দ্রুত অনুসন্ধানের মাধ্যমে সহজেই উপলব্ধ প্রোগ্রামগুলির সাথে সম্ভব। আমি ইচ্ছাকৃতভাবে এখানে নমুনা সরবরাহ করিনি কারণ, ভাল, আপনি যদি এই জিনিসটি নিয়ে আমার মতো উত্তেজিত হওয়ার প্রবণতা দেখাতে পারেন, তাহলে আপনি এই পোস্টটি পড়া শুরু করার আগে আপনি যা করছেন তা ফিরে পেতে কয়েক ঘন্টা লাগতে পারে, এবং আমি এটা আমার বিবেকের উপর থাকতে পারি না। ?

আমরা আশাকরি আমাদের ব্যাশ কনফিগারেশন ফাইল থেকে প্রাপ্ত সময় এবং উপযোগিতার মধ্যে এখন একটি চমৎকার ভারসাম্য বজায় রেখেছি! আমি আশা করি আপনি আপনার সদ্য পুনরুদ্ধার করা কীস্ট্রোক ক্ষমতা ভালভাবে ব্যবহার করুন৷


  1. আপনার গো-টু কমান্ড লাইন ভাষা হিসাবে পাইথন দিয়ে ব্যাশকে কীভাবে প্রতিস্থাপন করবেন

  2. আপনার অবজেক্ট রকেট উদাহরণের সাথে কীভাবে JSONStudio ব্যবহার করবেন

  3. রুবি আলিয়াস কীওয়ার্ড কীভাবে ব্যবহার করবেন

  4. লিনাক্সে ঘড়ির কমান্ড কীভাবে ব্যবহার করবেন, উদাহরণ সহ