সিস্টেম প্রশাসনের জন্য একাধিক ডিরেক্টরিগুলির মধ্যে স্যুইচ করার দ্রুত কমান্ড লাইনের উপায় কী?


46

সিস্টেম প্রশাসনের জন্য একাধিক ডিরেক্টরিগুলির মধ্যে স্যুইচ করার দ্রুত কমান্ড লাইনের উপায় কী? আমি বোঝাতে চাইছি, আমি ব্যবহার করতে pushd .এবং popdটগল করতে পারি , তবে আমি যদি স্থায়ীভাবে স্ট্যাকের নীচে থেকে পপিংয়ের পরিবর্তে তাদের মাধ্যমে বহুগুণ এবং চক্র সঞ্চয় করতে চাই তবে কী হবে?


$CDPATHসম্ভবত?
রোয়াইমা

6
ওহ আমার - cd -গুগলিং এই প্রশ্নটি থেকে প্ররোচিত হওয়ার পরে আমি শিখেছি ।
নচট - মনিকা

@ নচট: আপনি কীভাবে ফাইল স্ট্রাকচার আগে নেভিগেট করেছিলেন ??
লোনবোট

1
কি cdহাত ধরে সর্বত্র। বেদনাদায়ক ছিল। যদিও ট্যাব কী দিয়ে অটো সমাপ্তি ব্যবহৃত হয়।
ভলমাইক

1
সম্ভবত আপনি za চেষ্টা দিতে চান । যখন আপনি একই দুয়ারের মধ্যে প্রচুর পরিমাণে ঝাঁপ দেন তখন অত্যন্ত কার্যকর।
রল্ফ

উত্তর:


28

ব্যবহারের pushdএবং তারপর আপনার ডিরেক্টরির স্ট্যাকের মধ্যে ডিরেক্টরি জন্য বিশেষ নাম: ~1, ~2, ইত্যাদি

উদাহরণ:

tmp $ dirs -v
 0  /tmp
 1  /tmp/scripts
 2  /tmp/photos
 3  /tmp/music
 4  /tmp/pictures
tmp $ cd ~3
music $ dirs -v
 0  /tmp/music
 1  /tmp/scripts
 2  /tmp/photos
 3  /tmp/music
 4  /tmp/pictures
music $ cd ~2
photos $ cd ~4
pictures $ cd ~3
music $ cd ~1
scripts $ 

এই পদ্ধতিতে ব্যবহারের সর্বাধিক কার্যকর উপায় pushdহল আপনার ডিরেক্টরি তালিকাটি লোড করা, তারপরে আপনার বর্তমান ডিরেক্টরি হতে আরও একটি ডিরেক্টরি যুক্ত করুন এবং তারপরে আপনি স্ট্যাকের ডিরেক্টরিগুলির অবস্থানকে প্রভাবিত না করে স্থির সংখ্যার মধ্যে লাফিয়ে উঠতে পারেন।


এরও কোন মূল্য নেই যে এর মূল্য cd -গত ডিরেক্টরি আপনাকে যে অবস্থায় ছিল সেই নিয়ে যাবে। তাই হবে cd ~-

সুবিধা ~-ধরে শুধু -যে -নির্দিষ্ট cd, যেহেতু ~-সম্প্রসারিত হয় আপনার শেল দ্বারা যে একই ভাবে ~1, ~2ইত্যাদি আছে। খুব দীর্ঘ ডিরেক্টরি পাথের মধ্যে কোনও ফাইল অনুলিপি করার সময় এটি কার্যকর হয়; উদাহরণ:

cd /very/long/path/to/some/directory/
cd /another/long/path/to/where/the/source/file/is/
cp myfile ~-

উপরের সমতুল্য:

cp /another/long/path/to/where/the/source/file/is/myfile /very/long/path/to/some/directory/

1
এছাড়াও ব্যবহার করতে পারেনcd -
ভলমাইক

cd -একটি ওদিক মত কাজ করে DROP DUP, যেমন যদি ডিরেক্টরির মধ্যে সঙ্গে এক শুরু একটি , স্ট্যাক সঙ্গে ABCD , একটি cd -থেকে স্ট্যাকের পরিবর্তন bbcd । সম্ভবত এটি bashত্রুটিযুক্ত, যেহেতু দ্বিতীয় সেকেন্ডটিcd - স্ট্যাকটিকে এবিডিতে পরিবর্তন করে । এটি থেকে আমরা সূচনা করতে পারি যে cd -স্ট্যাক পরিবর্তন করার সাথে সাথে পূর্ববর্তী ডিরেক্টরিগুলি সঞ্চয় করতে কিছু পৃথক ডেটা কাঠামো ব্যবহার করে।
এজিসি

3
@agc, cd -ব্যবহার $OLDPWDএবং অন্য কিছুই।
ওয়াইল্ডকার্ড

সুতরাং সম্ভবত cd -পূর্ববর্তী বাশ বৈশিষ্ট্য ছিল, তারপরে তারা একটি স্ট্যাক যুক্ত করেছিল, তবে তারা একটি সহজ নকশা চেয়ে তার চেয়ে পুরানো কোডটি ভাঙ্গার আশঙ্কা করেছিল। পূর্ববর্তী কারেকশন, cd -একটি ওদিক ভালো কিছু কাজ করে OLDPWD @ SWAP OLDPWD ! DUP . ভিন্ন cd foo, cd -কপি করে প্রিন্ট আনা-ইন ডিরেক্টরি নাম।
এজিসি

বা সবসময় ইন্টারেক্টিভ পুশ্ড র্যাপার থাকে (সেই প্রশ্নের অন্যান্য উত্তরগুলির মধ্যে অটোজাম্প ইত্যাদি অন্তর্ভুক্ত থাকে)।
অকেজো

42

bash'builtin গুলি pushdদিয়ে +এবং -অপশন ডিরেক্টরির স্ট্যাক ঘোরাতে পারবেন না। সিনট্যাক্সটি কিছুটা বিভ্রান্তিকর হতে পারে, কারণ এটি স্ট্যাকটি শূন্য- ভিত্তিক অ্যারে। ডিরেক্টরি স্ট্যাকের মাধ্যমে এই সাধারণ মোড়ক ফাংশন চক্র:

# cd to next     directory in stack (left  rotate)
ncd(){ pushd +1 > /dev/null ; }
# cd to previous directory in stack (right rotate)
pcd(){ pushd -0 > /dev/null ; }

পরীক্ষা: চারটি ডিরেক্টরি একটি স্ট্যাক সেট আপ।

dirs -c   # clear directory stack
cd /home ; pushd /etc ; pushd /bin ; pushd /tmp

এখন / টিএমপি হ'ল বর্তমান ডিরেক্টরি এবং স্ট্যাকটি দেখে মনে হচ্ছে:

/tmp /bin /etc /home

স্ট্যাকের পরবর্তী ডিরেক্টরিতে পরিবর্তন করুন, (এবং এটি দেখান), চার বার:

ncd ; pwd ; ncd ; pwd ; ncd ; pwd ; ncd ; pwd

আউটপুট:

/bin
/etc
/home
/tmp

স্ট্যাকের পূর্ববর্তী ডিরেক্টরিতে পরিবর্তন করুন, (এবং এটি দেখান), চার বার:

pcd ; pwd ; pcd ; pwd ; pcd ; pwd ; pcd ; pwd

আউটপুট:

/home
/etc
/bin
/tmp

একটি নোট cd -: ওয়াইল্ডকার্ডের উত্তরটি কীভাবে $ DIRSTACK অ্যারে cd -ব্যবহার করে না তা চিত্রিত করতে সহায়তা করেছে (এটি $ ওয়ালডিপিডুয়াল ভেরিয়েবলটি ব্যবহার করে ), যাতে স্ট্যাক-ভিত্তিক অদলবদলের যেভাবে DIRSTACK করা উচিত তা কার্যকর হয় না । যে ঠিক করার জন্য, এখানে একটি সহজ $ DIRSTACK ভিত্তিক swap 'র ফাংশন:cd -

scd() { { pushd ${DIRSTACK[1]} ; popd -n +2 ; } > /dev/null ; }

টেস্ট:

dirs -c; cd /tmp; \
pushd /bin; \
pushd /etc; \
pushd /lib; \
pushd /home; \
scd; dirs; scd; dirs

আউটপুট:

/bin /tmp
/etc /bin /tmp
/lib /etc /bin /tmp
/home /lib /etc /bin /tmp
/lib /home /etc /bin /tmp
/home /lib /etc /bin /tmp

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

5
হ্যাঁ, আমি বিশ্বাস করি এটি হয়, চেষ্টা করে দেখুন। শীর্ষস্থানীয় আইটেমটি popdসরিয়ে ফেলতে, ডায়ারগুলি পরিবর্তন না করেই এটি সরিয়ে ফেলুন, করুন popd -n। স্ট্যাকটি সাফ করার জন্য dirs -c। খুব খারাপ দিক থেকে ব্যাশ ডিজাইনাররা এইরকম দরকারী ফাংশনগুলিকে অ-স্বজ্ঞাত সিন্টেক্সে কবর দেয়। দেখুন man bashঅধীনে pushd, dirsইত্যাদি
AGC

কাজ করে! এবং ডক্সে কাদা হিসাবে পরিষ্কার ছিল। আমি এর সরলতা পছন্দ করি, এখন যে কৌশলটি জানি।
ভলমাইক

13

আমি আপনি ইনস্টল সুপারিশ fasd । এটি আপনাকে ইতিমধ্যে যে কোনও ডিরেক্টরিতে এর নামটির একটি ছোট ভগ্নাংশ টাইপ করে দ্রুত প্রবেশ করতে সক্ষম করে তোলে।

উদাহরণ: আপনি যদি দেখেছেন তবে আপনি /home/someName/scripts/কেবল z scrউদাহরণস্বরূপ টাইপ করে সেখানে লাফিয়ে উঠতে পারেন । এটি ইতিহাসের স্ট্যাক বা অনুরূপ কিছুতে ক্রম ক্রম মনে করে।


10

আপনি যখন cdকোথাও, বাশ পুরানো কার্যকরী ডিরেক্টরিটি পরিবেশের পরিবর্তনশীল $OLDPWD,।

আপনি যে ডিরেক্টরিতে cd -সমান এটি দিয়ে সেই ডিরেক্টরিতে ফিরে যেতে পারেন cd "$OLDPWD"

আপনি যেমন ডিরেক্টরি এর মধ্যে পিছনে পিছনে বাউন্স করতে পারেন:

blue$ cd ~/green
green$ cd -
blue$ cd -
green$

6

আমি এটি করার জন্য একটি স্ক্রিপ্ট লিখেছিলাম xyzzy:

#!/bin/bash

i="$1"
i=$((${i//[^0-9]/}))
i="$(($i-1+0))"

b="$2"
b=$((${b//[^0-9]/}))
b="$(($b-1+0))"

if [ -z "$XYZZY_INDEX" ]; then
    XYZZY_INDEX="$((-1))"
fi

if [ ! -f "/tmp/xyzzy.list" ]; then
    touch /tmp/xyzzy.list
    chmod a+rw /tmp/xyzzy.list
fi
readarray -t MYLIST < /tmp/xyzzy.list

showHelp(){
read -r -d '' MYHELP <<'EOB'
xyzzy 1.0

A command for manipulating escape routes from grues. Otherwise known as a useful system admin
tool for storing current directories and cycling through them rapidly. You'll wonder why this
wasn't created many moons ago.

Usage: xyzzy [options]

help/-h/--help      Show the help.

this/-t/--this      Store the current directory in /tmp/xyzzy.list

begone/-b/--begone  Clear the /tmp/xyzzy.list file. However, succeed with a number and
            it clears just that item from the stored list.

show/-s/--show      Show the list of stored directories from /tmp/xyzzy.list

. #         Use a number to 'cd' to that directory item in the stored list. This syntax is odd:

            . xyzzy 2

            ...would change to the second directory in the list

. [no options]      Use the command alone and it cd cycles through the next item in the stored 
            list, repeating to the top when it gets to the bottom. The dot and space before xyzzy
            is required in order for the command to run in the current shell and not a subshell:

            . xyzzy

Note that you can avoid the odd dot syntax by adding this to your ~/.bashrc file:

  alias xyzzy=". xyzzy"

and then you can do "xyzzy" to cycle through directories, or "xyzzy {number}" to go to a
specific one.

May you never encounter another grue.

Copyright (c) 2016, Mike McKee <https://github.com/volomike>
EOB
    echo -e "$MYHELP\n"
}

storeThis(){
    echo -e "With a stroke of your wand, you magically created the new escape route: $PWD"
    echo "$PWD" >> /tmp/xyzzy.list
    chmod a+rw /tmp/xyzzy.list
}

begoneList(){
    if [[ "$b" == "-1" ]]; then
        echo "POOF! Your escape routes are gone. We bless your soul from the ever-present grues!"
        >/tmp/xyzzy.list
        chmod a+rw /tmp/xyzzy.list
    else
        echo -n "Waving your wand in the dark, you successfully manage to remove one of your escape routes: "
        echo "${MYLIST[${b}]}"
        >/tmp/xyzzy.list
        chmod a+rw /tmp/xyzzy.list
        for x in "${MYLIST[@]}"; do
            if [[ ! "$x" == "${MYLIST[${b}]}" ]]; then
                echo "$x" >> /tmp/xyzzy.list
            fi
        done
    fi
}

showList(){
    echo -e "These are your escape routes:\n"
    cat /tmp/xyzzy.list
}

cycleNext(){
    MAXLINES=${#MYLIST[@]}
    XYZZY_INDEX=$((XYZZY_INDEX+1))
    if [[ $XYZZY_INDEX > $(($MAXLINES - 1)) ]]; then
        XYZZY_INDEX=0
    fi
    MYLINE="${MYLIST[${XYZZY_INDEX}]}"
    cd "$MYLINE";
}

switchDir(){
    MYLINE="${MYLIST[${i}]}"
    cd "$MYLINE";
}

if [[ "$@" == "" ]];
then
    cycleNext
fi;

while [[ "$@" > 0 ]]; do case $1 in
    help) showHelp;;
    --help) showHelp;;
    -h) showHelp;;
    show) showList;;
    -s) showList;;
    --show) showList;;
    list) showList;;
    this) storeThis;;
    --this) storeThis;;
    -t) storeThis;;
    begone) begoneList;;
    --begone) begoneList;;
    *) switchDir;;
    esac; shift
done

export XYZZY_INDEX

আমি এটি যেভাবে ব্যবহার করি তা হ'ল /usr/binফোল্ডারে এবং তারপরে অনুলিপি করা chmod a+x। তারপরে, আমি ~/.bashrcনীচে এই লাইনগুলি অন্তর্ভুক্ত করতে আমার রুট এবং ব্যবহারকারী অ্যাকাউন্ট ফাইলটি সম্পাদনা করছি :

alias xyzzy='. xyzzy'
alias xy='. xyzzy'

'Xy' দ্রুত টাইপ করার জন্য কমান্ডের একটি সংক্ষিপ্ত রূপ।

তারপরে, আমি বর্তমান ডিরেক্টরিটি তালিকায় রেখে দিতে পারি ...

xyzzy this

... এবং প্রয়োজনীয় হিসাবে পুনরাবৃত্তি। আমার এই ডিরেক্টরিগুলি আমার প্রয়োজনীয় ডিরেক্টরিগুলি পূরণ করার পরে, আমি কম্পিউটারটি পুনরায় বুট না করা পর্যন্ত তারা সেখানে থাকবে কারণ যখন / tmp আবার সাফ হয়ে যায়। আমি তখন টাইপ করতে পারি ...

xyzzy show

... বর্তমানে সংরক্ষিত ডিরেক্টরি তালিকা করতে। ডিরেক্টরিতে স্যুইচ করার জন্য আমার দুটি পছন্দ আছে। একটি বিকল্প হ'ল সূচি দ্বারা পথটি নির্দিষ্ট করা (এবং এটি 1-ভিত্তিক সূচক) এর মতো:

xyzzy 2

... যা তালিকার দ্বিতীয় আইটেম ডিরেক্টরিতে স্যুইচ করবে। অথবা, আমি সূচক নম্বরটি ছেড়ে দিতে এবং ঠিক করতে পারি:

xyzzy

... এটি আমার প্রয়োজন অনুসারে প্রতিটি ডিরেক্টরিতে লুপ করা যায়। আরও কমান্ডের জন্য আপনি টাইপ করুন:

xyzzy help

অবশ্যই, আমি যুক্ত করা মূর্খ প্রতিধ্বনি বিবরণ দিয়ে কাজ আরও মজাদার।

নোট করুন যে জাইজি কোলোসাল ক্যাভ টেক্সট অ্যাডভেঞ্চারের একটি রেফারেন্স , যেখানে গ্রাইস এড়ানোর জন্য xyzzy টাইপ করা আপনাকে গেমের দুটি কক্ষের মধ্যে স্যুইচ করতে দেয়।


2
+1 আমি এটি নিয়ে খেলতে শুরু করেছি। এটি দুর্দান্ত, তবে কোনও ডিরেক্টরি এখনও যুক্ত করা হয়নি এবং আপনি কেবল xyzzy প্রবেশ করলে ব্যর্থ হবে বলে মনে হচ্ছে। চক্রেরেক্সট () তে ম্যাক্স্লিনেস -১০ 0 এর জন্য আরও একটি পরীক্ষার প্রয়োজন।
জো

5

আমি z [লিঙ্ক] নামে একটি ছোট স্ক্রিপ্ট ব্যবহার করি , যা আপনার আগ্রহীও হতে পারে, যদিও এটি আপনি যা বলেছেন ঠিক তেমন করে না।

NAME
       z - jump around

SYNOPSIS
       z [-chlrtx] [regex1 regex2 ... regexn]

AVAILABILITY
       bash, zsh

DESCRIPTION
       Tracks your most used directories, based on 'frecency'.

       After  a  short  learning  phase, z will take you to the most 'frecent'
       directory that matches ALL of the regexes given on the command line, in
       order.

       For example, z foo bar would match /foo/bar but not /bar/foo.

হয়তো আমি কিছু মিস করেছি তবে আমি নিজেই z স্ক্রিপ্টটি কোথায় খুঁজে পাব?
জো

দুঃখিত, লিঙ্কটি z এ ছিল। এটি দেখতে আরও সহজ করার জন্য সম্পাদনা করবে।
গ্রিফার

5

cd_funcপেটর মেরিনভ থেকে এখানেও রয়েছে , এটি মূলত cd10 টি প্রবেশের ইতিহাস সহ: http://linuxgazette.net/109/misc/marinov/acd_func.html

# do ". acd_func.sh"
# acd_func 1.0.5, 10-nov-2004
# petar marinov, http:/geocities.com/h2428, this is public domain

cd_func ()
{
  local x2 the_new_dir adir index
  local -i cnt

  if [[ $1 ==  "--" ]]; then
    dirs -v
    return 0
  fi

  the_new_dir=$1
  [[ -z $1 ]] && the_new_dir=$HOME

  if [[ ${the_new_dir:0:1} == '-' ]]; then
    #
    # Extract dir N from dirs
    index=${the_new_dir:1}
    [[ -z $index ]] && index=1
    adir=$(dirs +$index)
    [[ -z $adir ]] && return 1
    the_new_dir=$adir
  fi

  #
  # '~' has to be substituted by ${HOME}
  [[ ${the_new_dir:0:1} == '~' ]] && the_new_dir="${HOME}${the_new_dir:1}"

  #
  # Now change to the new dir and add to the top of the stack
  pushd "${the_new_dir}" > /dev/null
  [[ $? -ne 0 ]] && return 1
  the_new_dir=$(pwd)

  #
  # Trim down everything beyond 11th entry
  popd -n +11 2>/dev/null 1>/dev/null

  #
  # Remove any other occurence of this dir, skipping the top of the stack
  for ((cnt=1; cnt <= 10; cnt++)); do
    x2=$(dirs +${cnt} 2>/dev/null)
    [[ $? -ne 0 ]] && return 0
    [[ ${x2:0:1} == '~' ]] && x2="${HOME}${x2:1}"
    if [[ "${x2}" == "${the_new_dir}" ]]; then
      popd -n +$cnt 2>/dev/null 1>/dev/null
      cnt=cnt-1
    fi
  done

  return 0
}

alias cd=cd_func

if [[ $BASH_VERSION > "2.05a" ]]; then
  # ctrl+w shows the menu
  bind -x "\"\C-w\":cd_func -- ;"
fi

cd --আপনি যে 10 টি ডিরেক্টরি cdসম্পাদনা করেছেন এবং cd -Nসেখানে যাওয়ার Nজন্য (যেখানে প্রবেশের সূচীটি রয়েছে) অতীতের একটি তালিকা প্রদর্শন করতে সিম্পলি ব্যবহার করুন ।


4

আমি বেশিরভাগ ওহ-মাই-জেডএস প্রোফাইল সহ জেডএসএইচ ব্যবহার করি । আপনি নিম্নলিখিত ম্যাচটি টার্মিনালে টাইপ করতে পারেন:

# cd /ho

তারপরে আপনি সমস্ত শেল ইতিহাসের জন্য কেবল তীরগুলি (উপরে এবং নীচে) ব্যবহার করতে পারেন যা উপরের অক্ষরগুলি দিয়ে শুরু হওয়া কেবলমাত্র এন্ট্রিগুলি দেখায়। সুতরাং, উদাহরণস্বরূপ, আপনি যদি যান /home/morfik/Desktop/এবং /home/morfik/something/, আপনি খুব দ্রুত ডিরেক্টরিগুলির মধ্যে স্যুইচ করতে পারেন। শেলের ইতিহাসে আপনার কতগুলি এন্ট্রি রয়েছে তা বিবেচনাধীন নয়, তবে আপনার যখন খুব বেশি থাকে তবে কেবল একটি ভাল এক্সপ্রেশন ব্যবহার করুন, cd /home/morfএবং এখানে আপনার কীবোর্ডের উপরে / ডাউন তীর টিপুন।

সমাধানটি অর্জনের আরও একটি উপায় রয়েছে। এই ক্ষেত্রে আপনাকে tmux এবং FZF ব্যবহার করতে হবে । তারপরে আপনি কেবল একটি হটকি তৈরি করুন, উদাহরণস্বরূপ ctrl-r, এবং আপনি এটি টিপলে আপনার বর্তমান উইন্ডোটি বিভক্ত হয়ে যাবে এবং আপনি এটি দেখতে পাবেন:

এখানে চিত্র বর্ণনা লিখুন

এখন আপনি তালিকাটি অনুসন্ধান করতে এক্সপ্রেশন ব্যবহার করতে পারেন। আমি কেবল টাইপ করেছি ^cd /media, যা কেবলমাত্র এন্ট্রিগুলিকে বাক্যটি দিয়ে শুরু করে। অবশ্যই, আপনি কেবল 'cd 'homeকমান্ডটি এবং সম্পূর্ণ ডিরেক্টরি নামটি (কেবল পথ নয়, কেবল নাম) মেলাতে টাইপ করতে পারেন :

এখানে চিত্র বর্ণনা লিখুন


4

আপনি আপনার ~/.bashrc(বা সমমানের) একগুচ্ছ ডাক্তার সঙ্গে এটি অর্জন করতে পারেন

মূল লক্ষ্যটি হ'ল নিকটে সর্বনিম্ন টাইপিং (যেমন d5পুলের 5 নম্বর ডিরেক্টরিতে লাফানো) পুলে ডিরেক্টরিগুলির মধ্যে স্যুইচ করতে। এছাড়াও আমরা পুল থেকে / ডিরেক্টরিতে ডিরেক্টরিগুলি যুক্ত / সরানো সহজ করে তুলতে চাই:

alias pd=pushd
alias po=popd
alias d='dirs -v'
alias d0=d
alias d1='pd +1'
alias d2='pd +2'
alias d3='pd +3'
alias d4='pd +4'
alias d5='pd +5'
alias d6='pd +6'
alias d7='pd +7'
alias d8='pd +8'
alias d9='pd +9'
alias d10='pd +10'
# -- feel free to add more aliases if your typical dir pool is larger than 10

এখন যখনই আপনি স্ট্যাকের উপরে একটি ডিরেক্টরি চাপছেন তখন এটি 0 (বর্তমান দির) পজিশনে সংখ্যক পুলে যুক্ত হবে এবং খুব অল্প টাইপিং ( d<N>) ব্যবহার করে আপনি চারপাশে (ডিরেক্টরিগুলি স্যুইচ করতে পারেন) ঝাঁপিয়ে পড়তে পারেন এবং আপনি যে কোনও একটিতে বর্তমান নম্বরটি দেখতে পারবেন শুধু টাইপ করে সময় d

এই উপকরণগুলি ব্যবহারের কয়েকটি উদাহরণ:

নম্বরযুক্ত দির-পুল প্রদর্শন করুন (বর্তমান দির # 0)

$ d
 0  /tmp
 1  /
 2  /usr

ডিয়ারগুলির মধ্যে স্যুইচ করুন: ব্যবহার করুন d<N>

$ d2
$ pwd
/usr

পুলটিতে একটি নতুন ডিরেক্টরি যুক্ত করুন

$ pd /var/log
$ d
 0  /var/log
 1  /usr
 2  /tmp
 3  /

আরও কিছু কাছাকাছি যান:

$ d3
$ pwd
/

$ d3
$ pwd
/tmp

$ d
 0  /tmp
 1  /
 2  /var/log
 3  /usr

পুল থেকে উপরের (বর্তমান) দিরকে সরান / পপ করুন

$ po
$ d
 0  /
 1  /var/log
 2  /usr

2

আপনি যদি ইলেক্ট ইনস্টল করে থাকেন তবে আপনি এরকম কিছু করতে পারেন:

$ alias dirselect='cd $(iselect -a $(dirs -l -p | sort -u))'
$ dirselect

এটিতে আপনাকে একটি ডিরেক্টরি নির্বাচন করার জন্য একটি পূর্ণ-স্ক্রিন এনক্রস-ভিত্তিক ইন্টারেক্টিভ তীর-কী নেভিগেশন মেনু cdদেবে।

আপনি যদি pushdবর্তমান শেল সেশনে ব্যবহার না করে থাকেন তবে মেনুতে থাকা ডিরেক্টরিগুলির তালিকা আপনার বর্তমান ডিরেক্টরিতে কেবল একটি প্রবেশ দিয়ে শুরু হবে। যদি কেবল একটি প্রবেশ থাকে, তবে এই dirselectউপনামটি cdমেনু স্ক্রিন ব্যতীত এটিতে যাবে, সুতরাং কার্যকরভাবে এটি কিছুই করে না ( cd -দরকারী কিছু করা থেকে বিরত ব্যতীত )

তালিকায় একটি নতুন ডিরেক্টরি যুক্ত করতে ব্যবহার করুন pushd dir(বা একই সাথে এটি pushd -n dirবিনা ছাড়াই একটি দির যোগ cdকরতে)

আপনি বা pushdআপনার মধ্যে নিম্নলিখিতগুলির মতো কিছু করে স্ট্যাকটিকে প্রাক-জনবসতি করতে পারেন :.bashrc~/.bash_profile

for d in /var/tmp /tmp /path/to/somewhere/interesting ; do 
  pushd -n "$d" > /dev/null
done

আপনি popdবা এর সাথে এন্ট্রিগুলি সরাতে পারেন popd -n

দেখুন help pushd, help popdএবং help dirsআরও তথ্যের জন্য ব্যাশ হবে। এবং, অবশ্যই man iselect,।

বিটিডাব্লু, iselectসম্ভবত আপনার ডিসট্রোর জন্য প্রাক-প্যাকেজযুক্ত উপলব্ধ। এটি ডেবিয়ান এবং উবুন্টু ইত্যাদির জন্য এবং সম্ভবত অন্যদের জন্যও।


2

যদি আপনার 5 বা 10 ডিরেক্টরি থাকে তবে আপনি প্রচুর পরিমাণে ব্যবহার করেন এবং অগত্যা ব্যবহৃত 5 বা 10 ডিরেক্টরিগুলি যত্ন নেওয়ার প্রয়োজন হয় না , যেমন কিছু কমান্ড এলিয়াস সেট আপ করুন

alias cdw="cd /var/www/html" 

এবং তাই যখন আমি অ্যাপাচি হোম পেজ ডিরেক্টরিতে যেতে চাই যখন আমি একটি সংকেতী লিঙ্কের জন্য ওরফে এর সমতুল্য জবাবটিcdw দিয়েছিলাম ঠিক তেমন টাইপ করি ?


2

আমি দ্রুত কাজের ডিরেক্টরি পরিবর্তন করতে লাফটি ব্যবহার করছি ।

বর্তমান ডিরেক্টরি যুক্ত করতে:

jump -a [bookmark-name]

আপনার সমস্ত বুকমার্ক তালিকা করতে:

jump -l

উদাহরণ:

------------------------------------------------------------------
 Bookmark    Path                                                 
------------------------------------------------------------------
 reports     ~/mydir/documents/reports
 projects    ~/documents/projects
 dl          ~/Downloads                     
------------------------------------------------------------------

এখন আপনি সহজেই অন্য ডিরেক্টরিতে যেতে পারেন:

jump reports

এটি ব্যাশ এবং zsh এর জন্য স্বতঃপূরণ সমর্থন করে।


সম্পাদনা (@ জো এর প্রতিক্রিয়া হিসাবে): বাইনারিটি jump-binসংরক্ষণ করা হয় /usr/local/bin, এবং ব্যাশ একীকরণের স্ক্রিপ্টের সাথে (আমার পিসিতে অবস্থিত /var/lib/gems/1.9.1/gems/jump-0.4.1/bash_integration/shell_driver) এটি একটি বাশ ফাংশন তৈরি করে jumpযা কল করে jump-bin


জাম্প কমান্ড কোথায় থাকে? আমার কাছে এটি নেই এবং তাত্ক্ষণিকভাবে এটি কোথায় পাবেন তা দেখুন না।
জো

2

আমি aliasনেভিগেট করতে ব্যবহার করি । আপনার যদি কয়েকটি ডিরেক্টরি থাকে যা ঘন ঘন অ্যাক্সেস করা হয়, তবে কেবলমাত্র উপকরণগুলি সেট করুন। উদাহরণ স্বরূপ,

alias e='cd /etc'
alias h='cd /home'
alias al='cd /var/log/apache2/'

তারপর সহজভাবে

e 

আপনি নিতে হবে /etc

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