158 lines
5.1 KiB
Markdown
158 lines
5.1 KiB
Markdown
<img src="https://cdn.rawgit.com/herrbischoff/awesome-osx-command-line/master/assets/logo.svg" width="600">
|
|
|
|
# Functions
|
|
|
|
> An assorted collection of useful OS X specific Bash-style functions. Part of [Awesome OS X Command Line](https://github.com/herrbischoff/awesome-osx-command-line).
|
|
|
|
## Table of Contents
|
|
|
|
- [Developer](#developer)
|
|
- [App Icons](#app-icons)
|
|
- [Finder](#finder)
|
|
- [Get Path of Frontmost Finder Window](#get-path-of-frontmost-finder-window)
|
|
- [Print Files Selected in Finder](#print-files-selected-in-finder)
|
|
- [Set Current Directory's Finder View to Column View](#set-current-directorys-finder-view-to-column-view)
|
|
- [Set Current Directory's Finder View to Icon View](#set-current-directorys-finder-view-to-icon-view)
|
|
- [Set Current Directory's Finder View to List View](#set-current-directorys-finder-view-to-list-view)
|
|
|
|
|
|
## Developer
|
|
|
|
### App Icons
|
|
|
|
#### Create App Icon
|
|
|
|
Function to quickly create an application icon from 1024px master file.
|
|
|
|
```bash
|
|
function mkicns() {
|
|
if [[ -z "$@" ]]; then
|
|
echo "Input file missing"
|
|
else
|
|
filename=${1%.*}
|
|
mkdir $filename.iconset
|
|
sips -z 16 16 $1 --out $filename.iconset/icon_16x16.png
|
|
sips -z 32 32 $1 --out $filename.iconset/icon_16x16@2x.png
|
|
sips -z 32 32 $1 --out $filename.iconset/icon_32x32.png
|
|
sips -z 64 64 $1 --out $filename.iconset/icon_32x32@2x.png
|
|
sips -z 128 128 $1 --out $filename.iconset/icon_128x128.png
|
|
sips -z 256 256 $1 --out $filename.iconset/icon_128x128@2x.png
|
|
sips -z 256 256 $1 --out $filename.iconset/icon_256x256.png
|
|
sips -z 512 512 $1 --out $filename.iconset/icon_256x256@2x.png
|
|
sips -z 512 512 $1 --out $filename.iconset/icon_512x512.png
|
|
cp $1 $filename.iconset/icon_512x512@2x.png
|
|
iconutil -c icns $filename.iconset
|
|
rm -r $filename.iconset
|
|
fi
|
|
}
|
|
```
|
|
|
|
### Helper Functions
|
|
|
|
#### Ask User for Password
|
|
|
|
This function will use AppleScript to present a password entry dialog to make
|
|
your scripts a little more user friendly.
|
|
|
|
```bash
|
|
function gui_password {
|
|
if [[ -z $1 ]]; then
|
|
gui_prompt="Password:"
|
|
else
|
|
gui_prompt="$1"
|
|
fi
|
|
PW=$(osascript <<EOF
|
|
tell application "System Events"
|
|
activate
|
|
text returned of (display dialog "${gui_prompt}" default answer "" with hidden answer)
|
|
end tell
|
|
EOF
|
|
)
|
|
|
|
echo -n "${PW}"
|
|
}
|
|
|
|
```
|
|
|
|
## Finder
|
|
|
|
### Get Path of Frontmost Finder Window
|
|
|
|
```bash
|
|
function finder_path {
|
|
osascript -e 'tell application "Finder"'\
|
|
-e "if (${1-1} <= (count Finder windows)) then"\
|
|
-e "get POSIX path of (target of window ${1-1} as alias)"\
|
|
-e 'else' \
|
|
-e 'get POSIX path of (desktop as alias)'\
|
|
-e 'end if' \
|
|
-e 'end tell';
|
|
}
|
|
```
|
|
|
|
### Print Files Selected in Finder
|
|
|
|
```bash
|
|
selected() {
|
|
osascript <<EOT
|
|
tell application "Finder"
|
|
set theFiles to selection
|
|
set theList to ""
|
|
repeat with aFile in theFiles
|
|
set theList to theList & POSIX path of (aFile as alias) & "\n"
|
|
end repeat
|
|
theList
|
|
end tell
|
|
EOT
|
|
}
|
|
```
|
|
|
|
### Set Current Directory's Finder View to Column View
|
|
|
|
```bash
|
|
function column_view {
|
|
osascript -e 'set cwd to do shell script "pwd"'\
|
|
-e 'tell application "Finder"'\
|
|
-e "if (${1-1} <= (count Finder windows)) then"\
|
|
-e "set the target of window ${1-1} to (POSIX file cwd) as string"\
|
|
-e "set the current view of the front Finder window to column view"\
|
|
-e 'else' -e "open (POSIX file cwd) as string"\
|
|
-e "set the current view of the front Finder window to column view"\
|
|
-e 'end if' -e 'end tell';
|
|
}
|
|
```
|
|
|
|
### Set Current Directory's Finder View to Icon View
|
|
|
|
```bash
|
|
function icon_view {
|
|
osascript -e 'set cwd to do shell script "pwd"'\
|
|
-e 'tell application "Finder"'\
|
|
-e "if (${1-1} <= (count Finder windows)) then"\
|
|
-e "set the target of window ${1-1} to (POSIX file cwd) as string"\
|
|
-e "set the current view of the front Finder window to icon view"\
|
|
-e 'else' -e "open (POSIX file cwd) as string"\
|
|
-e "set the current view of the front Finder window to icon view"\
|
|
-e 'end if' -e 'end tell';
|
|
};
|
|
```
|
|
|
|
### Set Current Directory's Finder View to List View
|
|
|
|
```bash
|
|
function list_view {
|
|
osascript -e 'set cwd to do shell script "pwd"'\
|
|
-e 'tell application "Finder"'\
|
|
-e "if (${1-1} <= (count Finder windows)) then"\
|
|
-e "set the target of window ${1-1} to (POSIX file cwd) as string"\
|
|
-e "set the current view of the front Finder window to list view"\
|
|
-e 'else' -e "open (POSIX file cwd) as string"\
|
|
-e "set the current view of the front Finder window to list view"\
|
|
-e 'end if' -e 'end tell';\
|
|
}
|
|
```
|
|
|
|
## License
|
|
|
|
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.
|