76 useful bash scripts collection on Mac OSX.(实用的命令行脚本)
- adb-bulk-uninstall
#! /bin/bash adb shell "pm list packages -3 | cut -c9- | xargs -r -n1 -t pm uninstall"- altool-install
#! /bin/bash sudo ln -s /Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool /usr/local/bin/altool - avoid-mac-sleeping
#! /bin/bash caffeinate -u -t 3600 - background-jobs
#! /bin/bash # Run command background sleep 100 & # List jobs background jobs # Bring command to front fg %1 - backup-current-directory
#! /bin/bash DATE=`date "+%Y_%m_%d_%H_%M_%S"` tar -czvf ~/Desktop/${DATE}.tar ./* echo "" echo "*** Back up success, go to ~/Desktop/${DATE}.tar ***" echo "" - base64-encode-and-decode
#! /bin/bash echo "hello" | tr -d \\n | base64 echo "aGVsbG8=" | tr -d \\n | base64 -D - batch-create-files
#! /bin/bash seq -w -f "content%g" 10000 10 11000 | xargs touch - big-sur-startup-disk
#! /bin/bash sudo /Applications/Install\ macOS\ Big\ Sur.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume - clean-zsh-history
#! /bin/bash echo "" > ~/.zsh_history & exec $SHELL -l - cleanup-any-npm-file
#! /bin/bash npm ls -gp --depth=0 | awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}' | xargs npm -g rm - convert-file-format
#! /bin/bash textutil -convert html file.ext - convert-ringtone-format
#! /bin/bash afconvert input.mp3 rintone.m4r -f m4af - cpu-vendor
#! /bin/bash sysctl -n machdep.cpu.vendor - create-audiobook
#! /bin/bash say -v Alex -f file.txt -o "output.m4a" - create-empty-file
#! /bin/bash mkfile 10g ~/Desktop/file - csrutil
#! /bin/bash # in recovery mode csrutil disable; csrutil enable; - current-wifi
#! /bin/bash airport -I | awk '/ SSID/ {print substr($0, index($0, $2))}' - cxxfilt
#! /bin/bash # C++ name demangling c++filt __Z4mainiPPc - dev-tools-security
#! /bin/bash # If you didn't enable Developer Mode using Xcode you will be asked to authorize the debugger every time you use it. To enable Developer Mode and only have to authorize once per session use: sudo /usr/sbin/DevToolsSecurity -enable # You might also need to add your user to the developer group: sudo dscl . append /Groups/_developer GroupMembership $(whoami) - display-shared-libraries
#! /usr/bin/bash otool -L /System/Applications/Dictionary.app/Contents/MacOS/Dictionary - domain-expiration
#! /bin/bash # output: 2026-10-11T11:05:17Z whois baidu.com | grep Expiry | sed -n "s/Registry Expiry Date://p" || echo "No matching result" - enable-quicklook-selection
#! /bin/bash defaults write com.apple.finder QLEnableTextSelection -bool TRUE; killall Finder; - extract-device-udid
#! /bin/bash system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p' -e '/iPhone/,/Serial/p' - find-codesign
#! /bin/bash security find-identity -v -p codesigning - flush-dns-cache
#! /bin/bash sudo dscacheutil -flushcache && killall -HUP mDNSResponder && say "DNS cache flushed." #! /bin/bash jot -r -c 60 a z | rs -g 0 6 | sort | uniq - generate-random-name
#! /bin/bash cat /usr/share/dict/propernames | sort -R | head -n 1 - generate-random-password
#! /bin/bash date | md5 | head -c8; echo - git-rebase-auto-squash
#! /bin/bash git add featureA git commit -m "Feature A is done" # [dev fb2f677] Feature A is done git add featureB git commit -m "Feature B is done" # [dev 733e2ff] Feature B is done git add featureA git commit --fixup fb2f677 # [dev c5069d5] fixup! Feature A is done git log --oneline # c5069d5 fixup! Feature A is done # 733e2ff Feature B is done # fb2f677 Feature A is done # ac5db87 Previous commit git rebase -i --autosquash ac5db87 # pick fb2f677 Feature A is done # fixup c5069d5 fixup! Feature A is done # fixup c9e138f fixup! Feature A is done # pick 733e2ff Feature B is done - git-reset-hard-recovery
#! /bin/bash # reference: https://stackoverflow.com/questions/5788037/recover-from-git-reset-hard git fsck --lost-found #! /bin/bash AUTHOR=$(git config --get user.name) git log --author="${AUTHOR}" --format="%cd : %s" --since=last.Monday --reverse --no-merges --date=format:'%F %T' - go-source-code-line-count
#! /bin/bash find . -name '*.go' | xargs wc -l | sort -nr #! /bin/bash git log --graph --decorate --pretty=oneline --abbrev-commit --all - heap-stat
#! /bin/bash # ref: https://developer.apple.com/videos/play/wwdc2020/10163/ heap Mail | egrep 'class_rw|COUNT' - hidden-desktop
#! /bin/bash # chflags nohidden ~/Desktop chflags hidden ~/Desktop/* - install-all-system-update
#! /bin/bash softwareupdate -ia - join-wifi
#! /bin/bash # Replace WIFI_SSID and WIFI_PASSWORD with actual networksetup -setairportnetwork en0 WIFI_SSID WIFI_PASSWORD #! /bin/bash curl -sS http://httpbin.org/get | python3 -m json.tool - key-repeat-rate
#! /bin/bash defaults write -g KeyRepeat -int 0.02 - latest-power-on-time
#! /bin/bash last | awk 'NR==1 {print $6}'- launch-xcode-editor
#! /bin/bash xed -x - md5-digest
#! /bin/bash md5 -xs "Hello world!" - most-used-command
#! /bin/bash history | awk '{CMD[$2]++;count++;} END { for (a in CMD )print CMD[a] " " CMD[a]/count*100 "% " a }' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10 - netstat-overview
#! /bin/bash netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' - pip-update
#! /bin/bash echo "starting upgrade pip packages..." python3 -m pip list --outdated --format=freeze | grep -v "^\-e" | cut -d = -f 1 | xargs -n1 python3 -m pip install -U echo "finished upgrade pip packages..." - print-environment
#! /bin/bash printenv - python-packages-count
#! /bin/bash pip3 list --format=columns | tail +3 | wc -l - python-source-file-count
#! /bin/bash tree | grep '.py$' | wc -l - query-dns-settings
#! /bin/bash # list all network services IN=$(networksetup -listallnetworkservices | awk '{if (NR>1) print $0 ";"}'); while IFS=";" read -ra SERVICES; do for i in "${SERVICES[@]}"; do echo "${i} DNS Servers:" networksetup -getdnsservers "${i}" done done <<< "$IN" - query-terminfo-database
#! /bin/bash # clear the screen tput clear # save cursor position tput sc # move cursor position tput cup 10 13 # hide cursor tput civis # show cursor tput cnorm # show output tput rc - rename-git-remote-repo
#! /bin/bash # print current remote repo url git remote -v; # after go to github.com and edit your repo name # execute command below to set remote name and url git remote set-url $0 $1; git remote -v; - resign-framework
#! /bin/bash codesign -f -s ${IDENTITY} ${FRAMEWORKPATH} - restart
#! /bin/bash # sudo reboot sudo shutdown -r now - retrive-cpu-core-count
#! /bin/bash sysctl -a | grep -Eo "core_count:(.+?)$" - retrive-external-ip
#! /bin/bash curl ipecho.net/plain; echo - retrive-system-version
#! /bin/bash sw_vers - retrive-website-status
#! /bin/bash siteaddr=$1 dig ${siteaddr} ping ${siteaddr} -c 10 whois ${siteaddr} nslookup ${siteaddr} traceroute ${siteaddr} - retrive-wifi-ip-address
#! /bin/bash ipconfig getifaddr en0 - rvi
#! /bin/bash rvictl -s $1 rvictl -l rvictl -x $1 - scan-wifi
#! /bin/bash airport -s - schedule-poweron
#! /bin/bash # sudo pmset repeat cancel sudo pmset repeat wakeorpoweron MTWRF 9:00:00 shutdown MTWRFSU 18:30:00 - search-system-command
#! /bin/bash whatis $1 - setting-terminal-proxy
#! /bin/bash variables=("http_proxy" "https_proxy" "ftp_proxy") for i in "${variables[@]}" do export $i="socks5://localhost:1080" done env | grep -e _proxy | sort echo -e "Proxy-related environment variables set." # # Reference: https://gist.github.com/patik/6d40ded40bf93c2f381b # # You can define the code as bash function and automatic set the # proxy variables when you lauch a bash shell. # # To delete the variables, execute unset $VAR_NAME in bash. - setup-airport
#! /bin/bash sudo ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/local/bin/airport export $PATH="/usr/local/bin:$PATH" #! /bin/bash python3 -m http.server python -m SimpleHTTPServer #! /bin/bash # Heavily inspired by https://www.commandlinefu.com/commands/view/6051/get-all-shellcode-on-binary-file-from-objdump # With slightly modify. objdump -d $1 | grep '[0-9a-f]:' | cut -f2 -d ':' | cut -f1-6 -d ' ' | tr -s ' ' | tr '\t' ' ' | sed 's/ $//g' | sed 's/ /\\x/g' | paste -s -d '\' - | sed 's/^/"/' | sed 's/$/"/g' #! /bin/bash osascript -e 'tell app "System Events" to display dialog "Hello world!"' - show-hidden-files
#! /bin/bash defaults write com.apple.finder AppleShowAllFiles true - special-variables
#! /bin/bash echo "File Name: $0" echo "First Params: $1" echo "Second Params: $2" echo "Quoted Values: $@" echo "Quoted Values: $*" echo "Total Params: $#" echo "Last Status: $?" echo "Current PID: $$" - ssh-with-alias
#! /bin/bash touch ~/.ssh/config; echo -e "Host ALIAS\n HostName HOSTADDR\n User USERNAME" >> ~/.ssh/config; - ssh-without-password
#! /bin/bash ssh-keygen -t rsa; ssh-copy-id -i ~/.ssh/id_rsa.pub USERNAME@HOSTADDR; - systab
#!/bin/bash # Copy from https://github.com/hollance/neural-engine/blob/master/docs/is-model-using-ane.md image list IMAGE_NAME # This prints the path to the IMAGE_NAME framework, something like this (it will be different on your machine): image dump systab 'put-the-path-here' - talk-content
#! /bin/bash say "Hello world!" - translate-rgb-to-hex
#! /bin/bash hex=$(printf "#%02x%02x%02x" ${1:-0} ${2:-0} ${3:-0}) echo -n $hex | pbcopy echo -e "\033[31m Result ${hex} copy to the clipboard." - translate-words-with-dict
#! /bin/bash open dict://$1 - zprint
#! /bin/bash # Show information about kernel zones sudo zprint 





