আমি কীভাবে সিডি কমান্ডকে হোম ডিরেক্টরিতে যেতে বাধা দেব?


10

জিনিসটি হ'ল কখনও কখনও আমি cdভুল করে টাইপ করি এবং এটি আমাকে হোম ডিরেক্টরিতে নিয়ে যায়।

উদাহরণস্বরূপ, আমি একটি ডিরেক্টরিতে রয়েছি যেখানে একটি গোপন ডিরেক্টরি এবং একটি দৃশ্যমান ডিরেক্টরি রয়েছে, আমি দ্রুত cd+ টিপুন tabএবং এটি আমাকে হোম ডিরেক্টরিতে নিয়ে যায়


30
আপনি যদি cdদুর্ঘটনাক্রমে কোথাও cd -থেকে থাকেন তবে আপনার আগের অবস্থানে ফিরে যেতে ব্যবহার করুন - বাশ $OLDPWDএই উদ্দেশ্যে চলক রাখে । দেখুন gnu.org/software/bash/manual/bash.html#index-cd
গ্লেন জ্যাকম্যান

4
আপনি যদি সত্যিই cdকিছু করতে না চান , আপনি কোনও ফাংশন লিখতে পারেন cdযা কোনও যুক্তি না দিলে কিছুই করে না, অন্যথায় কল করুনbuiltin cd "$@"
glenn jackman

2
সত্যিই খারাপ ধারণা: হোম =।
জোশুয়া

26
আমার আন্তরিক সর্বোত্তম সুপারিশ হ'ল ধীর হয়ে যাওয়া এবং আপনি এটি সম্পাদন করার আগে কমান্ডটি পরীক্ষা করা শিখুন। অন্য কথায়: cdযা কিছু তা করতে অভ্যস্ত হন। আপনি যদি আদেশগুলি কার্যকর করার অভ্যাসটি রাখেন তবে আপনি ডাবল চেক করেন নি, আপনি পরে আরও অনেক বড় সমস্যায় পড়বেন। যেমন আপনি দুটি ফাইলকে একটি তৃতীয় ডিরেক্টরিতে স্থানান্তরিত করতে চান: mv a b dir/এবং ট্যাব সমাপ্তি dirআপনার প্রত্যাশার মতো উত্পন্ন হয় না , আপনি mv a bকোনটি ওভাররাইট করে এক্সিকিউট করে শেষ করবেন b। সাবধান হতে শিখুন, এন্টার টিপানোর আগে কমান্ডটি একবার দেখতে শিখুন।
egmont

1
@Joe আমি একটি লেফাফা স্ক্রিপ্ট লিখেছিলেন rmযেমন শীর্ষ স্তরের ডিরেক্টরির মধ্যে মুছে ফেলা রোধ করার জন্য /, /etc, /usr, /home, /varএকটি পাসওয়ার্ড ওভাররাইড ছাড়া, ইত্যাদি। কখনও কখনও আমাদের নিজের থেকে সুরক্ষা প্রয়োজন :)
WinEunuuchs2Unix

উত্তর:


14

gedit ~/.bashrcনীচে এই লাইনগুলি ব্যবহার এবং সন্নিবেশ করান:

cd() {
    [[ $# -eq 0 ]] && return
    builtin cd "$@"
}

একটি নতুন টার্মিনাল খুলুন এবং এখন যখন আপনি cdকোনও প্যারামিটার না দিয়ে টাইপ করেন আপনি কেবল একই ডিরেক্টরিতে থাকুন।


টি এল; ডিআর

আপনি যদি সত্যিই বিশদ হতে চান তবে কোনও প্যারামিটার পাস না হয়ে আপনি কোনও সহায়তা স্ক্রিনে রাখতে পারেন:

$ cd

cd: missing operand

Usage:

    cd ~            Change to home directory. Equivelent to 'cd /home/$USER'

    cd -            Change to previous directory before last 'cd' command

    cd ..           Move up one directory level

    cd ../..        Move up two directory levels

    cd ../sibling   Move up one directory level and change to sibling directory

    cd /path/to/    Change to specific directory '/path/to/' eg '/var/log'

এটি সম্পাদনের জন্য বর্ধিত কোডটি হ'ল:

cd() {
    if [[ $# -eq 0 ]] ; then
        cat << 'EOF'

cd: missing operand

Usage:

    cd ~            Change to home directory. Equivelent to 'cd /home/$USER'

    cd -            Change to previous directory before last 'cd' command

    cd ..           Move up one directory level

    cd ../..        Move up two directory levels

    cd ../sibling   Move up one directory level and change to sibling directory

    cd /path/to/    Change to specific directory '/path/to/' eg '/var/log'

EOF
        return
    fi

    builtin cd "$@"
}

6
তবে তারপরে আপনি আপনার পরিবেশকে অন্য কোনও পরিবেশের মতো কাজ করে তুলেছেন। কেন ফাংশনটি কল করবেন না ncd("নতুন সিডির জন্য"), এবং বাস্তবকে cdএকা ছেড়ে যাবেন ?
ওয়ালটিনেটর

@ ওয়ালটিনেটর আমি কীভাবে cd বাড়ির ব্যবহারকারীদের পাশাপাশি (ফাঁকা) লোকের জন্য আলাদাভাবে কাজ করে সে সম্পর্কে একটি সতর্কতার সাথে উত্তরটি উন্নত করতে পারি ~/.bashrc। আপনি একটি বা দুটি উদাহরণ দিতে পারেন কি জন্য সন্ধান করা? যেমন একটি বিকাশকারী cd তাদের ইনস্টলেশন স্ক্রিপ্টে (ফাঁকা) ব্যবহার করে । (হাইপোথিটিক্যাল তবে আমি কেস নিয়ে ভাবতে পারি না)। আমি উত্তরে আপনার উদাহরণগুলি রোল করতে পারি এবং এর ncdপরিবর্তে ওপি ব্যবহারের পরামর্শ দিতে পারি cd
WinEunuuchs2Unix

আমি জিনিসগুলি কাস্টমাইজ করতে পছন্দ করি। এটি লিনাক্স সম্পর্কে যা। তবে আমার কড়া ব্যক্তিগত নিয়ম রয়েছে যে কোনও সাধারণ কমান্ডের ফাংশন (কোনও শঙ্কিত উদ্দেশ্যে) পরিবর্তন করা উচিত নয়। আপনি অন্য সিস্টেমে কাজ করার সময় বা অন্য কেউ যখন কাজ করে বা আপনার সম্পর্কে আপনাকে পরামর্শ দেয় তখন সমস্যাগুলি দেখা দেয়। আমি @ ওয়ালটিনেটর এবং সেই "ভাল" জো
জো এর

6

যদি এটি ট্যাব সমাপ্তি ঘটায় যার ফলে এটি হয় তবে একটি বিকল্প হ'ল তাত্ক্ষণিকভাবে প্রবেশের মধ্য দিয়ে সমাপ্তি চক্র তৈরি করা। এটি ডিফল্ট পরিবর্তে পঠনেরmenu-comple বিকল্প ব্যবহার করে করা যেতে পারে complete:

bind 'tab: menu-completion'

তারপরে, আমার হোম ডিরেক্টরিতে, উদাহরণস্বরূপ:

$ cd <tab> # becomes
$ cd .Trash

অবশ্যই, তারপরেও আপনি যা চালাচ্ছেন তা আপনাকে পড়তে হবে।


4

আমি কীভাবে আমার উইন্ডোজ শিরোনামে বর্তমান দির এবং ব্যবহারকারীকে রেখেছি তা এখানে - আপনি এটি আপনার প্রয়োজনের সাথে খাপ খাইয়ে নিতে পারেন তবে এর cd -সমতুল্য cd $OLDPWDএকটি আরও ভাল সমাধান।

আমার থেকে ~/.bashrc:

# from the "xttitle(1)" man page - put info in window title
update_title()
{
    [[ $TERM = xterm ]] || [[ $TERM = xterm-color ]]  && xttitle "[$$] ${USER}@${HOSTNAME}:$PWD"
}

cd()
{
    [[ -z "$*" ]] && builtin cd $HOME
    [[ -n "$*" ]] && builtin cd "$*"
    update_title
}

4

এখানে সমস্যাটি নয় cdএবং এটি প্রযুক্তি দ্বারা স্থির নয়।

সমস্যা আপনি, এবং এটি ধৈর্য দ্বারা স্থির!

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

আপনি দেখতে পাবেন যে এই পদ্ধতির ফলে কেবল সমস্যাটিই সমাধান করা যায় না , আপনি যদি বর্তমান পথে চালিয়ে যান তবে আপনি যে আরও খারাপ সমস্যার মুখোমুখি হতে চলেছেন।


2
এছাড়াও, কয়েক মাস / বছর ব্যবহারের পরে আপনি ভুলে যাবেন যে আপনি আচরণটি পরিবর্তন করেছেন এবং অন্যান্য পরিবেশে কাজ করতে সমস্যা হবে।
pLumo

@ রোভো এটিও, ভাল কথা!
23:48

@ রোভো যা কয়েক দিনের মধ্যেই ঘটতে পারে। ঠিক এখনই, আপনি দ্বৈত বুট করলে, কোনও ভিএম-তে স্যুইচ করুন ...
জো

@ জো ইদানীং আমি সন্ধ্যাবেলায় ওএসএক্স এবং সন্ধ্যায় উইন্ডোজের মধ্যে স্যুইচ করে যাচ্ছি এবং কীবোর্ড বিন্যাসের পরিবর্তনটি সত্যিই বিভ্রান্তিকর!
অরবিটে হালকা ঘোড়দৌড়

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