cd
একটি বিদ্যমান কমান্ড মোড়ানোর পরামর্শ দেওয়া হয় না।
আরও একটি সার্বজনীন সমাধান chpwd
বাশে একটি কাস্টম হুক সংজ্ঞায়িত করা হবে । (এই প্রশ্নের ট্যাগ অনুসারে, আমি ধরে নিচ্ছি আপনি বাশ ব্যবহার করছেন)
অন্যান্য আধুনিক শাঁসের সাথে তুলনা করার সময় বাশে ডিজাইনের একটি সম্পূর্ণ হুক সিস্টেম নেই। PROMPT_COMMAND
ভেরিয়েবল হুক ফাংশন হিসাবে ব্যবহৃত হয় precmd
, fish_prompt
এটি ফিশে জেডএসএইচ হুকের সমতুল্য । আপাতত, জেডএসএইচ হ'ল একমাত্র শেল যা আমি জানলাম তার একটি chpwd
হুক বিল্টিন রয়েছে।
PROMPT_COMMAND
যদি সেট করা থাকে, প্রতিটি প্রাথমিক প্রম্পট ($ পিএস 1) মুদ্রণের আগে কার্যকর করতে একটি আদেশ হিসাবে মানটিকে ব্যাখ্যা করা হয়।
https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Bash-Variables
chpwd
হুশ ইন বাশ
chpwd
ভিত্তিতে বাশের সমতুল্য হুক সেটআপ করার জন্য একটি কৌশল সরবরাহ করা হয় PROMPT_COMMAND
।
# create a PROPMT_COMMAND equivalent to store chpwd functions
typeset -g CHPWD_COMMAND=""
_chpwd_hook() {
shopt -s nullglob
local f
# run commands in CHPWD_COMMAND variable on dir change
if [[ "$PREVPWD" != "$PWD" ]]; then
local IFS=$';'
for f in $CHPWD_COMMAND; do
"$f"
done
unset IFS
fi
# refresh last working dir record
export PREVPWD="$PWD"
}
# add `;` after _chpwd_hook if PROMPT_COMMAND is not empty
PROMPT_COMMAND="_chpwd_hook${PROMPT_COMMAND:+;$PROMPT_COMMAND}"
আমরা সনাক্ত করছি যেহেতু PWD
সরাসরি পরিবর্তন, সমাধান সঙ্গে কাজ করে cd
, pushd
এবং popd
।
দ্রষ্টব্য : chpwd
বাশ এবং chpwd
জেডএসএইচে আমাদের বাস্তবায়নটির মধ্যে প্রধান পার্থক্যটি PROMPT_COMMAND
একটি অ ইন্টারেক্টিভ বাশ শেলের সমর্থিত নয়।
ব্যবহার
_public_html_action() {
if [[ $PWD == */public_html ]]; then
# actions
fi
}
# append the command into CHPWD_COMMAND
CHPWD_COMMAND="${CHPWD_COMMAND:+$CHPWD_COMMAND;}_public_html_action"
উত্স: আমার গিস্ট থেকে বাশে chpwd সমতুল্য হুক তৈরি করুন ।
যে কেউ জেডএসএইচের জন্য উত্তর চান। chpwd
জেডএসএইচ হুক ব্যবহার করুন । সরাসরি ফাংশন সংজ্ঞায়িত করবেন না chpwd()
। আরও বিশদ এখানে ।
echo "Testing..."
ইফের উপরে কিন্তু নোটিং আউটপুট যুক্ত করেছি। এই পরিবর্তনগুলি প্রয়োগ করতে আমার কি কিছু করা দরকার?