3 Navigating Files and Directories
3.1 Moving around the file system
We’ve learned how to use pwd
to find our current location within our file system.
We’ve also learned how to use cd
to change locations and ls
to list the contents
of a directory. Now we’re going to learn some additional commands for moving around
within our file system.
Use the commands we’ve learned so far to navigate to the shell_data/untrimmed_fastq
directory, if
you’re not already there.
What if we want to move back up and out of this directory and to our top level
directory? Can we type cd shell_data
? Try it and see what happens.
Your computer looked for a directory or file called shell_data
within the
directory you were already in. It didn’t know you wanted to look at a directory level
above the one you were located in.
We have a special command to tell the computer to move us back or up one directory level.
Now we can use pwd
to make sure that we are in the directory we intended to navigate
to, and ls
to check that the contents of the directory are correct.
## /Users/ggiaever/shell_data/untrimmed_fastq
## SRR097977.fastq
## SRR098026.fastq
## [31mbad-reads-script.sh[39;49m[0m
## bad_reads_2022_2022.txt
## bad_reads_2022_2022_2022_2022.txt
## bad_reads_2022_2022_2022_2022_2022_2022.txt
## bad_reads_2022_2022_2022_2022_2022_2022_2022_2022.txt
## scripted_bad_reads.txt
## scripted_bad_reads_2022.txt
## scripted_bad_reads_2022_2022_2022.txt
## scripted_bad_reads_2022_2022_2022_2022_2022.txt
## scripted_bad_reads_2022_2022_2022_2022_2022_2022_2022_2022.txt
## seq_info_2022_2022.txt
## seq_info_2022_2022_2022_2022.txt
## seq_info_2022_2022_2022_2022_2022_2022.txt
## seq_info_2022_2022_2022_2022_2022_2022_2022_2022.txt
## species_EnsemblBacteria.txt
## species_EnsemblBacteria_2022.txt
## species_EnsemblBacteria_2022_2022_2022.txt
## species_EnsemblBacteria_2022_2022_2022_2022_2022.txt
## species_EnsemblBacteria_2022_2022_2022_2022_2022_2022_2022_2022.txt
From this output, we can see that ..
did indeed take us back one level in our file system.
You can chain these together like so:
## @sockeye.arc.ubc.ca
## [34mApplications[39;49m[0m
## Brewfile
## [34mDesktop[39;49m[0m
## [34mDocuments[39;49m[0m
## [34mDownloads[39;49m[0m
## [35mGoogle Drive[39;49m[0m
## [34mLibrary[39;49m[0m
## Makevars
## Mambaforge-MacOSX-x86_64.sh
## Miniconda3-latest-MacOSX-arm64.sh
## Miniconda3-latest-MacOSX-x86_64.sh
## [34mMovies[39;49m[0m
## [34mMusic[39;49m[0m
## [34mParallels[39;49m[0m
## [34mPictures[39;49m[0m
## [34mPublic[39;49m[0m
## [34mSTAR-2.7.10a[39;49m[0m
## Your appointment at the U.S. Consulate for passport services - ggiaever@gmail.com - Gmail.pdf
## [34mZotero[39;49m[0m
## backup-rstudio-prefs
## [34mbackuup-config-rstudio[39;49m[0m
## bashrc64
## build.sh
## [35mconda.sh[39;49m[0m
## condash
## cpc2_result.txt
## [34mdc_workshop[39;49m[0m
## dc_workshop_log_2022_11_27.sh
## dc_workshopfiles_for_igv
## [34mecho[39;49m[0m
## err_md5sum.txt
## example1.cpp
## [34mfasterq.tmp.Guris-MacBook-Pro-2.local.67466[39;49m[0m
## find.txt
## [34mgsea_home[39;49m[0m
## hello.cpp
## [31mhelloworld[39;49m[0m
## [34mhomebrew[39;49m[0m
## [34migv[39;49m[0m
## index.bam
## iupred2a_result.txt
## metakeypair
## metakeypair-nopass.pem
## metakeypair.pem
## metakeypair.pub
## [34mminiconda3[39;49m[0m
## [34mminiconda3-intel[39;49m[0m
## my_key
## my_key.pub
## [34mnode_modules[39;49m[0m
## omp-test.c
## [34mopt[39;49m[0m
## package-lock.json
## package.json
## path
## pfam_result.txt
## [34mquality[39;49m[0m
## [34mquant[39;49m[0m
## [34mrstudio-diagnostics[39;49m[0m
## [34mshell_data[39;49m[0m
## signalP_result.txt
## [34msnakemake-tutorial[39;49m[0m
## species_EnsemblBacteria.txt
## [34msratoolkit.3.0.0-mac64[39;49m[0m
## sub.tar.gz
## test-openblas.c
## tnp
## zprofileworks.txt
## zshrc_backup.txt
prints the contents of /Users
.
3.3 Exercise
First navigate to the shell_data
directory. There is a hidden directory within this directory. Explore the options for ls
to
find out how to see hidden directories. List the contents of the directory and
identify the name of the text file in that directory.
Hint: hidden files and folders in Unix start with .
, for example .my_hidden_directory
3.4 Solution
## [34m.[39;49m[0m
## [34m..[39;49m[0m
## .DS_Store
## [34m.hidden[39;49m[0m
## [34msra_metadata[39;49m[0m
## [34muntrimmed_fastq[39;49m[0m
In most commands the flags can be combined together in no particular order to obtain the desired results/output.
## [34m.[39;49m[0m/
## [34m..[39;49m[0m/
## .DS_Store
## SRR097977.fastq
## SRR098026.fastq
## [31mbad-reads-script.sh[39;49m[0m*
## bad_reads_2022_2022.txt
## bad_reads_2022_2022_2022_2022.txt
## bad_reads_2022_2022_2022_2022_2022_2022.txt
## bad_reads_2022_2022_2022_2022_2022_2022_2022_2022.txt
## scripted_bad_reads.txt
## scripted_bad_reads_2022.txt
## scripted_bad_reads_2022_2022_2022.txt
## scripted_bad_reads_2022_2022_2022_2022_2022.txt
## scripted_bad_reads_2022_2022_2022_2022_2022_2022_2022_2022.txt
## seq_info_2022_2022.txt
## seq_info_2022_2022_2022_2022.txt
## seq_info_2022_2022_2022_2022_2022_2022.txt
## seq_info_2022_2022_2022_2022_2022_2022_2022_2022.txt
## species_EnsemblBacteria.txt
## species_EnsemblBacteria_2022.txt
## species_EnsemblBacteria_2022_2022_2022.txt
## species_EnsemblBacteria_2022_2022_2022_2022_2022.txt
## species_EnsemblBacteria_2022_2022_2022_2022_2022_2022_2022_2022.txt
## total 82272
## drwxr-xr-x@ 24 ggiaever staff 768 Nov 26 18:03 [34m.[39;49m[0m/
## drwxrwxr-x@ 6 ggiaever staff 192 Oct 20 19:06 [34m..[39;49m[0m/
## -rw-r--r--@ 1 ggiaever staff 6148 Nov 26 15:55 .DS_Store
## -rw-r--r--@ 1 ggiaever staff 47552 Nov 15 2017 SRR097977.fastq
## -rw-r--r--@ 1 ggiaever staff 43332 Nov 15 2017 SRR098026.fastq
## -rwxr-xr-x@ 1 ggiaever staff 76 Oct 23 22:50 [31mbad-reads-script.sh[39;49m[0m*
## -rw-r--r-- 1 ggiaever staff 23214 Nov 26 18:03 bad_reads_2022_2022.txt
## -rw-r--r-- 1 ggiaever staff 23214 Nov 26 17:12 bad_reads_2022_2022_2022_2022.txt
## -rw-r--r-- 1 ggiaever staff 23214 Nov 25 19:02 bad_reads_2022_2022_2022_2022_2022_2022.txt
## -rw-r--r-- 1 ggiaever staff 23214 Nov 24 23:24 bad_reads_2022_2022_2022_2022_2022_2022_2022_2022.txt
## -rw-r--r-- 1 ggiaever staff 23214 Nov 26 18:03 scripted_bad_reads.txt
## -rw-r--r-- 1 ggiaever staff 23214 Nov 26 17:16 scripted_bad_reads_2022.txt
## -rw-r--r-- 1 ggiaever staff 23214 Nov 26 17:12 scripted_bad_reads_2022_2022_2022.txt
## -rw-r--r-- 1 ggiaever staff 23214 Nov 25 19:02 scripted_bad_reads_2022_2022_2022_2022_2022.txt
## -rw-r--r-- 1 ggiaever staff 23214 Oct 23 22:51 scripted_bad_reads_2022_2022_2022_2022_2022_2022_2022_2022.txt
## -rw-r--r-- 1 ggiaever staff 179 Nov 26 18:03 seq_info_2022_2022.txt
## -rw-r--r-- 1 ggiaever staff 179 Nov 26 17:12 seq_info_2022_2022_2022_2022.txt
## -rw-r--r-- 1 ggiaever staff 179 Nov 25 19:02 seq_info_2022_2022_2022_2022_2022_2022.txt
## -rw-r--r-- 1 ggiaever staff 179 Nov 24 23:24 seq_info_2022_2022_2022_2022_2022_2022_2022_2022.txt
## -rw-r--r-- 1 ggiaever staff 8352381 Nov 26 18:03 species_EnsemblBacteria.txt
## -rw-r--r-- 1 ggiaever staff 8352381 Nov 26 17:16 species_EnsemblBacteria_2022.txt
## -rw-r--r-- 1 ggiaever staff 8352381 Nov 26 17:12 species_EnsemblBacteria_2022_2022_2022.txt
## -rw-r--r-- 1 ggiaever staff 8352381 Nov 25 19:02 species_EnsemblBacteria_2022_2022_2022_2022_2022.txt
## -rw-r--r-- 1 ggiaever staff 8352381 Oct 23 23:01 species_EnsemblBacteria_2022_2022_2022_2022_2022_2022_2022_2022.txt
3.5 Examining the contents of other directories
By default, the ls
commands lists the contents of the working
directory (i.e. the directory you are in). You can always find the
directory you are in using the pwd
command. However, you can also
give ls
the names of other directories to view. Navigate to your
home directory if you are not already there.
Then enter the command:
## @sockeye.arc.ubc.ca
## [34mApplications[39;49m[0m
## Brewfile
## [34mDesktop[39;49m[0m
## [34mDocuments[39;49m[0m
## [34mDownloads[39;49m[0m
## [35mGoogle Drive[39;49m[0m
## [34mLibrary[39;49m[0m
## Makevars
## Mambaforge-MacOSX-x86_64.sh
## Miniconda3-latest-MacOSX-arm64.sh
## Miniconda3-latest-MacOSX-x86_64.sh
## [34mMovies[39;49m[0m
## [34mMusic[39;49m[0m
## [34mParallels[39;49m[0m
## [34mPictures[39;49m[0m
## [34mPublic[39;49m[0m
## [34mSTAR-2.7.10a[39;49m[0m
## Your appointment at the U.S. Consulate for passport services - ggiaever@gmail.com - Gmail.pdf
## [34mZotero[39;49m[0m
## backup-rstudio-prefs
## [34mbackuup-config-rstudio[39;49m[0m
## bashrc64
## build.sh
## [35mconda.sh[39;49m[0m
## condash
## cpc2_result.txt
## [34mdc_workshop[39;49m[0m
## dc_workshop_log_2022_11_27.sh
## dc_workshopfiles_for_igv
## [34mecho[39;49m[0m
## err_md5sum.txt
## example1.cpp
## [34mfasterq.tmp.Guris-MacBook-Pro-2.local.67466[39;49m[0m
## find.txt
## [34mgsea_home[39;49m[0m
## hello.cpp
## [31mhelloworld[39;49m[0m
## [34mhomebrew[39;49m[0m
## [34migv[39;49m[0m
## index.bam
## iupred2a_result.txt
## metakeypair
## metakeypair-nopass.pem
## metakeypair.pem
## metakeypair.pub
## [34mminiconda3[39;49m[0m
## [34mminiconda3-intel[39;49m[0m
## my_key
## my_key.pub
## [34mnode_modules[39;49m[0m
## omp-test.c
## [34mopt[39;49m[0m
## package-lock.json
## package.json
## path
## pfam_result.txt
## [34mquality[39;49m[0m
## [34mquant[39;49m[0m
## [34mrstudio-diagnostics[39;49m[0m
## [34mshell_data[39;49m[0m
## signalP_result.txt
## [34msnakemake-tutorial[39;49m[0m
## species_EnsemblBacteria.txt
## [34msratoolkit.3.0.0-mac64[39;49m[0m
## sub.tar.gz
## test-openblas.c
## tnp
## zprofileworks.txt
## zshrc_backup.txt
The cd
command works in a similar way.
Try entering:
This will take you to the untrimmed_fastq
directory
3.7 Exercise
Navigate to your home directory. From there, list the contents of the untrimmed_fastq
directory.
3.9 Full vs. Relative Paths
The cd
command takes an argument which is a directory
name. Directories can be specified using either a relative path or a
full absolute path. The directories on the computer are arranged into a
hierarchy. The full path tells you where a directory is in that
hierarchy. Navigate to the home directory, then enter the pwd
command.
## /Users/ggiaever
You will see:
/Users/your-username
This is the full name of your home directory. This tells you that you
are in a directory called your-username
, which sits inside a directory called
home
which sits inside the very top directory in the hierarchy. The
very top of the hierarchy is a directory called /
which is usually
referred to as the root directory. So, to summarize: your-username
is a
directory in home
which is a directory in /
. More on root
and
home
in the next section.
Now enter the following command:
This jumps forward multiple levels to the .hidden
directory.
Now go back to the home directory.
You can also navigate to the .hidden
directory using:
These two commands have the same effect, they both take us to the .hidden
directory.
The first uses the absolute path, giving the full address from the home directory. The
second uses a relative path, giving only the address from the working directory. A full
path always starts with a /
. A relative path does not.
A relative path is like getting directions from someone on the street. They tell you to “go right at the stop sign, and then turn left on Main Street”. That works great if you’re standing there together, but not so well if you’re trying to tell someone how to get there from another country. A full path is like GPS coordinates. It tells you exactly where something is no matter where you are right now.
You can usually use either a full path or a relative path depending on what is most convenient. If we are in the home directory, it is more convenient to enter the full path. If we are in the working directory, it is more convenient to enter the relative path since it involves less typing.
Over time, it will become easier for you to keep a mental note of the structure of the directories that you are using and how to quickly navigate amongst them.
3.11 Exercise
Using the filesystem diagram below, if pwd
displays /Users/thing
,
what will ls ../backup
display?
../backup: No such file or directory
2012-12-01 2013-01-08 2013-01-27
2012-12-01/ 2013-01-08/ 2013-01-27/
original pnas_final pnas_sub
File System for Challenge Questions
3.12 Solution
3.12.1 Navigational Shortcuts
The root directory is the highest level directory in your file
system and contains files that are important for your computer
to perform its daily work. While you will be using the root (/
)
at the beginning of your absolute paths, it is important that you
avoid working with data in these higher-level directories, as
your commands can permanently alter files that the operating
system needs to function. In many cases, trying to run commands
in root
directories will require special permissions which are
not discussed here, so it’s best to avoid them and work within your
home directory. Dealing with the home
directory is very common.
The tilde character, ~
, is a shortcut for your home directory.
In our case, the root
directory is two levels above our
home
directory, so cd
or cd ~
will take you to
/Users/your-username
and cd /
will take you to /
. Navigate to the
home directory:
Then enter the command:
## @sockeye.arc.ubc.ca
## [34mApplications[39;49m[0m
## Brewfile
## [34mDesktop[39;49m[0m
## [34mDocuments[39;49m[0m
## [34mDownloads[39;49m[0m
## [35mGoogle Drive[39;49m[0m
## [34mLibrary[39;49m[0m
## Makevars
## Mambaforge-MacOSX-x86_64.sh
## Miniconda3-latest-MacOSX-arm64.sh
## Miniconda3-latest-MacOSX-x86_64.sh
## [34mMovies[39;49m[0m
## [34mMusic[39;49m[0m
## [34mParallels[39;49m[0m
## [34mPictures[39;49m[0m
## [34mPublic[39;49m[0m
## [34mSTAR-2.7.10a[39;49m[0m
## Your appointment at the U.S. Consulate for passport services - ggiaever@gmail.com - Gmail.pdf
## [34mZotero[39;49m[0m
## backup-rstudio-prefs
## [34mbackuup-config-rstudio[39;49m[0m
## bashrc64
## build.sh
## [35mconda.sh[39;49m[0m
## condash
## cpc2_result.txt
## [34mdc_workshop[39;49m[0m
## dc_workshop_log_2022_11_27.sh
## dc_workshopfiles_for_igv
## [34mecho[39;49m[0m
## err_md5sum.txt
## example1.cpp
## [34mfasterq.tmp.Guris-MacBook-Pro-2.local.67466[39;49m[0m
## find.txt
## [34mgsea_home[39;49m[0m
## hello.cpp
## [31mhelloworld[39;49m[0m
## [34mhomebrew[39;49m[0m
## [34migv[39;49m[0m
## index.bam
## iupred2a_result.txt
## metakeypair
## metakeypair-nopass.pem
## metakeypair.pem
## metakeypair.pub
## [34mminiconda3[39;49m[0m
## [34mminiconda3-intel[39;49m[0m
## my_key
## my_key.pub
## [34mnode_modules[39;49m[0m
## omp-test.c
## [34mopt[39;49m[0m
## package-lock.json
## package.json
## path
## pfam_result.txt
## [34mquality[39;49m[0m
## [34mquant[39;49m[0m
## [34mrstudio-diagnostics[39;49m[0m
## [34mshell_data[39;49m[0m
## signalP_result.txt
## [34msnakemake-tutorial[39;49m[0m
## species_EnsemblBacteria.txt
## [34msratoolkit.3.0.0-mac64[39;49m[0m
## sub.tar.gz
## test-openblas.c
## tnp
## zprofileworks.txt
## zshrc_backup.txt
This prints the contents of your home directory, without you needing to type the full path.
The commands cd
, and cd ~
are very useful for quickly navigating back to your home directory. We will be using the ~
character in later lessons to specify our home directory.