両方のリスト ( /etc/passwd と /home ) を取得できますが、 /etc/passwd の行を読み取り、ホーム ディレクトリを解析し、 /home でそれを探すなどのスクリプトを作成する方法を教えてください。存在しない場合はエラーをスローし、存在する場合は先に進みます。
/etc/passwd ユーザーのホームディレクトリ一覧
cut -d":" -f6 /etc/passwd | grep home | sort
/home からのユーザー リスト
ls -1 /home | (while read line; do echo "/home/"$line; done)
おそらく、最初のコマンドからの出力をファイルに出力してから、各行を find コマンドに読み込みます...または、次のようにテストします
if [ -d "$DIRECTORY" ]; then
echo "directory found for user that doesn't exist"
fi
さて、どうやってまとめようか…
編集: isedev はまさに私が必要としていたものを持っていました。元のメッセージの言い方が間違っている可能性があります... ユーザーをクリーンアップしていますが、/home ディレクトリはクリーンアップしていません。したがって、 /etc/passwd エントリを持たない /home ディレクトリがまだ存在することを知りたいです。
これはTに働いたものです
for name in /home/*; do
if [ -d "$name" ]; then
cut -d':' -f6 /etc/passwd | egrep -q "^$name$"
if [ $? -ne 0 ]; then
echo "directory $name does not correspond to a valid user"
fi
fi
done
これから、私たちは走ります
userdel -r login