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

9

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

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

shopt -s dotglob # for mv * see hidden files
netimen
источник
Уверен, что нет ни одного. документация говорит о том, что точечные файлы не включены, без упоминания о каком-либо механизме конфигурации. Вам, вероятно, придется поработать {,.}*вручную.
Гленн Джекман
1
Обратите внимание, вы можете спросить на stackoverflow.com, некоторые из сопровождающих рыб тусуются там.
Гленн Джекман

Ответы:

8

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

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

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

cat {.,}*
Конрад Боровски
источник