How to create a universal (script) file for a Mac, based on several Terminal commands

I have several Terminal commands I use for troubleshooting purposes, by typing them in one by one into the terminal window.

These commands require the user's password to be entered.

I'm looking for a way to create a universal (script) file with these commands. I want to be able to run the file on a Mac just by double-clicking on it or dragging the file over the Terminal icon.

I have never done anything like this before. Is there any way to create such a script? Please advise.


Solution 1:

Short answer

A .command script should do the trick


Step-by-step

  1. Open TextEdit and create a new file
  2. Convert it to plain text by clicking Format > Make Plain Text
  3. Add your commands, one per line. For example, you could do:
    #! /bin/bash cd ~/Desktop mkdir myCoolFolder cd myCoolFolder

  4. Run chmod u+x ~/Desktop/myCommandScript.command in your terminal, where ~/Desktop/myCommandScript.command is the path to your script. This will give the terminal permission to run the file.

  5. You're done! Double-click the file to run. Dragging over the terminal icon will also work.

Notes:

  • If you need to do something that requires root (admin) access, you can prefix your command with sudo. When the script runs, you'll have to enter your password (and be an administrator)
  • If the end user isn't an administrator, but you need to do something that required root access, you can use su someAdminName, which will perform the command as someAdminName (you'll need his password).

You can also see here on Stack Overflow for a bit more information.

Solution 2:

A script is just a series of commands, so you could put it into a bash script.

#!/bin/bash

command 1
command 2
command 3

Now, this all depends on the they types of command and whether or not they require user intervention.

However, if you are getting diagnostic info, for example, you can have a script that does

#!/bin/bash

# Get SMART status of main drive
diskutil info disk0 | grep -i smart

# Get the model of the machine in question
system_profiler SPHardwareDataType | grep -i Identifier

Those are just to examples. Keep in mind that any output generated, will get sent to the console (screen). However, you can redirect the output to a file by appending >> /path/to/outputfile.txt at the end of each command so you have a file which you can parse once the file has finished running.

You can name the file diagnostics.sh and place it anywhere you like. Just make sure you make it executable by issuing the command chmod +x diagnostics.sh and use ./diagnostics.sh to execute it or double click on it to run it if it's saved to your desktop.