cli-walkthrough/02-files
Eric c57d7539d8 Initial commit: CLI walkthrough for CHEG 667-013
Six-module walkthrough covering navigation, files, reading/searching,
processes/editors, scripting, and advanced tools (ssh, regex, tar, etc.).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 21:54:48 -04:00
..
README.md Initial commit: CLI walkthrough for CHEG 667-013 2026-04-04 21:54:48 -04:00

CLI Part II: Files and Directories

CHEG 667-013 — Chemical Engineering with Computers
Department of Chemical and Biomolecular Engineering, University of Delaware


Key idea

Create, move, copy, and delete files and directories from the command line.

Key goals

  • Create directories with mkdir and remove them with rmdir
  • Create files with touch and cat
  • Move, copy, and remove files with mv, cp, and rm
  • Understand that these operations are permanent — there is no trash can or undo

1. Making and removing directories

If we want to add or remove folders to our file hierarchy, we use the following commands:

  • mkdir — make a directory
  • rmdir — remove a directory (it needs to be empty)

WARNING! Removing a directory is permanent. There is no trash can or undo! This will apply to files, too.

Now go back to your home directory (cd ~) and make a new folder called cheg667:

$ mkdir cheg667

Verify that you made the directory by using ls. You can remove this directory with the rmdir command.

2. Moving, copying, and removing files

Now we'll learn how to move, copy, or remove files.

  • mv — move (or rename) a file
  • cp — copy a file
  • rm — delete or remove a file

WARNING! All of these file operations are permanent! There is no undo! Moving or copying a file on top of another will erase or clobber the original. Be careful!

We need some files to work on. Do this in your home directory:

$ touch foobar

The touch command is a way of updating the modification time of a file. If the file doesn't exist, touch will create one. If we use ls -lt, we should see at the top that we created the file foobar, which has zero bytes.

-rw-rw-r-- 1 ef1j ef1j 0 Mar 30 06:57 foobar

Notice the file permissions. The file can be read by the user, group, and other users. Only the user and the group have permission to write to or otherwise modify the file or erase it.

Next, move foobar to the directory ~/cheg667:

$ mv foobar cheg667

If you type ls now, you will not see it. But if you change directory to cheg667 or type ls cheg667, you will find that it was moved to that directory.

Change directories to cheg667 and type the following:

$ cp foobar foo

This copies the file foobar to a new file, foo:

$ ls
foo  foobar

Notice that the file modification times are different:

$ ls -l
total 1
-rw-rw-r-- 1 ef1j ef1j 0 Mar 30 07:08 foo
-rw-rw-r-- 1 ef1j ef1j 0 Mar 30 06:57 foobar

3. Creating files with cat

Create another file, but this time with text using the cat command:

$ cat > bar
Terminal whispers,
cat > file.txt begins
empty lines take shape
^D

When you type cat > bar, it is telling the terminal to redirect the standard input of the terminal to a file. (More on this later.) When you hit enter, the input that you type will be written to the file. You can stop by typing control-D. Verify that the text was written to the file, again using the cat command:

$ cat bar
Terminal whispers,
cat > file.txt begins
empty lines take shape.

Using ls, you will also see that the file has a non-zero size:

-rw-rw-r-- 1 ef1j ef1j 67 Mar 30 07:18 bar

Now copy the file bar. Call it bar2:

$ cp bar bar2

Do you see it in the directory listing?

You can remove bar2 with the command:

$ rm bar2

Check the directory listing again. The file should be gone.

4. Creating files with echo

The echo command prints text to the terminal. It's useful for quick output and for writing short content to files using a redirect:

$ echo "Hello, world!"
Hello, world!
$ echo "This is a test" > test.txt
$ cat test.txt
This is a test

Use >> to append instead of overwriting:

$ echo "Another line" >> test.txt
$ cat test.txt
This is a test
Another line

5. Changing file permissions with chmod

In the previous section, we saw that files have permissions (r, w, x) for the owner, group, and others. The chmod command lets you change these permissions. You'll need this when you want to make a file executable, like a script.

The most common use for us is adding execute permission:

$ chmod u+x myscript.sh

Here, u means the user (owner), +x means add execute permission. You can also set permissions for the group (g) or others (o):

  • chmod g+r file — give the group read access
  • chmod o-w file — remove write access from others
  • chmod a+x file — give everyone execute access (a = all)

Exercise 1: Practice making new text files with the cat and echo commands. Rename a file using mv. Practice copying files. Use man to learn more about mv, cp, rm, and chmod.