我试图将用户主目录保存到 users.txt 文件中,但我只是继续保存自己的主目录。该脚本要求用户输入他们的用户名,我已将其保存在 $username 中。当我跑步时
ls ~ >> users.txt
它显示ls home/student/am1014
(这是我的用户名)
我认为我需要使用 sudo 来存储它,但我不确定如何存储。
答案1
在:
sudo -u joe ls ~
~
在运行命令(此处sudo
)之前由 shell 展开,因此实际上运行:
sudo -u joe ls /home/me
joe
列出 的主目录的内容:
ls ~joe
或者,如果您没有他的主目录的读取权限:
sudo -u joe ls ~joe
或者对于正在运行的 shell作为joe
扩展~
:
sudo -u joe sh -c 'ls ~'
请注意,除了 in csh
//如果用户名位于变量中,tcsh
则zsh
无法使用该方法。ls ~joe
取决于外壳
user=joe
echo ~$user
会输出/home/mejoe
或~joe
.在 中bash
,如果有一个用户调用$user
(字面意思),则会返回他的主目录。
在这里你需要:
eval "ls ~$user"
(您事先已确保$user
包含有效的用户名)。
答案2
以下命令将读取/etc/passwd
并输出username : home-dir
awk -F: '{print $1":" $6}' /etc/passwd
输出将类似于:
root:/root
daemon:/usr/sbin
bin:/bin
sys:/dev
sync:/bin
games:/usr/games
您可以使用以下命令将输出重定向到文件:
awk -F: '{print $1":" $6}' /etc/passwd > result.txt