рибний панцир: аналог "shopt -s dotglob"


9

Я намагаюся мігрувати з bashна fish.

Що таке fishаналог shopt? Я намагаюся наслідувати цей рядок із мого .bashrc:

shopt -s dotglob # for mv * see hidden files

Досить впевнений, що його немає. документація говорить про те, що файли крапок не включаються, не згадуючи жодного механізму налаштування. Вам, мабуть, доведеться глобувати {,.}*вручну.
Глен Джекман

1
Зауважте, ви можете запитати на сайті stackoverflow.com, де хто з рибоохоронців тусується там.
glenn jackman

Відповіді:


8

Це навмисно. Здебільшого користувачі не хочуть випадково відповідати прихованим файлам, невидимим для ls(без -a). Зазвичай файли приховуються з причини, а не просто для того, щоб вас тролити. Крім того, якщо *відповідатимуть прихованим файлам, відповідати не прихованим файлам було б занадто складно.

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

Щоб відповідати кожному файлу в каталозі, ви можете використовувати розширення дужок для виявлення файлів, що починаються з крапок, і тих, які ні. {.,}це розширення дужок, яке відповідає крапці, яка може існувати або не існувати. Зірка після неї відповідає всім. Оскільки глобуси в рибі не можуть збігатися .або .., наступний код відповідає всім, крім тих двох каталогів (які, на жаль, збігаються, якщо ви використовуєте код нижче)

cat {.,}*
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.