Whitespace cleanup.
This commit is contained in:
162
.functions
162
.functions
@@ -1,15 +1,165 @@
|
||||
# Simple calculator
|
||||
function calc() {
|
||||
local result=""
|
||||
result="$(printf "scale=10;$*\n" | bc --mathlib | tr -d '\\\n')"
|
||||
# └─ default (when `--mathlib` is used) is 20
|
||||
#
|
||||
if [[ "$result" == *.* ]]; then
|
||||
# improve the output for decimal numbers
|
||||
printf "$result" |
|
||||
sed -e 's/^\./0./' `# add "0" for cases like ".5"` \
|
||||
-e 's/^-\./-0./' `# add "0" for cases like "-.5"`\
|
||||
-e 's/0*$//;s/\.$//' # remove trailing zeros
|
||||
else
|
||||
printf "$result"
|
||||
fi
|
||||
printf "\n"
|
||||
}
|
||||
|
||||
# Create a new directory and enter it
|
||||
md() {
|
||||
mkdir -p "$@" && cd "$@"
|
||||
function mkd() {
|
||||
mkdir -p "$@" && cd "$@"
|
||||
}
|
||||
|
||||
# Determine size of a file or total size of a directory
|
||||
function fs() {
|
||||
if du -b /dev/null > /dev/null 2>&1; then
|
||||
local arg=-sbh
|
||||
else
|
||||
local arg=-sh
|
||||
fi
|
||||
if [[ -n "$@" ]]; then
|
||||
du $arg -- "$@"
|
||||
else
|
||||
du $arg .[^.]* *
|
||||
fi
|
||||
}
|
||||
|
||||
# Use Git’s colored diff when available
|
||||
hash git &>/dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
function diff() {
|
||||
git diff --no-index --color-words "$@"
|
||||
}
|
||||
fi
|
||||
|
||||
# Create a data URL from a file
|
||||
function dataurl() {
|
||||
local mimeType=$(file -b --mime-type "$1")
|
||||
if [[ $mimeType == text/* ]]; then
|
||||
mimeType="${mimeType};charset=utf-8"
|
||||
fi
|
||||
echo "data:${mimeType};base64,$(openssl base64 -in "$1" | tr -d '\n')"
|
||||
}
|
||||
|
||||
# Start an HTTP server from a directory, optionally specifying the port
|
||||
function server() {
|
||||
local port="${1:-8000}"
|
||||
sleep 1 && open "http://localhost:${port}/" &
|
||||
# Set the default Content-Type to `text/plain` instead of `application/octet-stream`
|
||||
# And serve everything as UTF-8 (although not technically correct, this doesn’t break anything for binary files)
|
||||
python -c $'import SimpleHTTPServer;\nmap = SimpleHTTPServer.SimpleHTTPRequestHandler.extensions_map;\nmap[""] = "text/plain";\nfor key, value in map.items():\n\tmap[key] = value + ";charset=UTF-8";\nSimpleHTTPServer.test();' "$port"
|
||||
}
|
||||
|
||||
# Start a PHP server from a directory, optionally specifying the port
|
||||
# (Requires PHP 5.4.0+.)
|
||||
function phpserver() {
|
||||
local port="${1:-4000}"
|
||||
local ip=$(ipconfig getifaddr en1)
|
||||
sleep 1 && open "http://${ip}:${port}/" &
|
||||
php -S "${ip}:${port}"
|
||||
}
|
||||
|
||||
# Compare original and gzipped file size
|
||||
function gz() {
|
||||
local origsize=$(wc -c < "$1")
|
||||
local gzipsize=$(gzip -c "$1" | wc -c)
|
||||
local ratio=$(echo "$gzipsize * 100/ $origsize" | bc -l)
|
||||
printf "orig: %d bytes\n" "$origsize"
|
||||
printf "gzip: %d bytes (%2.2f%%)\n" "$gzipsize" "$ratio"
|
||||
}
|
||||
|
||||
# Test if HTTP compression (RFC 2616 + SDCH) is enabled for a given URL.
|
||||
# Send a fake UA string for sites that sniff it instead of using the Accept-Encoding header. (Looking at you, ajax.googleapis.com!)
|
||||
httpcompression() {
|
||||
encoding="$(curl -LIs -H 'User-Agent: Mozilla/5 Gecko' -H 'Accept-Encoding: gzip,deflate,compress,sdch' "$1" | grep '^Content-Encoding:')" && echo "$1 is encoded using ${encoding#* }" || echo "$1 is not using any encoding"
|
||||
function httpcompression() {
|
||||
encoding="$(curl -LIs -H 'User-Agent: Mozilla/5 Gecko' -H 'Accept-Encoding: gzip,deflate,compress,sdch' "$1" | grep '^Content-Encoding:')" && echo "$1 is encoded using ${encoding#* }" || echo "$1 is not using any encoding"
|
||||
}
|
||||
|
||||
# Syntax-highlight JSON strings or files
|
||||
# Usage: `json '{"foo":42}'` or `echo '{"foo":42}' | json`
|
||||
function json() {
|
||||
if [ -t 0 ]; then # argument
|
||||
python -mjson.tool <<< "$*" | pygmentize -l javascript
|
||||
else # pipe
|
||||
python -mjson.tool | pygmentize -l javascript
|
||||
fi
|
||||
}
|
||||
|
||||
# All the dig info
|
||||
digga() {
|
||||
dig +nocmd "$1" any +multiline +noall +answer
|
||||
function digga() {
|
||||
dig +nocmd "$1" any +multiline +noall +answer
|
||||
}
|
||||
|
||||
# Escape UTF-8 characters into their 3-byte format
|
||||
function escape() {
|
||||
printf "\\\x%s" $(printf "$@" | xxd -p -c1 -u)
|
||||
echo # newline
|
||||
}
|
||||
|
||||
# Decode \x{ABCD}-style Unicode escape sequences
|
||||
function unidecode() {
|
||||
perl -e "binmode(STDOUT, ':utf8'); print \"$@\""
|
||||
echo # newline
|
||||
}
|
||||
|
||||
# Get a character’s Unicode code point
|
||||
function codepoint() {
|
||||
perl -e "use utf8; print sprintf('U+%04X', ord(\"$@\"))"
|
||||
echo # newline
|
||||
}
|
||||
|
||||
# Add note to Notes.app (OS X 10.8)
|
||||
# Usage: `note 'foo'` or `echo 'foo' | note`
|
||||
function note() {
|
||||
local text
|
||||
if [ -t 0 ]; then # argument
|
||||
text="$1"
|
||||
else # pipe
|
||||
text=$(cat)
|
||||
fi
|
||||
body=$(echo "$text" | sed -E 's|$|<br>|g')
|
||||
osascript >/dev/null <<EOF
|
||||
tell application "Notes"
|
||||
tell account "iCloud"
|
||||
tell folder "Notes"
|
||||
make new note with properties {name:"$text", body:"$body"}
|
||||
end tell
|
||||
end tell
|
||||
end tell
|
||||
EOF
|
||||
}
|
||||
|
||||
# Add reminder to Reminders.app (OS X 10.8)
|
||||
# Usage: `remind 'foo'` or `echo 'foo' | remind`
|
||||
function remind() {
|
||||
local text
|
||||
if [ -t 0 ]; then
|
||||
text="$1" # argument
|
||||
else
|
||||
text=$(cat) # pipe
|
||||
fi
|
||||
osascript >/dev/null <<EOF
|
||||
tell application "Reminders"
|
||||
tell the default list
|
||||
make new reminder with properties {name:"$text"}
|
||||
end tell
|
||||
end tell
|
||||
EOF
|
||||
}
|
||||
|
||||
# Manually remove a downloaded app or file from the quarantine
|
||||
function unquarantine() {
|
||||
for attribute in com.apple.metadata:kMDItemDownloadedDate com.apple.metadata:kMDItemWhereFroms com.apple.quarantine; do
|
||||
xattr -r -d "$attribute" "$@"
|
||||
done
|
||||
}
|
Reference in New Issue
Block a user