Как вы входите в первую доступную папку без ввода имени?

20

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

Home (I am here)
 |
 |
  --> /reallylongnamefolder

Есть ли способ войти в эту папку вместо ввода:

 cd reallylongnamefolder
    
задан Arian Faurtosh 24.04.2014 в 18:20
источник

6 ответов

34

Я бы посоветовал набирать первые несколько букв и нажимать вкладку . У Bash есть функция автозаполнения, которая действительно полезна. Если это только каталог в текущем пути, просто нажатие tab заполнит всю директорию.

Ввод в cd и нажатие вкладки дважды отобразит все параметры в текущем каталоге.

вкладка , как правило, очень полезна в bash, поскольку вы получаете почти все исполняемые файлы одним или двумя нажатиями клавиш.

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

ответ дан masozravapalma 24.04.2014 в 18:35
источник
11

Я думаю, что я действительно понял это на самом деле

cd * 
cd */

Но я не тестировал его, если есть несколько файлов и одна папка!

Как @Rinzwind , упомянутый в комментариях!

Допустим, у вас три длинные папки:

 /thisislongfolder1
 /thisislongfolder2
 /thisislongfolder3

Если вы наберете первую букву файла, перейдите на вкладку , она автоматически заполнит имя файла! CRAZY STUFF!

Итак, в приведенном выше примере вы можете ввести: t вкладку , и она будет автозаполнять столько, сколько она может: cd thisislongfolder (затем введите номер самостоятельно).

Или вы можете сделать cd t*1 приведет вас в thisislongfolder1

Спасибо, Ринзвинд!

    
ответ дан Arian Faurtosh 24.04.2014 в 18:21
7
cd $(ls -d */|head -n 1)

ls -d */ перечисляет каталоги, head -n 1 дает первый в этом списке.

    
ответ дан ace 25.04.2014 в 10:12
1

У меня хорошая настройка для этого, он позволяет мне не только записывать cd на ~ / somereallylongfoldername, но и cd туда, даже когда я в папке / folder

первое, что я использую, это zsh с oh-my-zsh, это также позволит вам cd, не беспокоясь о случае или даже не набрав cd

  1. установить git и zsh
sudo apt-get install zsh git
  1. установите Oh My ZSH

curl -L http://install.ohmyz.sh | sh

  1. Измените оболочку по умолчанию на ZSH
chsh -s /bin/zsh

откройте и отредактируйте свой .zshrc, который находится в вашей домашней папке, но не скрыт

nano ~ / .zshrc

затем добавьте следующую строку в конец файла   export CDPATH=$CDPATH:/:/home/$USER/:/media/$USER/

Если вам нравится моя тема, вы также можете изменить строку #ZSH_THEME="robbyrussell" на ZSH_THEME="pygmalion"

Сохраните и закройте файл, затем перезапустите ie. закрыть и снова открыть оболочку или просто открыть новую вкладку и попробовать ее

вы не можете использовать клавишу табуляции для заполнения имен, а в ZSH вам даже не нужно иметь право на право, вы можете ввести документ и нажать вкладку, и она превратит ее в ~ / Documents

    
ответ дан zeitue 30.04.2014 в 02:27
0

Вы можете изменить каталог по номеру inode.
сначала мы находим индекс inode с ls -il .
то

cd $(find -inum directory_inode_number)
    
ответ дан user257256 25.04.2014 в 10:06
0

Если вам нужно сделать это в скрипте или поддерживать каталоги с недоказуемыми именами:

cd $(python -c $'import os\nfor entry in os.listdir(b"."):\n if os.path.isdir(entry):\n  os.write(1, entry);break\nelse: os.write(1, b".")')

Он работает, если в каталоге есть файлы, независимо от их порядка сортировки относительно каталогов.
Он работает для скрытых каталогов, когда cd */ не работает.
Он работает, если имя не отображается в текущей локали, когда ls печатает ?? вместо имени.

    
ответ дан jfs 30.04.2014 в 11:19