Ракушка: аналог "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 {.,}*