Як увійти в першу доступну папку без введення імені?


30

Нещодавно я був у затрудненому стані, де я знаходився всередині папки, і хотів перейти cdдо папки підкаталогу. Всередині цієї папки була лише одна папка, і це було дійсно довге ім'я.

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

Чи є спосіб перейти до цієї папки, а не вводити текст:

 cd reallylongnamefolder

1
багато способів: cd */або cd rea*/якщо ви не впевнені, що у вас є лише 1 піддіректор (якщо ви використовуєте bash, ви також можете cd rea[TAB].. в інших оболонках, але спосіб розширення назви може відрізнятися). Якщо "/ Reallongnamefolder" - це абсолютний шлях, те саме, але з "/" попереду, наприклад:cd /rea*/
Олів'є Дулак,

Відповіді:


38

Я б радив або набрати перші кілька літер, і натиснути tab. У Bash є функція автозаповнення, яка справді корисна. Якщо це лише каталог у поточному шляху, просто натискання tabзаповнить весь каталог.

Якщо ввести cdта натиснути tabдвічі, буде показано всі параметри у поточному каталозі.

tab як правило, дуже корисний у баші, оскільки у вас є доступ до майже всіх виконуваних файлів за одну чи дві клавіші.

cd *як запропоновано вище, працює лише в тому випадку, якщо каталог знаходиться в списку, а не прихований. Якщо перед вашим каталогом є файл в алфавітному порядку, це cdзовсім не змінить ваш каталог.


15
Вам навіть не потрібно вводити будь-які букви, якщо є лише один каталог: cd <tab>буде досить розумним.
amalloy

1
Працює і в Windows. (для людей, які походять з google ..)
Корай Тугай

16

Я думаю, що я насправді зрозумів це

cd * 
cd */

Але я не перевіряв це, чи є кілька файлів і одна папка!


Як @Rinzwind згадував у коментарях!

Скажімо, у вас є три довгі папки:

 /thisislongfolder1
 /thisislongfolder2
 /thisislongfolder3

Якщо ви введете першу букву файлу, натисніть tabїї, вона автоматично заповнить ім'я файлу! CRAZY STUFF!

Отже, у наведеному вище прикладі ви можете ввести: t tabі він автоматично заповниться наскільки це можливо: cd thisislongfolder(потім введіть номер самостійно).

Або ти можеш cd t*1взяти до тебеthisislongfolder1

Дякую, Рінцвінд!


6
cd first_letter_or_some_letters, а потім {tab} є найпростішим (також вирішує вашу проблему з великою кількістю папок. Ви навіть можете змішувати літери з більш ніж 1 вкладкою та літерами. Система автоматично заповнить, наскільки це можливо. Ви також можете зробити це cd r*rі сподіваємось, що це єдина папка, що починається і закінчується р.
Rinzwind

@Rinzwind wow! Я цього не знав! Спасибі!
Аріан Фауртош

Спробуй. Додайте свої результати до своєї відповіді, і ви, ймовірно, отримаєте певну репутацію за це ;-)
Rinzwind

4
cd */може зробити трюк
gniourf_gniourf

3
cd *ймовірно, виходить з ладу частіше, ніж це вдається.
Девід Річербі

14
cd $(ls -d */|head -n 1)

ls -d */перераховує каталоги, head -n 1дає перший у цьому списку.


Так, і ти збираєшся набрати це ... Я б краще перейти на вкладку та шукати ім’я, ніж вводити це. Це на 100% вірно, приємна відповідь!
tomsmeding

1
@tomsmeding Якщо ви пишете сценарій, який потрібно вбити cdв перший каталог, ви не можете робити вкладки.
користувач12205

-n 1 показує останній 1 файл цього файлу. Якщо ви хочете використовувати це для змінного порядку, ви можете використовувати: cd $ (ls -d -1 * / | sed -n '4p') для відкриття 4-ї папки в каталозі. Додавання його до псевдоніму може пришвидшити роботу з навігацією по папках.
Іван Івкович

2

У мене є гарне налаштування для цього, це дозволяє мені не тільки cd до ~ / somereallylongfoldername, але і CD там, навіть коли я в папці /

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

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

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

  1. Змініть оболонку за замовчуванням на ZSH
chsh -s /bin/zsh

відкрийте та відредагуйте .zshrc, який знаходиться у вашій домашній папці, не прихований

nano ~ / .zshrc

потім додайте наступний рядок у нижній частині файлу export CDPATH=$CDPATH:/:/home/$USER/:/media/$USER/

Якщо вам подобається моя тема, ви також можете змінити рядок #ZSH_THEME="robbyrussell"наZSH_THEME="pygmalion"

Збережіть і закрийте файл, потім перезавантажте, тобто. закрийте та повторно відкрийте оболонку або просто відкрийте нову вкладку та спробуйте

не ви можете скористатися клавішею табуляції для заповнення імен, а в ZSH вам навіть не доведеться мати справа, ви можете ввести docu і натиснути вкладку, і це перетворить його в ~ / Документи

введіть тут опис зображення


0

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

cd $(find -inum directory_inode_number)

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друкується ??замість імені.


0

Продовження відповіді туза:

cd $(ls -d -1 */ |sed -n '1p')

щоб відкрити 1-ю папку в каталозі. '1p' може бути змінено на '2p' для другого каталогу.

ls -d -1 -la */

перелічити лише каталоги з батьківського каталогу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.