Come get gli utenti dati "path del desktop"

Come posso get il path del desktop degli utenti?

Ho usato questo:

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

ci sono migliori?

Cosa succede se il nome di Desktop utenti non è "Desktop"?

Grazie!

ps: utilizzando Fedora 14 ma ci sono methods "generali" per scoprire i desktop degli utenti?

  • Perché ci sono sempre il 10% della perdita quando si prova con il command mtr?
  • Quali porte per IPSEC / LT2P?
  • L'incollaggio NIC non può superare i 1 Gbps
  • Disabilita il login di nis per un determinato utente su una determinata macchina
  • Come controllare i risultati di fsck, corse all'avvio, in macchina remota?
  • Linux NFLOG - documentazione, configuration da C
  • Come cancellare il registro events del sistema DMI da linux?
  • Firmware eseguibili sotto Linux (o altri OS)
  • 5 Solutions collect form web for “Come get gli utenti dati "path del desktop"”

    Prova xdg-user-dirs .

    Questa pagina ha un esempio che dovrebbe funzionare per l'utente corrente:

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

    Inoltre, se si deve leggere /etc/passwd , è meglio utilizzare l'output di getent passwd , perché alcuni dati utente potrebbero essere memorizzati in NIS, LDAP o in un altro database.

    Combinando così funziona per un utente chiamato 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}" 

    Il tuo command è imansible complesso.

    Ecco una versione semplificata:

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

    Ecco una versione incastrata del tuo originale:

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

    o

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

    il path è $HOME/Desktop

    prova da echo hello > $HOME/Desktop/testing.txt

    L' xdg-user-dir può aiutarti:

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

    Funziona così solo se sei registrato come utente però. È ansible ingannare specificando XDG_CONFIG_HOME :

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

    Se si guarda lo script in sé, è ugualmente la stessa cosa dello snippet della risposta di Mikel.

    Lo stai facendo più complesso di quello che deve essere. ~UserName è un alias per la home directory di UserName.

    Usa ~UserName/Desktop .

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.