> For the complete documentation index, see [llms.txt](https://igb.mit.edu/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://igb.mit.edu/mini-courses/introduction-to-unix/the-unix-shell/using-the-unix-shell/editing-the-unix-tree.md).

# Editing the Unix Tree

**Make sure to run all of the copy commands below, as we'll be using files from the Ostrom server later in the course.**

* `mkdir`
  * This command name stands for "make a directory".
  * It creates a new folder (or directory). If no path is specified, the new directory is created in the current directory.

<pre class="language-bash"><code class="lang-bash"><strong># start in your home directory
</strong><strong>cd ~
</strong><strong>
</strong><strong># create a directory named "unixclass"
</strong><strong># with a subdirectory named "testdir"
</strong>mkdir unixclass
mkdir unixclass/testdir

# change current directory directly to "testdir"
cd unixclass/testdir 

# go to the parent directory (i.e. unixclass)
# and print the working directory
cd ..
pwd
</code></pre>

* `touch`
  * This command creates an empty file with the given name.

```bash
# Go to /home/<your username>/unixclass
cd ~/unixclass

# Create an empty file named "hello.txt"
touch hello.txt

# List the files in the directory to verify that worked
ls
```

* `cp` and `mv`
  * These commands stand for "copy" and "move," respectively.
  * They copy / move files and directories to the specified location.
  * Wildcards symbols such as "\*" or "?" are commonly used to copy multiple files with a single command.
    * The symbol "\*" stands for any number of alphanumeric characters.
    * The symbol "?" stands for a single alphanumeric character.

```bash
# Start in ~/unixclass
cd ~/unixclass

# copy the file named arrayDat.txt into your unix_class directory
cp /net/ostrom/data/dropbox/arrayDat.txt .
ls
```

```bash
# copy all the files with suffix "array”
# into the current directory 
cp /net/ostrom/data/dropbox/array* .
ls

# copy any file whose extension is "txt" 
cp /net/ostrom/data/dropbox/*.txt .
ls

# copy all files
cp /net/ostrom/data/dropbox/* .
ls
```

* `rmdir` and `rm`
  * `rmdir` **only** removes empty directories, `rm` removes both directories and files.
  * `rm` needs `-r` flag to remove directories.

```bash
# Start in ~/unixclass
cd ~/unixclass

# Create a temporary directory
mkdir trash

# create copies of arrayDat.txt in the temporary directory
cp arrayDat.txt trash/arrayDat1.txt
cp arrayDat.txt trash/arrayDat2.txt
cp arrayDat.txt trash/arrayDat3.txt
cp arrayDat.txt trash/arrayDat4.txt

ls trash
```

```bash
# Try to delete the directory with `rmdir`
rmdir trash

# Try to delete the directory with `rm -r`
rm -r trash
```
