সুতরাং, @ গিলিস এবং @ ব্রুনো-এ (এবং অন্যান্য কয়েকটি চালিত কৌশলগুলি) এর উত্তরগুলি একত্রিত করে আমি এই ওয়ান-লাইনার নিয়ে এসেছি, যা শুরু থেকে ঘটবে কিনা তা বিবেচনা না করে প্যাথ থেকে (প্রতিটি) REMOVE_PART মুছে ফেলবে, মধ্যম বা পথের শেষ
PATH=$(REMOVE_PART="/d/Programme/cygwin/bin" sh -c 'echo ":$PATH:" | sed "s@:$REMOVE_PART:@:@g;s@^:\(.*\):\$@\1@"')
এটি কিছুটা স্বাস্থ্যকর নয়, তবে এটি এক হিটের মধ্যে সক্ষম হতে পেরে খুব ভাল। ;
একসঙ্গে দুটি পৃথক sed কমান্ড যোগদানের জন্য ব্যবহার করা হয়:
s@:$REMOVE_PART:@:@g
(যা :$REMOVE_PART:
একক দিয়ে প্রতিস্থাপন করে :
)
s@^:\(.*\):\$@\1@
(যা প্রতিধ্বনি কমান্ডের সাহায্যে আমরা যোগ করা নেতৃস্থানীয় এবং ট্রেইলিং কলোনগুলি সরিয়ে ফেলে)
এবং অনুরূপ লাইন বরাবর, আমি কেবলমাত্র এই ওয়ান-লাইনারের সাথে পথের মধ্যে একটি ADD_PART যুক্ত করার জন্য এগিয়ে এসেছি, কেবল যদি প্যাথটি ইতিমধ্যে এটি ধারণ করে না if
PATH=$(ADD_PART="/d/Programme/cygwin/bin" sh -c 'if echo ":$PATH:" | grep -q ":$ADD_PART:"; then echo "$PATH"; else echo "$ADD_PART:$PATH"; fi')
echo "$PATH:$ADD_PART"
আপনি আরম্ভের পরিবর্তে PATH এর শেষে ADD_PART যুক্ত করতে চান তবে শেষ অংশটি পরিবর্তন করুন ।
...
... বা এটিকে আরও সহজ remove_path_part
করার জন্য বিষয়বস্তু সহ একটি স্ক্রিপ্ট তৈরি করুন
echo ":$PATH:" | sed "s@:$1:@:@g;s@^:\(.*\):\$@\1@"
এবং prepend_path_part
বিষয়বস্তু সহ একটি স্ক্রিপ্ট বলা হয়
if echo ":$PATH:" | grep -q ":$1:"; then echo "$PATH"; else echo "$1:$PATH"; fi
এবং append_path_part
বিষয়বস্তু সহ একটি স্ক্রিপ্ট বলা হয়
if echo ":$PATH:" | grep -q ":$1:"; then echo "$PATH"; else echo "$PATH:$1"; fi
এগুলি সকলকে সম্পাদনযোগ্য করে তুলুন এবং তারপরে তাদের মতো কল করুন:
PATH=$(remove_path_part /d/Programme/cygwin/bin)
PATH=$(prepend_path_part /d/Programme/cygwin/bin)
PATH=$(append_path_part /d/Programme/cygwin/bin)
ঝরঝরে, আমি নিজেও তাই বললেও :-)