বাশ জন্য একটি ডিরেক্টরি ইতিহাস আছে?


26

বাশের বিপরীত-অনুসন্ধানের ইতিহাসের (সিটিআরএল) এর মতো কিছু আছে কি তবে কেবল ডিরেক্টরিতে?

আমার কিছু গভীর ফোল্ডার স্তরক্রম রয়েছে যেটিতে আমি ঝাঁপিয়ে যেতে চাই, তাই আমি বিপরীত অনুসন্ধান-ইতিহাসের মতো কিছু ব্যবহার করতে চাই তবে এটি কেবল ফোল্ডারের নাম অনুসন্ধান করে এবং আমাকে পরম পথ দেয়।

মূলত, এটি ব্যবহারের ক্ষেত্রে একই রকম ফলাফল দেয় !?তবে কেবল সিডির সাথে সামনের মিলের সাথে মিল রেখে, আপনি ফলাফলগুলি এবং পুরো পথ দিয়ে পদক্ষেপ নিতে পারেন।

এখনও অবধি, আমি খুঁজে পেয়েছি সেরা সমাধান হ'ল বাশমার্ক


1
আমি সম্প্রতি z ব্যবহার করতে শুরু করেছি এবং এটি এখনও পর্যন্ত কাজ করে বলে মনে হচ্ছে তবে আমি এটি কয়েকটি পথের জন্য ব্যবহার করেছি।
রব

উত্তর:


11

কটাক্ষপাত আছে autojump :

সর্বাধিক ব্যবহৃত শেল কমান্ডগুলির মধ্যে একটি হল "সিডি"। আমার বন্ধুদের মধ্যে একটি দ্রুত সমীক্ষা প্রকাশ করেছে যে তারা যে সমস্ত কমান্ড টাইপ করে তার মধ্যে 10 থেকে 20% আসলে সিডি কমান্ড হয়! দুর্ভাগ্যক্রমে, সিডি সহ আপনার সিস্টেমের এক অংশ থেকে অন্য অংশে ঝাঁপিয়ে পড়ার জন্য আপনাকে প্রায় পুরো পথটি প্রবেশ করতে হবে, যা খুব ব্যবহারিক নয় এবং অনেকগুলি কীস্ট্রোক প্রয়োজন kes

অটোজাম্প আপনার ফাইল সিস্টেমে নেভিগেট করার একটি দ্রুত উপায় way কমান্ড লাইন থেকে আপনি যে ডিরেক্টরিগুলি সর্বাধিক ব্যবহার করেন সেগুলির একটি ডাটাবেস বজায় রেখে এটি কাজ করে। জাম্পস্ট্যাট কমান্ড আপনাকে ডাটাবেসের বর্তমান বিষয়বস্তু প্রদর্শন করে। ডাটাবেস ব্যবহারযোগ্য হয়ে উঠার আগে আপনাকে কিছুটা কাজ করা দরকার। আপনার ডাটাবেসটি যুক্তিসঙ্গতভাবে শেষ হয়ে গেলে, আপনি টাইপ করে একটি সাধারণ "সিডি" এড ডিরেক্টরিতে "লাফিয়ে" যেতে পারেন:
j dirspec



6

এখানে

cd -

এটি হ'ল "সিডি [স্পেস] [হাইফেন]" কমান্ড, যা আপনি আগে ছিলেন সেই ডিরেক্টরিতে চলে যায়, মূলত "গভীরতার ইতিহাস 1"। "সিডি -" পুনরাবৃত্তি দুটি ডিরেক্টরিতে পিছনে পিছনে স্যুইচ করে।

ম্যান পৃষ্ঠা উদ্ধৃত:

নিম্নলিখিত অপারেশনগুলি সমর্থিত হবে: [...]

যখন একটি [হাইফেন] অপারেন্ড হিসাবে ব্যবহৃত হয়, এটি আদেশের সমান হবে:

      cd "$OLDPWD" && pwd

দুর্ভাগ্যক্রমে, আমি প্রকৃত অন্তর্নির্মিত ডিরেক্টরি ইতিহাস জানি না।


এমন একটি pushd dir popdজুড়ি রয়েছে যা আপনার ইতিহাসের ডিরেক্টরিতে স্ট্যাক সঞ্চয় করতে পারে। এটি বিভিন্ন ফোল্ডারে পরিচালিত স্ক্রিপ্টগুলিতে সত্যই সহায়ক।
জাকুজে

আমি জানি pushdএবং popd, এবং এটা ইতিমধ্যে এখানে উল্লেখ করা হয়।
অপূর্বর

3

বাশ পুশ / পপড / ডায়ার করেছে। আমার কাছে এটি বাশ্রাকের স্ট্যাকের উপরে স্বয়ংক্রিয়-পুশ ডিরেক্টরিগুলি।

#let cd also pushd directories into stack. Use popd to reverse stack
function cd ()
{
  if [ -e $1 ]; then 
    pushd $1 &> /dev/null   #dont display current stack 
  fi
}

এগুলি ব্যবহার করে পপ করুন popdএবং স্ট্যাকটি ব্যবহার করে প্রদর্শন করুনdirs


2

আমি জেড-জাম্পের সাথে ভাল অভিজ্ঞতা পেয়েছি এটি সম্পূর্ণরূপে অনুমতি দেয় যদিও কেবল চূড়ান্ত গন্তব্যের জন্য, কোনও পথ ছাড়েনি। এটি ট্যাব সম্পূর্ণ হওয়ার পরে পুরো পথটি প্রদর্শন করে না।


1

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

এটি গিরি-হাবের জন্য কৌতূহলী তাদের জন্য উপলব্ধ ।


gearoid শিলা
ডার্থ গুরুতর

1

আমি ltcdডিরেক্টরি ইতিহাসের মাধ্যমে দ্রুত নেভিগেশনের জন্য আমার সুপারিশ করতে চাই :

https://github.com/dczhu/ltcd

সিডি ডেমো জিআইএফ

জীবনকে সহজ করার জন্য এটি নিম্নলিখিত বৈশিষ্ট্যগুলি সরবরাহ করে:

  • গ্লোবাল দির তালিকা, যা সমস্ত টার্মিনাল ট্যাব / উইন্ডো থেকে সম্প্রতি দেখা দিরগুলি দেখায়।
  • স্থানীয় দির তালিকা, যা বর্তমান শেল সেশনের স্থানীয়।
  • উভয় তালিকাগুলি জে / কে (নীচে / উপরে যান), সংখ্যা এবং শব্দ অনুসন্ধান করে দ্রুত নেভিগেশন সমর্থন করে।
  • গ্লোবাল ফ্রি জাম্পিং (যেমন "সিডি দির" বা "সিডি এআর" / পাথ / টু / ফু / বার / ডিরেক্টরি / যেতে হবে) go

1

আমি একটি স্ক্রিপ্ট তৈরি করেছি যা ওহ-মাই- zsh এরdirs -v কমান্ডের অনুরূপ কার্যকারিতা রয়েছে যা বাশ-এ কাজ করে। আপনি যদি ওহ-মাই-জেডএস ব্যবহার করেন তবে আপনি খেয়াল করেছেন যে কমান্ড দ্বারা প্রদত্ত ডিরেক্টরি ইতিহাস dirs -vআপনি যখন টার্মিনালটি থেকে প্রস্থান করবেন তখনই পুনরায় সেট করা হবে। আপনি যদি এই স্ক্রিপ্টটি ব্যবহার করেন তবে তা ঘটবে না ।

কার্যকারিতা:

  • এর সাথে 10 টি সর্বাধিক ব্যবহৃত ডিরেক্টরিগুলির তালিকা দেখান d

  • তালিকার ডিরেক্টরি ডিরেক্টরিতে টাইপ করে তালিকার যে কোনও ডিরেক্টরিতে যান। দশম ডিরেক্টরিতে জাম্প করতে আপনার 10 এর পরিবর্তে 0 ব্যবহার করতে হবে।

  • আপনি ডিরেক্টরি সম্পাদনা করার জন্য প্রতিবার v( vim ) বা ডিরেক্টরি থেকে একটি ফাইল খোলার জন্য o( xdg- ওপেন ) ব্যবহার করার সময় ডিরেক্টরিটির তালিকার শীর্ষে স্থাপন করা হবে । অথবা আপনি যদি চান, প্রতিবার আপনি ডিরেক্টরি দেখুন।

আপনি এখানে এটি কর্মে দেখতে পাবেন ।


0

ঠিক আছে, আপনি এই কোড স্নিপেট আপনার যোগ করতে পারেন ~/.bashrc, যা

  1. একটি কাস্টম সিডি কমান্ড সরবরাহ করে

        function cd ()
        {
            exists=false
            for dir in "${CDHIST[@]}"; do
                [ "$dir" == "$1" ] && {
                    exists == true
                    break
                }
            done
    
            $exists || {
                len=${#CDHIST[@]}
                ${CDHIST[$len]} = "$1"
            }
    
            builtin cd "$1"
        }
  2. এবং একটি সিডি ইতিহাস অনুসন্ধান কমান্ড সরবরাহ করে।

    function cdhist ()
    {
        #TODO: Make this magical.
    
        for dir in "${CDHIST[@]}"; do
            echo "$dir"
        done
    }

অবশ্যই, আমি প্রদত্ত সিডিডিস্ট কমান্ডটি খুব মৌলিক এবং আপনি যা চান তা নয়; তবে আপনি যা চান তার অনুরূপ কিছু অর্জনের জন্য কেস স্টেটমেন্ট বা প্যারামিটার এক্সপেনশন ব্যবহার করা অনুমেয়।

এমনকি আপনি কিছু "প্রোগ্রামেবল সম্পূর্ণতা" ফাংশন যোগ করতে পারেন যা cd /path/to/mydirএকটি অনন্য সাব-স্ট্রিংয়ের উপর ভিত্তি করে পূর্ণ কমান্ড যুক্ত করতে ব্যবহার করা যেতে পারে /path/to/unique/mydir, যদিও সেই পদ্ধতিতে আপনাকে এখনও টাইপ করতে হবে cd unique/mydir<tab>


1
আমি আপনার কোডটি ভুলভাবে লিখেছি এবং বাশের dirsআদেশ পেয়েছি যা মূলত একই জিনিসটি করে my_dirsতবে একটি লাইনে।
ইডব্রি

1
কুল। সুতরাং বাশ কেবল এটি সমর্থন করে না; এটি এটি প্রয়োগ করে। আমি আশা করি বাশের গভীর যাদুটি অধ্যয়ন করার জন্য আমার আরও বেশি সময় পাওয়া উচিত। অবশ্যই এটি সিড নয়, কেবল পুশডকে স্মরণে সমর্থন করে। তবে আমি মনে করি alias cd=pushdএটি সবচেয়ে মার্জিত ফর্ম হবে।
jpaugh

0

আপনি আপনার নিজের নির্মাণ করতে পারেন cdসঙ্গে কমান্ড pushd, popd, dirs builtin কমান্ড।

ব্যবহার

  • cd -- (বর্তমান ইতিহাসের তালিকা করুন)

  • cd -num (নাম ডিরেক্টরিতে যান)

  • cd - (পূর্ববর্তী ডিরেক্টরিতে যান)


function cd()
{
    local hnum=16  # number of entries
    local new_dir index dir cnt
    if ! [ $# -eq 0 ]; then
        if [[ $# -eq 2 && $1 = "--" ]]; then
            shift
        else 
            if ! { [ $# -eq 1 ] && [[ $1 =~ ^(-[0-9]{,2}|-|--|[^-].*)$ ]] ;}
            then
                builtin cd "$@"
                return
            fi
        fi
    fi
    [ "$1" = "--" ] && { dirs -v;  return ;}
    new_dir=${1:-$HOME}
    if [[ "$new_dir" =~ ^(-[0-9]{,2}|-)$ ]]; then
        index=${new_dir:1}
        [ -z "$index" ] && index=1
        new_dir=$(dirs -l +$index) || return
    fi
    pushd -- "$new_dir" > /dev/null || return
    popd -n +$hnum &> /dev/null
    new_dir=$PWD cnt=1
    while dir=$(dirs -l +$cnt 2> /dev/null); do
        if [ "$dir" = "$new_dir" ]; then
            popd -n +$cnt > /dev/null
            continue
        fi
        let cnt++
    done
}

export -f cd

-1

আমি এই সরঞ্জামটি একসাথে রেখেছি, যা পার্ককোল (সি-আর-তে ম্যাপযুক্ত) নামক একটি ইন্টারেক্টিভ গ্রেপিং সরঞ্জামের সাথে একটি বিস্তৃত বিশ্বব্যাপী সিএলআই ইতিহাস সংরক্ষণের জন্য পূর্ববর্তী সমাধানগুলিকে একত্রিত করে। আমি এটি কমান্ডগুলি চালিত হয়েছিল সেগুলি পুনরুদ্ধার করতে বা কমান্ড দ্বারা কোনও ডিরেক্টরি খুঁজে পেতে ব্যবহার করি। এটি এখনও>> 2 বছরের পুরানো সিএলআই ইতিহাসের সাথে এটি ব্যবহার শুরু করা প্রথম মেশিনে এখনও চটজলদি।

গ্রেপ সরঞ্জামটি পথ এবং কমান্ড উভয় ক্ষেত্রেই কাজ করে তবে এটি আপনার পক্ষে এখনও কার্যকর হতে পারে। Zsh এ 'dirs -v' দেখুন

https://github.com/gawells/ariadne


এটি পথ, কমান্ড এবং তারিখ সহ একটি সিএলআইয়ের ইতিহাস সঞ্চয় করে। এটি কেবলমাত্র পথ নয়, তবে ডিরের ইতিহাস (বাশ এবং জেডএস) বিপরীত অনুসন্ধানের জন্য এখনও কার্যকর
গর্ডন ওয়েলস

আমি মনে করি আপনি আপনার সরঞ্জামের সাথে লিঙ্ক করতে ভুলে গেছেন। আপনার বিবরণ থেকে, আমি সন্দেহ করতে পারি যে এটি কমান্ডগুলির কেবলমাত্র যেখানেই তাদের ডাকা হয়েছে সেখান থেকে কাজ করে। তাই cd share/manকেবলমাত্র তখনই কাজ যদি আমি / usr ইতিমধ্যে আছি।
ইডব্রি

ওহো! আমার খারাপ, আমি ভেবেছিলাম আমি পাঠ্যটিতে ইউআরএল রেখেছি, কিছু ভুল হয়ে গেছে তা খেয়াল করেনি
গর্ডন ওয়েলস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.