Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Of course there are other areas of the file system hierarchy a tree of. For example, the /stor/work/CBRS_unix directory.

...

Note that in Unix, and on Macs, directories are separated by forward slash ( / ) characters, unlike Windows where the backslash ( \ ) is used. And the root of all the file systems is that 1st forward slash ( / ).

...

  • cd <optional directory_name>
    • with no argument, always changes to your Home directory.

There are also some "special" built-in directory names:

    • the special character ~ (tilde) means your Home directory
  • . (single period) means the current directory
  • .. (two periods) means the parent of the current directory (directory above it)
    • So ls .. means "list contents of the parent directory"
  • - (dash) means whatever directory you were in before this one

So these two expressions do the same thing – take you to your Home directory from wherever you are in the file system.

...

languagebash
titleGo Home!

...

    • .
Code Block
languagebash
titleGo Home!
cd       # make sure you're in your Home directory
cd data  # change into the data sub-directory
cd ~     # return to your Home directory using ~
cd data  # change into the data sub-directory again
cd       # return to Home

When you've changed into a directory, how do you know where you are in the file system?

  • On our system, we've arranged that the command prompt "follows you" around the file system.On other systems you can use the pwd (present working directory) command to see the full pathname of the directory you're inthe file system.
  • On other systems you can use the pwd (present working directory) command to see the full pathname of the directory you're in

There are other "special" built-in directory names:

  • . (single period) means the current directory
  • .. (two periods) means the parent of the current directory (directory above it)
    • So ls .. means "list contents of the parent directory"
  • - (dash) means whatever directory you were in before this one

Exercise 4-1

What is the full pathname of your Home directory?

...

  • Look for the / (forward slash), under the Mounted on column:
    • / (forward slash) is the root of the file system where the operating system is installed
    • Note its Size is 98G with 4761G used
  • Look for Mounted on entries with large Size numbers:
    • Gigabytes (10^9 bytes), Terabytes (10^12 bytes), Petabytes (10^15 bytes)
  • Ignore file systems with names like /run, /dev, /snap, /sys, /boot, /tmp, /var – these are system related
  • Here we see a number starting with /stor (/stor, /stor/home, /stor/work, etc.)
    • Note its large Size: 39T - a sign that it's a file system you want to know about.

...

  1. file permissions - a 10-character field
  2. number of sub-components associated with a directory - rarely important
  3. account name of the file owner
  4. Unix group associated with the file
  5. file size
  6. last modification month
  7. last modification day
  8. last modification year, or last modification hour/:minute if within the last year
  9. file name

...

A file's owner is the Unix account that created the file (here student01, me). That account belongs to one or more Unix groups, and the primary group associated with a file is listed in field 4.

...

  • character 1 describes the file type (
    • d for directory
    ,
    • - (dash) for regular file
    ,
    • l for symbolic link
    )
  • the remaining 9 characters are 3 sets of 3-character designations
    • characters 2-4: what the owning user account can do
    • characters 5-7: what other members of the associated Unix group can do
    • characters 8-19: what other non-group members (everyone) can do

...

Code Block
languagebash
cd                    # make sure you're in your Home directory
mkdir tmp             # create a new directory called "tmp" and change into it
cd ./tmp              # the "./" syntax is optional; means relative to current directory
touch f1.txt          # create empty file called "f1.txt"
ls -l >> f1.txt       # add some text by redirecting (appending) output from ls
mv f1.txt f2.txt      # rename the "f1.txt" file to "f2.txt"
cp f2.txt f3.txt      # copy "f2.txt" to a new file called "f3.txt" in this directory

mkdir dir2            # make a new "dir2" sub-directory
mv *.txt dir2/        # move the "f2.txt" and "f3.txt" to the "dir2" sub-directory
rmcp fdir2/*.txt      .       # deletecopy all the f*.txt files in the current "dir2" directory to this directory  
cprm dir2/f*.txt      .       # copydelete all the f*.txt files in the "dir2" directory to this files in the current directory

cp -r dir2/ dir3/     # copy the "dir2" directory and its contents to a new "dir3" directory
rm dir3/f3.txt        # delete the "f3.txt" file from the "dir3" directory
rm -rf dir2           # delete the "dir2" sub-directory and its contents

...

  • Both cp and rm have a -r (recursive) option that is used when operating on directories.
  • rm has -f (force) option that does not report an error if the file or directory doesn't exist.
  • mkdir has a -p (parent) option that does not report an error if a component of a directory path, doesn't exist.
  • It is a good idea to specify directory names with a trailing slash ( / ) to indicate that they are directories
  • The "./" syntax means "relative to the current directory". It's optional but explicit.

See the Create, rename, linkto, delete files and Copying files and directories sections of the Some Linux commands page for more information.