Вам понадобятся два шаблона глобуса для покрытия всех потенциальных «точечных файлов»: .[^.]*
и ..?*
.
Первый соответствует всем позициям в каталоге с двумя или более символами, где первый символ является точкой, а второй символ не является точкой. Второе записывает записи с тремя или более символами, начинающимися с ..
(это исключает ..
, поскольку оно имеет только два символа и начинается с .
, но включает (маловероятные) записи, такие как ..foo
).
chmod g+w .[^.]* ..?*
Это должно хорошо работать в большинстве оболочек и подходит для сценариев.
Для регулярного интерактивного использования шаблоны могут быть слишком сложными для запоминания. В этих случаях у вашей оболочки может быть более удобный способ пропустить .
и ..
. zsh всегда исключает .
и ..
из таких моделей, как .*
. С bash вы должны использовать переменную оболочки GLOBIGNORE.
# bash
GLOBIGNORE=.:..
echo .*
Вы могли бы рассмотреть вопрос о создании GLOBIGNORE в одном из ваших Баш файлов настройки (например, .bash_profile
/.bash_login
или .bashrc
). Остерегайтесь, однако, привыкнуть к этой настройке, если вы часто используете другие среды. Если вы запустили команду chmod g+w .*
в среде, в которой отсутствует ваша настройка, вы неожиданно закончите, включая .
и ..
в своей команде.
Кроме того, вы можете настроить оболочки для включения «точечных файлов» в шаблоны, которые не начинаются с явной точки (например, *
).
# zsh
setopt glob_dots
# bash
shopt -s dotglob
# show all files, even “dot files”
echo *
Собственно, что GLOBIGNORE - хороший. Вы можете сделать это временно с помощью '(GLOBIGNORE = ..; echo. *)', Если вы не хотите делать его постоянным. +1 для этой маленькой части информации. – paxdiablo
Существует оговорка с «. [^.] * ..? * 'Glob, где он обычно будет жаловаться на несоответствие части ...? *, Если вы не будете покупать nullglob. – pixelbeat