mirror of
https://github.com/linux-odyssey/linux-odyssey.git
synced 2026-11-06 03:20:13 +08:00
80 lines
2.9 KiB
Markdown
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.
|