ホームディレクトリアドレスをtxtファイルに保存するには、他のユーザーとしてsudo

ホームディレクトリアドレスをtxtファイルに保存するには、他のユーザーとしてsudo

ユーザーのホームディレクトリを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またはを出力します~joebashユーザーが$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

関連情報