Есть ли подстановочный знак в bash для смены каталогов?

Есть ли подстановочный знак в bash для смены каталогов?

Например, при использовании командной строки Bash я могу перейти в каталог, используя...

cd /volumes

Однако я хотел бы напечатать...

cd /vol*

но это не работает. Есть ли способ перемещаться по каталогам с помощью подстановочных знаков?

решение1

Mac OS по умолчанию использует файловую систему, нечувствительную к регистру. cd /volumesэквивалентно cd /Volumes, но bash не может подставить vol*: попробуйтеcd /Vol*

решение2

Как сказал @William Pursell, это происходит из-за того, что папка называется /Volumes, а не /volumes; файловая система OS X нечувствительна к регистру, поэтому она игнорирует разницу, но bash чувствителен к регистру и спотыкается о разницу.

Но вы можете изменить поведение bash по умолчанию: чтобы он делал расширения файловых шаблонов без учета регистра, добавьте команду shopt -s nocaseglobв файлы ~/.bashrc и ~/.bash_profile (она нужна в обоих, поэтому опция установлена ​​как в оболочках входа, так и в подоболочках). Если вы также хотите, чтобы автодополнение имен файлов работало несмотря на несоответствие регистра, добавьте ее либо set completion-ignore-case onв файл ~/.inputrc, либо bind "set completion-ignore-case on"в файлы ~/.bashrc и ~/.bash_profile.

решение3

Печатание:

cd /vol*

работаетпросто хорошо. Даже если /vol*расширяется на несколько каталогов, bashбудет использовать первый и игнорировать остальные. Что именно у вас не работает?

Связанный контент