fish shell: аналог "shopt -s dotglob"

5

Я пытаюсь перейти от bash к fish .

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

shopt -s dotglob # for mv * see hidden files
    
задан netimen 30.12.2013 в 14:11
источник

1 ответ

5

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

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

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

mv {.,}*
    
ответ дан xfix 18.05.2014 в 11:44
источник