The Terminal app allows you to control your Mac using a command prompt. Why would you want to do that? Well, perhaps because you’re used to working on a command line in a Unix-based system and prefer to work that way. Terminal is a Mac command line interface. There are several advantages to using Terminal to accomplish some tasks — it’s usually quicker, for example. In order to use it, however, you’ll need to get to grips with its basic commands and functions. Once you’ve done that, you can dig deeper and learn more commands and use your Mac’s command prompt for more complex, as well as some fun, tasks.
Curated Mac apps that keep your Mac’s performance under control. Avoid Terminal commands, avoid trouble.
Download FreeHow to open Terminal on Mac
The Terminal app is in the Utilities folder in Applications. To open it, either open your Applications folder, then open Utilities and double-click on Terminal, or press Command - spacebar to launch Spotlight and type 'Terminal,' then double-click the search result.
You’ll see a small window with a white background open on your desktop. In the title bar are your username, the word 'bash' and the dimensions of the window in pixels. Bash stands for 'Bourne again shell'. There are a number of different shells that can run Unix commands, and on the Mac Bash is the one used by Terminal.
If you want to make the window bigger, click on the bottom right corner and drag it outwards. If you don’t like the black text on a white background, go to the Shell menu, choose New Window and select from the options in the list.
If Terminal feels complicated or you have issues with the set-up, let us tell you right away that there are alternatives. MacPilot allows to get access to over 1,200 macOS features without memorizing any commands. Basically, a third-party Terminal for Mac that acts like Finder.
For Mac monitoring features, try iStat Menus. The app collects data like CPU load, disk activity, network usage, and more — all of which accessible from your menu bar.
Cron is good for something that will run periodically, like every Saturday at 4am. There's also anacron, which works around power shutdowns, sleeps, and whatnot.As well as at. But for a one-off solution, that doesn't require root or anything, you can just use date to compute the seconds-since-epoch of the target time as well as the present time, then use expr to find the difference, and sleep. Nov 16, 2018 run doskey /macrofile=doskey.mac. Then set up a doskey,mac in root directory with the CORRECT commands. Ls=dir $. /o/w cat=type $. rm=del $. lsl=dir $. /o/p quit=exit. Yes, I have to work in the sludgepit, but I can fix the command set. Jul 22, 2019 The default shell on macOS Catalina has changed from Bash to Zsh. You have to run a command to actually make the change and many think that Zsh is better. If you’ve made the switch and want to change back to Bash as the default shell whenever you open Terminal, it’s an easy change to make. Here’s how you can switch back to bash in Terminal. The commands you enter during a session are saved so you can repeat a previously used command without retyping it. In the Terminal app on your Mac, press the Up Arrow key. The last command you entered appears on the command line. Continue pressing the Up Arrow key until you see the command you want, then press Return.
Basic Mac commands in Terminal
The quickest way to get to know Terminal and understand how it works is to start using it. But before we do that, it’s worth spending a little time getting to know how commands work. To run a command, you just type it at the cursor and hit Return to execute.
Every command is made up of three elements: the command itself, an argument which tells the command what resource it should operate on, and an option that modifies the output. So, for example, to move a file from one folder to another on your Mac, you’d use the move command 'mv' and then type the location of the file you want to move, including the file name and the location where you want to move it to.
Let’s try it.
- Type cd ~/Documentsthen and press Return to navigate to your Home folder.
- Type lsthen Return (you type Return after every command).
You should now see a list of all the files in your Documents folder — ls is the command for listing files.
To see a list of all the commands available in Terminal, hold down the Escape key and then press y when you see a question asking if you want to see all the possibilities. To see more commands, press Return.
Unix has its own built-in manual. So, to learn more about a command type man [name of command], where 'command' is the name of the command you want find out more about.
Terminal rules
There are a few things you need to bear in mind when you’re typing commands in Terminal, or any other command-line tool. Firstly, every character matters, including spaces. So when you’re copying a command you see here, make sure you include the spaces and that characters are in the correct case.
You can’t use a mouse or trackpad in Terminal, but you can navigate using the arrow keys. If you want to re-run a command, tap the up arrow key until you reach it, then press Return. To interrupt a command that’s already running, type Control-C.
Commands are always executed in the current location. So, if you don’t specify a location in the command, it will run wherever you last moved to or where the last command was run. Use the cdcommand, followed by a directory path, like in Step 1 above, to specify the folder where you want a command to run.
There is another way to specify a location: go to the Finder, navigate to the file or folder you want and drag it onto the Terminal window, with the cursor at the point where you would have typed the path.
Here’s another example. This time, we’ll create a new folder inside your Documents directory and call it 'TerminalTest.'
- Open a Finder window and navigate to your Documents folder.
- Type cd and drag the Documents folder onto the Terminal window.
- Now, type mkdir 'TerminalTest'
Go back to the Finder, open Text Edit and create a new file called 'TerminalTestFile.rtf'. Now save it to the TerminalTest folder in your Documents folder.
In the Terminal window, type cd ~/Documents/TerminalTest then Return. Now type lsand you should see 'TerminalTestFile' listed.
To change the name of the file, type this, pressing Return after every step:
- cd~/Documents/Terminal Test
- mv TerminalTestFile TerminalTestFile2.rtf
That will change the name of the file to 'TerminalTestFile2'. You can, of course, use any name you like. The mv command means 'move' and you can also use it to move files from one directory to another. In that case, you’d keep the file names the same, but specify another directory before typing the the second instance of the name, like this:
mv ~/Documents/TerminalTest TerminalTestFile.rtf ~/Documents/TerminalTest2 TerminalTestFile.rtf
More advanced Terminal commands
Terminal can be used for all sorts of different tasks. Some of them can be performed in the Finder, but are quicker in Terminal. Others access deep-rooted parts of macOS that aren’t accessible from the Finder without specialist applications. Here are a few examples.
Copy files from one folder to another
- In a Terminal window, type ditto [folder 1] [folder 1] where 'folder 1' is the folder that hosts the files and 'folder 2' is the folder you want to move them to.
- To see the files being copied in the Terminal window, type -v after the command.
Download files from the internet
You’ll need the URL of the file you want to download in order to use Terminal for this.
- cd ~/Downloads/
- curl -O [URL of file you want to download]
If you want to download the file to a directory other than your Downloads folder, replace ~/Downloads/ with the path to that folder, or drag it onto the Terminal window after you type the cd command.
Change the default location for screenshots
If you don’t want macOS to save screenshots to your Desktop when you press Command-Shift-3, you can change the default location in Terminal
- defaults write com.apple.screencapture location [path to folder where you want screenshots to be saved]
- Hit Return
- killall SystemUIServer
- Hit Return
Change the default file type for screenshots
By default, macOS saves screenshots as .png files. To change that to .jpg, do this:
- defaults write com.apple.screencapture type JPG
- Press Return
- killall SystemUIServer
- Press Return
Delete all files in a folder
The command used to delete, or remove, files in Terminal is rm. So, for example, if you wanted to remove a file in your Documents folder named 'oldfile.rtf' you’d use cd ~/Documents to go to your Documents folder then to delete the file. As it stands, that will delete the file without further intervention from you. If you want to confirm the file to be deleted, use -i as in rm -i oldfile.rtf
To delete all the files and sub-folders in a directory named 'oldfolder', the command is rm -R oldfolder and to confirm each file should be deleted, rm -iR oldfolder
Just because you can use Terminal to delete files on your Mac, doesn’t mean you should. It’s a relatively blunt instrument, deleting only those files and folders you specify.
Run Bash Command For A Set Period Of Time Macos 2017
Another way to free up space
![Run Bash Command For A Set Period Of Time Macos Run Bash Command For A Set Period Of Time Macos](/uploads/1/2/6/6/126634653/694036586.png)
If your goal in removing files or folders is to free up space on your Mac, or to remove junk files that are causing your Mac to run slowly, it’s far better to use an app designed for the purpose. CleanMyMac X is one such app.
It will scan your Mac for files and recommend which ones you can delete safely, as well as telling you how much space you’ll save. And once you’ve decided which files to delete, you can get rid of them in a click. You can download CleanMyMac here.
As you can see, while Terminal may look scary and seem like it’s difficult to use, it really isn’t. The key is learning a few commands, such as those we’ve outlined above, and getting to know the syntax for those commands.
However, you should be careful when using Terminal, it’s a powerful tool that has deep access to your Mac’s system files. Check commands by googling them if you’re not sure what they do. And if you need to delete files to save space, use an app like CleanMyMac X to do it. It’s much safer!
These might also interest you:
On Unix-like operating systems, test is a builtin command of the Bash shell that can test file attributes, and perform string and arithmetic comparisons.
Description
test provides no output, but returns an exit status of 0 for 'true' (test successful) and 1 for 'false' (test failed).
The test command is frequently used as part of a conditionalexpression. For instance, the following statement says, 'If 4 is greater than 5, output yes, otherwise output no.'
The following statement says, 'If 6 is greater than 5, output yes, otherwise output no.'
The test command may also be expressed with single brackets [ ... ], as long as they are separated from all other arguments with whitespace. For example, the following statement checks that the system file /etc/passwd exists, and if not, outputs 'uh-oh.'
Syntax
File tests:
String tests:
Shell options and variables:
Simple logic (test if values are null):
Numerical comparison (for integer values only; bash doesn't do floating point math):
Options
The test builtin command takes the following options.
-afile | Returns true if file exists. Does the same thing as -e. Both are included for compatibility reasons with legacy versions of Unix. |
-bfile | Returns true if file is 'block-special'. Block-special files are similar to regular files, but are stored on block devices — special areas on the storage device that are written or read one block (sector) at a time. |
-cfile | Returns true if file is 'character-special.' Character-special files are written or read byte-by-byte (one character at a time), immediately, to a special device. For example, /dev/urandom is a character-special file. |
-dfile | Returns true if file is a directory. |
-efile | Returns true if file exists. Does the same thing as -a. Both are included for compatibility reasons with legacy versions of Unix. |
-ffile | Returns true if file exists, and is a regular file. |
-gfile | Returns true if file has the setgid bit set. |
-hfile | Returns true if file is a symbolic link. Does the same thing as -L. Both are included for compatibility reasons with legacy versions of Unix. |
-Lfile | Returns true if file is a symbolic link. Does the same thing as -h. Both are included for compatibility reasons with legacy versions of Unix. |
-kfile | Returns true if file has its sticky bit set. |
-pfile | Returns true if the file is a named pipe, e.g., as created with the command mkfifo. |
-rfile | Returns true if file is readable by the user running test. |
-sfile | Returns true if file exists, and is not empty. |
-Sfile | Returns true if file is a socket. |
-tfd | Returns true if file descriptorfd is opened on a terminal. |
-ufile | Returns true if file has the setuid bit set. |
-wfile | Returns true if the user running test has writepermission to file, i.e. make changes to it. |
-xfile | Returns true if file is executable by the user running test. |
-Ofile | Returns true if file is owned by the user running test. |
-Gfile | Returns true if file is owned by the group of the user running test. |
-Nfile | Returns true if file was modified since the last time it was read. |
file1-ntfile2 | Returns true if file1 is newer (has a newer modification date/time) than file2. |
file1-otfile2 | Returns true if file1 is older (has an older modification date/time) than file2. |
file1-effile2 | Returns true if file1 is a hard link to file2. |
test [-n] string | Returns true if string is not empty. Operates the same with or without -n. For example, if mystr=', then test '$mystr' and test -n '$mystr' would both be false. If mystr='Not empty', then test '$mystr' and test -n '$mystr' would both be true. |
-zstring | Returns true if string string is empty, i.e. '. |
string1=string2 | Returns true if string1 and string2 are equal, i.e. contain the same characters. |
string1!=string2 | Returns true if string1 and string2 are not equal. |
string1<string2 | Returns true if string1 sorts before string2 lexicographically, according to ASCII numbering, based on the first character of the string. For instance, test 'Apple' < 'Banana' is true, but test 'Apple' < 'banana' is false, because all lowercase letters have a lower ASCII number than their uppercase counterparts. Tip: Enclose any variable names in double quotes to protect whitespace. Also, escape the less than symbol with a backslash to prevent bash from interpreting it as a redirection operator. For instance, use test '$str1' < '$str2' instead of test $str1 < $str2. The latter command will try to read from a file whose name is the value of variable str2. For more information, see redirection in bash. |
string1>string2 | Returns true if string1 sorts after string2 lexicographically, according to the ASCII numbering. As noted above, use test '$str1' > '$str2' instead of test $str1 > $str2. The latter command creates or overwrites a file whose name is the value of variable str2. |
-ooption | Returns true if the shell optionopt is enabled. |
-vvar | Returns true if the shell variablevar is set. |
-Rvar | Returns true if the shell variable var is set, and is a name reference. (It's possible this refers to an indirect reference, as described in Parameter expansion in bash.) |
!expr | Returns true if and only if the expression expr is null. |
expr1-aexpr2 | Returns true if expressions expr1 and expr2 are both not null. |
expr1-oexpr2 | Returns true if either of the expressions expr1 or expr2 are not null. |
arg1-eqarg2 | true if argumentarg1 equals arg2. |
arg1-nearg2 | true if argument arg1 is not equal to arg2. |
arg1-ltarg2 | true if numeric value arg1 is less than arg2. |
arg1-learg2 | true if numeric value arg1 is less than or equal to arg2. |
arg1-gtarg2 | true if numeric value arg1 is greater than arg2. |
arg1-gearg2 | true if numeric value arg1 is greater than or equal to arg2 |
Notes
All arguments to test must be separated by a space, including all operators.
The < and > operators are lexicographical comparisons, based on ASCII numbering. They are not numerical operators (instead, use -lt, -gt, etc. for comparing numbers).
The precise behavior of test, depending on the number of arguments provided, is as follows:
# of arguments | test behavior |
---|---|
0 | Always return false. |
1 | Return true, if and only if the expression is not null. |
2 | If the first argument is !, return true if and only if the expression is null. If the first argument is one of the other unary operators (-a, -b, etc.), return true if and only if the unary test of the second argument is true. If the first argument is not an unary operator, return false. |
3 | The following conditions are applied in the order listed. If the second argument is one of the binary conditional operators listed above, the result is the binary test using the first and third arguments as operands. Binary conditional operators are those which take two operands, e.g., -nt, -eq, <, etc. The -a and -o operators are considered binary operators when there are three arguments. If the first argument is !, the value is the negation of the two-argument test using the second and third arguments. If the first argument is exactly ( and the third argument is exactly ), the result is the one-argument test of the second argument. In other words, (expr) returns the value of expr. This special case exists as a way to override the normal precedence of operations. Otherwise, the expression is false. |
4 | If the first argument is !, the result is the negation of the three-argument expression composed of the remaining arguments. Otherwise, the expression is parsed and evaluated according to precedence using the rules listed above. |
5+ | The expression is parsed and evaluated according to precedence using the rules listed above. |
Exit status
0 for true, 1 for false. Anything greater than 1 indicates an error or malformed command.
Examples
This command returns 1 for false, because it has no arguments to test. (See notes above for how test behaves with various numbers of arguments.) This is good, because the only time test should ever be run with no arguments is when something has gone wrong in your script or command.
To confirm that test returned false, we'll check the value of the special shell variable ?, which contains the exit status of the previous command executed.
Here are a few more examples.
Related commands
df — View used and available disk space.
free — View used and available memory.
free — View used and available memory.