এখানে zsh এর জন্য আমার / ইত্যাদি / বাশার্কের অভিযোজন's আমি প্রয়োজনীয় সমস্ত ইউআরএল অক্ষরগুলির শতাংশ-এনকোডিং অন্তর্ভুক্ত করেছি, যা গুরুত্বপূর্ণ যদি আপনি এটি সমস্ত বৈধ ফাইল এবং ডিরেক্টরি নামের সাথে কাজ করতে চান।
এটি একটি precmd
হুক নিবন্ধন করে , যা অন্য স্ক্রিপ্ট এবং কনফিগারেশন ফাইলগুলিতে একাধিক ফাংশন নিবন্ধিত করতে দেয়।
আপডেট মার্চ 2019: LC_ALL
খালি সেট করুন যাতে এটি ওভাররাইড হয় না LC_CTYPE
। ব্যবহারের precmd
পরিবর্তে ব্যবহার প্রতিটি প্রম্পটে কাজ ডিরেক্টরি আপডেট করার জন্য chpwd
এটি প্রত্যেক সময় এটা পরিবর্তন করা-কমান্ড পাইপলাইনগুলি এটা সাময়িকভাবে পরিবর্তন হতে পারে এবং টার্মিনাল ঐ প্রদর্শন করা উচিত নয় আপডেট করার জন্য। এছাড়াও, পূর্ববর্তী কমান্ড চলাকালীন প্রতিটি প্রম্পট টার্মিনাল অবস্থার আপডেট করা সহায়ক হতে পারে। printf -v
সাব-শেল সিনট্যাক্স ব্যবহার না করে সুস্পষ্টভাবে ভেরিয়েবলটিতে লিখতে ব্যবহার করুন।
# Tell the terminal about the working directory whenever it changes.
if [[ "$TERM_PROGRAM" == "Apple_Terminal" ]] && [[ -z "$INSIDE_EMACS" ]]; then
update_terminal_cwd() {
# Identify the directory using a "file:" scheme URL, including
# the host name to disambiguate local vs. remote paths.
# Percent-encode the pathname.
local url_path=''
{
# Use LC_CTYPE=C to process text byte-by-byte. Ensure that
# LC_ALL isn't set, so it doesn't interfere.
local i ch hexch LC_CTYPE=C LC_ALL=
for ((i = 1; i <= ${#PWD}; ++i)); do
ch="$PWD[i]"
if [[ "$ch" =~ [/._~A-Za-z0-9-] ]]; then
url_path+="$ch"
else
printf -v hexch "%02X" "'$ch"
url_path+="%$hexch"
fi
done
}
printf '\e]7;%s\a' "file://$HOST$url_path"
}
# Register the function so it is called at each prompt.
autoload add-zsh-hook
add-zsh-hook precmd update_terminal_cwd
fi