[bash]全てのローカルアカウントのゴミ箱をからにする
実行ユーザーの実行環境による違いに対応するのに苦労した
1:Jamf等を利用して実行する
2:ターミナルから実行
3:Applescriptで実行(do shell script)
4:リモートログインからのシェル利用
5:Payload-Free Installer Packageなんかでも使える構文だと思うけどどうかな?
UI利用だとdo shell scriptは指紋認証使えるので超便利
#!/bin/bash
#com.cocolog-nifty.quicktimer.icefloe
########################################
###管理者インストールしているか?チェック
USER_WHOAMI=$(/usr/bin/whoami)
/bin/echo "実行したユーザーは:$USER_WHOAMI"
if [ "$USER_WHOAMI" != "root" ]; then
/bin/echo "このスクリプトを実行するには管理者権限が必要です。"
/bin/echo "sudo で実行してください"
exit 1
else
###実行しているユーザー名
SUDO_USER=$(/bin/echo "$HOME" | /usr/bin/awk -F'/' '{print $NF}')
/bin/echo "実行ユーザー:" "$SUDO_USER"
fi
###コンソールユーザーにのみ処理する
CONSOLE_USER=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/ { print $3 }')
/bin/echo "CONSOLE_USER:$CONSOLE_USER"
if [ -z "$CONSOLE_USER" ]; then
/bin/echo "コンソールユーザーが無い=電源入れてログインウィンドウ状態"
else
/bin/echo "コンソールユーザーに対しての処理"
###エラーよけにゴミ箱に削除する物を作っておく
/usr/bin/sudo -u "$CONSOLE_USER" /usr/bin/touch "/Users/$CONSOLE_USER/.Trash/ForEmptyTrash.tmp"
##この1秒がないとゴミ箱がすでに空の場合にエラーが出る
/bin/sleep 1
###ゴミ箱からに
/usr/bin/sudo -u "$CONSOLE_USER" /usr/bin/osascript -e "tell application id \"com.apple.Finder\" to empty the trash"
fi
########################################
###ローカルのユーザーアカウントを取得
TEXT_RESULT=$(/usr/bin/dscl localhost -list /Local/Default/Users PrimaryGroupID | /usr/bin/awk '$2 == 20 { print $1 }')
###リストにする
read -d '\\n' -r -a LIST_USER <<<"$TEXT_RESULT"
###リスト内の項目数
NUM_CNT=${#LIST_USER[@]}
/bin/echo "ユーザー数:" "$NUM_CNT"
########################################
##リストの内容を順番に処理
for ITEM_LIST in "${LIST_USER[@]}"; do
/bin/echo "LIST_USER:MKDIR:" "${ITEM_LIST}"
if [ "$SUDO_USER" == "root" ]; then
###ユーザーチェンジして
/usr/bin/su - "${ITEM_LIST}"
fi
##ゴミ箱の中を空にする
/usr/bin/sudo -u "${ITEM_LIST}" /usr/bin/find "/Users/${ITEM_LIST}/.Trash" -mindepth 1 -delete
##ルートに戻す
if [ "$SUDO_USER" == "root" ]; then
###ユーザーチェンジして
/usr/bin/su - root
fi
done
/bin/echo "処理終了しました"
exit 0
| 固定リンク
「Bash」カテゴリの記事
- [zsh]テンポラリーフォルダをFinderで開く(2024.11.05)
- run commands の書き換え(2024.10.09)
- [bash]タイムアウトさせる(2024.09.16)
- [bash]exiftoolインストール(シングルファイル形式のPKG対応)(2024.07.29)
- パージョンを取得する(defaults , PlistBuddy,plutil)(2024.05.12)
「Admin Maintenance」カテゴリの記事
- [メンテナンス]ユーザーログファイルをゴミ箱に入れる(2024.11.30)
- [XProtect]アップデート macOS15.1.1(2024.11.20)
- [メンテナンス] Containers以下サンドボックスアプリのキャッシュを全部ゴミ箱に入れる(2024.11.09)
- [メンテナンス]Thumbs.dbやDS_Store等をゴミ箱に移動させる(2024.11.09)
「Trash」カテゴリの記事
- [考察]$HOME/Library/Containers/以下のファイル操作(削除)(2024.05.05)
- [メンテナンス] Containers 配下の全てのCachesをゴミ箱に入れる(2023.09.17)
- [Finder 設定]ゴミ箱を空にする時の警告の有無(2023.08.14)
- [bash]全てのローカルアカウントのゴミ箱を空にする 少し修正(警告出ないようにした)(2023.08.14)
- [bash]path to rash folder from user domain(2023.06.04)