Using Local Terminal
Master the local terminal with this comprehensive usage guide covering everyday tasks, workflows, and advanced techniques.
Getting Started
Opening Your First Local Terminal
Step 1: Open terminal
Click: "+" button → "New Local Terminal"
Or press: Ctrl+Shift+T (Cmd+Shift+T on Mac)
Step 2: Verify it's local
# You should see:
[💻 Local] tab indicator
# Check where you are:
pwd
# Output: /Users/yourname (macOS)
# /home/yourname (Linux)
# C:\Users\yourname (Windows)
Step 3: Run your first command
echo "Hello from Local Terminal!"
ls -la
You're ready!
Common Workflows
Workflow 1: Local Development
Scenario: Frontend development with React
Setup:
Tab 1: Local Terminal - Dev Server
Tab 2: Local Terminal - Build/Watch
Tab 3: Local Terminal - Git
Tab 4: SSH Terminal - Backend API
Tab 1: Development Server
# Start dev server
cd ~/projects/my-app
npm run dev
# Output:
# Local: http://localhost:3000
# Network: http://192.168.1.100:3000
Tab 2: Watch/Build
# Watch for changes
npm run watch
# Or build when needed
npm run build
Tab 3: Git Operations
# Check status frequently
git status
# Make commits
git add .
git commit -m "Add new feature"
# Push changes
git push origin feature-branch
Tab 4: Backend (SSH)
# Connected to remote server
# Monitor API logs
tail -f /var/log/api/access.log
Benefit: Everything visible at once!
Workflow 2: Build and Deploy
Scenario: Build locally, deploy to server
Step 1: Clean build (Local Terminal)
cd ~/projects/my-app
# Clean previous builds
rm -rf dist/
# Install dependencies
npm ci
# Run tests
npm test
# Build for production
npm run build
Step 2: Verify build (Local Terminal)
# Check build size
du -sh dist/
# List built files
ls -la dist/
# Preview locally
npm run preview
Step 3: Deploy to staging (Switch to SSH Tab)
# Now in SSH terminal connected to staging server
cd /var/www/staging
# Backup current version
mv current current-backup-$(date +%Y%m%d_%H%M%S)
# Receive new build (run rsync from local terminal)
Step 4: Upload from local (Local Terminal)
# Upload build to server
rsync -avz --progress \
dist/ \
user@staging.example.com:/var/www/staging/current/
# Verify upload
ssh user@staging.example.com "ls -la /var/www/staging/current"
Step 5: Test and verify (SSH Terminal)
# Restart service
systemctl restart web-app
# Check status
systemctl status web-app
# Tail logs
journalctl -u web-app -f
Workflow 3: Multi-Project Management
Scenario: Working on multiple projects
Tab Organization:
[💻 Local: project-a] - Main project
[💻 Local: project-b] - Secondary project
[💻 Local: shared] - Shared tools
[💻 Local: git] - Git operations
Project A:
cd ~/projects/project-a
npm run dev
Project B:
cd ~/projects/project-b
npm run start
Shared Tools:
cd ~/tools
# Run database locally
docker-compose up -d
# Check status
docker ps
Git Tab:
# Quick navigation with aliases
alias pa="cd ~/projects/project-a"
alias pb="cd ~/projects/project-b"
# Use for all git operations
pa
git status
git pull
pb
git status
git commit -am "Update"
Workflow 4: Testing Workflow
Scenario: Run different types of tests
Tab 1: Unit Tests (Watch Mode)
npm run test:watch
# Output shows test results in real-time
# PASS src/components/Button.test.tsx
# PASS src/utils/helpers.test.ts
Tab 2: Integration Tests
npm run test:integration
# Runs against local API
Tab 3: E2E Tests
npm run test:e2e
# Opens browser, runs tests
# Watch results in terminal
Tab 4: Coverage Report
npm run test:coverage
# Generate and view coverage
open coverage/index.html
Workflow 5: Database Management
Scenario: Local database operations
Tab 1: Database Server
# Start PostgreSQL locally
docker run -d \
-p 5432:5432 \
-e POSTGRES_PASSWORD=password \
postgres:latest
# Or MongoDB
docker run -d \
-p 27017:27017 \
mongo:latest
Tab 2: Database Client
# Connect to PostgreSQL
psql -h localhost -U postgres
# Run queries
SELECT * FROM users;
# Or MongoDB
mongosh
# Show databases
show dbs
Tab 3: Migrations
# Run migrations
npm run migrate
# Check status
npm run migrate:status
# Rollback if needed
npm run migrate:rollback
Tab 4: Database Backups
# Backup database
pg_dump mydb > backup-$(date +%Y%m%d).sql
# Restore
psql mydb < backup-20240117.sql
File Management
Navigation
Basic navigation:
# Go to home directory
cd ~
cd
# Go to directory
cd ~/projects/my-app
# Go up one level
cd ..
# Go back to previous directory
cd -
# Show current directory
pwd
Quick jumps:
# Jump to root
cd /
# Jump to user's home
cd ~username
# Using environment variables
cd $HOME/Documents
cd $OLDPWD # Previous directory
Directory stack:
# Push directory onto stack
pushd ~/projects/app1
# Do something...
# Return to previous directory
popd
# View directory stack
dirs -v
File Operations
Listing files:
# List all files
ls -la
# Human-readable sizes
ls -lah
# Sort by modification time
ls -lt
# Only show directories
ls -d */
# Show hidden files only
ls -d .*
Creating files/directories:
# Create empty file
touch file.txt
# Create multiple files
touch file1.txt file2.txt file3.txt
# Create directory
mkdir newdir
# Create nested directories
mkdir -p path/to/nested/dir
# Create directory with permissions
mkdir -m 755 mydir
Copying and moving:
# Copy file
cp source.txt destination.txt
# Copy directory recursively
cp -r source_dir/ dest_dir/
# Copy with progress (verbose)
cp -v large_file.zip /destination/
# Move/rename file
mv oldname.txt newname.txt
# Move to directory
mv file.txt ~/Documents/
# Move multiple files
mv *.txt ~/Documents/
Deleting:
# Delete file
rm file.txt
# Delete directory and contents
rm -rf directory/
# Delete with confirmation
rm -i file.txt
# Delete empty directory
rmdir empty_dir/
# Find and delete
find . -name "*.log" -delete
Searching Files
Find by name:
# Find file by name
find . -name "config.json"
# Case-insensitive
find . -iname "README*"
# Find directories only
find . -type d -name "node_modules"
# Find files only
find . -type f -name "*.js"
Find by content:
# Search text in files
grep -r "search term" .
# Case-insensitive
grep -ri "error" logs/
# Show line numbers
grep -rn "TODO" src/
# Show only filenames
grep -rl "deprecated" .
Find by date:
# Files modified today
find . -mtime 0
# Files modified in last 7 days
find . -mtime -7
# Files not accessed in 30 days
find . -atime +30
Find by size:
# Files larger than 10MB
find . -size +10M
# Files smaller than 1KB
find . -size -1k
# Files between 1MB and 10MB
find . -size +1M -size -10M
File Permissions
View permissions:
# Detailed listing
ls -la
# Output: -rwxr-xr-x
# ↓↓↓ ↓↓↓ ↓↓↓
# own grp oth
Change permissions:
# Make executable
chmod +x script.sh
# Remove write for others
chmod o-w file.txt
# Set specific permissions
chmod 755 script.sh # rwxr-xr-x
chmod 644 file.txt # rw-r--r--
# Recursive
chmod -R 755 directory/
Change ownership:
# Change owner
sudo chown user file.txt
# Change group
sudo chgrp group file.txt
# Change both
sudo chown user:group file.txt
# Recursive
sudo chown -R user:group directory/
Package Management
npm (Node.js)
Install packages:
# Install dependencies
npm install
# Install specific package
npm install lodash
# Install dev dependency
npm install --save-dev jest
# Install globally
npm install -g typescript
# Install specific version
npm install react@17.0.2
Run scripts:
# Run script from package.json
npm run build
npm run test
npm run dev
# Run with arguments
npm run test -- --watch
# List available scripts
npm run
Package info:
# Check outdated packages
npm outdated
# Check for security issues
npm audit
# Fix security issues
npm audit fix
# View package info
npm info lodash
# List installed packages
npm list --depth=0
pip (Python)
Install packages:
# Install package
pip install requests
# Install from requirements
pip install -r requirements.txt
# Install specific version
pip install django==3.2
# Upgrade package
pip install --upgrade requests
Virtual environments:
# Create virtual environment
python3 -m venv venv
# Activate (Unix)
source venv/bin/activate
# Activate (Windows)
venv\Scripts\activate
# Deactivate
deactivate
Package info:
# List installed packages
pip list
# Show package info
pip show requests
# Check outdated packages
pip list --outdated
# Freeze requirements
pip freeze > requirements.txt
Homebrew (macOS/Linux)
Install packages:
# Install package
brew install wget
# Install cask (GUI apps)
brew install --cask google-chrome
# Install specific version
brew install node@16
Manage packages:
# Update Homebrew
brew update
# Upgrade packages
brew upgrade
# Uninstall package
brew uninstall wget
# Search packages
brew search python
Package info:
# List installed
brew list
# Show package info
brew info node
# Check outdated
brew outdated
# Cleanup old versions
brew cleanup
Git Operations
Basic Git
Initialize:
# Create new repository
git init
# Clone repository
git clone https://github.com/user/repo.git
# Clone specific branch
git clone -b develop https://github.com/user/repo.git
Status and changes:
# Check status
git status
# Short status
git status -s
# Show changes
git diff
# Show staged changes
git diff --staged
# Show last commit
git show HEAD
Stage and commit:
# Stage file
git add file.txt
# Stage all changes
git add .
# Stage interactively
git add -p
# Commit
git commit -m "Add feature"
# Commit all tracked changes
git commit -am "Update files"
# Amend last commit
git commit --amend
Branching
Create and switch:
# Create branch
git branch feature-name
# Switch branch
git checkout feature-name
# Create and switch
git checkout -b feature-name
# Delete branch
git branch -d feature-name
# Force delete
git branch -D feature-name
View branches:
# List local branches
git branch
# List all branches
git branch -a
# List with last commit
git branch -v
# Show merged branches
git branch --merged
Remote Operations
Manage remotes:
# View remotes
git remote -v
# Add remote
git remote add origin https://github.com/user/repo.git
# Change remote URL
git remote set-url origin https://github.com/user/new-repo.git
# Remove remote
git remote remove origin
Push and pull:
# Push to remote
git push origin main
# Push new branch
git push -u origin feature-name
# Pull changes
git pull origin main
# Pull with rebase
git pull --rebase origin main
# Fetch without merging
git fetch origin
History and Logs
View history:
# Show log
git log
# One line per commit
git log --oneline
# Show graph
git log --graph --oneline --all
# Show last N commits
git log -5
# Show commits by author
git log --author="John"
# Show commits with specific message
git log --grep="fix"
Search history:
# Find commit that added/removed string
git log -S "function_name"
# Show file history
git log --follow file.txt
# Show changes in file
git log -p file.txt
Process Management
Running Processes
Start process:
# Start in foreground
npm run dev
# Start in background
npm run dev &
# Start with nohup (survives terminal close)
nohup npm run dev > output.log 2>&1 &
# Start detached
npm run dev > /dev/null 2>&1 &
Check processes:
# Show all processes
ps aux
# Search for process
ps aux | grep node
# Show process tree
pstree
# Show processes by user
ps -u username
Manage processes:
# List background jobs
jobs
# Bring to foreground
fg %1
# Send to background
bg %1
# Kill job
kill %1
# Kill by PID
kill 12345
# Force kill
kill -9 12345
# Kill by name
pkill node
Monitoring
System resources:
# Interactive process viewer
top
# Enhanced top (if installed)
htop
# One-time snapshot
top -bn1
# Monitor specific user
top -u username
Disk usage:
# Check disk space
df -h
# Directory sizes
du -sh *
# Largest files
du -ah | sort -rh | head -20
# Find large directories
du -h --max-depth=1 | sort -rh
Memory usage:
# Show memory
free -h
# Show swap
swapon --show
# Memory by process
ps aux --sort=-%mem | head
Environment Variables
View Variables
List all variables:
# All environment variables
env
# Specific variable
echo $PATH
echo $HOME
echo $USER
Common variables:
# Show important variables
echo $PATH # Executable search path
echo $HOME # User home directory
echo $USER # Current username
echo $SHELL # Default shell
echo $PWD # Current directory
echo $OLDPWD # Previous directory
Set Variables
Temporary (current session):
# Set variable
export MY_VAR="value"
# Use variable
echo $MY_VAR
# Set multiple
export VAR1="value1" VAR2="value2"
# Add to PATH
export PATH="$PATH:/new/path"
Permanent:
# Add to shell profile
# For bash: ~/.bashrc or ~/.bash_profile
# For zsh: ~/.zshrc
# For fish: ~/.config/fish/config.fish
echo 'export MY_VAR="value"' >> ~/.bashrc
# Reload profile
source ~/.bashrc
For single command:
# Set for one command only
MY_VAR="value" command
# Example:
NODE_ENV=production npm run build
Tips & Tricks
1. Command History Search
Reverse search:
# Press Ctrl+R
# Type search term
# Press Enter to execute
# Or Ctrl+G to cancel
History commands:
# Show history
history
# Execute command from history
!123 # Execute command #123
# Execute last command
!!
# Execute last command starting with 'git'
!git
# Use argument from previous command
ls /some/path
cd !$ # cd to /some/path
2. Command Aliases
Create aliases:
# In ~/.bashrc or ~/.zshrc
# Navigation
alias ..='cd ..'
alias ...='cd ../..'
alias ~='cd ~'
# Listing
alias ll='ls -la'
alias la='ls -A'
alias l='ls -CF'
# Git shortcuts
alias gs='git status'
alias ga='git add'
alias gc='git commit'
alias gp='git push'
alias gl='git pull'
# Safety nets
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Quick edits
alias bashrc='code ~/.bashrc'
alias zshrc='code ~/.zshrc'
3. Useful One-Liners
File operations:
# Create timestamped backup
cp file.txt file.txt.backup-$(date +%Y%m%d_%H%M%S)
# Find and replace in files
find . -name "*.js" -exec sed -i 's/old/new/g' {} \;
# Count files in directory
find . -type f | wc -l
# Find duplicate files
find . -type f -exec md5sum {} \; | sort | uniq -w32 -dD
Text processing:
# Remove empty lines
sed '/^$/d' file.txt
# Print specific lines
sed -n '10,20p' file.txt
# Replace text
sed 's/old/new/g' file.txt
# Extract column
awk '{print $1}' file.txt
System info:
# Current date/time
date +"%Y-%m-%d %H:%M:%S"
# System uptime
uptime
# Logged in users
who
# Last logins
last | head
4. Keyboard Shortcuts Reminder
Line editing:
Ctrl+A- Beginning of lineCtrl+E- End of lineCtrl+U- Delete to beginningCtrl+K- Delete to endCtrl+W- Delete word backwardAlt+D- Delete word forward
Navigation:
Ctrl+B- Backward one characterCtrl+F- Forward one characterAlt+B- Backward one wordAlt+F- Forward one word
Control:
Ctrl+C- Cancel commandCtrl+D- Exit (EOF)Ctrl+Z- Suspend processCtrl+L- Clear screenCtrl+R- Reverse search
Next Steps
- 🆚 Local vs SSH Terminal - Understand the differences
- 🐚 Shell Selection - Choose the right shell
- 💡 Snippets - Save frequently used commands
- ⌨️ Keyboard Shortcuts - Complete shortcut reference