모든 사용자 간에 .desktop 파일을 복사하는 우아한 방법

모든 사용자 간에 .desktop 파일을 복사하는 우아한 방법

.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

관련된:

답변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을 기본 위치에서 홈 디렉토리에 나열된 모든 사용자에게 복사합니다.

관련 정보