Files and Directories
The Unix Shell
Files and Directories
Copyright © Software Carpentry 2010
This work is licensed under the Creative Commons Attribution License
See http://software-carpentry.org/license.html for more information.
Run
Programs
Store
Data
Files and Directories Introduction
Communicate
with each other
Interact
with us
Run
Programs
Store
Datashell
Files and Directories Introduction
Communicate
with each other
Interact
with us
Store
Datashell
Files and Directories Introduction
Store
Datashell
Files and Directories Introduction
file system
Store
Datashell
Files and Directories Introduction
file system
files
Store
Datashell
Files and Directories Introduction
file system
files directories
Store
Datashell
Use the shell
Files and Directories Introduction
file system
files directories
Use the shell
to view and change
the file system
Store
DatashellUse the shell
to run commands
Files and Directories Introduction
file system
files directories
to run commands
to view what's in
the file system
login:login:login:login:
Files and Directories Introduction
login:login:login:login: computer prompt in bold
Files and Directories Introduction
login:login:login:login: computer prompt in bold
explanatory text in blueexplanatory text in blue
Files and Directories Introduction
login:login:login:login: vlad user input in green
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ******** password
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ********
$$$$ shell prompt
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ********
$$$$ shell prompt
like Python's >>> and …like Python's >>> and …
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ********
$$$$ whoami check user ID
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ********
$$$$ whoami check user ID
shell finds the whoami programshell finds the whoami program
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ********
$$$$ whoami check user ID
shell finds the whoami programshell finds the whoami program
runs it
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ********
$$$$ whoami
vlad
check user ID
shell finds the whoami programvlad shell finds the whoami program
runs it
prints its output
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ********
$$$$ whoami
vlad
check user ID
shell finds the whoami programvlad
$$$$
shell finds the whoami program
runs it
prints its output
displays a new prompt
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ********
$$$$ whoami
vladvlad
$$$$ pwd what is the working directory
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ********
$$$$ whoami
vladvlad
$$$$ pwd what is the working directory
the directory used when no other
directory is explicitly specified
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ********
$$$$ whoami
vladvlad
$$$$ pwd
/users/vlad
$$$$
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ********
$$$$ whoami
vlad
root
vlad
$$$$ pwd
/users/vlad
$$$$
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ********
$$$$ whoami
vlad
/
root
vlad
$$$$ pwd
/users/vlad
$$$$
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ********
$$$$ whoami
vlad
/
root
vlad
$$$$ pwd
/users/vlad
$$$$
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ********
$$$$ whoami
vlad
/
root
vlad
$$$$ pwd
/users/vlad
$$$$
bin
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ********
$$$$ whoami
vlad
/
root
vlad
$$$$ pwd
/users/vlad
$$$$
bin data
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ********
$$$$ whoami
vlad
/
root
vlad
$$$$ pwd
/users/vlad
$$$$
bin data users
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ********
$$$$ whoami
vlad
/
root
vlad
$$$$ pwd
/users/vlad
$$$$
bin data users tmp
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ********
$$$$ whoami
vlad
/
root
vlad
$$$$ pwd
/users/vlad
$$$$
bin data users tmp
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ********
$$$$ whoami
vlad
/
root
vlad
$$$$ pwd
/users/vlad
$$$$
bin data users tmp
imhotep larry vlad
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ********
$$$$ whoami
vlad
/
root
vlad
$$$$ pwd
/users/vlad
$$$$
bin data users tmp
imhotep larry vlad
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ********
$$$$ whoami
vlad
/
root
vlad
$$$$ pwd
/users/vlad
$$$$
bin data users tmp
imhotep larry vlad
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ********
$$$$ whoami
vlad
/
root
vlad
$$$$ pwd
/users/vlad
$$$$
bin data users tmp
imhotep larry vlad
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ********
$$$$ whoami
vladvlad
$$$$ pwd
/users/vlad
$$$$ ls stands for "listing"
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ********
$$$$ whoami
vladvlad
$$$$ pwd
/users/vlad
$$$$ ls stands for "listing"
sadly more memorable than
most command names
Files and Directories Introduction
login:login:login:login: vlad
password:password:password:password: ********
$$$$ whoami
vladvlad
$$$$ pwd
/users/vlad
$$$$ ls
bin data mail music
notes.txt papers pizza.cfg solar
solar.pdf swc
Files and Directories Introduction
solar.pdf swc
$$$$
login:login:login:login: vlad
password:password:password:password: ********
$$$$ whoami
vladan argument or flag modifying
vlad
$$$$ pwd
/users/vlad
$$$$ ls -F
bin/ data/ mail/ music/
notes.txt papers/ pizza.cfg solar/
solar.pdf swc/
an argument or flag modifying
the command's behavior
Files and Directories Introduction
solar.pdf swc/
$$$$
login:login:login:login: vlad
password:password:password:password: ********
$$$$ whoami
vladadds a trailing '/' to
vlad
$$$$ pwd
/users/vlad
$$$$ ls -F
bin/ data/ mail/ music/
notes.txt papers/ pizza.cfg solar/
solar.pdf swc/
adds a trailing '/' to
directory names
Files and Directories Introduction
solar.pdf swc/
$$$$
$$$$ ls -F
bin/ data/ mail/ music/
notes.txt papers/ pizza.cfg solar/
solar.pdf swc/solar.pdf swc/
vlad
bin musicmail papersdata notes.txt
Files and Directories Introduction
solarpizza.cfg solar.pdf swc
$$$$ ls -F
bin/ data/ mail/ music/
notes.txt papers/ pizza.cfg solar/
solar.pdf swc/solar.pdf swc/
By convention, use filename extension to indicate file type
Files and Directories Introduction
$$$$ ls -F
bin/ data/ mail/ music/
notes.txt papers/ pizza.cfg solar/
solar.pdf swc/solar.pdf swc/
By convention, use filename extension to indicate file type
.txt for text, .pdf for PDF, .cfg for configuration file, etc.
Files and Directories Introduction
$$$$ ls -F
bin/ data/ mail/ music/
notes.txt papers/ pizza.cfg solar/
solar.pdf swc/solar.pdf swc/
By convention, use filename extension to indicate file type
.txt for text, .pdf for PDF, .cfg for configuration file, etc.
But this is only a convention, not a guarantee
Files and Directories Introduction
$$$$ ls –F data
Files and Directories Introduction
$$$$ ls –F data
amino_acids.txt elements/ morse.txt
pdb/ planets.txt sunspot.txt
$$$$$$$$
Files and Directories Introduction
$$$$ ls –F data
amino_acids.txt elements/ morse.txt
pdb/ planets.txt sunspot.txt
$$$$
vlad
data
a relative path
$$$$
Files and Directories Introduction
$$$$ ls –F data
amino_acids.txt elements/ morse.txt
pdb/ planets.txt sunspot.txt
$$$$
vlad
data
a relative path
relative to
current working directory
$$$$
Files and Directories Introduction
$$$$ ls –F /data
access.log backup/ hardware.cfg
network.cfg
$$$$$$$$
Files and Directories Introduction
$$$$ ls –F /data
access.log backup/ hardware.cfg
network.cfg
$$$$
an absolute path
$$$$
Files and Directories Introduction
$$$$ ls –F /data
access.log backup/ hardware.cfg
network.cfg
$$$$
an absolute path
leading '/' means "from root"
$$$$
Files and Directories Introduction
$$$$ ls –F /data
access.log backup/ hardware.cfg
network.cfg
$$$$
bin data users tmp
/
an absolute path
leading '/' means "from root"
so it always refers to
this directory
$$$$
Files and Directories Introduction
imhotep larry vlad
$$$$ pwd
/users/vlad
$$$$
Files and Directories Introduction
$$$$ pwd
/users/vlad
$$$$ ls
bin/ data/ mail/ music/bin/ data/ mail/ music/
notes.txt papers/ pizza.cfg solar/
solar.pdf swc/
$$$$
Files and Directories Introduction
$$$$ pwd
/users/vlad
$$$$ ls
bin/ data/ mail/ music/bin/ data/ mail/ music/
notes.txt papers/ pizza.cfg solar/
solar.pdf swc/
$$$$ cd data
Files and Directories Introduction
$$$$ pwd
/users/vlad
$$$$ ls
bin/ data/ mail/ music/bin/ data/ mail/ music/
notes.txt papers/ pizza.cfg solar/
solar.pdf swc/
$$$$ cd data change directory
Files and Directories Introduction
$$$$ pwd
/users/vlad
$$$$ ls
bin/ data/ mail/ music/
change directory
actually doesn't change the directory
bin/ data/ mail/ music/
notes.txt papers/ pizza.cfg solar/
solar.pdf swc/
$$$$ cd data
Files and Directories Introduction
$$$$ pwd
/users/vlad
$$$$ ls
bin/ data/ mail/ music/
change directory
actually doesn't change the directory
changes the shell's idea of
which directory we are in
bin/ data/ mail/ music/
notes.txt papers/ pizza.cfg solar/
solar.pdf swc/
$$$$ cd data
Files and Directories Introduction
which directory we are in
$$$$ pwd
/users/vlad
$$$$ ls
bin/ data/ mail/ music/bin/ data/ mail/ music/
notes.txt papers/ pizza.cfg solar/
solar.pdf swc/
$$$$ cd data
$$$$ pwd
/users/vlad/data
$$$$
Files and Directories Introduction
$$$$
$$$$ pwd
/users/vlad
$$$$ ls
bin/ data/ mail/ music/bin/ data/ mail/ music/
notes.txt papers/ pizza.cfg solar/
solar.pdf swc/
$$$$ cd data
$$$$ pwd
/users/vlad/data
$$$$ ls
Files and Directories Introduction
$$$$ ls
amino_acids.txt elements/ morse.txt
pdb/ planets.txt sunspot.txt
$$$$
$$$$ pwd
/users/vlad
$$$$ ls
bin/ data/ mail/ music/
because we're now "in"
this directory
bin/ data/ mail/ music/
notes.txt papers/ pizza.cfg solar/
solar.pdf swc/
$$$$ cd data
$$$$ pwd
/users/vlad/data
$$$$ ls
Files and Directories Introduction
$$$$ ls
amino_acids.txt elements/ morse.txt
pdb/ planets.txt sunspot.txt
$$$$
$$$$ pwd
/users/vlad/data
$$$$
Files and Directories Introduction
$$$$ pwd
/users/vlad/data
$$$$ cd ..
Files and Directories Introduction
$$$$ pwd
/users/vlad/data
$$$$ cd .. the directory above the current one
Files and Directories Introduction
$$$$ pwd
/users/vlad/data
$$$$ cd .. the directory above the current one
its parent directoryits parent directory
Files and Directories Introduction
$$$$ pwd
/users/vlad/data
$$$$ cd ..
$$$$ pwd$$$$ pwd
/users/vlad
$$$$
Files and Directories Introduction
$$$$ pwd
/users/vlad/data
$$$$ cd ..
$$$$ pwd$$$$ pwd
/users/vlad
$$$$ ls
bin/ data/ mail/ music/
notes.txt papers/ pizza.cfg solar/
solar.pdf swc/
$$$$
Files and Directories Introduction
$$$$
$$$$ pwd
/users/vlad/data
$$$$ cd ..
$$$$ pwd$$$$ pwd
/users/vlad
$$$$ ls
bin/ data/ mail/ music/
notes.txt papers/ pizza.cfg solar/
solar.pdf swc/
$$$$ ls -F -a
Files and Directories Introduction
$$$$ ls -F -a
./ ../ bin/ data/
mail/ music/ notes.txt papers/
pizza.cfg solar/ solar.pdf swc/
$$$$ pwd
/users/vlad/data
$$$$ cd ..
$$$$ pwd$$$$ pwd
/users/vlad
$$$$ ls
bin/ data/ mail/ music/
notes.txt papers/ pizza.cfg solar/
solar.pdf swc/
$$$$ ls -F -a
"show all"
Files and Directories Introduction
$$$$ ls -F -a
./ ../ bin/ data/
mail/ music/ notes.txt papers/
pizza.cfg solar/ solar.pdf swc/
$$$$ pwd
/users/vlad/data
$$$$ cd ..
$$$$ pwd$$$$ pwd
/users/vlad
$$$$ ls
bin/ data/ mail/ music/
notes.txt papers/ pizza.cfg solar/
solar.pdf swc/
$$$$ ls -F -a
parent directory
Files and Directories Introduction
$$$$ ls -F -a
./ ../ bin/ data/
mail/ music/ notes.txt papers/
pizza.cfg solar/ solar.pdf swc/
$$$$ pwd
/users/vlad/data
$$$$ cd ..
$$$$ pwd$$$$ pwd
/users/vlad
$$$$ ls
bin/ data/ mail/ music/
notes.txt papers/ pizza.cfg solar/
solar.pdf swc/
$$$$ ls -F -a
parent directory
Files and Directories Introduction
$$$$ ls -F -a
./ ../ bin/ data/
mail/ music/ notes.txt papers/
pizza.cfg solar/ solar.pdf swc/
/users
$$$$ pwd
/users/vlad/data
$$$$ cd ..
$$$$ pwd$$$$ pwd
/users/vlad
$$$$ ls
bin/ data/ mail/ music/
notes.txt papers/ pizza.cfg solar/
solar.pdf swc/
$$$$ ls -F -a
this directory
itself
Files and Directories Introduction
$$$$ ls -F -a
./ ../ bin/ data/
mail/ music/ notes.txt papers/
pizza.cfg solar/ solar.pdf swc/
itself
Things are different on Windows
Files and Directories Introduction
Things are different on Windows
C:\Users\vlad
Files and Directories Introduction
Things are different on Windows
C:\Users\vlad
Drive letter
Files and Directories Introduction
Things are different on Windows
C:\Users\vlad
Drive letter
Each drive is a separate file system
Files and Directories Introduction
Things are different on Windows
C:\Users\vlad
Backslash \ as separator
Files and Directories Introduction
Things are different on Windows
C:\Users\vlad
Backslash \ as separator
Unix uses \ to escape special characters
in names like my\ files.txt
Files and Directories Introduction
Things are different on Windows
C:\Users\vlad
Case insensitive
Files and Directories Introduction
Things are different on Windows
C:\Users\vlad
Case insensitive
c:\users\vlad C:\USERS\VLAD C:\uSeRs\VlAd
Files and Directories Introduction
Things are different on Windows
C:\Users\vlad
Cygwin: /cygdrive/c/Users/vlad
Map drive letters to "directories"
Files and Directories Introduction
Things are different on Windows
C:\Users\vlad
Cygwin: /cygdrive/c/Users/vlad
Map drive letters to "directories"
And use / instead of \
Files and Directories Introduction
Things are different on Windows
C:\Users\vlad
Cygwin: /cygdrive/c/Users/vlad
Map drive letters to "directories"
And use / instead of \
Files and Directories Introduction
But still case insensitive
Things are different on Windows
C:\Users\vlad
Cygwin: /cygdrive/c/Users/vlad
Map drive letters to "directories"
And use / instead of \
Files and Directories Introduction
But still case insensitive
Can't put backup.txt and Backup.txt in a directory
pwd print working directory
cd change working directory
ls listingls listing
. current directory
.. parent directory
Files and Directories Introduction
August 2010
created by
Greg Wilson
August 2010
Copyright © Software Carpentry 2010
This work is licensed under the Creative Commons Attribution License
See http://software-carpentry.org/license.html for more information.