Как я могу спустить один каталог

Я знаю, что команда для продвижения одного каталога cd ..

Там какая-либо команда должна спустить один каталог?

2
задан 29 June 2017 в 18:02

6 ответов

Путь, которым Вы хотите спуститься одним каталогом, не возможен, потому что существует только один родительский каталог, который обозначен .., но может быть несколько каталогов в каталоге, и таким образом необходимо упомянуть тот, который Вы имеете в виду. Необходимо использовать cd example для спуска одним на каталог example.

, Но существует ярлык: используйте Вкладку завершение для этого. Для спуска одним в example каталог Вы могли войти cd e и нажатие Вкладка и если example будет единственный каталог, начинающийся e, то оболочка автоматически завершит команду к cd example. Если будут другие, начинающие e, дважды <то kbd> Вкладка перечислит соответствия, и можно ввести ex или независимо от того, что необходимо, и нажмите Вкладку снова и так далее.

6
ответ дан 2 December 2019 в 01:24

Основное различие между перемещением вверх по каталогу и перемещением вниз по каталогу в дереве каталогов заключается в следующем:

  • Перемещение вверх - есть только одна опция, поэтому команда не не нужно упоминать имя папки:

    cd ..

  • Перемещение вниз - может быть несколько подкаталогов, поэтому сначала вам нужно выбрать подкаталог, чтобы изменить каталог вниз в example-dir , введите команду:

    cd example-dir

13
ответ дан 2 December 2019 в 01:24

Можно переместить причину вверх, потому что существует один каталог, но когда мы говорим о движении может быть больше чем один именно поэтому, мы имеем ls, мы перечислим весь доступный каталог, и затем мы изменяем каталог один вниз, в котором мы должны были пойти командой cd examle1.

$ ls
dir1 dir2 sir3
$ cd dir1
$ cd ..
$ cd dir2

И так далее.

2
ответ дан 2 December 2019 в 01:24

Это не отвечает точно на вопрос, который спросили, но как был указан кем-то еще, тот вопрос действительно не имел смысла так или иначе.

, Но вот ответ на соседний вопрос. К возвращаются к каталогу, откуда Вы приехали, используйте cd -

[mike@gwydion Work]$ cd ..
[mike@gwydion ~]$ cd -
/home/mike/Work
[mike@gwydion Work]$ 

, Если Вы хотите сохранить каталог для дальнейшего использования, сделайте некоторый материал, промежуточный в наборе других каталогов, и затем возвратитесь, используйте pushd и popd:

[mike@gwydion Work]$ pushd .
~/Work ~/Work
[mike@gwydion Work]$ cd ~/Temp/
[mike@gwydion Temp]$ run some command

[mike@gwydion Temp]$ cd ~/SourceCode/
[mike@gwydion SourceCode]$ run some command
[mike@gwydion SourceCode]$ popd
~/Work
[mike@gwydion Work]$ popd
bash: popd: directory stack empty
[mike@gwydion Work]$ 
0
ответ дан 2 December 2019 в 01:24

В более старых версиях удара (например: 4.3), Вы могли сделать cd * и это перешло бы к первому подкаталогу, который это нашло:

$ ls
dir1/   dir2/   dir3/

$ cd *

Теперь мы находимся в dir1/.

9
ответ дан 2 December 2019 в 01:24

Досадно вводить длинные имена подкаталогов с пробелами. Поэтому я создал небольшую функцию в ~/.bashrc, которая автоматически переходит на один уровень подкаталога вниз, если есть только один подкаталог. Если имеется более одного подкаталога, то используется zenity, чтобы выбрать один из них для перехода.

cdd () {

    OFS="$IFS"                                  # Save Input File Separator
    IFS=$'\n'
    # Bash array of directories names
    dirs=( $(find . -maxdepth 1 -type d | grep './' | cut -c 3- | sort) )

    # If no directories exit
    if [ "${#dirs}" -eq 0 ] ; then
        echo "No subdirectories"
        IFS="$OFS"                              # Restore Input File Separator
        return
    fi

    # Only one directory then change to it and exit
    if [ "${#dirs[@]}" -eq 1 ] ; then
        cd "${dirs[0]}"
        IFS="$OFS"                              # Restore Input File Separator
        return
    fi

    # Zenity to pick one of the directories
    result=$(zenity --list --width=600 --height=400 --title="down" \
             --column="Sub-Directories" "${dirs[@]}" \
             2> >(grep -v 'GtkDialog' >&2))     # Suppress Gtk annoying message
    IFS="$OFS"                                  # Restore Input File Separator
             
    if [ ! -z "$result" ] ; then                # Did they select an item?
        cd "$result"
    fi
}

Скопируйте приведенный выше код в свой файл ~/.bashrc, затем откройте терминал и введите cdd, чтобы использовать его.

Если терминал уже открыт, вы можете использовать измененный файл ~/.bashrc с помощью:

source ~/.bashrc

или

. ~/.bashrc

Usage

Когда вы вызываете cdd и там более одного подкаталога, вам нужно выбрать один:

cdd.png

На этом экране, если вы нажмете кнопку OK, это будет эквивалентно:

cd Seven\ Mary\ Three

или:

cd "Seven Mary Three"

При вызове cdd и там только один подкаталог он автоматически переходит в него:

rick@alien:~/Music/Seven Mary Three$ cdd
rick@alien:~/Music/Seven Mary Three/American Standard$ 

При вызове cdd и нет подкаталогов выдается ошибка:

rick@alien:~/Music/Seven Mary Three/American Standard$ cdd
No subdirectories
rick@alien:~/Music/Seven Mary Three/American Standard$ 
0
ответ дан 20 September 2020 в 00:09

Другие вопросы по тегам:

Похожие вопросы: