Ada*_*ski 8 command-line scripting bash hosts
我可以使用 augtool 解析 /etc/passwd:
myuser=bob
usershome=`augtool -L -A --transform "Passwd incl /etc/passwd" print "/files/etc/passwd/$myuser/home" | sed -En 's/\/.* = (.*)/\1/p'`
Run Code Online (Sandbox Code Playgroud)
……不过好像有点太绕了。
有没有简单的专用工具来显示用户的家(比如usermod可以用来改变它)?
phe*_*mer 15
你永远不应该/etc/passwd直接解析。您可能在一个有远程用户的系统上,在这种情况下,他们不会在/etc/passwd. 该/etc/passwd文件可能在其他地方。等等。
如果您需要直接访问用户数据库,请使用getent.
$ getent passwd phemmer
phemmer:*:1000:4:phemmer:/home/phemmer:/bin/zsh
$ getent passwd phemmer | awk -F: '{ print $6 }'
/home/phemmer
Run Code Online (Sandbox Code Playgroud)
然而,还有另一种不涉及解析的方法:
$ user=phemmer
$ eval echo "~$user"
/home/phemmer
Run Code Online (Sandbox Code Playgroud)
~shell 中的操作符扩展到指定用户的主目录。但是我们必须使用 ,eval因为变量的$user扩展发生在 的扩展之后~。因此,通过使用eval和双引号,您可以先有效地扩展$user,然后调用eval echo "~phemmer".
一旦你有了主目录,简单/.ssh地添加到最后。
$ sshdir="$(eval echo "~$user/.ssh")"
$ echo "$sshdir"
/home/phemmer/.ssh
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
680 次 |
| 最近记录: |