Admin Account

[bash]新規ユーザー追加


#!/bin/bash
#com.cocolog-nifty.quicktimer.icefloe
#設定するユーザーID
#学籍や社員番号があれば関連づけるのも有効だけど
#セキュリティ上はユーザーと紐づかない番号が推奨
STR_SET_UID="555"
#ユーザー名ショート
STR_USER_NAME="quick_timer"
#ユーザー名フル
STR_USER_FULLNAME="QuickTimer"
#グループID
STR_GID="20"
#シェル
STR_SHELL_PATH="/bin/zsh"
#パスワード
STR_PASSWORD="1234"
#パスワードヒント
STR_HINT="初期パスワードは書類に記載されています"
#ホームパス
STR_HOME_PATH="/Users/$STR_USER_NAME"
#アイコンパス
STR_PICTURE_PATH="/Library/User Pictures/Sports/Target.heic"

#################################################
###管理者インストールしているか?チェック
#################################################
USER_WHOAMI=$(/usr/bin/whoami)
/bin/echo "実行ユーザー(whoami): $USER_WHOAMI"
if [ "$USER_WHOAMI" != "root" ]; then
/bin/echo "このスクリプトを実行するには管理者権限が必要です。"
/bin/echo "sudo で実行してください"
  ### path to me
SCRIPT_PATH="${BASH_SOURCE[0]}"
/bin/echo "/usr/bin/sudo \"$SCRIPT_PATH\""
/bin/echo "↑を実行してください"
exit 1
else
  ###実行しているユーザー名
CONSOLE_USER=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/ { print $3 }')
/bin/echo "コンソールユーザー(scutil): $CONSOLE_USER"
  ###実行しているユーザー名
HOME_USER=$(/bin/echo "$HOME" | /usr/bin/awk -F'/' '{print $NF}')
/bin/echo "実行ユーザー(HOME): $HOME_USER"
  ###logname
LOGIN_NAME=$(/usr/bin/logname)
/bin/echo "ログイン名(logname): $LOGIN_NAME"
  ###UID
USER_NAME=$(/usr/bin/id -un)
/bin/echo "ユーザー名(id): $USER_NAME"
  ###STAT
STAT_USR=$(/usr/bin/stat -f%Su /dev/console)
/bin/echo "STAT_USR(console): $STAT_USR"
fi
########################################
/bin/echo "ユーザーIDの重複チェック"
########################################
TEXT_RESULT=$(/usr/bin/dscl localhost -list /Local/Default/Users UniqueID)
#リストにして
DEFAULT_IFS=$IFS
IFS=$'\n'
read -d '\n' -r -a LIST_USER <<<"$TEXT_RESULT"
IFS=$DEFAULT_IFS
#総当たりで調べます
for ITEM_LIST in "${LIST_USER[@]}"; do
  #ユーザーが存在するか?
  if [[ $ITEM_LIST == *"$STR_SET_UID"* ]]; then
TEXT_USER_INFO=$ITEM_LIST
  fi
done
#ユーザーが発見された場合
if [ -z "$TEXT_USER_INFO" ]; then
/bin/echo "未設定ですので処理を開始します"
else
/bin/echo "ユーザー:" "$TEXT_USER_INFO"
/bin/echo "$STR_SET_UID""ユーザーがいるので処理を終了します"
exit 1
fi
########################################
/bin/echo "ユーザーアカウント作成"
########################################
/usr/bin/sudo /usr/sbin/sysadminctl -addUser "$STR_USER_NAME" -fullName "$STR_USER_FULLNAME" -UID "$STR_SET_UID" -GID "$STR_GID" -shell "$STR_SHELL_PATH" -home "$STR_HOME_PATH" -picture "$STR_PICTURE_PATH" -password "$STR_PASSWORD" -hint "$STR_HINT" -admin
########################################
/bin/echo "パスワードリセット"
########################################
##ルートで処理する場合(非推奨)
## /usr/bin/printf "ルートパスワード" | /usr/bin/sudo /usr/bin/pwpolicy -a root -u "$STR_USER_NAME" -setpolicy "newPasswordRequired=1"
##初回ログイン時にパスワード設定
# /usr/bin/sudo /usr/bin/pwpolicy -u "$STR_USER_NAME" -setpolicy "newPasswordRequired=1"

########################################
/bin/echo "ユーザーフォルダ作成"
########################################
/bin/mkdir -p "$STR_HOME_PATH"
# 規定は700 アパッチ運用ある場合は755
/bin/chmod 755 "$STR_HOME_PATH"
/bin/chmod +a "group:everyone deny delete" "$STR_HOME_PATH"
#ユーザーテンプレートをコピー
/usr/bin/ditto "/Library/User Template/Japanese.lproj/.CFUserTextEncoding" "$STR_HOME_PATH/.CFUserTextEncoding"
########################################
/bin/echo "サブフォルダ作成"
########################################
LIST_SUB_DIR_NAME=("Library" "Desktop" "Documents" "Downloads" "Movies" "Music" "Pictures" "Public" "Groups" "Developer" "Sites" "Applications" "bin")
for ITEM_DIR_NAME in "${LIST_SUB_DIR_NAME[@]}"; do
STR_CHK_PATH="$STR_HOME_PATH/${ITEM_DIR_NAME}"
/bin/mkdir -p "$STR_CHK_PATH"
/bin/chmod 700 "$STR_CHK_PATH"
/bin/chmod +a "group:everyone deny delete" "$STR_CHK_PATH"
  #localized生成
/usr/bin/touch "$STR_CHK_PATH/.localized"
done
########################################
/bin/echo "Library サブフォルダ作成 "
########################################
LIST_SUB_DIR_NAME=("Compositions" "PreferencePanes" "Application Support" "Favorites" "Preferences" "Assistants" "FontCollections" "Printers" "Fonts" "Screen Savers" "Autosave Information" "Input Methods" "Services" "Caches" "Internet Plug-Ins" "Sounds" "ColorPickers" "Keyboard Layouts" "Spelling" "Colors" "Logs" "Group Containers" "Managed Items" "Managed Items/My Applications" "Managed Items/My Network" "Managed Items/Documents" "Audio" "Audio/MIDI Drivers" "Audio/Plug-Ins/Components" "Audio/Plug-Ins/Digidesign" "Audio/Plug-Ins/VST" "Audio/Sounds/Alerts" "Audio/Sounds/Banks")
for ITEM_DIR_NAME in "${LIST_SUB_DIR_NAME[@]}"; do
STR_CHK_PATH="$STR_HOME_PATH/Library/${ITEM_DIR_NAME}"
/bin/mkdir -p "$STR_CHK_PATH"
/bin/chmod 700 "$STR_CHK_PATH"
/bin/chmod +a "group:everyone deny delete" "$STR_CHK_PATH"
done
##可視にする場合
/usr/bin/chflags nohidden "/Users/$CONSOLE_USER/Library"
/usr/bin/SetFile -a v "/Users/$CONSOLE_USER/Library"
#不可視にする場合
# /usr/bin/chflags hidden "/Users/$CONSOLE_USER/Library"
# /usr/bin/SetFile -a V "/Users/$CONSOLE_USER/Library"
# binは不可視にする
/usr/bin/chflags hidden "/Users/$CONSOLE_USER/bin"
/usr/bin/SetFile -a V "/Users/$CONSOLE_USER/bin"
#ユーザーテンプレートをコピー
/usr/bin/ditto "/Library/User Template/Japanese.lproj/Library/FontCollections" "$STR_HOME_PATH/Library/FontCollections"
/usr/bin/ditto "/Library/User Template/Japanese.lproj/Library/Preferences" "$STR_HOME_PATH/Library/Preferences"

########################################
/bin/echo "Public サブフォルダ作成 "
########################################
/bin/chmod 755 "$STR_HOME_PATH/Public"
/bin/mkdir -p "$STR_HOME_PATH/Public/Drop Box"
/bin/chmod 733 "$STR_HOME_PATH/Public/Drop Box"
/bin/chmod +a "group:everyone deny delete" "$STR_HOME_PATH/Public/Drop Box"
/bin/chmod +a "user:$STR_USER_NAME allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit" "$STR_HOME_PATH/Public/Drop Box"
/usr/bin/touch "$STR_HOME_PATH/Public/Drop Box/.localized"

########################################
/bin/echo "アクセス権 オーナー指定"
########################################
/usr/sbin/chown -Rf "$STR_USER_NAME" "$STR_HOME_PATH"
/usr/bin/chgrp -Rf staff "$STR_HOME_PATH"
##
########################################
/bin/echo "Sites サブフォルダ作成 "
#Sites以下は削除可能でOK
########################################
# 規定は700 アパッチ運用ある場合は755
/bin/chmod 755 "$STR_HOME_PATH/Sites"
LIST_SUB_DIR_NAME=("images" "css" "js" "Streaming")
for ITEM_DIR_NAME in "${LIST_SUB_DIR_NAME[@]}"; do
STR_CHK_PATH="$STR_HOME_PATH/Sites/${ITEM_DIR_NAME}"
/bin/mkdir -p "$STR_CHK_PATH"
/bin/chmod 755 "$STR_CHK_PATH"
/usr/bin/chgrp -Rf _www "$STR_CHK_PATH"
done
/bin/chmod +a "group:_qtss allow read,write,execute" "$STR_HOME_PATH/Sites/Streaming"

  
exit 0




|

[sysadminctl]ゲストアカウントを無効にする


#!/bin/bash
#com.cocolog-nifty.quicktimer.icefloe
#
#################################################
###管理者インストールしているか?チェック
USER_WHOAMI=$(/usr/bin/whoami)
/bin/echo "実行ユーザー(whoami): $USER_WHOAMI"
if [ "$USER_WHOAMI" != "root" ]; then
/bin/echo "このスクリプトを実行するには管理者権限が必要です。"
/bin/echo "sudo で実行してください"
  ### path to me
SCRIPT_PATH="${BASH_SOURCE[0]}"
/bin/echo "/usr/bin/sudo \"$SCRIPT_PATH\""
/bin/echo "↑を実行してください"
exit 1
fi
########################################
##処理開始時のステータス
/usr/sbin/sysadminctl -guestAccount status

##ゲストアカウントをOFFにします
/usr/sbin/sysadminctl -guestAccount off
##起動時に削除する項目をROOTで作っておいて
ROOT_TRASH_DIR=$(/usr/bin/mktemp -d)
##Guestユーザーのホームディレクトリ
##エラーよけでタッチしておく
/usr/bin/touch /Users/Guest
##次回起動時に削除させる
/bin/mv /Users/Guest "$ROOT_TRASH_DIR"

##処理終了時のステータス
/usr/sbin/sysadminctl -guestAccount status

exit 0


|

[Mobileconfig]ゲストアカウントを無効にする

Screen-2_20240107161001

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>ConsentText</key>
  <dict>
    <key>default</key>
    <string>ccom.apple.MCX.DisableGuestAccount初期設定 (default)
この設定は削除しないでください
設定には管理者パスワードが必要です
</string>
    <key>en</key>
    <string>com.apple.MCX.DisableGuestAccount Preferences (en)
Please do not delete this setting.
Administrator password is required for this configuration.
</string>
    <key>ja</key>
    <string>com.apple.MCX.DisableGuestAccount 初期設定 (ja)
この設定は削除しないでください
設定には管理者パスワードが必要です
</string>
  </dict>
  <key>HasRemovalPasscode</key>
  <false/>
  <key>PayloadContent</key>
  <array>
    <dict>
      <key>DisableGuestAccount</key>
      <true/>
      <key>EnableGuestAccount</key>
      <false/>
      <key>PayloadDescription</key>
      <string>com.apple.MCX.DisableGuestAccount</string>
      <key>PayloadDisplayName</key>
      <string>com.apple.MCX.DisableGuestAccount</string>
      <key>PayloadIdentifier</key>
      <string>com.apple.MCX.8503A9FE-1AA5-409A-97FD-4917B3878E1C</string>
      <key>PayloadType</key>
      <string>com.apple.MCX</string>
      <key>PayloadUUID</key>
      <string>8503A9FE-1AA5-409A-97FD-4917B3878E1C</string>
      <key>PayloadVersion</key>
      <integer>20240107</integer>
    </dict>
  </array>
  <key>PayloadDescription</key>
  <string>com.apple.MCX.DisableGuestAccount</string>
  <key>PayloadDisplayName</key>
  <string>com.apple.MCX.DisableGuestAccount</string>
  <key>PayloadIdentifier</key>
  <string>disable.219E5038-C7E8-4DD8-AAA7-C5CB1F702FBA</string>
  <key>PayloadOrganization</key>
  <string>com.cocolog-nifty.quicktimer</string>
  <key>PayloadRemovalDisallowed</key>
  <false/>
  <key>PayloadScope</key>
  <string>System</string>
  <key>PayloadType</key>
  <string>Configuration</string>
  <key>PayloadUUID</key>
  <string>219E5038-C7E8-4DD8-AAA7-C5CB1F702FBA</string>
  <key>PayloadVersion</key>
  <integer>20240107</integer>
  <key>TargetDeviceType</key>
  <integer>0</integer>
</dict>
</plist>


|

OAH = com.apple.oahd(rosetta)

/usr/libexec/rosetta/oahd
/System/Library/LaunchDaemons/com.apple.oahd.plist
/System/Library/LaunchDaemons/com.apple.oahd-root-helper.plist
/System/Library/ProxySigningStubs/Library/Apple/usr/libexec/oah/libRosettaRuntime
/System/Library/PrivateFrameworks/OAHSoftwareUpdate.framework
UTI:com.apple.oahd
ユーザーname:_oahd
ユーザーRealName:OAH Daemon
ユーザーID:441
関連
com.apple.rosetta.report

【スクリプトエディタで開く】|

#!/bin/bash
#com.cocolog-nifty.quicktimer.icefloe
########################

ARCHITEC=$(/usr/bin/arch)
/bin/echo "Running on $ARCHITEC"
if [ "$ARCHITEC" == "arm64" ]; then
/usr/sbin/softwareupdate --install-rosetta --agree-to-license
fi
exit 0

ユーザー一覧
nobody-2
root0
daemon1
_uucp4
_taskgated13
_networkd24
_installassistant25
_lp26
_postfix27
_scsd31
_ces32
_appstore33
_mcxalr54
_appleevents55
_geod56
_devdocs59
_sandbox60
_mdnsresponder65
_ard67
_www70
_eppc71
_cvs72
_svn73
_mysql74
_sshd75
_qtss76
_cyrus77
_mailman78
_appserver79
_clamav82
_amavisd83
_jabber84
_appowner87
_windowserver88
_spotlight89
_tokend91
_securityagent92
_calendar93
_teamsserver94
_update_sharing95
_installer96
_atsserver97
_ftp98
_unknown99
_softwareupdate200
_coreaudiod202
_screensaver203
_locationd205
_trustevaluationagent208
_timezone210
_lda211
_cvmsroot212
_usbmuxd213
_dovecot214
_dpaudio215
_postgres216
_krbtgt217
_kadmin_admin218
_kadmin_changepw219
_devicemgr220
_webauthserver221
_netbios222
_warmd224
_dovenull227
_netstatistics228
_avbdeviced229
_krb_krbtgt230
_krb_kadmin231
_krb_changepw232
_krb_kerberos233
_krb_anonymous234
_assetcache235
_coremediaiod236
_launchservicesd239
_iconservices240
_distnote241
_nsurlsessiond242
_displaypolicyd244
_astris245
_krbfast246
_gamecontrollerd247
_mbsetupuser248
_ondemand249
_xserverdocs251
_wwwproxy252
_mobileasset253
_findmydevice254
_datadetectors257
_captiveagent258
_ctkd259
_applepay260
_hidd261
_cmiodalassistants262
_analyticsd263
_fpsd265
_timed266
_nearbyd268
_reportmemoryexception269
_driverkit270
_diskimagesiod271
_logd272
_appinstalld273
_installcoordinationd274
_demod275
_rmd277
_accessoryupdater278
_knowledgegraphd279
_coreml280
_sntpd281
_trustd282
_mmaintenanced283
_darwindaemon284
_notification_proxy285
_avphidbridge288
_biome289
_backgroundassets291
_oahd441

|

501ユーザーがすでに存在するか?確認する

【スクリプトエディタで開く】|

#!/bin/bash
#ユーザーIDの一覧を取得
TEXT_RESULT=$(/usr/bin/dscl localhost -list /Local/Default/Users UniqueID)
#リストにして
DEFAULT_IFS=$IFS
IFS=$'\n'
read -d '\n' -r -a LIST_USER <<<"$TEXT_RESULT"
IFS=$DEFAULT_IFS
#総当たりで調べます
for ITEM_LIST in "${LIST_USER[@]}"; do
  #501ユーザーが存在するか?
  if [[ $ITEM_LIST == *"501"* ]]; then
    TEXT_USER_INFO=$ITEM_LIST
  fi
done
#501ユーザーが発見された場合
if [ -z "$TEXT_USER_INFO" ]; then
  /bin/echo "501ユーザーがいない"
else
  /bin/echo "ユーザー:" "$TEXT_USER_INFO"
  /bin/echo "501ユーザーがいるので処理を終了します"
  exit 1
fi

exit 0

|

[bash]ローカルユーザーを取得する

【スクリプトエディタで開く】|

#!/bin/bash
###rootnobodyが入ります
TEXT_RESULT=$(/usr/bin/dscl localhost -list /Local/Default/Users |  grep -v  '^_')
read -d '\n' -r -a LIST_USER <<<"$TEXT_RESULT"
/bin/echo "${LIST_USER[@]}"

###ローカルユーザー取得はこちら
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"
/bin/echo "${LIST_USER[@]}"

###ユーザー毎の繰り返し
for ITEM_LIST in "${LIST_USER[@]}"; do
/bin/echo "ユーザー名:" "$ITEM_LIST"

done

###ユーザー数
NUM_CNT_USER=${#LIST_USER[@]}
/bin/echo "ユーザー数:" "$NUM_CNT_USER"
###ユーザー数繰り返し
for NUM_CNT in $(seq 1 "$NUM_CNT_USER"); do
NUM_NO=$((NUM_CNT-1))
/bin/echo "ユーザー名:" "${LIST_USER[$NUM_NO]}"
done

|

[User]基本情報取得  System Event

【スクリプトエディタで開く】


#####ユーザー名
set listUserShortName to {} as list
tell application "System Events"
  set listUserAccount to every user
  repeat with itemUserAccount in listUserAccount
    set strItemName to name of itemUserAccount
    set the end of listUserShortName to strItemName
  end repeat
end tell
log listUserShortName


#####ユーザーホームディレクトリパス
set listUserHomeDir to {} as list
tell application "System Events"
  set listUserAccount to every user
  repeat with itemUserAccount in listUserAccount
    tell itemUserAccount
      set strItemHomeDir to home directory of itemUserAccount
      set the end of listUserHomeDir to strItemHomeDir
    end tell
  end repeat
end tell
log listUserHomeDir

#####ユーザーフルネーム
set listUserFullName to {} as list
tell application "System Events"
  set listUserAccount to every user
  repeat with itemUserAccount in listUserAccount
    tell itemUserAccount
      set strItemFullName to full name of itemUserAccount
      set the end of listUserFullName to strItemFullName
    end tell
  end repeat
end tell
log listUserFullName

|

[User]基本情報取得 

system eventを追加

【スクリプトエディタで開く】

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
#error number -128
#
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
##自分環境がos12なので2.8にしているだけです
use AppleScript version "2.8"
use framework "Foundation"

use scripting additions

property refMe : a reference to current application

set appFileManager to refMe's NSFileManager's defaultManager()




#########################
####Foundation

###ユーザーName Short
set ocidUserShotName to refMe's NSUserName()
log ocidUserShotName as text
log className() of ocidUserShotName as text
-->(*__NSCFString*)

###ユーザーFullUserName
set ocidFullUserName to refMe's NSFullUserName()
log ocidFullUserName as text
log className() of ocidFullUserName as text
-->(*__NSCFString*)

###ホームディレクトリ パス
set ocidHomeDirectory to refMe's NSHomeDirectory()
log ocidHomeDirectory as text
log className() of ocidHomeDirectory as text
-->(*NSPathStore2*)

###指定ユーザーのホームディレクトリ
set ocidDirectoryForUser to refMe's NSHomeDirectoryForUser(ocidUserShotName)
log ocidDirectoryForUser as text
log className() of ocidDirectoryForUser as text
-->(*NSPathStore2*)

####################################
###NSFileManager
###指定ユーザーのホームディレクトリ
set ocidDirectoryForUserURL to appFileManager's homeDirectoryForUser:ocidUserShotName
log ocidDirectoryForUserURL as text
log className() of ocidDirectoryForUserURL as text
-->(*NSURL*)

###指定ユーザーのホームディレクトリ
set ocidDirectoryForCurrentUser to appFileManager's homeDirectoryForCurrentUser()
log ocidDirectoryForCurrentUser as text
log className() of ocidDirectoryForCurrentUser as text
-->(*NSURL*)

#########################
##### 従来方法

set objSysInfo to system info

###ユーザー名ショート
set strUserShotName to (short user name of objSysInfo) as text
###ユーザー名FULL
set strUserName to (long user name of objSysInfo) as text
###ユーザーID
set strUserID to (user ID of objSysInfo) as text
###ホームディレクトリ エイリアス
set aliasHomeDirectory to (home directory of objSysInfo) as alias
###ホスト名
set strComputerName to (computer name of objSysInfo) as text


tell application "System Events"
  set strUserName to full name of current user
  --> long user nameと同じ
end tell

## tell user "ユーザーショート名"
tell application "System Events"
  tell user strUserShotName
    set strUserName to full name
    --> long user nameと同じ
  end tell
end tell


#########################
#### コマンド

###ユーザーショート名
set strComandText to ("id -un") as text
set strUserName to (do shell script strComandText) as text

###ユーザーショート名
set strComandText to ("whoami") as text
set strUserName to (do shell script strComandText) as text


###ユーザーID
set strComandText to ("id -u") as text
set strUserID to (do shell script strComandText) as text

###ホームディレクトリ
set strComandText to ("echo $HOME") as text
set strHomeDir to (do shell script strComandText) as text

###ホスト名
set strComandText to ("hostname") as text
set strComputerName to (do shell script strComandText) as text

|

その他のカテゴリー

Accessibility Acrobat Acrobat 2020 Acrobat AddOn Acrobat Annotation Acrobat ARMDC Acrobat AV2 Acrobat BookMark Acrobat Classic Acrobat DC Acrobat Dialog Acrobat Distiller Acrobat Form Acrobat JS Acrobat Manifest Acrobat Menu Acrobat Open Acrobat Plugin Acrobat Preferences Acrobat Preflight Acrobat python Acrobat Reader Acrobat SCA Acrobat SCA Updater Acrobat Sequ Acrobat Sign Acrobat Stamps Acrobat Watermark Acrobat Windows Acrobat Windows Reader Admin Admin Account Admin Apachectl Admin configCode Admin Device Management Admin LaunchServices Admin Locationd Admin loginitem Admin Maintenance Admin Mobileconfig Admin Permission Admin Pkg Admin Power Management Admin Printer Admin SetUp Admin SMB Admin Support Admin System Information Admin Tools Admin Users Admin Volumes Adobe Adobe FDKO Adobe RemoteUpdateManager AppKit Apple AppleScript AppleScript do shell script AppleScript List AppleScript ObjC AppleScript Osax AppleScript PDF AppleScript Pictures AppleScript record AppleScript Script Editor AppleScript Script Menu AppleScript Shortcuts AppleScript Shortcuts Events AppleScript System Events AppleScript System Events Plist AppleScript Video Applications AppStore Archive Attributes Automator BackUp Barcode Barcode QR Barcode QR Decode Bash Basic Basic Path Bluetooth BOX Browser Calendar CD/DVD Choose Chrome CIImage CityCode CloudStorage Color com.apple.LaunchServices.OpenWith Console Contacts CotEditor CURL current application Date&Time delimiters Desktop Device Diff Disk Dock DropBox Droplet eMail Encode % Encode Decode Encode UTF8 Error EXIFData ffmpeg File Finder Firefox Folder FolderAction Fonts GIF github Guide HTML HTML Entity Icon Illustrator Image Events Image2PDF ImageOptim iPhone iWork Javascript Jedit Json Label Leading Zero List locationd LRC lsappinfo LSSharedFileList m3u8 Mail MakePDF Map Math Media Media AVAsset Media AVconvert Media AVFoundation Media AVURLAsset Media Movie Media Music Memo Messages Microsoft Microsoft Edge Microsoft Excel Mouse Music NetWork Notes NSArray NSArray Sort NSBezierPath NSBitmapImageRep NSBundle NSCFBoolean NSCharacterSet NSColor NSColorList NSData NSDecimalNumber NSDictionary NSError NSEvent NSFileAttributes NSFileManager NSFileManager enumeratorAtURL NSFont NSFontManager NSGraphicsContext NSImage NSIndex NSKeyedArchiver NSKeyedUnarchiver NSLocale NSMutableArray NSMutableDictionary NSMutableString NSNotFound NSNumber NSOpenPanel NSPasteboard NSpoint NSPredicate NSPrintOperation NSRange NSRect NSRegularExpression NSRunningApplication NSScreen NSSize NSString NSString stringByApplyingTransform NSStringCompareOptions NSTask NSTimeZone NSURL NSURL File NSURLBookmark NSURLComponents NSURLResourceKey NSURLSession NSUserDefaults NSUUID NSView NSWorkspace Numbers OAuth OneDrive PDF PDFAnnotation PDFAnnotationWidget PDFContext PDFDisplayBox PDFDocumentPermissions PDFImageRep PDFKit PDFnUP PDFOutline perl Photoshop PlistBuddy pluginkit postalcode PostScript prefPane Preview Python QuickLook QuickTime ReadMe Regular Expression Reminders ReName Repeat RTF Safari SaveFile ScreenCapture ScreenSaver SF Symbols character id SF Symbols Entity sips Skype Slack Sound Spotlight sqlite SRT StandardAdditions Swift System Settings TCC TemporaryItems Terminal Text Text CSV Text MD Text TSV TextEdit Tools Translate Trash Twitter Typography UI Unit Conversion UTType valueForKeyPath Video VisionKit Visual Studio Code Wacom webarchive webp Wifi Windows XML XML EPUB XML OPML XML Plist XML RSS XML savedSearch XML SVG XML TTML XML webloc XML XMP YouTube zoom