Я намагаюся мігрувати з bash
на fish
.
Що таке fish
аналог shopt
? Я намагаюся наслідувати цей рядок із мого .bashrc
:
shopt -s dotglob # for mv * see hidden files
Я намагаюся мігрувати з bash
на fish
.
Що таке fish
аналог shopt
? Я намагаюся наслідувати цей рядок із мого .bashrc
:
shopt -s dotglob # for mv * see hidden files
Відповіді:
Це навмисно. Здебільшого користувачі не хочуть випадково відповідати прихованим файлам, невидимим для ls
(без -a
). Зазвичай файли приховуються з причини, а не просто для того, щоб вас тролити. Крім того, якщо *
відповідатимуть прихованим файлам, відповідати не прихованим файлам було б занадто складно.
Однак, на відміну від bash shopt -s dotglob
, не потрібно відповідати прихованим файлам. В bash, shopt -s dotglob
це єдиний спосіб зіставлення кожного файлу в каталозі без випадкового відповідності .
або ..
. Однак шкаралупа риби ніколи не може співпадати .
або ..
з глобусами, тому це не проблема (якщо вам серйозно потрібно збігатися .
або ..
з якихось дурних причин, просто скажіть їх прямо). Крім того, риба намагається уникати варіантів за дизайном, тому її немає dotglob
.
Щоб відповідати кожному файлу в каталозі, ви можете використовувати розширення дужок для виявлення файлів, що починаються з крапок, і тих, які ні. {.,}
це розширення дужок, яке відповідає крапці, яка може існувати або не існувати. Зірка після неї відповідає всім. Оскільки глобуси в рибі не можуть збігатися .
або ..
, наступний код відповідає всім, крім тих двох каталогів (які, на жаль, збігаються, якщо ви використовуєте код нижче)
cat {.,}*
{,.}*
вручну.