
我試圖將用戶主目錄保存到 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