Red Hat Enterprise Linux and Red Hat OpenShift provide users and admins with a friendly graphical UI for easier cloud management. But even with a clear UI, if you're running applications in the cloud, there's a good chance Red Hat OpenShift Service on AWS (ROSA) users can benefit from knowing some essential Linux commands.
Running a command in a terminal is fast and direct. It lets you communicate exactly what you want to happen, in one succinct sentence. There are hundreds of commands on a typical Linux system though, so here are 10 of the most important commands ROSA users need to know.
rosa command is your entry into your ROSA cluster. Of course, you can go to the AWS site to manage your ROSA cluster, but the important thing is that you don't have to. For some tasks, it's faster to just run a
rosa command. Here are some of the really useful ones:
Create a new cluster called
$ rosa create cluster --cluster-name=mycluster
Create an administrator for the new cluster:
$ rosa create admin --cluster=mycluster
And then get a list of users:
rosa list users --cluster=mycluster
rosa command provides you direct access to the cloud running your cluster, the
oc command gives you direct access to OpenShift. It's the difference between accessing a computer and the computer's operating system: one lets you configure the components of the platform, and the other lets you install and run software.
oc, you can do anything you'd normally do in OpenShift in your web browser. You can create a new project, start up an app, configure storage volumes and open a service to your users. There are lots of ways to create new applications, including Source-to-Image (S2I), OpenShift templates, container images and custom code.
For instance, with
oc, you can install a complex web server like Apache HTTP Server just by using a template included with OpenShift:
$ oc new-app --template=openshift/httpd-example
The version of
oc must match the version of OpenShift you're using, so download it from within your OpenShift instance.
When you work with ROSA, you can expect to be working across networks more often than not. That's the nature (and power) of cloud computing. The
curl command is a non-interactive web browser for the terminal, meaning you can use it to visit a web address without opening a web browser like Chrome or Firefox. While you could use it to view content online, it's usually used to quickly grab a resource that doesn't require any interaction, like an install script, a YAML configuration you need to apply to your cloud environment, or a software package.
The syntax is simple. You type the command followed by the URL you want it to visit, followed by the --remote-name option to save the remote resource to your drive:
$ curl http://example.com --remote-name
That command downloads an example index page from the Internet, and saves it to your drive as index.html.
Another common use for
curl is as a test tool for an API. The
oc command uses the OpenShift API so you can perform maintenance and development tasks remotely, so
curl is a natural companion.
Sometimes an API responds to just a ping. When you visit the URL, the API is triggered. In that case, you just point
curl to the API endpoint, and omit the
--remote-name option because you don't need to download and save anything. You just want to trigger the endpoint:
$ curl http://nginx-example-myproject.apps-crc.testing/
Sometimes, an API is designed to respond to only specific types of HTTP requests. You can specify how you send test data with the
$ curl --request POST \ --data "user:developer" \ --data "auth:$MY_TOKEN" \ "https://example.com/api/endpoint"
You can use as many
--data options as you need to pass the data you know the API requires (or to send more than it requires to test how it handles unexpected input).
curl command is installed by default on Red Hat Enterprise Linux and other distributions, and even macOS.
Archives online are often bundled as a ZIP file. You're going to need to extract data from a ZIP archive. The
unzip command can unpack a ZIP file:
$ unzip crc-linux-X.YY.0-amd64.zip
Pro tip: You can avoid typing out long archive names. Press the Tab key after typing just the first few letters of the archive to prompt your terminal to complete the name for you.
Another common archive format you're likely to encounter is the TAR format, usually encapsulated by one of many compression algorithms (tar.gz and tar.xz are popular).
Unarchiving a TAR archive is a little like writing an English sentence, so it's nice and intuitive:
$ tar --extract --file crc-linux-X.YY.0-amd64.tar.xz
Pro tip: An easy way to avoid typing long archive names is to type the first few letters of the filename, followed by the asterisk (*) "wildcard" character, and then the end of filename. For example,
tar --extract --file crc*tar.xz is a lot faster than typing the full name of the archive.
As you use your Linux computer on a daily basis, you're using it as a normal user. As a result, you're protected from making surprise mistakes, like accidentally deleting libraries and commands your computer requires to work. That's an important safeguard, and it's protected many systems administrators from catastrophic data loss. Embrace the restriction.
However, sometimes you need to override the safety features and perform an action with administrative (or "super user") powers. To do that, you can type
sudo before any command to force your computer to prompt you for your password. Assuming you're an admin of the computer you're using, the safeguards are removed temporarily and your command is executed.
When you download a command like
oc, your computer doesn't really know you've downloaded a new command. To your computer, you've just gathered some more binary data, which you do every day when you browse the Internet or save an office file to your hard drive. For your terminal to understand that something is a command, the file must be in your executable path.
You can see what directories are in your path with the
$ echo $PATH /usr/local/bin:/usr/bin:/bin:
In this example, you have
/usr/local/bin first in your path, which means that your terminal looks in that folder first for any command you type. Should it fail to find that command there, it moves on to
/usr/bin, and then finally to
mv command is designed to move files. When you want to move a command into your path, use the
echo command to view your path, and then use the
mv command with
$ echo $PATH /usr/local/bin:/usr/bin:/bin: $ sudo mv oc /usr/local/bin
In this example, you use
sudo mv to move the
oc file to the first folder listed in your path. The syntax for
mv is always the source followed by the destination.
A command like
oc is a binary format. It's been compiled for a specific CPU architecture, and it runs when you type its name into your terminal.
A script, however, is more like a recipe. It's a list of commands for your computer to run without constant intervention. For your computer to do that, though, it requires your explicit permission. The
chmod command is how you grant that permission.
To grant a file called install.sh executable permission:
$ chmod +x install.sh
Now the file has permission to run as if it were a command.
8. Dot-slash (./)
To run a script you've just marked as executable, you can move it to your path using
mv. But there's a shortcut. It's the dot-slash combination (./), and it indicates that a file you want to execute is in the current folder, not in your path.
cd command is how you change your current directory. When you open a terminal, you start in your home folder. If you work exclusively in your home directory, it tends to get cluttered pretty quickly. Instead, you can
cd to a subdirectory, like Downloads or Documents, and work there.
To change directory, type
cd followed by the directory path you want to navigate into:
$ cd Downloads
To go back home, use the tilde (~) as a shortcut:
$ cd ~
You can combine these to skip past directories all in one command. For instance, to navigate to the crc directory in your Downloads folder all in one giant leap, just string together the directory names:
$ cd ~/Downloads/crc
ls command lists the contents of a directory. Suppose you've just downloaded and extracted an archive. To see what the package you've just unarchived contains, you use the
$ curl https://github.com/okd-project/okd/releases/download/4.13.0-0.okd-2023-06-04-080300/openshift-client-linux-4.13.0-0.okd-2023-06-04-080300.tar.gz --remote-name $ tar --extract --file openshift-client*tar.gz $ ls README.md oc Kubectl
You've downloaded the
kubectl commands. You know how to move those to your path, and you’re even successfully using the
rosa command to create and manage clusters. You're well on your way to being a power user of the Linux terminal.
About the author
Seth Kenlon is a Linux geek, open source enthusiast, free culture advocate, and tabletop gamer. Between gigs in the film industry and the tech industry (not necessarily exclusive of one another), he likes to design games and hack on code (also not necessarily exclusive of one another).