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