![Есть ли подстановочный знак в bash для смены каталогов?](https://rvso.com/image/1317173/%D0%95%D1%81%D1%82%D1%8C%20%D0%BB%D0%B8%20%D0%BF%D0%BE%D0%B4%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BE%D1%87%D0%BD%D1%8B%D0%B9%20%D0%B7%D0%BD%D0%B0%D0%BA%20%D0%B2%20bash%20%D0%B4%D0%BB%D1%8F%20%D1%81%D0%BC%D0%B5%D0%BD%D1%8B%20%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D0%BE%D0%B2%3F.png)
Например, при использовании командной строки 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
будет использовать первый и игнорировать остальные. Что именно у вас не работает?