আমার শারীরিক ডিরেক্টরি কাঠামোর প্রতি শ্রদ্ধা জানাতে কীভাবে বাশ পাব? (এবং একইভাবে ইমাক্সের জন্য?)


4

যদি ব্যাশে, আমি " set -P" করি তবে বাশ " pwd" এবং " cd .." ইত্যাদি করার সময় "শারীরিক ডিরেক্টরি কাঠামো" অনুসরণ করে , "লজিক্যাল" থেকে যেটি সিমলিংকের মাধ্যমে সংজ্ঞায়িত করা যেতে পারে। দুর্ভাগ্যক্রমে, বাশ এখনও ফাইলের নাম সমাপ্তির জন্য শারীরিক ডিরেক্টরি কাঠামো মানছে না। আমি কীভাবে এই বিষয়ে আমার কর্তৃত্বকে সম্মান জানাতে পারি ?

ধন্যবাদ!
|> ouglas

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

পিপিএস আমি জানি না যে কে সিদ্ধান্ত নিয়েছে যে কিছু প্রোগ্রাম আপনার "লজিকাল ডিরেক্টরি কাঠামো" খ্যাত করার চেষ্টা করেছিলেন, তবে তা নয়! আপনি যদি বিশ্বের প্রতিটি প্রোগ্রামকে এইভাবে কিছু করতে রাজি না করতে পারেন না, যেহেতু কিছু প্রোগ্রাম আপনার শারীরিক ডিরেক্টরি কাঠামো ব্যবহার করে এবং আপনার লজিকাল ডিরেক্টরি কাঠামোটি ব্যবহার করে অন্যগুলি রাখা বিভ্রান্তি এবং বিরক্তির প্রতিকার।


আমি সমস্যা বুঝতে পারি না। আপনি কি ফাইল খুলতে পারছেন না? বাশ সম্পূর্ণ হওয়া কি ভুল পথে পাচ্ছে?
জেমস পোলি

এটি "ভুল" দ্বারা আপনি কী বোঝাতে চান তার উপর নির্ভর করে। বাশ ".." এর ইউনিক্স অর্থ অনুসরণ করে না, যা কোনও ডিরেক্টরিতে প্রকৃত ডিরেক্টরি এন্ট্রি এবং শারীরিক পিতামাতার ডিরেক্টরিতে নির্দেশ করে। পরিবর্তে বাশ মানে ".." এর অর্থ হচ্ছে "আমি এখানে যাবার পথে যে পথটি প্রবেশ করলাম সেখান থেকে একটি করে প্রবেশ করুন"। আমি এই অভিনব অর্থটি নতুনভাবে ব্যবহার করতে চাই না। আমি স্বাভাবিক ইউনিক্স অর্থ চাই।
ডগলাস

উত্তর:


3

পূর্ববর্তী উত্তরের জন্য ধন্যবাদ। তবে, বাস্তবে যেমন দেখা যাচ্ছে, " set -P" কাজটি কেবল নিজেরাই সূক্ষ্মভাবে সম্পাদন করে, বিষয়টি সম্পর্কে আমার মূল প্রশ্নটির বিপরীতে।

আমি যখন প্রাথমিকভাবে এটি চেষ্টা করছিলাম তখন আমার অবশ্যই কোনওরকম বিভ্রান্ত অবস্থায় বাশ পাওয়া উচিত যেখানে ফাইলের নাম সম্পূর্ণকরণ set -Pসেটিংসকে সম্মান করে না । তবে এখন একটি নতুন বাশ দিয়ে, এটি ঠিক আছে। " set -P" বাশকে নিয়মিতভাবে "শারীরিক ডিরেক্টরি কাঠামো" মোডে রাখার মতো মনে হয়।


1

এটি আপনাকে সেখানকার পথের অংশ পেতে পারে।

type -a _expandনীচের ফাংশনটির সাথে এর আউটপুটটি ব্যবহার এবং তুলনা করুন । বিদ্যমান ফাংশনটি elseনীচের প্রথমটির পরে থাকা অংশটির সাথে মেলে after যদি তা না হয় তবে বাহিরের যা আছে তা আপনি if...elseএখানে দেখতে দেখতে এটি মোড়ানো করতে পারেন ।

এটি পরীক্ষার জন্য বাশ প্রম্পটে আটকান। তারপরে, আপনি যদি সন্তুষ্ট ~/.bashrcহন তবে ফাংশন সংজ্ঞাটিকে /etc/bash_completion(সরাসরি এটি সম্পাদনা করার পরিবর্তে) ওভাররাইড করার জন্য এটি আপনার ফাইলে রাখুন ।

_expand ()
{
    if [[ $- == *P* && -L "$cur" && -d "$cur" ]]; then
        cd "$cur";
        eval cur="$PWD";
        cd - > /dev/null;
    else
        if [[ "$cur" == \~*/* ]]; then
            eval cur=$cur;
        else
            if [[ "$cur" == \~* ]]; then
                cur=${cur#\~};
                COMPREPLY=($( compgen -P '~' -u $cur ));
                [ ${#COMPREPLY[@]} -eq 1 ] && eval COMPREPLY[0]=${COMPREPLY[0]};
                return ${#COMPREPLY[@]};
            fi;
        fi;
    fi
}

এটি বাশের ট্যাব সমাপ্তির টিলডে-সম্প্রসারণ ফাংশনে পিগি-ব্যাকিং।

এখন আপনি করতে পারেন

ls -l symdir<TAB>

এবং আপনি দেখতে পাবেন

ls -l /dest/dir<CURSOR>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.