copy path
copy STDOUT into clipboard
[!NOTE]
example
Copy $ cat file | pbcopy
$ pwd | pbcopy
Copy path from finder
Automator -> Quick Action
Automator -> Apple Script
Copy on run {input, parameters}
try
tell application "Finder" to set the clipboard to POSIX path of (target of window 1 as alias )
on error
beep
end try
return input
end run
create app
[!NOTE|label:references:]
groovyConsole
[!NOTE|label:expection] case: run groovyConsole
from Spolite or Alfred
via Automator.app
[!NOTE|label:tips] Automator.app will create whole bunch of necessary files for app. only need to replace the CFBundleExecutable
filename
via script
[!NOTE|label:tips:]
get standalone commands for the script
Copy $ ps aux | grep groovyConsole | grep -v grep
marslo 63030 0.0 1.9 42636292 310724 s008 S+ 2:06PM 0:12.48 /usr/local/opt/openjdk/bin/java -Dsun.awt.keepWorkingSetOnMinimize=true -Xdock:name=GroovyConsole -Xdock:icon=/usr/local/opt/groovy/libexec/lib/groovy.icns -classpath /usr/local/opt/groovy/libexec/lib/groovy-4.0.13.jar -Dscript.name=/usr/local/opt/groovy/libexec/bin/groovyConsole -Dprogram.name=groovyConsole -Dgroovy.starter.conf=/usr/local/opt/groovy/libexec/conf/groovy-starter.conf -Dgroovy.home=/usr/local/opt/groovy/libexec -Dtools.jar=/usr/local/opt/openjdk/lib/tools.jar org.codehaus.groovy.tools.GroovyStarter --main groovy.console.ui.Console --conf /usr/local/opt/groovy/libexec/conf/groovy-starter.conf --classpath .:/usr/local/opt/openjdk/lib/tools.jar:/usr/local/opt/openjdk/lib/dt.jar:/usr/local/opt/groovy/libexec/lib:.
==> which would be:
Copy /usr/local/opt/openjdk/bin/java \
-Dsun.awt.keepWorkingSetOnMinimize=true \
-Xdock:name=GroovyConsole \
-Xdock:icon=/usr/local/opt/groovy/libexec/lib/groovy.icns \
-classpath /usr/local/opt/groovy/libexec/lib/groovy-4.0.13.jar \
-Dscript.name=/usr/local/opt/groovy/libexec/bin/groovyConsole \
-Dprogram.name=groovyConsole \
-Dgroovy.starter.conf=/usr/local/opt/groovy/libexec/conf/groovy-starter.conf \
-Dgroovy.home=/usr/local/opt/groovy/libexec \
-Dtools.jar=/usr/local/opt/openjdk/lib/tools.jar org.codehaus.groovy.tools.GroovyStarter \
--main groovy.console.ui.Console \
--conf /usr/local/opt/groovy/libexec/conf/groovy-starter.conf \
--classpath .:/usr/local/opt/openjdk/lib/tools.jar:/usr/local/opt/openjdk/lib/dt.jar:/usr/local/opt/groovy/libexec/lib:.
Copy $ ps aux | grep groovyConsole | grep -v grep
marslo 50495 0.0 3.4 11683536 577828 ?? S 5:50PM 0:15.85 /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/bin/java -Xdock:name=GroovyConsole -Xdock:icon=/usr/local/opt/groovy/libexec/lib/groovy.icns -Dgroovy.jaxb=jaxb -classpath /usr/local/opt/groovy/libexec/lib/groovy-3.0.6.jar -Dscript.name=/usr/local/opt/groovy/libexec/bin/groovyConsole -Dprogram.name=groovyConsole -Dgroovy.starter.conf=/usr/local/opt/groovy/libexec/conf/groovy-starter.conf -Dgroovy.home=/usr/local/opt/groovy/libexec -Dtools.jar=/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/lib/tools.jar org.codehaus.groovy.tools.GroovyStarter --main groovy.console.ui.Console --conf /usr/local/opt/groovy/libexec/conf/groovy-starter.conf --classpath .:/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/lib/tools.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/lib/dt.jar:/usr/local/opt/groovy/libexec/lib:.
==> which would be:
Copy /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/bin/java \
-Xdock:name=GroovyConsole \
-Xdock:icon=/usr/local/opt/groovy/libexec/lib/groovy.icns \
-Dgroovy.jaxb=jaxb \
-classpath /usr/local/opt/groovy/libexec/lib/groovy-3.0.6.jar \
-Dscript.name=/usr/local/opt/groovy/libexec/bin/groovyConsole \
-Dprogram.name=groovyConsole \
-Dgroovy.starter.conf=/usr/local/opt/groovy/libexec/conf/groovy-starter.conf \
-Dgroovy.home=/usr/local/opt/groovy/libexec \
-Dtools.jar=/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/lib/tools.jar org.codehaus.groovy.tools.GroovyStarter \
--main groovy.console.ui.Console \
--conf /usr/local/opt/groovy/libexec/conf/groovy-starter.conf \
--classpath .:/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/lib/tools.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/lib/dt.jar:/usr/local/opt/groovy/libexec/lib:.
Copy $ cp /usr/local/opt/groovy/libexec/lib/groovy.icns groovyConsole.app/Contents/Resources
$ cat > groovyConsole.app/Contents/MacOS/groovyConsole << EOF
-> #!/usr/bin/env bash
->
-> JAVA_HOME="$( /usr/libexec/java_home -v 21 )"
-> GROOVY_HOME="$( /usr/local/bin/brew --prefix groovy)/libexec"
-> GROOVY_VERSION="$(/usr/bin/sed -rn 's/^[^:]+:[[:blank:]]?([[:digit:].]+)[[:blank:]]?.+$/\1/p' < <(${GROOVY_HOME}/bin/groovy --version))"
->
-> "${JAVA_HOME}"/bin/java \
-> -Dsun.awt.keepWorkingSetOnMinimize=true \
-> -Xdock:name=GroovyConsole \
-> -Xdock:icon="${GROOVY_HOME}"/lib/groovy.icns \
-> -classpath "${GROOVY_HOME}"/lib/groovy-"${GROOVY_VERSION}".jar \
-> -Dscript.name="${GROOVY_HOME}"/bin/groovyConsole \
-> -Dprogram.name=groovyConsole \
-> -Dgroovy.starter.conf="${GROOVY_HOME}"/conf/groovy-starter.conf \
-> -Dgroovy.home="${GROOVY_HOME}" \
-> -Dtools.jar="${JAVA_HOME}"/lib/tools.jar org.codehaus.groovy.tools.GroovyStarter \
-> --main groovy.console.ui.Console \
-> --conf "${GROOVY_HOME}"/conf/groovy-starter.conf \
-> --classpath .:"${JAVA_HOME}"/lib/tools.jar:"${JAVA_HOME}"/lib/dt.jar:"${GROOVY_HOME}"/lib
-> EOF
# or HOMEBREW_PREFIX='/opt/homebrew'
#!/usr/bin/env bash
HOMEBREW_PREFIX='/opt/homebrew'
JAVA_HOME="${HOMEBREW_PREFIX}"/opt/openjdk
export JAVA_HOME
GROOVY_HOME="$( "${HOMEBREW_PREFIX}"/bin/brew --prefix groovy)/libexec"
GROOVY_VERSION="$(/usr/bin/sed -rn 's/^[^:]+:[[:blank:]]?([[:digit:].]+)[[:blank:]]?.+$/\1/p' < <("${GROOVY_HOME}"/bin/groovy --version))"
"${JAVA_HOME}"/bin/java \
-Dsun.awt.keepWorkingSetOnMinimize=true \
-Xdock:name=GroovyConsole \
-Xdock:icon="${GROOVY_HOME}"/lib/groovy.icns \
-classpath "${GROOVY_HOME}"/lib/groovy-"${GROOVY_VERSION}".jar \
-Dscript.name="${GROOVY_HOME}"/bin/groovyConsole \
-Dprogram.name=groovyConsole \
-Dgroovy.starter.conf="${GROOVY_HOME}"/conf/groovy-starter.conf \
-Dgroovy.home="${GROOVY_HOME}" \
-Dtools.jar="${JAVA_HOME}"/lib/tools.jar org.codehaus.groovy.tools.GroovyStarter \
--main groovy.console.ui.Console \
--conf "${GROOVY_HOME}"/conf/groovy-starter.conf \
--classpath .:"${JAVA_HOME}"/lib/tools.jar:"${JAVA_HOME}"/lib/dt.jar:"${GROOVY_HOME}"/lib:.
# vim:tabstop=2:softtabstop=2:shiftwidth=2:expandtab:filetype=sh
#--------------------------------------------------------------------------------------#
$ chmod +x groovyConsole.app/Contents/MacOS/groovyConsole
$ ls -1 groovyConsole.app/Contents/MacOS/
Automator Application Stub # ignore it
groovyConsole # â•® <key>CFBundleExecutable</key>
# ╯ <string>groovyConsole</string>
$ mv groovyConsole.app/ /Applications/
Copy $ touch groovyConsole.app/Contents/MacOS/groovyConsole
$ cat > groovyConsole.app/Contents/MacOS/groovyConsole << EOF
-> #!/usr/bin/env bash
->
-> JAVA_HOME="$( /usr/local/bin/brew --prefix java)"
-> # JAVA_HOME="$( /usr/local/bin/brew --prefix openjdk@17)"
-> GROOVY_VERSION="$(/usr/local/bin/groovy --version | /usr/local/opt/gnu-sed/libexec/gnubin/sed -rn 's/^[^:]+:\s*([0-9\.]+).*$/\1/p')"
-> GROOVY_HOME="$( /usr/local/bin/brew --prefix groovy)/libexec"
->
-> "${JAVA_HOME}"/bin/java \
-> -Dsun.awt.keepWorkingSetOnMinimize=true \
-> -Xdock:name=GroovyConsole \
-> -Xdock:icon="${GROOVY_HOME}"/lib/groovy.icns \
-> -classpath "${GROOVY_HOME}"/lib/groovy-"${GROOVY_VERSION}".jar \
-> -Dscript.name="${GROOVY_HOME}"/bin/groovyConsole \
-> -Dprogram.name=groovyConsole \
-> -Dgroovy.starter.conf="${GROOVY_HOME}"/conf/groovy-starter.conf \
-> -Dgroovy.home="${GROOVY_HOME}" \
-> -Dtools.jar="${JAVA_HOME}"/lib/tools.jar \
-> org.codehaus.groovy.tools.GroovyStarter \
-> --main groovy.console.ui.Console \
-> --conf "${GROOVY_HOME}"/conf/groovy-starter.conf \
-> --classpath .:"${JAVA_HOME}"/lib/tools.jar:"${JAVA_HOME}"/lib/dt.jar:"${GROOVY_HOME}"/lib:.
-> EOF
# or
$ cat > groovyConsole.app/Contents/MacOS/groovyConsole << EOF
-> #!/bin/bash
-> /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/bin/java \\
-> -Xdock:name=GroovyConsole \\
-> -Xdock:icon=/usr/local/opt/groovy/libexec/lib/groovy.icns \\
-> -Dgroovy.jaxb=jaxb \\
-> -classpath /usr/local/opt/groovy/libexec/lib/groovy-3.0.6.jar \\
-> -Dscript.name=/usr/local/opt/groovy/libexec/bin/groovyConsole \\
-> -Dprogram.name=groovyConsole \\
-> -Dgroovy.starter.conf=/usr/local/opt/groovy/libexec/conf/groovy-starter.conf \\
-> -Dgroovy.home=/usr/local/opt/groovy/libexec \\
-> -Dtools.jar=/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/lib/tools.jar org.codehaus.groovy.tools.GroovyStarter \\
-> --main groovy.console.ui.Console \\
-> --conf /usr/local/opt/groovy/libexec/conf/groovy-starter.conf \\
-> --classpath .:/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/lib/tools.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/lib/dt.jar:/usr/local/opt/groovy/libexec/lib:.
-> EOF
$ chmod +x groovyConsole.app/Contents/MacOS/groovyConsole
try validate via execute groovyConsole.app/Contents/MacOS/groovyConsole
directly. to see whether if the groovyConsole will be opened.
modify Info.plist
Copy $ vim groovyConsole.app/Contents/Info.plist
...
< key > CFBundleExecutable < /key >
< string > groovyConsole < /string > « the script name to MacOS/groovyConsole
< key > CFBundleIconFile < /key >
< string > groovy < /string > « for icon in Resources/groovy.icns
< key > CFBundleIdentifier < /key >
< string > com.apple.groovyConsole < /string >
...
original
Copy < key > CFBundleExecutable < /key >
< string > Application Stub < /string >
< key > CFBundleIconFile < /key >
< string > AutomatorApplet < /string >
< key > CFBundleIdentifier < /key >
< string > com.apple.automator.groovyConsole < /string >
additional
set the icon for new app
[!NOTE|label:optional]
Copy $ cp /usr/local/opt/groovy/libexec/lib/groovy.icns groovyConsole.app/Contents/Resources
# or
$ ln -sf /usr/local/opt/groovy/libexec/lib/groovy.icns groovyConsole.app/Contents/Resources/groovy.icns
create dmg
Copy $ hdiutil create -volname 'groovyConsole' \
-srcfolder ~/Desktop/groovyConsole.app \
-ov groovyConsole.dmg
.......................
created: /Users/marslo/Desktop/groovyConsole.dmg
python3 IDLE
[!NOTE|label:references:]
python-tk@version
is necessary for IDLE
to work
Copy $ brew install python-tk@3.11
$ brew install python-tk@3.12
$ brew install python-tk@3.13
via automator.app
script
[!TIP|label:tips:]
the IDLE python version is based on which python is linked to /usr/local/bin/python3
Copy #!/usr/bin/env bash
set -euo pipefail
PYTHON_SHORT_VERSION = $( /usr/bin/sed -rn 's/^([^[0-9]+)([0-9]+\.[0-9]+).*$/\2/p' < <( /usr/local/bin/python3 --version ) )
/usr/bin/open "$( /usr/local/bin/brew --prefix python@ "${PYTHON_SHORT_VERSION}")" /IDLE \ 3.app
# vim:tabstop=2:softtabstop=2:shiftwidth=2:expandtab:filetype=sh
icon
Copy $ PYTHON_SHORT_VERSION=$(/usr/local/opt/gnu-sed/libexec/gnubin/sed -rn 's/^([^[0-9]+)([0-9]+\.[0-9]+).*$/\2/p' < <(/usr/local/bin/python3 --version) )
$ cp "$(/usr/local/bin/brew --prefix python@${PYTHON_SHORT_VERSION})"/IDLE\ 3.app/Contents/Resources/IDLE.icns IDLE.app/Contents/Resources/
# modify IDLE.app/Contents/Info.plist
< key > CFBundleIconFile < /key >
< string > IDLE < /string >
## original
< key > CFBundleIconFile < /key >
< string > ApplicationStub < /string >
others
Copy $ cat IDLE.app/Contents/Info.plist
< key > CFBundleGetInfoString < /key >
< string > 3.11.6, © 2001-2023 Python Software Foundation < /string >
< key > CFBundleIconFile < /key >
< string > IDLE.icns < /string >
< key > CFBundleIdentifier < /key >
< string > org.python.IDLE < /string >
via appify
[!NOTE|label:references:]
shell script
Copy $ cat > ~/IDLE << EOF
#!/usr/bin/env bash
PYTHON_SHORT_VERSION=$(/usr/local/opt/gnu-sed/libexec/gnubin/sed -rn 's/^([^[0-9]+)([0-9]+\.[0-9]+).*$/\2/p' < <(/usr/local/bin/python3 --version) )
/usr/bin/open "$( /usr/local/bin/brew --prefix python@${PYTHON_SHORT_VERSION})"/IDLE\ 3.app
EOF
create app via appify
Copy $ icon= $( brew --prefix python@3.12 ) /IDLE \ 3.app/Contents/Resources/IDLE.icns
$ ./appify.sh -i ${icon} -s IDLE -n IDLE
$ mv IDLE.app /Applications
more:
Info.plist
Copy <? 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 >CFBundleDevelopmentRegion</ key >
< string >English</ string >
< key >CFBundleExecutable</ key >
< string >IDLE</ string >
< key >CFBundleIconFile</ key >
< string >IDLE</ string >
< key >CFBundleIdentifier</ key >
< string >com.apple.automator.Python3-IDLE</ string >
< key >CFBundleName</ key >
< string >Python3 IDLE</ string >
< key >CFBundlePackageType</ key >
< string >APPL</ string >
</ dict >
</ plist >
Copy <? xml version = "1.0" encoding = "UTF-8" ?>
<! DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
< plist version = "1.0" >
< dict >
< key >CFBundleExecutable</ key >
< string >IDLE</ string >
< key >CFBundleGetInfoString</ key >
< string >IDLE</ string >
< key >CFBundleIconFile</ key >
< string >IDLE</ string >
< key >CFBundleName</ key >
< string >IDLE</ string >
< key >CFBundlePackageType</ key >
< string >APPL</ string >
< key >CFBundleIdentifier</ key >
< string >org.python.IDLE</ string >
</ dict >
</ plist >
create dmg
Copy $ hdiutil create -volname IDLE -srcfolder ~/Desktop/IDLE.app -ov IDLE.dmg
....
created: /Users/marslo/Desktop/IDLE.dmg
change default python3
Copy $ ln -sf /usr/local/bin/python3.12 /usr/local/bin/python3
$ ln -sf /usr/local/bin/python3.12-config /usr/local/bin/python3-config
# or
$ brew unlink python@3.11
$ brew unlink python@3.12
$ brew link --force python@3.12
# or
$ brew link --force --overwrite python@3.12
enable Technical Symbols
and snippets
go to System Preferences ⇢ Keyboard ⇢ Test
finally
others
Copy $ curl --create-dirs \
-O \
--output-dir ~/.fonts \
https://dtinth.github.io/comic-mono-font/ComicMono.ttf && \
curl --create-dirs \
-O \
--output-dir ~/.fonts \
https://dtinth.github.io/comic-mono-font/ComicMono-Bold.ttf &&
fc-cache -f -v
create image
[!NOTE|label:references:]
create dmg from app
via hdiutil
[!NOTE|label:references:]
-format
:
UDCO
: ADC-compressed image
UDZO
: zlib-compressed image
UDBZ
: bzip2-compressed image
ULFO
: lzfse-compressed image, introduced in macOS 10.11
ULMO
: lzma-compressed image, introduced in macOS 10.15
UDTO
: DVD/CD-R master for export
UDSP
: SPARSE (grows with content)
UDSB
: SPARSEBUNDLE (grows with content; bundle-backed)
UFBI
: UDIF entire image with MD5 checksum
Copy $ hdiutil create -srcfolder "/Applications/Python3 IDLE.app" \
-volname 'Python3 IDLE' \
-fs HFS+ \
-fsargs "-c c=64,a=16,e=16" \
-format UDRW \
"Python3 IDLE.dmg" [ --debug ] [ --verbose ]
# or
$ hdiutil create -volname "Volume Name" \
-srcfolder /path/to/folder \
-ov diskimage.dmg
# create encrypted image
$ hdiutil create encrypted.dmg
-encryption AES-128 \
-stdinpass \
-volname "Volume Name" \
-srcfolder /path/to/folder \
-ov # overwrite any existing files
# i.e.:
$ hdiutil create mEncrypted.dmg \
-encryption \
-size 1g \
-volname "mEncrypted Disk Image" \
-fs JHFS+ \
-srcfolder /path/to/folder \
Enter a new password to secure "mEncrypted.dmg" :
Re-enter new password:
....
created: /Users/marslo/Desktop/mEncrypted.dmg
# create read/write image with specific size
$ hdiutil create ~/Desktop/mTest.dmg \
-volname "Marslo Test" \
-srcfolder ~/Desktop/mTest \
-size 1g \
-format UDRW # UDRW: read/write image
via create-dmg
Copy $ brew install create-dmg
$ create-dmg --volname 'Python3 IDLE' \
--volicon /opt/dmg-backgound/.idle.icns \
--background /opt/dmg-backgound/.background.2.png \
--icon 'Python3 IDLE.app' 225 275 \
--app-drop-link 525 270 \
--window-size 750 500 \
--hide-extension 'Python3 IDLE.app' \
'Python3 IDLE.dmg' '/Applications/Python3 IDLE.app'
create dvd (for .iso, .img, .dmg)
Copy $ hdiutil burn /path/to/image_file
create dmg for OS installer
Copy $ sudo hdiutil create ~/Desktop/Lion.dmg -srcdevice /dev/disk2s4
resize the disk image
Copy $ hdiutil resize -size < new siz e > < imagenam e > .dmg
# or
$ hdiutil resize -size 2g mEncrypted.dmg
restore disk images
Copy $ sudo asr restore --source < disk imag e > .dmg --target /Volumes/ < volume nam e >
.pkg
[!NOTE|label:references:]
.dmg
Copy $ 7z x foo.dmg
# or
$ hdiutil attach foo.dmg
disk
check volumn info
Copy $ diskutil info < path/to/volum n >
# i.e.:
$ diskutil info /Volumes/iMarsloOSX/
Device Identifier: disk1s5
Device Node: /dev/disk1s5
Whole: No
Part of Whole: disk1
Volume Name: iMarsloOSX
Mounted: Yes
Mount Point: /
list disks and volumns
Copy $ diskutil list
# or
$ diskutil list disk1
# or via `lsblk`: https://command-not-found.com/lsblk
$ docker run cmd.cat/lsblk lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 254:0 0 16G 0 disk
└─vda1 254:1 0 16G 0 part /etc/hosts
# or via `lshw`: https://command-not-found.com/lshw
$ docker run cmd.cat/lshw lshw -class disk
*-virtio1
description: Virtual I/O device
physical id: 0
bus info: virtio@1
logical name: vda
configuration: driver=virtio_blk
list the apfs info
Copy $ diskutil apfs list
APFS Container (1 found )
|
+-- Container disk1 ********-****-****-****-************
====================================================
APFS Container Reference: disk1
Size (Capacity Ceiling ): 250685575168 B ( 250.7 GB )
Capacity In Use By Volumes: 176258826240 B (176.3 GB ) ( 70.3% used )
Capacity Not Allocated: 74426748928 B (74.4 GB ) ( 29.7% free )
|
+- < Physical Store.. . >
|
+- > ...
erase disk
File System Abbreviation Mac OS Extended (Journaled)
to list file systems
Copy $ diskutil listFilesystems
...
-------------------------------------------------------------------------------
PERSONALITY USER VISIBLE NAME
-------------------------------------------------------------------------------
Case-sensitive APFS APFS (Case-sensitive)
( or ) APFSX
APFS APFS
( or ) APFSI
ExFAT ExFAT
Free Space Free Space
( or ) FREE
MS-DOS MS-DOS (FAT)
MS-DOS FAT12 MS-DOS (FAT12)
MS-DOS FAT16 MS-DOS (FAT16)
MS-DOS FAT32 MS-DOS (FAT32)
( or ) FAT32
HFS+ Mac OS Extended
Case-sensitive HFS+ Mac OS Extended (Case-sensitive)
( or ) HFSX
Case-sensitive Journaled HFS+ Mac OS Extended (Case-sensitive, Journaled )
( or ) JHFSX
Journaled HFS+ Mac OS Extended (Journaled)
( or ) JHFS+
UFSD_NTFS Microsoft NTFS
Copy $ diskutil eraseDisk ExFAT iMarsloUSB /dev/disk2
Started erase on disk2
Unmounting disk
Creating the partition map
Waiting for partitions to activate
Formatting disk2s2 as ExFAT with name iMarsloUSB
Volume name : iMarsloUSB
Partition offset : 411648 sectors (210763776 bytes )
Volume size : 246534144 sectors (126225481728 bytes )
Bytes per sector : 512
Bytes per cluster: 131072
FAT offset : 2048 sectors (1048576 bytes )
FAT sectors : 8192
Number of FATs : 1 Cluster offset : 10240 sectors (5242880 bytes)
Clusters : 962984
Volume Serial # : 5ff81490 Bitmap start : 2 Bitmap file size : 120373 Upcase start : 3 Upcase file size : 5836 Root start : 4 Mounting disk Finished erase on disk2
Copy <!--endsec-->
<!--sec data-title="check" data-id="section5" data-show=true data-collapse=true ces-->
```bash
$ diskutil info disk2s1
Device Identifier: disk2s1
Device Node: /dev/disk2s1
Whole: No
Part of Whole: disk2
Volume Name: EFI
Mounted: No
Partition Type: EFI
File System Personality: MS-DOS FAT32
Type (Bundle): msdos
Name (User Visible): MS-DOS (FAT32)
...
...
$ diskutil info disk2s2
Device Identifier: disk2s2
Device Node: /dev/disk2s2
Whole: No
Part of Whole: disk2
Volume Name: iMarsloUSB
Mounted: Yes
Mount Point: /Volumes/iMarsloUSB
Partition Type: Microsoft Basic Data
File System Personality: ExFAT
Type (Bundle): exfat
Name (User Visible): ExFAT
...
...
verifying and repairing volumes
Copy $ diskutil verifyVolume /Volumes/ < volume nam e >
$ diskutil repairVolume /Volumes/ < volume nam e >
rename volume
Copy $ diskutil rename "<current name of volume>" "<new name>"
partitioning a disk
reference:
GPT
: GUID Partition Table
Copy $ diskutil partitionDisk /dev/disk2 GPT JHFS+ New 0b
multiple partitions
Copy $ diskutil partitionDisk /dev/disk2 GPT \
JHFS+ First 10g \
JHFS+ Second 10g \
JHFS+ Third 10g \
JHFS+ Fourth 10g \
JHFS+ Fifth 0b
splitting partitions
Copy $ diskutil splitPartition /dev/disk2s6 \
JHFS+ Test 10GB \
JHFS+ Test2 0b
merging partitions
Copy $ diskutil mergePartitions \
JHFS+ \
NewName \
< first disk identifier in rang e > \
< last disk identifier in rang e >
# i.e.:
$ diskutil mergePartitions JHFS+ NewName disk2s4 disk2s6
check usb
Copy $ system_profiler SPUSBDataType
# get xml format
$ system_profiler -xml SPUSBDataType
# or
$ ioreg -p IOUSB
# or
$ ioreg -p IOUSB -w0 -l
# or get device name
$ ioreg -p IOUSB -w0 | sed 's/[^o]*o //; s/@.*$//' | grep -v '^Root.*'
modify font in plist
[!NOTE|label:references:]
Copy # check
$ /usr/libexec/PlistBuddy -c 'print ":/groovy/console/ui/:fontSize"' ~/Library/Preferences/groovy.console.ui.plist
18
# change
$ /usr/libexec/PlistBuddy -c 'Set ":/groovy/console/ui/:fontSize" 24' ~/Library/Preferences/groovy.console.ui.plist
$ /usr/libexec/PlistBuddy -c 'Print ":/groovy/console/ui/:fontSize"' ~/Library/Preferences/groovy.console.ui.plist
24
Copy $ defaults read ~/Library/Preferences/groovy.console.ui.plist
{
"/groovy/console/ui/" = {
autoClearOutput = true ;
compilerPhase = 4 ;
currentFileChooserDir = "/Users/marslo/Desktop" ;
decompiledFontSize = 12 ;
fontSize = 18 ;
frameHeight = 600 ;
frameWidth = 800 ;
frameX = 198 ;
frameY = 201 ;
horizontalSplitterLocation = 100 ;
inputAreaHeight = 576 ;
inputAreaWidth = 1622 ;
outputAreaHeight = 354 ;
outputAreaWidth = 1676 ;
showClosureClasses = false ;
showIndyBytecode = false ;
showScriptClass = true ;
showScriptFreeForm = false ;
showScriptInOutput = false ;
showTreeView = true ;
threadInterrupt = true ;
verticalSplitterLocation = 100 ;
};
}
show process details
/usr/bin/xattr
[!NOTE|label:references:]
init
Copy $ touch test.txt
$ /usr/bin/xattr -l test.txt
create attributes
Copy $ /usr/bin/xattr -w com.example.color blue test.txt
$ /usr/bin/xattr -l test.txt
com.example.color: blue
print attributes
Copy $ /usr/bin/xattr -p com.example.color test.txt
blue
clear attributes
Copy $ /usr/bin/xattr -d com.example.color test.txt
# or
$ /usr/bin/xattr -c test.txt
tips
shutdown mac via commands
Copy $ osascript -e 'tell app 'loginwindow' to «event aevtrsdn»'
Copy $ ping -o -i 30 HOSTNAME && osascript -e 'tell app "Terminal" to display dialog "Server is up" buttons "It?s about time" default button 1'
Copy $ pmset displaysleepnow
disable startup music
Copy $ sudo nvram SystemAudioVolume=" "
3D lock screen
Copy $ /System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend
take screenshot after 3 sec
Copy $ screencapture -T 3 -t jpg -P delayedpic.jpg
setup welcome text in login screen
Copy $ sudo defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText 'Awesome Marslo!!'
show message on desktop
Copy $ sudo jamf displayMessage -message "Hello World!"
Copy $ xcrun simctl list
$ open -a Simulator --args -CurrentDeviceUDID <your device UDID>
install the application on the device
Copy $ xcrun simctl install <your device UDID> <path to application bundle>
$ xcrun simctl launch <your device UDID> <app bundle identifier>
or
Copy $ open -a Simulator.app
or
Copy $ open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app
show startup launch apps
check detail diskage usage
Copy $ sudo fs_usage
21:03:47 ioctl 0.000003 iTerm2
21:03:47 ioctl 0.000003 iTerm2
21:03:47 close 0.000031 privoxy
21:03:47 select 0.000004 privoxy
...