Рейтинг:1

Косая черта Bash не работает в квадратных скобках с подстановочными знаками

флаг ad

Мне любопытно, почему команда лс -пд *[!/] или же лс -пд *[!\/] не соответствует всем файлам, которые не заканчиваются на /.

Мой вариант использования заключается в том, что я хочу перечислить только файлы в текущем рабочем каталоге. Я знаю, что лучше использовать найти вместо лс но я хочу понять вообще можно ли использовать / в квадратных скобках в подстановочных знаках.

флаг fo
Вы можете получить больше внимания к этому вопросу в stackoverflow.
флаг fo
В руководстве [Filename Expansion](https://www.gnu.org/software/bash/manual/bash.html#Filename-Expansion) говорится: «При сопоставлении имени файла символ косой черты всегда должен явно сопоставляться с косая черта в шаблоне». Кроме этого, я не могу найти ничего, что говорит о том, что `*/` расширяется только до каталогов. Обратите внимание, что косая черта на самом деле не является частью имени файла. Сказав все это, я не знаю, как сформулировать шаблон глобуса, исключающий каталоги.
флаг fo
возможно `ls -pd1 * | grep -v '/$'`
Alex Misiulia avatar
флаг ad
@glennjackman спасибо за ответ. Но странно, что это не задокументировано ни в руководстве, ни в других источниках. Я могу сопоставить другие специальные символы, заключив их в квадратные скобки. Но обратная косая черта не работает.
флаг ph
@AlexMisiulia Косая черта на самом деле не является частью имени файла, это разделитель * после * имени файла, поэтому он по своей сути будет действовать иначе, чем символы, которые являются частью имени файла.
Alex Misiulia avatar
флаг ad
@GordonDavisson спасибо. Может быть, у вас есть ссылка на документацию, которая может подробно описать эту тему?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.