আমি কীভাবে বাশ প্রম্পটের বর্তমান পাথ সংক্ষিপ্ত করতে পারি ডিরেক্টরিতে প্রতিটি অক্ষরে?


9

আমি কোথায় তা মনে করতে পারছি না, তবে ইতিমধ্যে আমি ব্যাশ প্রম্পটের বর্তমান পথটি একটি আকর্ষণীয় উপায়ে সংক্ষিপ্ত করে দেখেছি: পথের মধ্যে থাকা প্রতিটি ডিরেক্টরি (শেষটি ব্যতীত) কেবল তার প্রথম অক্ষর দ্বারা প্রতিস্থাপিত হয়েছে। উদাহরণস্বরূপ: path/to/some/directoryসংক্ষিপ্ত করা হবে p/t/s/directory

আমি কীভাবে সেই আচরণটির পুনরুত্পাদন করতে পারি?


আপনি সরাসরি এটি করতে পারবেন না PS1। আপনাকে PS1একটি ভেরিয়েবল ( PS1='${SHORT_PWD}\\$') ধারণ করতে হবে এবং সেই পরিবর্তনশীলটি আপডেট করতে হবে $PROMPT_COMMAND
গিলস'স'- দুষ্ট হওয়া বন্ধ করুন '

@ গিলস'স 'অশুচি হওয়া বন্ধ করুন' নিশ্চিতভাবেই আপনি এটি সরাসরি করতে পারবেন, আপনি যদি ডাবল উদ্ধৃতি ব্যবহার করেন তবে আপনাকে \$()কমান্ডের বিকল্পগুলি ব্যাকস্ল্যাশ করতে হবে যদিও
ব্যাকএন

উত্তর:


8

এটির সাথে কিছুক্ষণ খেলার পরে আপনার প্রয়োজনীয় উত্তরটি পেয়েছি:

এটি আপনার হোম ডিরেক্টরিতে আপনার .bashrc ফাইলে যুক্ত করুন, টার্মিনালটি থেকে প্রস্থান করুন এবং এটি ভাড়া দিন এবং আপনি প্রম্পট পাবেন।

PS1='$(eval "sps")$ '
sps() {
   echo "$PWD" | sed -r 's|/([^/]{,2})[^/]*|/\1|g'
}

এটি ঘোষিত ফাংশনটি sps()প্রতিবারের জন্য মূল্যটি নির্ধারণ করতে ব্যবহার করে PS1যা ভেরিয়েবল প্রম্পট প্রদর্শিত হয়

অর্থাত

/ho/de/De/Ap/Ti$ pwd
/home/deth/Desktop/Apps/Tivo
/ho/de/De/Ap/Ti$ 

বা ... যদি আপনি একটি চিঠির উপর জেদ করেন

PS1='$(eval "sps")$ '
sps() {
   echo "$PWD" | sed -r 's|/(.)[^/]*|/\1|g'
}

যা প্রদর্শন করে:

/h/d/D/A/T$ pwd
/home/deth/Desktop/Apps/Tivo
/h/d/D/A/T$ 

ধন্যবাদ মীর আমার প্রম্পট আসলে user@pcঅংশটি সরিয়ে দিচ্ছে । আমি কীভাবে এটি পরিচালনা করতে পারি?
অ্যালেক্স

3

সর্বশেষ নাম বাদে সমস্ত ডিরেক্টরি নাম ছাঁটাতে:

PS1='$(eval "sps")$ '                                                                                
sps() {                                                                                              
    python -c "import sys; dirs = sys.argv[1].split('/'); print '/'.join(d[:1] for d in dirs[:-1]) + '/' + dirs[-1]" $PWD
}

ডিরেক্টরিগুলি পরিবর্তন করার পরে এটি কাজ করে না?
আদিত্য ভার্মা

1

অজগর ছাড়াই শেষের নাম বাদে সমস্ত নাম সংক্ষিপ্ত করুন:

user:/h/u/D/C/current$ 
sps() {
    echo `dirname $PWD` | sed -r 's|/(.)[^/]*|/\1|g'
}
PS1='\u:$$(eval "sps")/\W\$ '
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.