The Terminal¶
The command line gives you more control than the GUI, is the only way to do some things on Linux, and lets you script repetitive work. The cost is that you have to remember commands, or know how to look them up. This lesson gets you moving around, reading files, and finding help.
Open a terminal¶
Press Ctrl+Alt+T. On Mint it's also in the menu under Accessories; on Debian's GNOME desktop, click Activities and type terminal.
You'll see a prompt:
student@lab:~$
student is your username, lab is the machine name, ~ is your current folder (your home directory). Type after the $ and press Enter to run.
Capitalization and spaces matter. ls -la works; LS -la and ls-la do not. Ctrl+C stops a running command. Ctrl+D closes the terminal.
How a command is put together¶
cat -n /etc/hostname
| Part | Here | Meaning |
|---|---|---|
| Command | cat |
What to do |
| Option (flag) | -n |
Change how it behaves. Not always needed. |
| Argument | /etc/hostname |
What to do it to |
Options usually start with - (short) or -- (long). Some commands also take an operator like > to redirect output; that's below.
Where am I, what's here, move¶
pwd # print working directory: the full path of where you are
ls # list files here
ls -l # long listing: permissions, owner, size, date
ls -a # include hidden files (names starting with a dot)
ls -la # both
cd /etc # change directory
cd # go home
cd .. # go up one level
cd - # go back to where you were
Absolute vs. relative paths¶
A path starting with / is absolute and works from anywhere.
cd /home/student/Music
Anything else is relative to where you are. . means the current folder, .. means the parent.
cd Music # same as cd ./Music, if you're in /home/student
cd ../Documents # up one, then into Documents
Getting help¶
man ls # the manual page for ls. Arrow keys or PgUp/PgDn scroll, q quits.
ls --help # short usage summary
Manual pages have numbered sections. man 5 passwd opens the section 5 (file formats) page for /etc/passwd, not the passwd command.
Reading and creating files¶
cat /etc/hostname # print a file
cat -n file.txt # print with line numbers
file report.pdf # tell you what kind of file something is
echo "hello" # print text to the screen
> sends a command's output into a file instead of the screen. It creates the file, or overwrites it if it exists.
echo "hello" > note.txt
cat note.txt
Try the sequence from the CyberPatriot deck:
cat -n > ~/Documents/hello2.txt
Nothing happens yet, because cat is waiting for input. Type This is a test. Hello again!, press Enter, then Ctrl+D. Open ~/Documents/hello2.txt in the file manager. Your line is there, with a 1 in front of it from -n.
Moving, copying, and deleting¶
touch a # create an empty file (or update its timestamp)
cp a b # copy a to b
mv b c # rename or move b to c
rm c # delete c. There is no recycle bin.
mkdir notes # make a folder
rm -r notes # delete a folder and everything in it
Danger
rm doesn't ask and doesn't undo. rm -r on the wrong folder is how people lose everything. Check pwd first.
Editing files¶
For config files you'll use a text editor. On a desktop image the easiest is the graphical one:
gedit /etc/hosts # Debian (GNOME)
xed /etc/hosts # Linux Mint
Files under /etc are owned by root, so you'll need sudo in front to save changes. nano is the standard terminal editor if there's no desktop: Ctrl+O saves, Ctrl+X exits.
Try it¶
- Move to
/var/log, list it withls -la, and go back home with one command. - Run
man sudoand find the option that lists what you're allowed to run. Quit withq. - Create, copy, move, and delete a file, checking with
lsafter each step.
Build it¶
A notes.sh that appends a timestamped line to ~/round-log.txt with whatever you pass it: ./notes.sh "removed user dave". Your round log, from the terminal.