如何获取给定用户桌面的路径?
我用过这个:
echo $(awk "NR==$(awk 'BEGIN {FS=":"} {print $3}' /etc/passwd | awk "/^$(id -u USERSNAMEHERE)$/ {print NR}")" /etc/passwd | awk 'BEGIN {FS=":"} {print $6}')/Desktop
还有更好的吗?
谢谢!
解决方法
试试
xdg-user-dirs.
test -f ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs && \ source ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs echo ${XDG_DESKTOP_DIR:-$HOME/Desktop}
此外,如果您必须阅读/ etc / passwd,最好使用getent passwd的输出,因为某些用户数据可能存储在NIS,LDAP或其他一些数据库中.
结合使用它,它适用于名为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}"