Como obter os usuários "Caminho da área de trabalho"

4

Como posso obter o caminho para a área de trabalho dos usuários?

Eu usei isso:

echo $(awk "NR==$(awk 'BEGIN {FS=":"} {print $3}' /etc/passwd | awk "/^$(id -u USERSNAMEHERE)$/ {print NR}")" /etc/passwd | awk 'BEGIN {FS=":"} {print $6}')/Desktop

há algum melhor?

E se o nome dos usuários do Google Desktop não for "Desktop"?

Obrigado!

p.s .: usando o Fedora 14, mas existem métodos "gerais" para descobrir a área de trabalho dos usuários?

    
por LanceBaynes 19.01.2011 / 12:55

5 respostas

6

Experimente xdg-user-dirs .

Essa página tem um exemplo que deve funcionar para o usuário atual:

test -f ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs && \
    source ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs
echo ${XDG_DESKTOP_DIR:-$HOME/Desktop}

Além disso, se você tiver que ler /etc/passwd , é melhor usar a saída de getent passwd , porque alguns dados do usuário podem ser armazenados em NIS, LDAP ou algum outro banco de dados.

Combinando isso para que funcione para um usuário chamado USERSNAMEHERE :

USER=USERSNAMEHERE
USERDIR=$(getent passwd $USER | cut -f 6 -d :)
USERDIRCONF=${XDG_CONFIG_HOME:-$USERDIR/.config}/user-dirs.dirs
test -f "$USERDIRCONF" && . "$USERDIRCONF"
echo "${XDG_DESKTOP_DIR:-$USERDIR/Desktop}"
    
por 19.01.2011 / 13:22
2

Seu comando é incrivelmente complexo.

Aqui está uma versão simplificada:

getent passwd USERNAME | awk -F: '{print $6 "/Desktop"}'

Aqui está uma versão desembaraçada do seu original:

awk -v "id=$(id -u USERNAME)" -F: '{if ($3 == id) print $6 "/Desktop"}' /etc/passwd

ou

awk -v "name=USERNAME" -F: '{if ($1 == name) print $6 "/Desktop"}' /etc/passwd
    
por 19.01.2011 / 16:30
1

O utilitário xdg-user-dir pode ajudar você:

$ xdg-user-dir DESKTOP
/home/user/Desktop

Funciona apenas assim, se você estiver logado como usuário. Você pode enganá-lo, especificando XDG_CONFIG_HOME :

$ XDG_CONFIG_HOME=/home/user xdg-user-dir DESKTOP
/home/user/Desktop

Se você olhar para o script em si, ele faz aproximadamente a mesma coisa que o trecho na resposta de Mikel.

    
por 30.11.2016 / 12:16
0

o caminho é $HOME/Desktop

teste por echo hello > $HOME/Desktop/testing.txt

    
por 03.08.2014 / 00:57
-1

Você está tornando isso muito mais complexo do que tem que ser. ~UserName é um alias para o diretório inicial do UserName.

Use ~UserName/Desktop .

    
por 19.01.2011 / 14:25

Tags