Я знаю, что команда для продвижения одного каталога cd ..
Там какая-либо команда должна спустить один каталог?
Путь, которым Вы хотите спуститься одним каталогом, не возможен, потому что существует только один родительский каталог, который обозначен ..
, но может быть несколько каталогов в каталоге, и таким образом необходимо упомянуть тот, который Вы имеете в виду. Необходимо использовать cd example
для спуска одним на каталог example
.
, Но существует ярлык: используйте Вкладку завершение для этого. Для спуска одним в example
каталог Вы могли войти cd e
и нажатие Вкладка и если example
будет единственный каталог, начинающийся e
, то оболочка автоматически завершит команду к cd example
. Если будут другие, начинающие e
, дважды <то kbd> Вкладка перечислит соответствия, и можно ввести ex
или независимо от того, что необходимо, и нажмите Вкладку снова и так далее.
Основное различие между перемещением вверх по каталогу и перемещением вниз по каталогу в дереве каталогов заключается в следующем:
Перемещение вверх - есть только одна опция, поэтому команда не не нужно упоминать имя папки:
cd ..
Перемещение вниз - может быть несколько подкаталогов, поэтому сначала вам нужно выбрать подкаталог, чтобы изменить каталог вниз в example-dir , введите команду:
cd example-dir
Можно переместить причину вверх, потому что существует один каталог, но когда мы говорим о движении может быть больше чем один именно поэтому, мы имеем ls
, мы перечислим весь доступный каталог, и затем мы изменяем каталог один вниз, в котором мы должны были пойти командой cd examle1
.
$ ls
dir1 dir2 sir3
$ cd dir1
$ cd ..
$ cd dir2
И так далее.
Это не отвечает точно на вопрос, который спросили, но как был указан кем-то еще, тот вопрос действительно не имел смысла так или иначе.
, Но вот ответ на соседний вопрос. К возвращаются к каталогу, откуда Вы приехали, используйте 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]$
В более старых версиях удара (например: 4.3), Вы могли сделать cd *
и это перешло бы к первому подкаталогу, который это нашло:
$ ls
dir1/ dir2/ dir3/
$ cd *
Теперь мы находимся в dir1/
.
Досадно вводить длинные имена подкаталогов с пробелами. Поэтому я создал небольшую функцию в ~/.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
Когда вы вызываете cdd
и там более одного подкаталога, вам нужно выбрать один:
На этом экране, если вы нажмете кнопку 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$