7.7 KiB
7.7 KiB
macOS (Darwin) System Commands
This document covers macOS-specific system commands and utilities that may differ from standard Unix/Linux systems.
File System Operations
Finding Files
# Standard Unix find (works on macOS)
find . -name "*.rs"
find . -type f -name "Cargo.toml"
# macOS Spotlight search (faster for indexed content)
mdfind -name "rustfmt.toml"
mdfind "kind:rust-source"
# Locate database (if enabled)
locate pattern
Listing & Viewing
# List with details
ls -la
ls -lh # human-readable sizes
ls -lhS # sorted by size
ls -lht # sorted by modification time
# View file contents
cat file.txt
head -20 file.txt
tail -50 file.txt
less file.txt # paginated view
# Quick Look (macOS-specific)
qlmanage -p file.txt # preview file
Directory Navigation
cd /path/to/directory
cd ~ # home directory
cd - # previous directory
pwd # print working directory
pushd /path # push to directory stack
popd # pop from directory stack
Text Processing
Searching in Files
# grep (standard)
grep -r "pattern" .
grep -i "pattern" file.txt # case-insensitive
grep -n "pattern" file.txt # with line numbers
grep -A 5 "pattern" file.txt # 5 lines after match
grep -B 5 "pattern" file.txt # 5 lines before match
# ripgrep (if installed - faster and better)
rg "pattern"
rg -i "pattern" # case-insensitive
rg -t rust "pattern" # only Rust files
Text Manipulation
# sed (stream editor) - macOS uses BSD sed
sed -i '' 's/old/new/g' file.txt # note the '' for in-place edit
sed 's/pattern/replacement/' file.txt
# awk
awk '{print $1}' file.txt
# cut
cut -d',' -f1,3 file.csv
Process Management
Viewing Processes
# List processes
ps aux
ps aux | grep cargo
# Interactive process viewer
top
htop # if installed (better)
# Activity Monitor (GUI)
open -a "Activity Monitor"
Process Control
# Kill process
kill PID
kill -9 PID # force kill
killall process_name
# Background/foreground
command & # run in background
fg # bring to foreground
bg # continue in background
Ctrl+Z # suspend foreground process
Network
Network Info
# IP address
ifconfig
ipconfig getifaddr en0 # specific interface
# Network connectivity
ping google.com
traceroute google.com
# DNS lookup
nslookup domain.com
dig domain.com
# Network statistics
netstat -an
lsof -i # list open network connections
Port Management
# Check what's using a port
lsof -i :8080
lsof -i tcp:3000
# Kill process using port
lsof -ti:8080 | xargs kill
File Permissions
Basic Permissions
# Change permissions
chmod +x script.sh # make executable
chmod 644 file.txt # rw-r--r--
chmod 755 dir/ # rwxr-xr-x
# Change ownership
chown user:group file
chown -R user:group directory/
# View permissions
ls -l
stat file.txt # detailed info
Extended Attributes (macOS-specific)
# List extended attributes
xattr -l file
# Remove quarantine attribute
xattr -d com.apple.quarantine file
# Clear all extended attributes
xattr -c file
Disk & Storage
Disk Usage
# Disk space
df -h
df -h /
# Directory size
du -sh directory/
du -h -d 1 . # depth 1
# Sort by size
du -sh * | sort -h
Disk Utility
# Verify disk
diskutil verifyVolume /
diskutil list
# Mount/unmount
diskutil mount diskName
diskutil unmount diskName
Package Management
Homebrew (common on macOS)
# Install package
brew install package-name
# Update Homebrew
brew update
# Upgrade packages
brew upgrade
# List installed
brew list
# Search packages
brew search pattern
Mac App Store
# List updates
softwareupdate --list
# Install updates
softwareupdate --install --all
System Information
System Details
# macOS version
sw_vers
sw_vers -productVersion
# System profiler
system_profiler SPHardwareDataType
system_profiler SPSoftwareDataType
# Kernel info
uname -a
Hardware Info
# CPU info
sysctl -n machdep.cpu.brand_string
sysctl hw
# Memory
top -l 1 | grep PhysMem
# Disk info
diskutil info /
Environment & Shell
Environment Variables
# View all
env
printenv
# Set variable
export VAR_NAME=value
# Shell config files
~/.zshrc # Zsh (default on modern macOS)
~/.bashrc # Bash
~/.profile # Login shell
Path Management
# View PATH
echo $PATH
# Add to PATH (in ~/.zshrc or ~/.bashrc)
export PATH="/usr/local/bin:$PATH"
# Which command
which cargo
which rustc
Archives & Compression
Tar
# Create archive
tar -czf archive.tar.gz directory/
# Extract archive
tar -xzf archive.tar.gz
# List contents
tar -tzf archive.tar.gz
Zip
# Create zip
zip -r archive.zip directory/
# Extract zip
unzip archive.zip
# List contents
unzip -l archive.zip
Clipboard (macOS-specific)
# Copy to clipboard
echo "text" | pbcopy
cat file.txt | pbcopy
# Paste from clipboard
pbpaste
pbpaste > file.txt
Notifications (macOS-specific)
# Display notification
osascript -e 'display notification "Message" with title "Title"'
# Alert dialog
osascript -e 'display dialog "Message" with title "Title"'
Xcode & iOS Development
Xcode Command Line Tools
# Install command line tools
xcode-select --install
# Show active developer directory
xcode-select -p
# Switch Xcode version
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
iOS Simulator
# List simulators
xcrun simctl list devices
# Boot simulator
xcrun simctl boot "iPad Pro 12.9-inch M2"
# Open Simulator app
open -a Simulator
# Install app
xcrun simctl install <device-uuid> path/to/app.app
# Launch app
xcrun simctl launch <device-uuid> bundle.id
# View logs
xcrun simctl spawn <device-uuid> log stream
Physical Device
# List connected devices
xcrun devicectl list devices
# Install app
xcrun devicectl device install app --device <device-id> path/to/app.app
# Launch app
xcrun devicectl device process launch --device <device-id> bundle.id
# View logs
xcrun devicectl device stream log --device <device-id>
Code Signing
# List signing identities
security find-identity -v -p codesigning
# Sign application
codesign -s "Developer ID" path/to/app.app
# Verify signature
codesign -vv path/to/app.app
macOS-Specific Differences from Linux
Key Differences
- sed: Requires empty string for in-place edit:
sed -i '' ... - find: Uses BSD find (slightly different options)
- date: Different format options than GNU date
- readlink: Use
greadlink(if coreutils installed) for-fflag - stat: Different output format than GNU stat
- grep: BSD grep (consider installing
ggrepfor GNU grep)
GNU Tools via Homebrew
# Install GNU coreutils
brew install coreutils
# Then use with 'g' prefix
gls, gcp, gmv, grm, greadlink, gdate, etc.
Useful macOS Shortcuts
Terminal Shortcuts
Cmd+K- Clear terminalCmd+T- New tabCmd+N- New windowCmd+W- Close tabCmd+,- Preferences
Command Line Shortcuts
Ctrl+A- Beginning of lineCtrl+E- End of lineCtrl+U- Delete to beginningCtrl+K- Delete to endCtrl+R- Search historyCtrl+C- Cancel commandCtrl+D- Exit shellCtrl+Z- Suspend process
Quick Reference
Most Common for Aspen Development
# Find Rust files
find . -name "*.rs"
# Search in Rust files
grep -r "pattern" crates/
# Check what's using a port
lsof -i :8080
# View disk space
df -h
# View process list
ps aux | grep cargo
# View logs
log stream --predicate 'process == "app"'
# Xcode simulators
xcrun simctl list devices available