
Commanding the Command Line
Tackling the Terminal, or shackling Shell.
It is a great advantage to understand the basics of the "shell", also known as "command Line" or "terminal". This tool allows the ability to accomplish and automate tasks on a computer without the use of a graphical user interface. It also allows sending of simple text commands to the computer to do things such as navigate through a directory or copy a file, and form the basis for many more complex automation and programming skills.
Different Operating Systems use different Shell software. MacOS uses terminal by default, with Windows using Command Prompt but also has Windows Terminal which was released in 2019. Linux uses have several different versions of the terminal depending on the distribution such as gnome-terminal, konsole, xterm, rxvt, kvt, nxterm, and eterm.
When jumping into the terminal there is various commands that allow you to navigate, create, remove, rename and many more. Lets run through some of the basic commands used.
Print Working Directiory
pwd
- returns the name of the directory currently being browsed
pwd
/Users/directory
List
ls [OPTIONS] [FILES / DIRECTORY]
- lists files and directories within the file system, and shows detailed information about them.
ls
Desktop Downloads Movies Pictures
Documents Library Music Public
A couple of options that can be used such as:
ls -l
- list with long format - show permissionsls -a
- list all files including hidden file starting with '.'
There are various other options which can be used such as
ls -d
- list directories - with ' */'ls -la
- list long format including hidden filesls -lh
- list long format with readable file sizels -ls
- list with long format with file sizels -r
- list in reverse orderls -R
- list recursively directory treels -s
- list file sizels -S
- sort by file sizels -t
- sort by time & datels -X
- sort by extension name
Change Directory
cd
changes the directory/folder of the terminal's shell. Hint Pressing the tab button will auto complete the directory name. Lets have a look further on how cd
works.
cd
- by itself will return back to the home directory.cd ~
- also returns back to the home directory.cd /
- changes to the root directory.cd ..
- changes to the parent directory.cd Documents
- changes to sub directory Documents.cd Documents/Books
- changes to sub directory Documents/Books.cd /home/user/Desktop
- changes to directory with absolute path /home/user/Desktop.
Dealing with white spaces in directories:
cd My\ Images
cd "My Images"
cd 'My Images'
Touch
The touch
command is the easiest way to create new, empty files. It is also used to change the timestamps (i.e. dates and times of the most recent access and modification) on existing files and directories.
touch's syntax is
touch [option] [file_name(s)...]
Touch creates new files for any file names that are provided as arguments (i.e., input data) if files with such names do not already exist. Touch can create any number of files simultaneously. For example, the following command would create three new, empty files named file1, file2 and file3:
touch file1 file2 file3
Make Directory
mkdir
- creates directories / folders. This command can create multiple directories at once as well as set the permissions for the directories. It is important to note that the user executing this command must have enough permissions to create a directory in the parent directory, or he/she may receive a ‘permission denied’ error.
Syntax:
mkdir [options...] [directory...]
Move
mv
- is used to move files and directories.
$ mv [options] [source...] [destination...]
Some examples of its use is as follows:
mv file.c file1.h /home/usr/files/
- moves file.c file1.h files to /home/usr/files/ directory.mv *.c bak
- moves all C files in current directory to sub directory bak.mv bak/* .
- move all files in sub directory bak to current directory.mv main.c main.bak
- renames file main.c to main.bak.
Copy
cp
- copies files and directories.
cp [options] [source...] [destination...]
Options
cp -a
- archive files.cp -f
- force copy by removing the destination file if needed.cp -i
- interactive - ask before overwrite.cp -R
- recursive copy (including hidden files).cp -u
- update copy when source is newer than destination.cp -v
- verbose - print informative messages.
cp
command examples
cp main.c bak
- copies single file main.c to destination directory bak.cp main.c def.h /home/usr/rapid/
- copies 2 files main.c and def.h to destination absolute path directory /home/usr/rapid/cp *.c bak
- copies all C files in current directory to sub directory bak.cp src /home/usr/rapid/
- copies directory src to absolute path directory /home/usr/rapid/.cp -R dev bak
- copies all files and directories in dev recursively to subdirectory bak.cp -f test.c bak
- force file copy.cp -i test.c bak
- interactive prompt before file overwrite.cp -u * bak
- update all files in current directory - copy only newer files to destination directory bak.
Remove
rm
is used to remove objects such as files, and directories. By default, it does not remove directories. This command normally works silently and so be very careful while running rm command because once deleted, the files are not able to be recovered.
rm [options...] [files / directories ...]
rm
command examples
rm a.txt
- removes the file a.txt.rm b.txt c.txt
- removes the file b.txt and c.txt file.rm -i d.txt
- asks the user for confirmation before removing each file.rm -f e.txt
- This option overrides this minor protection and removes the file forcefully.rm -r /files/*
- Recursive Deletion: with -r(or -R) option rm command performs a tree-walk and will delete all the files and sub-directories recursively of the parent directory. At each stage it deletes everything it finds. Normally, rm wouldn’t delete the directories but when used with this option, it will delete.
CAT command
cat [options...] [files / directories ...]
cat
- displays the content of text files and to combine several files to one file.
cat list1.txt
- views a text file
cat list1.txt
milk
bread
apples
cat list2.txt
house
car
cat list1.txt list2.txt
- Combines 2 text files
cat list1.txt list2.txt
milk
bread
apples
house
car
cat list1.txt list2.txt > todo.txt
- Combines 2 text files to another file.
There is a tonne more that is possible within the Command line, however this should be sufficient to getting started.