এক্সপ্যান্ড কী করে?


12

আমি শেলটি নিয়ে কাজ করছিলাম, এবং ভুল করে tabলেখার পরে আমি স্বয়ংক্রিয়ভাবে পূর্ণ হয়েছি _e, যার ফলস্বরূপ _expand

এই আদেশ কি করে? আমি অনলাইনে কোনও ব্যাখ্যা খুঁজে পেলাম না, জিজ্ঞাসা উবুন্টুতে আমি এখানে কেবলমাত্র উল্লেখগুলি পেয়েছি:

তবে তারা আমার প্রশ্নের উত্তর দেয় না। বরং তারা মত কমান্ড সম্পর্কে একই ধরনের আরো প্রশ্ন খুলুন _complete, _complete_as_rootইত্যাদি

উত্তর:


14

_expandটাইপ করার সময় আপনি কী করতে পারেন তা খুঁজে পেতে পারেন

$ type _expand
_expand is a function
_expand ()
{
    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
}

এটি ব্যাশ সমাপ্তির পদ্ধতিতে একটি ফাংশন। এটি পথের নামগুলিতে টিল্ডস ( ~) প্রসারিত করে । ইন /etc/bash_completionফাংশন সম্পর্কে একটি মন্তব্য:

# Expand ~username type directory specifications.  We want to expand
# ~foo/... to /home/foo/... to avoid problems when $cur starting with
# a tilde is fed to commands and ending up quoted instead of expanded.

এটি একটি টার্মিনালে চেষ্টা করুন, টাইপ করুন:

~<tab><tab>

উদাহরণস্বরূপ এটি ব্যবহারকারীর নামগুলিতে প্রসারিত হবে

~usera     ~userb     ~userc

1
ধন্যবাদ, আমি আদেশটি জানতাম না type। আমি কেন এই ফাংশনগুলিকে কল করতে পারি না তা আমার কাছে স্পষ্ট ছিল না _function_name [argument]তবে এখন আমি বুঝতে পেরেছি যে তারা তাদের উদ্দেশ্য স্বতঃসম্পূর্ণ এক্সটেনশান হিসাবে পরিবেশন করেছে এবং তারা আমার স্বতঃসংশয়ে উপস্থিত হওয়ার বিষয়টি কেবল তাদের ঘোষিত হওয়ার কারণে হয়েছে (তবে এগুলি বোঝানো হয়নি) সরাসরি বলা হবে)।
scristalli

3
_expandঅন্য সমস্ত সম্পূর্ণ ফাংশন হিসাবে ঠিক ঠিক মতো ফাংশনটি কেবল COMPREPLYঅ্যারে পরিচালনা করে , $curযার মানগুলির সমাপ্তি প্যাটার্ন রয়েছে on
বিশৃঙ্খলা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.