Files
linux-odyssey/quests/execute/en/execute.md
T

80 lines
2.9 KiB
Markdown

# Running Executable Files
## Outline
1. What an executable file is
2. How to find an executable with `which`
3. How to run an executable file
---
In earlier lessons, you used commands such as `ls`, `cat`, `cp`, `mv`, and `rm`.
These commands are **executable files** that the operating system runs when you enter them.
For most commands, you can find the corresponding file in the file system.
Use `which` to find the file associated with a command.
Enter `which [command name]` to display its path.
> Use `which ls` to find the path to `ls`
---
The terminal displays `/usr/bin/ls`, the location of the `ls` executable.
`/usr/bin` is a system folder containing many standard programs, including commands such as `cat` and `cp`.
> Use `which cat` to find the path to `cat`
---
To run an executable file, enter its path directly.
Let's try running a command using the path to its executable.
> Enter `/usr/bin/ls` to list the contents of your current folder
---
It lists the files in your folder, just as entering `ls` does. You can compare the results yourself.
You can still pass arguments. Let's try this with `cat`.
> Enter `/usr/bin/cat hello.txt` to display the contents of `hello.txt`
---
You can see the contents of `hello.txt`, just as you would with `cat`.
This makes sense: `cat` is located at `/usr/bin/cat`, so both commands run the same program.
A command like this consists of **an executable** plus **arguments**.
You can enter `ls` instead of `/usr/bin/ls` because the `PATH` environment variable tells the terminal which *folders* to search for programs.
`PATH` and environment variables are beyond this lesson's scope. We will cover them in a future lesson.
You can also run custom programs, such as the `dog` file in your current folder.
> Use `cat dog` to display the contents of `dog`
---
This is a simple program built from `echo` and `sleep` commands.
You do not need to understand every detail yet. It prints a few lines of text, with short pauses between them.
To run a file, specify its path.
Since `dog` is in your home folder, its absolute path is `/home/commander/dog`. You can also use the shorter form `~/dog`.
> Enter `~/dog` to run the `dog` file
---
The terminal displays a few words from this dog with an attitude.
When you are in the same folder as a program, a relative path is often more convenient than an absolute path.
To run a program in your current folder, put `./` before its filename instead of entering just its name.
In a path, `.` means the current folder.
Now try running `dog` using a relative path.
> Enter `./dog` to run the `dog` file
---
The dog produces the same output as before.
This is an example of a simple custom command.
You can put a sequence of commands in a file and run them together to handle complex or repetitive tasks.
This technique is also useful when running programs written by other people.
Here is a final challenge: enter the `commands` folder, then run the `lucky` file inside it using a relative path.