Files
marathon/.serena/memories/macos_system_commands.md
2026-02-07 18:19:21 +00:00

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

  1. sed: Requires empty string for in-place edit: sed -i '' ...
  2. find: Uses BSD find (slightly different options)
  3. date: Different format options than GNU date
  4. readlink: Use greadlink (if coreutils installed) for -f flag
  5. stat: Different output format than GNU stat
  6. grep: BSD grep (consider installing ggrep for 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 terminal
  • Cmd+T - New tab
  • Cmd+N - New window
  • Cmd+W - Close tab
  • Cmd+, - Preferences

Command Line Shortcuts

  • Ctrl+A - Beginning of line
  • Ctrl+E - End of line
  • Ctrl+U - Delete to beginning
  • Ctrl+K - Delete to end
  • Ctrl+R - Search history
  • Ctrl+C - Cancel command
  • Ctrl+D - Exit shell
  • Ctrl+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