linux

2012-08-30 10 views
31

में कुछ निर्देशिकाओं जाओ जब मैं एक निर्देशिका जाना चाहता हूँ ऊपर मैंlinux

cd ..

का उपयोग लेकिन जब मैं 7 निर्देशिका ऊपर जाना चाहता हूँ वहाँ सिर्फ सात टाइप करने के अलावा यह अन्य करने के लिए किसी भी तरह से (है 7) समय cd ..?

+0

एक तरफ ध्यान दें, दोनों स्तरों पर 'सीडी..' और' सीडी .. 'दोनों स्तरों पर जाने के लिए विंडोज़ के बराबर हैं लेकिन लिनक्स बहुत सख्त है और गायब स्थान की वजह से अमान्य कमांड के रूप में' cd..' कमांड को अस्वीकार करता है । – RBT

उत्तर

48
cd ../../../../../../../ 

इसके अलावा एक और उपयोगी नेविगेशन टिप के लिए करता है, तो उदाहरण मान लीजिए कि आप एक निर्देशिका से स्विच रखने की सुविधा देता है (इसे कहते ए) दूसरे के लिए (इसे बी कहते हैं) कि आपके मामले में 7 निर्देशिकाएं हैं।

तो अगर आप निर्देशिका एक में कर रहे हैं:।

A> cd ../../../../../../../ 
B> // Now you're in directory B and want to go back to A 
B> cd - 

कि निर्देशिका ए - करने का अधिकार वापस चले जाएँगे पिछले निर्देशिका आप में थे फैलता

+3

'सीडी -' कमांड दिलचस्प है। क्या इसके लिए कोई खिड़कियां बराबर है? – RBT

+0

हालांकि यह "स्वीकृत" उत्तर है, लेकिन मुझे लगता है कि नीचे @ डेव का उत्तर अधिक मजबूत समाधान है। "../" की एक लंबी सूची दोनों कठिन और त्रुटि के लिए प्रवण है। यदि आपकी प्रोफ़ाइल उपनाम स्क्रिप्ट की अनुमति देती है, तो यह अधिक स्केलेबल है। बैश उपनाम संस्करण भी "सीडी -" के लिए समर्थन को बरकरार रखता है। – ZaydH

5

आप कुछ हैक्स क्या आप नेविगेशन सुधारने के लिए आवेदन कर सकते हैं के बारे में cool article है इस cd ../../../../../../../

की तरह कर सकते हैं।

1

एचएम, मुझे ऐसा नहीं लगता है।

लेकिन आप cd ../../../.. (और इतने पर) के बजाय 7 बार सीडी लिख सकते हैं ..

7

आप pushd . उपयोग कर सकते हैं इसे वापस जाने के लिए एक निर्देशिका और popd याद रखने के लिए।

6

यदि कोई आदेश है तो मैं बहुत उपयोग करता हूं, मैं केवल उपनाम बनाउंगा।

आप टाइप कर सकते हैं

alias ..='cd ..' 
alias ...='cd ../..' 

तो फिर तुम सिर्फ .. का उपयोग एक स्तर ऊपर और ... जाना दो स्तरों तक जाने के लिए कर सकते हैं।

आमतौर पर, जब तुम वापस सीडी के साथ एक निर्देशिका जाना .., आप के बाद आगे की ओर एक निर्देशिका जा रहा अंत:

6

यहाँ एक मामूली सुधार मैंने पाया है। यह काम करने के लिए, आप उपनाम के बजाय कार्यों का उपयोग करने के लिए है, इसलिए बजाय:

alias ..=”cd ../” 
alias ..2=”cd ../../” 

आप का उपयोग कर सकते हैं:

..() 
{ 
cd ../[email protected] 
} 
..2() 
{ 
cd ../../[email protected] 
} 

बहरहाल, यह उपयोग करने के बाद, इसे जल्दी स्पष्ट हो जाता है कि आप याद कर रहे हैं इस समारोह के लिए कमांड पूरा करने, इसे जितना कम उपयोगी हो सकता है। इस प्रकार, मैं वापस चला गया और इस फ़ंक्शन के लिए अपने स्वयं के बैश पूर्ण करने के कार्यों को जोड़ा, जिसे आपके ~/.bashrc या किसी भी फ़ाइल (जैसे ~/.bash_completion) में चिपकाया जा सकता है जिसे आप अपने ~/.bashrc से बुला सकते हैं यदि आप टालना चाहते हैं अव्यवस्था। यहां पूरा कोड है:

_..() 
{ 
local cur=../${COMP_WORDS[COMP_CWORD]} 
COMPREPLY=($(compgen -d — $cur)) 
local i=${#COMPREPLY[*]} 
while [ $((--i)) -ge 0 ]; do 
COMPREPLY[$i]=$(echo ${COMPREPLY[$i]} | sed -r ‘s/(\.\.\/)*//’) 
done 
} 
complete -F _.. -o nospace -S/.. 

_..2() 
{ 
local cur=../../${COMP_WORDS[COMP_CWORD]} 
COMPREPLY=($(compgen -d — $cur)) 
local i=${#COMPREPLY[*]} 
while [ $((--i)) -ge 0 ]; do 
COMPREPLY[$i]=$(echo ${COMPREPLY[$i]} | sed -r ‘s/(\.\.\/)*//’) 
done 
} 
complete -F _..2 -o nospace -S/..2 
14

उपनाम बनाएं (आप में ~ /।bashrc)

function cd_up() { 
    cd $(printf "%0.0s../" $(seq 1 $1)); 
} 
alias 'cd..'='cd_up' 

और उपयोग:

$ cd.. 7 

युपीडी:

# cd up to n dirs 
# using: cd.. 10 cd.. dir 
function cd_up() { 
    case $1 in 
    *[!0-9]*)           # if no a number 
     cd $(pwd | sed -r "s|(.*/$1[^/]*/).*|\1|")  # search dir_name in current path, if found - cd to it 
     ;;            # if not found - not cd 
    *) 
     cd $(printf "%0.0s../" $(seq 1 $1));    # cd ../../../../ (N dirs) 
    ;; 
    esac 
} 
alias 'cd..'='cd_up'        # can not name function 'cd..' 

उपयोग: या अधिक शक्तिशाली संस्करण बनाने के लिए, सीडी वर्तमान पथ में नाम dir रहे हैं:

$ cd /home/user/documents/projects/reports/2014-10-01 
$ cd.. proj 
$ pwd 
> /home/user/documents/projects 
0

आप इस समाधान का प्रयास कर सकते हैं। यह मेरे लिए काम ठीक है:

#!/bin/bash 
 

 
#this sctipt should take one parameter - number of steps. And do "cd" command step times. 
 
# example usage: cd `cde 3` 
 

 
NEW_PATH=$(pwd) 
 

 
step="../" 
 

 
upper="" 
 

 
for i in seq $1 
 
do 
 
     upper="$upper$step" 
 
done 
 

 
echo $upper

मैं ~/.barsh फ़ाइल में उर्फ ​​बना दिया है। और यह मेरे लिए ठीक काम करता है।
उदाहरण, तीन फ़ोल्डर्स के लिए उदाहरण।
$ सीडी `सीडीई 3`

2

आप अपने .bashrc के लिए निम्न समारोह जोड़ सकते हैं:

# ~/.bashrc 
up() { 
    for D in $(seq 1 $1); 
    do 
     cd .. 
    done 
} 

तो उपयोग बस होगा:

user ~ $ up 3 
user/$ 
+0

दीर्घकालिक उपयोग – Kyle

+0

के लिए सबसे अच्छा जवाब "और" सहित काम नहीं करता है। मुझे इसे "और" हटाकर काम करने के लिए मिला। नीचे @dav से दृष्टिकोण "सीडी -" अभी भी काम करने की अनुमति देता है, इसलिए मैं कहूंगा कि यह बेहतर दीर्घकालिक उत्तर है। – ZaydH

4

मैं कहाँ की नकल की से याद नहीं है यह फ़ंक्शन, लेकिन यह मेरे लिए बहुत अच्छा काम करता है (उदाहरण के लिए आप .bashrc फ़ाइल डाल सकते हैं)

up() { local p= i=${1:-1}; while ((i--)); do p+=../; done; cd "$p$2" && pwd; }

उदा 7 निर्देशिकाओं को जाने के लिए up 7

1

टाइप करना आवश्यक है यह निफ्टी फ़ंक्शन दोनों दिशाओं में बढ़ने का समर्थन करता है।

आप /एक/बी/सी/डी फिर '1' में हैं, तो इतने पर /a/b/सी के लिए ले जाएगा, और। बहुत मानक है और अधिकांश अन्य उत्तरों में शामिल है।

अब, विशेष भाग के लिए; नकारात्मक संख्याओं का उपयोग करके आप दूसरी दिशा से ऊपर ले जाते हैं। इसलिए, यदि आप /a/b/c/d में हैं, तो 'अप -1' आपको / पर ले जाएगा, और इसी तरह।

function up() { 
    UP=$1 

    if [[ $UP =~ ^[\-0-9]+$ ]]; then 
     if ((UP<0)); then 
      UP=${UP#-} 
      cd $(echo $PWD | cut -d/ -f1-$((UP+1))) 
     else 
      cd $(printf "%0.s../" $(seq 1 ${UP})); 
     fi 
    fi 
} 

github पर डाउनलोड/इंस्टॉल करने के लिए उपलब्ध है।

1
मछली उपयोगकर्ताओं के लिए

,

function cdd 
    for x in (seq $argv) 
    cd .. 
    end 
end 

और अपने पर सहेजें: ~/.config/मछली/कार्य/cdd.fish

और बस $ cdd 3 3 निर्देशिकाओं जाने के लिए।

+1

मैंने फ़ंक्शन को संशोधित किया ताकि वह केवल सीडी को कॉल कर सके। यह पिछली निर्देशिका पर वापस जाने के लिए 'cd -' की क्षमता को संरक्षित करता है। –