Linux and Unix Commands
Posted on Apr 22, 2017 (last modified Feb 14, 2023)
My collection of handy Linux, Unix, and Mac OS terminal commands.
Change file permissions
Command | Usage |
---|---|
chmod +x filename.ext | Give execute access to a file. |
sudo chmod -R 777 workspace | -R means RECURSIVE |
sudo chown -R basejump workspace | Take ownership of a file. basejump (the user) and workspace (the directory) |
Compress or extract files
Command | Usage |
---|---|
tar -zxvf file.tar.gz | To extract one or more members from an archive: |
tar -czvf name-of-archive.tar.gz /path/to/directory-or-file
| Compress an entire directory or single file. Note: Be sure to add the Here's what the switches mean: |
gzip -9 /path/to/file Example: gzip -9 ./data/*.ldif
| Compress files with -9 signifying highest level of compression. The original files will be removed, leaving only the archives (.gz) that replace them. |
Copy File Between Local Machine and Remote Server
Command | Usage |
---|---|
scp /local/path/to/file user@server:/path/to/destination | scp stands for 'secure copy.' It copies files over a secure, encrypted network connection. This command copies a file from your local machine to the given server. |
scp user@remote_host:/path/to/remote/file /path/to/local_file | This command downloads the specified file from the specified remote server to your local machine. |
Create an alias for a common command
Command | Usage |
---|---|
alias p="<command>" | Create shortcut aliases to common commands. For example: alias p="open /x/yx/z" to open a particular directory in Finder |
Directory commands
Command | Usage |
---|---|
pwd | Print working directory (the directory you're currently in). |
mv <oldDirName> <newDirName> | Rename a directory. Be aware: this is actually a move command. So, you’re just moving the directory from one name to another in the same path. |
rmdir | Remove an empty directory |
rm -rf <dirName> | Forcefully remove a directory recursively.
Remove the f switch to be prompted for each sub-directory and file inside. |
cp -rf present/directory /desire/directory | Copy an entire directory, its subdirectories, and files.
Remove the f switch to be prompted for each sub-directory and file inside. |
Execute command as root user
Command | Usage |
---|---|
sudo <command> | Execute command as the root user. |
sudo !! | Execute the last command as root user. (!! ) represents the last commandyou just tried to run, but couldn't because of permission issues. |
Execute task in background
Command | Usage |
---|---|
./startTest.sh & | Start the execution in the background, which will allow you to kill your SSH terminal without killing the process itself. |
Find large files
Command | Usage |
---|---|
cd / find . -size +10000000c -print | Prints out the names of all files with size > 10mb. |
cd / sudo du -sm * | Examine the size of the directories under /. You can then navigate into any given subdirectory and execute du -sm * again to see which subdirectories are the largest. |
Inspect disk space and usage
Command | Usage |
---|---|
df -h | Inspect disk space and usage (in MB or GB) |
Work with environment variables
Command | Usage |
---|---|
printenv | Prints all currently set environment variables and values. |
Remove a file
Command | Usage |
---|---|
mv | Rename a file |
rm | Remove a file |
rm -f | Forcefully remove a file |
rm -i | Interactively remove a file |
If you are not certain about removing files that match a pattern you supply, it is always good to run rm interactively (rm –i
) to prompt before every removal.
Switch user
Command | Usage |
---|---|
su – <username> | Switch to the given user, loading their profile. You may have to use sudo su – <username>. |
su | Without a username means to just switch to root user. |
whoami | "Who Am I?" Prints the current user. |
View a file
Command | Usage |
---|---|
cat | Used for viewing files that are not very long; it does not provide any scroll-back. |
tac | Used to look at a file backwards, starting with the last line. |
less | Used to view larger files because it is a paging program; it pauses at each screenful of text, provides scroll-back capabilities, and lets you search and navigate within the file. Note: Use / to search for a pattern in the forward direction and ? for a pattern in the backward direction. Press Q to quit. |
tail | Used to print the last 10 lines of a file by default. You can change the number of lines by doing -n 15 or just -15 if you wanted to look at the last 15 lines instead of the default. |
head | The opposite of tail; by default it prints the first 10 lines of a file. |
Update the OS packages
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo reboot
Use pipes
The UNIX/Linux philosophy is to have many simple and short programs (or commands) cooperate together to produce quite complex results, rather than have one complex program with many possible options and modes of operation. In order to accomplish this, extensive use of pipes is made; you can pipe the output of one command or program into another as its input. In order to do this we use the vertical-bar, |
, (pipe symbol) between commands as in: $ command1 | command2 | command3
This represents what we often call a pipeline and allows Linux to combine the actions of several commands into one. This is extraordinarily efficient because command2 and command3 do not have to wait for the previous pipeline commands to complete before they can begin hacking at the data in their input streams; on multiple CPU or core systems the available computing power is much better utilized and things get done quicker. In addition there is no need to save output in (temporary) files between the stages in the pipeline, which saves disk space and reduces reading and writing from disk, which is often the slowest bottleneck in getting something done.
Split a large text file into smaller parts
The Linux split
command can help you break up really large text files into smaller, more manageable parts.
split -l <line-numbers> <source-file> <destination-file-prefix>
For example:
split -l 5000000 data3.trig segment
Fast string replace using stream editor (sed)
If you need to replace strings in a very large file or many files, you can use sed
, the streaming editor. It's very fast because it uses streaming. This sure beats opening individual files in some editor and then using a find and replace function. The string positions expect regex, so be careful for special characters.
sed 's/<original-string>/<revised-string>/' <source-file> > <new-file>
For example:
sed 's/dev.acme.com:48083/ldp.demo:8083/' segment-aa > segmentaa
Change default shell (on Mac OS X)
You can change the default shell through the command line chsh
command, which is shorthand for ‘change shell’. You’ll need to authenticate each change as well, the command will ask directly or you can prefix it with sudo. Here’s how to set the default user shell to zsh, bash, tcsh, ksh, sh, or any other shell for that matter.
- zsh:
chsh -s /bin/zsh
- ksh:
chsh -s /bin/ksh
- tcsh:
chsh -s /bin/tcsh
- bash (default):
chsh -s /bin/bash
- sh:
chsh -s /bin/sh
- other shells:
chsh -s /path/to/alternate/shell