Files
hpr-knowledge-base/hpr_transcripts/hpr0598.txt

314 lines
28 KiB
Plaintext
Raw Normal View History

Episode: 598
Title: HPR0598: Bash Scripting: Episode 2 Command Line Basics
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr0598/hpr0598.mp3
Transcribed: 2025-10-07 23:42:45
---
Hello ladies and gentlemen my name is Ken Fallon and this is the second and the
episode on Bash scripting. Today's episode is entitled Common Bash Commands.
Hi everybody. In the last episode we covered a basic introduction to the Bash shell and I
showed you how to open the terminal. We even went so far as to write in a Hello World
script which I hope you all have done and so today we're going to move on. We are going
to be doing one script but we're going to be going through some of the most common commands
that we're going to be using later on in some of our scripts and even if you're not interested
in Bash scripting today's episode we'll give you a basic introduction to the Linux command
line. One of the most daunting things I've ever done in computing was logging into my
brothers. I think it was a 8 to 8 6 PC, one of the original PCs and I got an about a board
to try ignore her for hours and actually it was the tour of having thought that I had
sent off nuclear missiles somewhere in the world. The word abort I always heard in movies.
It was actually that that made me want to change from doing mechanical engineering which I was
studying at the time to get interested in the computing field so there you go if it wasn't for
a tour of the command line you wouldn't actually be listening to this right now.
I'll never back to today's lessons. One of the tips that you can do when you do arrive at a
any system that is prompting you with a black and white sort of terminal. It can be a bit daunting
so but you have to realize that the programmers of this system have left you some sort of
bread come trail in order to find your way around. The most useful thing that you can probably do
and probably the safest thing to do is either type question mark which in the case of Bash won't
help you very much or you can type HLP the help command. In most systems proprietary or
open source or whatever if you type help you will get some sort of help indication
and in Bash when you type help you'll get a list of commands that are available in Bash
and typing help then the name of any of the commands listed will give you more information about
that command so typing help space help for instance gives you detailed information about
the help command which is probably not very useful to you at this stage. You can also get more
detailed information about a command by using the man command. Now man stands for manual as in
it's a reference manual. It's an electric format, electronic format of the book that should
be shipped with the program and just in case you forget the fifth line of the output from the help
command which we typed earlier makes reference to the man command and the info command. Now we're
not going to be dealing with the info command a lot because it's although it's arguably a better
format than man it's not as widely used on other systems, non-genew systems.
You can also use the command apropole which is actually a shortcut for man space dash k which is
listed on the fifth line of the help command which we've just typed earlier on and if you type
apropole followed by a word that you're interested in you're going to get a list of all the manual
pages that have that word listed in the short snobsis. So if you type man space or sorry apropole
space help or indeed man space dash k space help you're going to get a list of not very useful
commands actually to be honest with you that are that have the word help in their title.
Now the reason these man pages can be a bit daunting if this is the first time that you've
ever come across them and they're not actually intended for new users of bash for instance or new
unique Linux users. They're intended for experienced admins who've either forgotten something or
experienced admins who've come in from another system or want to use the term admin I mean users.
That's not to say that there's not useful information here for the novice so for example if you
type man space intro it's going to give you a basic introduction to man and it's or to the
bash system itself and some various commands. So it's actually a good a good topic for homework
today is to go and run the man space info command and have a little read of that. Don't be too
worried if you don't get it all don't be too worried if there's bits that you have to skip over.
There's also documentation shipped with your distribution and it's usually stored under slash
user slash share slash docs and in our case we're interested in slash bash but these are compressed
to save space it's probably not a problem if you browse to them on in a gooey in a gooey or file
manager or whatever but on the command line you need to go and to use command z more to be able
to read these files. But let's not just one last thing about the help and that is that you can
usually also type the command name so if you find out a command for instance on a bulletin
border somewhere around a wiki or something you can type the command followed by space dash
dash help or a space dash h for short. Usually what I do is if I'm looking up something and I don't
know if I have a problem and I see a list of commands given on a wiki page or on a forum or
something what I'll do is I'll type man space and the command name to see exactly what it is
that the user is trying to do and if I'm familiar with that command I know more or less the intricacies
of it I might just type man space dash dash help. Okay now while the man intro is a good start to
learning bash the learning curve can be quite steep. Now my personal opinion is that there's
a need to have some better command line guides give button to distros which are Linux distributions.
But given the focus on the GUI and making that easy to use I very much doubt if that's ever
going to be addressed. In order to keep the distribution short they're even compressing the manual
pages which I've shown here before so I very much doubt they're going to put any additional
files on to mainstream Linux distributions. By the way I'll have a link in the show notes
to what a Linux distribution is if you think of it just as a supplier of a Linux system in the
same way Ford supplies a car and VW supplies a car or an automobile. The Linux distribution like
Ubuntu or Fedora are just assemblies of the same thing the components may be the same but
under the hood it's Linux with a lot of GNU tools hence the word GNU Linux. Learning curves
there is a learning curve before you can start getting comfortable with command line
but it's journey only need to make ones. Now while the syntax may change from time to time
and from system to system the core knowledge that you're going to pick up will remain valid
for use to come and this explains why the man pages are deliberately kept sub-turs. They're meant
as a reminder for someone already familiar with the command rather than as a first introduction.
Now as we promised earlier this is going to be an introduction to some basic Unix commands
and as you'll all know at the end by the end of this series I plan to do no actual work
so I've asked and received permission from Chess Griffin to use extracts from his podcast series
Linux reality. A Linux reality was a podcast series that ran for 100 episodes from February 2006
to March 2008 and the snippet we're about to hear was from episode 14 entitled command line
basics and it was originally aired on the 17th of May 2006 and it was as valid now as it was then.
This is Linux reality episode 14 command line basics.
So let me talk about a few basic commands to help you start getting your way around the terminal.
Open up the terminal in whatever desktop environment you want to use it doesn't you know whatever
you're using KDE or gnome or what have you just open up a terminal and you will see a prompt.
Now the prompt contains a lot of information and it usually will have I mean sometimes it will
have the name of your directory if you see a little squiggly line a tilde it's called a tilde it's
the character that's in the upper left-hand corner of your keyboard next to the number one
that's called a tilde that the tilde character stands for your home directory so
sometimes the prompts and different distributions are a little bit different but it generally
will contain where you are what directory you happen to be in and it will have a little prompt
sign a little dollar sign or something like that and and and you know depending on whether or not
you're logged in as your normal user or as as root so let's just start with some basic commands
right from where you are don't do anything else and just type the following ls that stands for
list and that is a way to list the contents the files and folders or files and directories
of the directory you're in so presumably you're in your home directory and if you were to type
ls you would see a listing of all the files and directories contained within your home
so if you were to then open up conqueror or nautilus or another file manager to your home directory
you should see the same this is the same information the same files and the same directories should
be listed now in Linux there is there are also hidden directories and hidden files and those
begin with a period and you don't normally see them when you just do a regular ls or when you
just open up conqueror and just list the contents of your home directory you often have to toggle
the view mode if you will so you can see the hidden files and hidden files often have configuration
settings and other things like that that that are accessed by programs but that you don't normally
need to access which is why they're hidden in the first place but in the terminal if you were to do
ls dash a the dash a stands for all now you would see a list of all the files in your home directory
hidden and non hidden files and directories now another way you can list files is using the dash
l option so if you were to do ls dash l you would see a listing of all your non hidden files and
directories in a sort of a long format you know with additional information this year permissions
and who the owner and group is and the date and all of that that's the dash l option
and let me stop right there let me explain something I probably should have said right off the
bat the syntax of entering commands generally speaking commands are entered in the following
syntax in the terminal you'll have the command first then you'll have a dash with any options
that are available and then you'll have what are called arguments or what or what it's affecting
or what you're doing so let me give you an example we just did the ls command using two different
arguments we did dash l and we did dash a now you can combine you can combine the options
that I say arguments and options we did the ls command with two options the dash l and the dash
a you can combine them so you can have ls dash l a that's two options and then the argument in this
case is going to be at a you know which directory you're executing that command on if you leave it
blank it will be the current directory but you can put in a different directory as an argument
so type in the following ls space dash l a space forward slash usr forward slash bin
and then enter so that is now doing a long listing of all the files in the usr bin directory
so those are the three components of entering the command in at that at the command prompt
not every command has options not every command requires arguments you can often find information
about commands by typing in man ma and then the command name so you can type in man space ls
the man stands for manual or manual page Linux contains documentation about all the commands
they're called the man pages and I think there's a man page for almost everything and so you could
just type in man and then space and the name of the command and you'll see the syntax and some
examples and some information some and some help on how to use a particular command okay so that's
the ls the list command the next command I'll mention is cd and that stands for change directory
it's a way to jump around to different directories so you're in your home directory and if you were
to type cd space slash usr slash bin you would jump directly to the usr bin directory
so so cd you can change directories if you're in a directory if you're in your home directory and
let's show you have it you have a sub directory called music and you want to go into that folder
and and if you're in your home directory you can just do cd music and it will take you into that
sub directory now if you're in your music sub directory and you want to go back up a level
to your home directory you can do cd space and then two periods or cd space tilde takes you
directly to your home directory all right the next command I'm going to mention is the
sort of two different commands that go together one is cp for copy and one is mv for move
copy cp lets you copy files from you know from one directory or location to another directory
and mv allows you to move the file so it actually it's like a you know it just moves it so you don't
have two copies you just have one copy that's been moved from one location to another location
the move command mv is also used to rename files so if you're in your home directory and you have
a file called test and you want to rename it to test backup you would just type mv test
space test backup and it would just move move it from from test to test backup
there's the command rm for remove it's almost like a delete but now you got to be careful
anything that's that's removed with the remove command cannot be undone then if another command
sort of a basic little command here is mkdir or make directory this is how you can create
directories if you're in your home folder and you want to create a directory called music just type
mkdir space music and that will create a directory okay a couple more commands here and
less the command less less lets you print out a file a say a text file to the screen you can
just basically you know print the commands or or excuse me print the contents of the file onto
the screen so if you have a text file called file.txt and you just want to look at it just type
less space file.txt and it will just it will show you the contents you can just page up or down to
scroll and then queue for to quit back out. A more well you can you can combine commands using
what's called the pipe character the pipe character is above your enter key on your keyboard
I think it's usually a shifted backslash key but it's a straight line you know a straight up
and down line and and this takes two come it basically takes two commands and pipes them
together and connect them together if you will so here's an example let's say you were doing
ls-la okay that's that command again to list everything you know in your home directory
space or so ls space dash l a space pipe space less what that will do is it will print
the contents of your home directory it will pipe it through into the less command which as you
remember what that does is it takes whatever the contents are and prints it on your screen
and allows you to do page up and page down normally if you just do ls-la and you have a let's
say you have a thousand files well it will just scroll past really fast and you may not be able to
see it all even if you have you know you're you're even if your terminal has the scroll bar
well if you enter in this command it will let you it'll basically pause you know let's you look
at one page at a time and you can just do page up per page down to go back and forth and then quit
to go out but that pipe character character combined the two commands they combined the ls-la
with less and it put them together into one output you can also redirect contents of a command
to something else using the the greater than character which is a shifted period that's the
little triangle that's that's pointing to the right so for example if you did ls-la
space greater than space list files dot txt what that does is that that that takes the output
of ls-la and instead of printing it on the screen it directs it it redirects that to a file it
creates a file called list files dot txt a text file with the contents of your home directory in
it then you can just use less and look at that text file or use some other you know text editor
to look at that text file every time you did that command the text file would be overwritten
if you wanted to append onto the end of the file so the text file just continues to grow with more
data in there you would use two greater than characters together so it would be ls-la
space greater than greater than space list files dot txt and then it would just keep upending
the data onto the end of the file it wouldn't be overwritten every single time
i do this i have a a pod catcher client that um that does it that operates as a script in the
command line and i have it when it's done it prints the output of what it did to a text file so i
can see what it did every day and it depends it to the end so if i miss a few days i can go back
and look at that text file it doesn't get overwritten so that's an example of using of using that
that type of uh character combination okay so a couple more quick commands here the first one
is su stands for switch user allows you to switch from your regular user to the root user while
you're in the terminal you just type in su and it will ask you for the root password and the
and the prompt will also change after you after you complete that process to let you know you're now
acting as root and another little two finer final points um the terminal has what's called tab
completion so as you're as you're typing something out let's say for example you have a a long
file in your home directory called you know um this is a list of all my files dot txt and you
view the contents of that using the less command we talked about so you would type in less space
and you could start typing this is a list of all my files dot txt but that's really long it's a lot
of typing so if you were to just start typing it like this is a and then hit tab assuming there's
no other file that that has similar name it will just complete the rest of the file name it'll
just complete the rest of the file name for you it'll fill in the blanks if you have two files
that are similar like let's say you have file one dot txt and file two dot txt and you type in
f i and then you hit tab it will and you do you hit tab twice it will list both files for you
and it will fill in as much as it can and it will stop where there's a discrepancy
at the one or the two for example and let's you fill in the rest and then of course you can
keep hitting tab after you type in the one or two so tab completion of the command line is
awesome and then the last thing i'm going to mention is how to exit out you know you could type
exit exit exit exit to you know to get out of the terminal or you could close the window
but me again being a keyboard shortcut guy i just like to hit control d and that will exit out
of the command line exit out of the terminal that is so hopefully this has been helpful i know
it's not so but that is all that i've got for this week so let me close up the shop
thank you very much chess first of all thank you very much for recording that
episode but also chess releases work under creative commons attribution on commercial
no derivative's us license but he's given us permission to take snippets of his show to re-release
here on this networking episode i'm very very thankful for all the work he did and is a scholar
and a gentleman and listening to that episode just made me remember how much i really look forward
to his shows every week and naturally a link will be in the show notes now i actually got some
feedback from Jim Kerman from Virginia USA and he had amongst many other commons he had an
excellent suggestion to start each tab each week a script that we would build on
where we could use commands that we've learned so far and script we're going to use is we're
going to back up our home directory to a usb stick and as the weeks go on we're going to expand
the script we're going to build in more intelligence and we're going to deal with a lot of errors
and we're going to check for this that and the next thing and we're going to
deal with different situations that occur and this actually is how scripts tend to be built
a two-liner is put into a script and then over time it's modified and changed as things arrived
so now you all know how to open a terminal and we're going to create a directory called bin
in your home directory and the reason we're going to do this is because this is the traditional
location for user scripts and many distributions Linux distributions which we've talked about before
which are like Ubuntu or Fedora or Susa or whatever are set up to allow and tapion of course
and allow scripts in your home directory which is squiggly forward slash bin or tilde forward slash
bin the number to the left the shift left of one on a us keyboard so if you look for the one key
it's on the left hand side if you hold down the shift key yes that was a lot more complicated
than that to be anyway if you have tilde slash bin or your home directory any commands that you put
in there that are marked as executable will be included in the path so that it's one of the places
the system will look for commands okay so you're on the command line and I want you to type in some
of the following commands after listening to Chess's episode you're going to know what CD does
typing CD itself will change the current directory so if you do that you will be in the
directory slash home or you see a tilde forward slash or slash home whatever and if you do a LS
and you're going to have a look for the word BIN if you don't see it then you can type
MKDIR space BIN and what that command just going to do is make a directory called bin
now in your text editor in your GUI or using whatever text editor you've decided to use
following on from the first episode you can now create a file called episode 2.bash
you can actually call it whatever you want some people that I was asked actually what they
convention was for naming files I tend to call them .bash simply because I wanted to distinguish
them as being bash scripts as opposed to shell scripts shell scripts tended to have an extension
.sh but I've seen I've seen far I've seen scripts either not have an extension or whatever
whether it is an extension or not really just a matter as far as it goes but seeing those
we're dealing with we're talking about bash scripting why not name them .bash
okay now for the next step you're going to need a usb stick and the usb stick is going to be big
enough to be able to take in all the command all the files in your home directory so if you put
that into your into your pc and browse that you use in the GUI and your file manager you can make
a note of the path to your disk now when I do that I get a path coming up in my doll from web
browser of slash media slash disk okay now this is actually one of the things we're going to be
improving on in the later series but for right now we're going to make a very dom script that's going
to assume that that is always the the back application okay in your you're editing the file in your
home directory in the in the directory bin so your home directory till the forward slash bin
forward slash episode two dot bash and we're going to have the tic-tac toll sign exclamation mark
forward slash bin forward slash bash and we're going to type echo space double quotes this is the
backup script from episode two double quotes so the next line of our script is going to be where we
make a backup directory on the usb disk and the command we're going to use is make your space
forward slash media forward slash disk forward slash backup and the next thing we're going to do is
copy over the files from your home drive onto the usb disk but we haven't covered here how we're
going to copy multiple files and sub directories so we're going to need to look up that we did
cover in Chess's episode about the copy command but now we're going to need to type in the console man
space cp and we're looking for help on cloud to copy some directories so we need to look for references
to the word directories now quick way to search man pages is by pressing the forward slash followed
by the search term so in our case we're looking for the word directory
so if you do type forward slash d i r a c two or y in press center you're going to see the word
directory highlighted in the name section where it says copy files and directories so that looks
good we know we can copy directories at least we look we see something in the synopsis section
which it's always very confusing so it has a format which you'll get familiar with this time
goes on but for now you can probably quickly jump over the synopsis section and then we'll see
in the description section which has copy source to destination or multiple destination sources
to a directory which is exactly what we want and if you scroll down even further the next one is
um dash r r sorry dash r comma space minus r dash r lowercase space dash dash recursive so
the options here are uppercase r lowercase r or dash dash recursive all of those three will do
the same thing which is copy directories recursively and what recursively means means copy the
directory and all other files and sub directories under that directory which is exactly what we want to
do so well done you've just read a man page and you are now well on your way to understanding what's
going on so the command we're going to use is copy um actually before that normally um copy doesn't
give you any feedback so as well as reading man in for your homework for this week is to find
the option in the man page for copy that explain what has been done and that's it so you're
looking for the option to explain what is being done okay I don't think you can make that
then clear uh now back to the script under make your line in your script you can type cp
space minus r and then the other option then space uh till the backslash which is your home directory
space forward slash media for search backup uh forward slash media forward slash disk forward
slash backup and then as the last thing we're going to do is ls space a l space forward slash media
forward slash disk forward slash backup then you can exit and save the file and then what we're
going to need to do is change mod space plus x space till the forward slash bin forward slash episode
to that bash and change mod stands for change the mode of the file and that will create a very very
very rudimentary um option to backup your um home drive now board warning before you run that file
you are well advised to make sure that you have an empty usb um a disk attached
you're also advised that the disk shouldn't have a subjectry called backup in it and you also
want to make sure that it's got more disk space on it than the amount of space that you're going
to be using on your home drive now if you're relatively new to Linux you're more than likely
not going to have that much stuff on it so you can go ahead and run that and so long as the usb
disk is empty when it gets full it'll just simply stop okay however the author access to
a responsibility for this program okay um also don't worry if you can get everything
all the commands that were in the show they're all going to be included in the show notes including
the commands from chess's segment and i've also included a link to a very very excellent one page
cheat sheet which is a how to uh you know command you unix and Linux command line reference
and it's created by flosswire.com and it's released under creative commons share like
um attribution license which means i can include it in uh reference to it in the show notes and
i can even distribute it myself so what i would suggest you do is print that out
don't be too worried if you don't see um if you don't know what everything in that does but we're
going to be covering quite a lot of the sections uh quite a lot of the commands in that some of what
you'll already be familiar with you're well on your way to send my friends and um i like to thank
um everybody for all the feedback and no doubt there are going to be corrections um so if you
have corrections or commons or requests please send it to feedback at canfallon.com and tune in
for the next episode which will be on basic programming concepts. Thank you for listening to
half the public radio. HPR is sponsored by caro.net so head on over to c-a-r-o dot n-e-t for all of us