ユーザーのホームディレクトリをusers.txtファイルに保存しようとしていますが、私のホームディレクトリのみを保存しています。スクリプトを使用するには、ユーザーが$ usernameに保存したユーザー名を入力する必要があります。私が走るとき
ls ~ >> users.txt
表示されますls home/student/am1014
(これは私のユーザー名です)。
保存するにはsudoを使用する必要があるようですが、どうすればよいかわかりません。
答え1
存在する:
sudo -u joe ls ~
~
コマンド(ここ)を実行するsudo
前にシェルによって拡張されるので、実際には次のように実行します。
sudo -u joe ls /home/me
joe
リストされたホームディレクトリの内容:
ls ~joe
または彼のホームディレクトリに対する読み取り権限がない場合:
sudo -u joe ls ~joe
または実行中のシェルの場合〜のようにjoe
拡張~
:
sudo -u joe sh -c 'ls ~'
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