Bird
Raised Fist0
PowerShellscripting~5 mins

PowerShell on macOS - Time & Space Complexity

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Time Complexity: PowerShell on macOS
O(n)
Understanding Time Complexity

When running PowerShell scripts on macOS, it's important to understand how the script's running time changes as the input grows.

We want to see how the script's work increases when we give it more data.

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


# List all files in a directory and print their names
$files = Get-ChildItem -Path "." -File
foreach ($file in $files) {
    Write-Output $file.Name
}

This script gets all files in the current folder and prints each file name.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Looping through each file in the list.
  • How many times: Once for every file found in the directory.
How Execution Grows With Input

As the number of files increases, the script prints more names, so it does more work.

Input Size (n)Approx. Operations
10About 10 print actions
100About 100 print actions
1000About 1000 print actions

Pattern observation: The work grows directly with the number of files.

Final Time Complexity

Time Complexity: O(n)

This means the script's running time grows in a straight line as the number of files increases.

Common Mistake

[X] Wrong: "The script runs in the same time no matter how many files there are."

[OK] Correct: Each file adds one more print action, so more files mean more work and longer running time.

Interview Connect

Understanding how loops affect script speed helps you write efficient scripts and explain your code clearly in real situations.

Self-Check

"What if we added a nested loop to compare each file with every other file? How would the time complexity change?"

Practice

(1/5)
1. Which command do you use to start PowerShell on macOS after installation?
easy
A. pwsh
B. powershell
C. ps
D. shell

Solution

  1. Step 1: Recall the PowerShell command on macOS

    On macOS, PowerShell is started using the pwsh command, not powershell which is used on Windows.
  2. Step 2: Identify the correct command

    Among the options, only pwsh is the correct command to launch PowerShell on macOS.
  3. Final Answer:

    pwsh -> Option A
  4. Quick Check:

    PowerShell on macOS starts with pwsh [OK]
Hint: Remember: macOS uses 'pwsh' to start PowerShell [OK]
Common Mistakes:
  • Typing 'powershell' instead of 'pwsh' on macOS
  • Using 'ps' which lists processes, not PowerShell
  • Assuming 'shell' starts PowerShell
2. Which of the following is the correct syntax to run a PowerShell script named script.ps1 on macOS terminal?
easy
A. ./script.ps1
B. run script.ps1
C. pwsh script.ps1
D. powershell -file script.ps1

Solution

  1. Step 1: Understand how to run scripts in PowerShell on macOS

    On macOS, you run PowerShell scripts by calling pwsh followed by the script name.
  2. Step 2: Check each option

    ./script.ps1 tries to run the script directly, which may fail without execution permission and PowerShell context. powershell -file script.ps1 uses Windows syntax. run script.ps1 is invalid. pwsh script.ps1 correctly runs the script with PowerShell.
  3. Final Answer:

    pwsh script.ps1 -> Option C
  4. Quick Check:

    Run scripts with 'pwsh script.ps1' on macOS [OK]
Hint: Use 'pwsh script.ps1' to run scripts on macOS [OK]
Common Mistakes:
  • Trying to run script directly without 'pwsh'
  • Using Windows PowerShell syntax on macOS
  • Using 'run' command which doesn't exist
3. What will be the output of this PowerShell command run on macOS terminal?
pwsh -Command "Write-Output 'Hello macOS'"
medium
A. Hello macOS
B. Write-Output 'Hello macOS'
C. pwsh: command not found
D. Error: Invalid command

Solution

  1. Step 1: Understand the command structure

    The command uses pwsh -Command to run a PowerShell command inline, which outputs the string 'Hello macOS'.
  2. Step 2: Predict the output

    The Write-Output cmdlet prints the string to the terminal, so the output will be exactly 'Hello macOS'.
  3. Final Answer:

    Hello macOS -> Option A
  4. Quick Check:

    Write-Output prints text to terminal [OK]
Hint: Write-Output prints text; expect exact string output [OK]
Common Mistakes:
  • Confusing command string with output
  • Assuming 'pwsh' is not installed
  • Expecting error due to quotes
4. You try to run a PowerShell script on macOS with pwsh ./myscript.ps1 but get a permission denied error. What is the most likely fix?
medium
A. Use sudo pwsh ./myscript.ps1 to run as admin
B. Run chmod +x myscript.ps1 to add execute permission
C. Rename the script to myscript.sh
D. Reinstall PowerShell on macOS

Solution

  1. Step 1: Identify cause of permission denied

    On macOS, scripts need execute permission to run. Without it, you get a permission denied error.
  2. Step 2: Fix permission issue

    Using chmod +x myscript.ps1 adds execute permission, allowing the script to run.
  3. Final Answer:

    Run chmod +x myscript.ps1 to add execute permission -> Option B
  4. Quick Check:

    Permission denied? Add execute permission with chmod [OK]
Hint: Add execute permission with chmod +x before running script [OK]
Common Mistakes:
  • Trying to run script without execute permission
  • Renaming script to .sh which doesn't help PowerShell
  • Using sudo unnecessarily
  • Reinstalling PowerShell instead of fixing permissions
5. You want to automate listing all files in your Documents folder on macOS using PowerShell and save the output to a text file named files.txt. Which command correctly does this?
hard
A. Get-ChildItem ~/Documents > files.txt
B. ls ~/Documents > files.txt
C. pwsh -Command "ls" ~/Documents > files.txt
D. pwsh -Command "Get-ChildItem ~/Documents | Out-File files.txt"

Solution

  1. Step 1: Use PowerShell cmdlet to list files

    Get-ChildItem lists files and folders in PowerShell. Using ~/Documents targets the Documents folder.
  2. Step 2: Redirect output to a file in PowerShell

    PowerShell uses Out-File to save output to a file. The command runs inside pwsh -Command to execute from macOS terminal.
  3. Final Answer:

    pwsh -Command "Get-ChildItem ~/Documents | Out-File files.txt" -> Option D
  4. Quick Check:

    Use Get-ChildItem with Out-File inside pwsh [OK]
Hint: Use Get-ChildItem piped to Out-File inside pwsh command [OK]
Common Mistakes:
  • Using shell redirection > inside PowerShell command incorrectly
  • Using 'ls' which is not a PowerShell cmdlet
  • Running PowerShell cmdlets outside pwsh context
  • Omitting Out-File to save output