Americas

  • United States
sandra_henrystocker
Unix Dweeb

Getting started on the Linux (or Unix) command line, Part 1

How-To
Nov 16, 20238 mins
Linux

This series of posts will help Linux/Unix newbies to feel comfortable on the command line.

Female Engineer Controller Observes Working of the System. In the Background People Working and Monitors Show Various Information.
Credit: Gorodenkoff / Shutterstock

To get started as a Linux (or Unix) user, you need to have a good perspective on how Linux works and a handle on some of the most basic commands. This first post in a “getting started” series examines some of the first commands you need to be ready to use.

On logging in

When you first log into a Linux system and open a terminal window or log into a Linux system from another system using a tool like PuTTY, you’ll find yourself sitting in your home directory. Some of the commands you will probably want to try first will include these:

When you first log into a Linux system and open a terminal window or log into a Linux system from another system using a tool like PuTTY, you’ll find yourself sitting in your home directory. Some of the commands you will probably want to try first will include these:

pwd -- shows you where you are in the file system right now (stands for “present working directory”)
whoami – confirms the account you just logged into
date -- show the current date and time
hostname -- display the system’s name

Using the whoami command immediately after logging in might generate a “duh!” response since you just entered your assigned username and password. But, once you find yourself using more than one account, it’s always helpful to know a command that will remind you which you’re using at the moment.

These commands will generate output like this:

$ pwd
/home/justme
$ whoami
justme
$ date
Tue Nov 21 10:40:20 AM EST 2023$
$ hostname
venus

Listing your files

One of the first things you will likely want to do is look at the files and directories that are associated with your account. The command below provides a “long listing” – one that shows all the files and directories in the current file system location along with the permissions and ownership of those files and directories.

$ ls -al
total 16
drwx------. 1 justme justme   96 Nov  6 12:21 .
drwxr-xr-x. 1 root   root     56 Nov  6 12:15 ..
-rw-r--r--. 1 justme justme   18 Feb  5  2023 .bash_logout
-rw-r--r--. 1 justme justme  141 Feb  5  2023 .bash_profile
-rw-r--r--. 1 justme justme  526 Nov 11 12:21 .bashrc
drwxr-xr-x. 1 justme justme   34 Apr 13  2023 .mozilla
-rw-------. 1 justme justme 1445 Nov  6 12:21 .viminfo
-rw-r-----. 1 justme justme   35 Nov 21 12:34 myfile

In the output shown above, there are three directories (lines starting with “d”) and five files lines starting with “-“). The details are only provided because the ls command includes the -a (show all) and -l (provide details) options.

Note that the owner and group are both “justme”. By default, any particular user will be the only member of a same-named user group. Both are set up when a new user is added to the system.

The dates and times that are displayed in long listings show when the files were last updated.

Moving around the file system

To move into any of the directories, use a command like “cd .mozilla”. The current directory, wherever you’re sitting in the file system, can be addressed as “.”. Using a command like “cd .”, therefore, doesn’t accomplish anything. It means “move to where I already am”. Using the “cd ..” command, on the other hand, will move you up one directory – toward /, the base of the file system.

$ pwd
/home/justme
$ cd ..
$ pwd
/home
$ cd /tmp
$ pwd
/tmp
$ cd
$ pwd
/home/justme

Commands like “cd /tmp” will take you to the specified directory. A cd command without arguments will always take you back to your home directory as would “cd ~” or a command like “cd /home/justme”. Most Linux users, however, prefer typing as little as needed and just use cd to get back home.

Note that there will always be directories that you will be unable to access unless you switch to the root (superuser) account or use the su (switch user) command to use a different account that has access rights. If you try to move into a directory for which you don’t have adequate access, you’ll see an error like this one:

$ cd /home/newuser
-bash: cd: /home/newuser: Permission denied

To see why access was denied, try listing the directory’s permissions like this:

$ ls /home/newuser
drwx------. 1 newuser newuser   80 Jul 24 10:48 newuser

The only account that has access rights to this directory is “newuser”.

NOTE: You will likely be set up to use the su command unless your role involves managing the system.

Understanding file and directory permissions

To understand what you can access and not access, it’s important to understand how file and directory permissions work. The first character in the permissions strings like the “d” in “drwxr—–” represents the file type. Most entries in a directory listing will be one of the following.

d = directory
- = file

The rest of the permissions string displays the permissions given to the file/directory owner, the owner’s primary group and everyone else. If we break the permissions string into groups, it might look like this:

d rwx r-- ---
^  ^   ^   ^
|  |   |   | 
|  |   |   +-- everyone else’s permissions (no access)
|  |   +------ other group members’ permissions (read only)
|  +---------- owner’s permissions (read, write and execute)
+------------- file type (d = directory)

The “rwx” shown in the example above means that read (r), write (w) and execute (x) permissions are provided to the directory owner. In contrast, “—” means that none of these permissions are provided. Expect to see many instances in which only read (r–) or read and execute (r-x) permissions are granted. You can control who can access your files. For example, you could grant access to a file in your directory with a command like this provided the intended user has access to your home directory as well.

$ chmod o+r myfile

The command shown above would give read access to anyone in the “other” group (i.e., anyone who is neither the owner nor a member of the file’s assigned group). Keep in mind that these users would not have access if they don’t also have access to the directory containing the file.

NOTE: As you likely suspect, only the owner of a file or root can change the file’s permissions.

Viewing file content

Viewing the content of a file depends on the file type. To view text files, you can use the cat (show file content) or the more (show file content a screenful at a time) command. Bash scripts are text files as are startup files like .bashrc. System executables, on the other hand, which are referred to as “binary” files cannot be viewed except with commands that display the content as a long series of 0’s and 1’s – binary content. Finding a command that can display the content (like an image) on the desktop is an altogether different process.

$ cat myfile
This is my favorite file. It reminds me about how I felt when I first
Discovered Linux!
$ head -5 colors
aqua
azure
black
blue
bronze
$ tail -5 colors
turquoise
violet
wheat
white
yellow
$ more colors
aqua
azure
black
blue
bronze
brown
chocolate
…

Note that the more command will list file content a screenful at a time. Hit the enter key to move the next screenful.

Copying, moving and deleting files

To make a copy of a file, use the cp (copy) command like this:

$ cp myfile myfile.save

To move a file to a different directory (one you have write access to), use a command like this:

$ mv myscript ~/bin

In the command shown above, you would be a copying a file named “myscript” to the bin directory in your home directory. The bin directory will likely not exist unless you create it with a “mkdir ~/bin” command.

To delete a file, use the rm command. Deleting a file requires that you have write permission to it.

$ rm myfile

Wrap-up

Stay tuned for Part 2 of getting started on the Linux (or Unix) command line.

sandra_henrystocker
Unix Dweeb

Sandra Henry-Stocker has been administering Unix systems for more than 30 years. She describes herself as "USL" (Unix as a second language) but remembers enough English to write books and buy groceries. She lives in the mountains in Virginia where, when not working with or writing about Unix, she's chasing the bears away from her bird feeders.

The opinions expressed in this blog are those of Sandra Henry-Stocker and do not necessarily represent those of IDG Communications, Inc., its parent, subsidiary or affiliated companies.