Ракушка: аналог "shopt -s dotglob"

Я пытаюсь мигрировать с bash в fish,

Что fishаналог shopt? Я пытаюсь подражать этой линии из моего .bashrc:

shopt -s dotglob # for mv * see hidden files

1 ответ

Решение

Это намеренно. В большинстве случаев пользователи не хотят случайно сопоставлять скрытые файлы, которые невидимы для ls (без -a). Обычно файлы скрыты по какой-то причине, а не только для того, чтобы троллить вас. Кроме того, если * будет соответствовать скрытым файлам, сопоставление не скрытых файлов будет слишком сложно.

Тем не менее, в отличие от Баш shopt -s dotglob не требуется для сопоставления скрытых файлов. В Баш, shopt -s dotglob это единственный способ сопоставить каждый файл в каталоге без случайного совпадения . или же .., Тем не менее, раковина рыбы никогда не может сравниться . или же .. с шарами, поэтому это не проблема (если вам серьезно нужно сопоставить . или же .. по какой-то глупой причине, просто скажи им явно). Кроме того, рыба старается не иметь вариантов по дизайну, поэтому она не имеет dotglob,

Чтобы соответствовать каждому отдельному файлу в каталоге, вы можете использовать расширение в скобках для обнаружения файлов, начинающихся с точек, а тех, которые не являются. {.,} это расширение скобки, которое соответствует точке, которая может существовать или не существовать. Звезда после нее соответствует всему. Потому что шарики в рыбе не могут совпадать . или же .., следующий код соответствует всему, кроме этих двух каталогов (что, к сожалению, соответствует bash, если вы используете код ниже)

cat {.,}*
Другие вопросы по тегам