.desktop
내가 사용하는 모든 사용자 데스크탑에서 파일을 복사하려면
ls -1 /home/ | while read line ; do cp ~/baz.desktop /home/$line/baz.desktop ; done
더 우아한 방법이 있을 것 같습니다.
건배,
시진핑
답변1
사용자의 지식 수준에 따라 다음을 수행할 수 있습니다.그들을파일을 계정에 강제로 추가하는 대신 파일을 복사하거나 중앙에서 설치할 수 있습니다.Mariaczi가 의견에서 제안한 것처럼.
제가 이해한 것이 맞다면 이 파일을 각 사용자의 홈 디렉터리에 복사해야 합니다. 나는 당신이 이것을 루트로하고 있다고 가정합니다. 작업이 완료되면 복제본이 각 사용자의 홈 디렉터리에 있어야 할 뿐만 아니라 해당 사용자가 소유해야 하며 users
권한 0644가 있는 그룹에 속해야 한다고 가정합니다.
이는 루프를 통해 수행할 수 있습니다 install
(홈 디렉토리가 아래에 있다고 가정 /home
). 이 install
유틸리티는 이와 비슷하게 작동 cp
하지만 사용자 및 그룹 소유권과 권한을 한 번에 설정할 수 있습니다.
for homedir in /home/*/; do
user=${homedir%/} # remove '/' from end of $homedir
user=${user#/home} # remove '/home' from start of $user
install -b -o "$user" -g users -m 644 ~/baz.desktop "$homedir"
done
install -b
파일이 이미 존재하는 경우 해당 파일의 백업이 대상에 생성됩니다. 또는 파일이 이미 존재하는 경우 설치를 완전히 건너뛸 수 있습니다.
for homedir in /home/*/; do
if [ ! -e "$homedir/baz.desktop" ]; then
user=${homedir%/} # remove '/' from end of $homedir
user=${user#/home} # remove '/home' from start of $user
install -o "$user" -g users -m 644 ~/baz.desktop "$homedir"
fi
done
관련된:
- 왜 `ls`를 구문 분석하지 *않나요*?
install
귀하의 시스템에 대한 매뉴얼입니다.
답변2
설명에서 제안한 대로 바로가기를 복사하여 시스템 전체에 바로가기를 설치할 수 있습니다 /usr/local/share/applications/
. 어떤 이유로든 여전히 각 사용자의 홈 디렉터리에 복사하는 것을 선호한다면 다음이 여러분이 찾고 있는 우아한 방법입니다.
$ ls -1 /home/ | xargs -rI{} sudo cp ~/baz.desktop /home/{}/
설명하다
ls -1 /home/
모든 사용자의 홈 디렉토리를 선택하여 하나씩 나열합니다.
xargs -rI{}
표준 입력의 각 항목에 대해 다음 명령을 개별적으로 실행하여 {}
항목의 텍스트(이 경우 사용자 디렉터리)를 바꿉니다.
cp ~/baz.desktop /home/{}/
~/baz.desktop을 사용자의 홈 디렉터리에 복사합니다.
답변3
ls /home/ | xargs -rI{} sudo cp /usr/share/applications/sol.desktop /home/{}/Desktop
이 버전은 sol.desktop을 기본 위치에서 홈 디렉토리에 나열된 모든 사용자에게 복사합니다.