Intereting Posts
Как установить AMD Catalyst 15.7 (fglrx 15.20.1046) на Kali 2.0 (Sana)? Linux для Linux USB-накопителя? Название подпапки RPM Как установить программное обеспечение Netbackup в Solaris? Я получаю странный установочный экран на Kali Linux, и когда я устанавливаю полностью, я получаю синий экран? Что содержит исходное дерево ядра? Связано ли это с заголовками ядра Linux? Скрипт для почтовых ящиков курьера в среде CentOS LAMP Как изменить настройки, чтобы разрешить запись на жесткий диск USB в Debian Импульсные аудио и роуминг-профили на CentOS 6 Путаница в отношении именования: увеличение каталога / раздела / файловой системы / блочного устройства? Как автоматически переключаться между DHCP-сервером и клиентским режимом при запуске нескольких устройств? Установка DISPLAY в системном файле systemd клонирование раздела в раздел разного формата Не удалось удалить dovecot-managedieved Как подключить и отправить данные на последовательный порт bluetooth в Linux?

Как скопировать файл в домашний каталог каждого пользователя в BASH?

Я пытаюсь скопировать файл в домашний каталог каждого пользователя. В идеале, файл будет chown / chgrp, но на самом деле это не вопрос, который я задаю. мой реальный вопрос – как выбрать каждый подкаталог с подстановочным знаком.

$ touch testfile $ sudo cp testfile /home/*/ 

Это успешно копирует файл в каталог текущего пользователя, но для каждого другого пользователя я получаю

 cp: omitting directory '/home/user2/' cp: omitting directory '/home/user3/' 

И так далее. Заранее спасибо за ответ (ы).

cp не принимает несколько целей, поэтому вам нужно будет обеспечить цикл самостоятельно. Прямой эквивалент того, что вы пытаетесь сделать, должен быть

 for homedir in /home/*; do sudo cp testfile "$homedir"; done 

с обычными предостережениями: если у вас нет пробелов в именах пользователей, если домашние каталоги – это те, которые находятся в /home (в противном случае вам нужно получить местоположение домашнего каталога из /etc/passwd , но это касается пользователей системы, d хотите посмотреть только те, у которых достаточно UID с высоким уровнем, и где пользовательские UID запускаются зависящими от распределения).

Спасибо @UlrichSchwarz за идею сделать это в цикле. Для моего собственного спокойствия я добавил чек, чтобы обычные файлы не перезаписывались.

 # First command-line arg is the file to be copied for homedir in /home/* ; do if [ -d "$homedir" ] ; then cp $1 "$homedir" user=$(ls -ld $homedir | awk '{print $3}') chown --verbose $user:$user $homedir/$1 fi done 

Это также открывает дверь для относительно легко решить мою «приятную возможность», которая меняла группу и пользовательскую собственность.