223 lines
14 KiB
Plaintext
223 lines
14 KiB
Plaintext
|
|
Episode: 924
|
||
|
|
Title: HPR0924: LiTS 000: redirection
|
||
|
|
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr0924/hpr0924.mp3
|
||
|
|
Transcribed: 2025-10-08 05:01:21
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
Welcome to the inaugural episode of Linux in the Shell.
|
||
|
|
My name is Dan Washco and I will be your host.
|
||
|
|
You might be asking yourself, why is this on Hacker Public Radio?
|
||
|
|
I'll get to that in just a minute.
|
||
|
|
Linux in the Shell aims to be a fortnightly engagement whereby we discuss a Linux command
|
||
|
|
or concept applied in the best shell.
|
||
|
|
I'm going to take a three-prong approach to doing this.
|
||
|
|
First off, there is going to be a write-up on the website, Linux in the Shell.org.
|
||
|
|
That entry is going to discuss the command or concept in detail and it's going to provide
|
||
|
|
some examples.
|
||
|
|
I'll be citing my resources and other links that you could follow to get some more information
|
||
|
|
beyond the what I cover.
|
||
|
|
Secondly, there's going to be this audio that's released on Hacker Public Radio.
|
||
|
|
It's going to summarize the command and not go into detail so much as the examples because
|
||
|
|
nothing makes for drab audio than trying to spell out Linux commands and flags and everything.
|
||
|
|
The audio is going to supplement the entry so that if you've read the entry, the audio
|
||
|
|
will help solidify it in your mind or if you've listened to the audio, you'll be a go
|
||
|
|
over to the website and further understand the commands or concepts that I was talking
|
||
|
|
about.
|
||
|
|
Finally, there's a video component to each engagement, each entry, whereby I will be demonstrating
|
||
|
|
the use of the command or the concepts in the bash shell.
|
||
|
|
That video is going to be available for streaming off of YouTube, it'll be on the website
|
||
|
|
or but I'm also going to make it available for download in AUG Theora format, off of
|
||
|
|
archive.org.
|
||
|
|
That gives you three ways to learn, reading, listening and watching.
|
||
|
|
So let's have some fun.
|
||
|
|
Before we begin, I want to thank the guys over at Hacker Public Radio, the people over
|
||
|
|
there, for giving me the opportunity to put this audio out, but also for hosting the
|
||
|
|
website.
|
||
|
|
When I approached Ken Fallon about this idea, he was very enthusiastic, as always, and
|
||
|
|
he was more than willing to work with me.
|
||
|
|
The episodes will be coming out on a four-nightly basis, that's every two weeks or biweekly
|
||
|
|
for you non-Europeans out there.
|
||
|
|
We're starting on February 16th, on Thursday, February 16th, and we'll be doing releasing
|
||
|
|
episodes every two weeks up until March 22nd.
|
||
|
|
Then starting March 27th, we'll be moving to our usual time slot on a Tuesday, and it
|
||
|
|
will be every other Tuesday from there.
|
||
|
|
I hope we have a lot of fun in doing this, I'm excited, I hope you are too.
|
||
|
|
If you want to send feedback over on the website, there's a contact page, or you can send
|
||
|
|
me my email information in there, Dan at thelinuxlink.net.
|
||
|
|
You can post comments in the entries, I'll be allowing comments on the YouTube videos,
|
||
|
|
I will also be publicizing this on Facebook, Twitter, Google Plus.
|
||
|
|
You can post comments and feedback there.
|
||
|
|
I don't know about status.net yet, the last time I tried to get in there, it would not
|
||
|
|
let me in, so that's still up in the air for that.
|
||
|
|
Again, I hope you enjoy the ride, and without further ado, let's hit on entry number zero.
|
||
|
|
Entry number zero, we are going to talk about redirection today, not an official Linux
|
||
|
|
command, but a concept.
|
||
|
|
I chose this because we are going to be using this a lot in the upcoming episodes, so I
|
||
|
|
wanted to make sure that you had a good understanding of redirection.
|
||
|
|
The Unix philosophy posits simplicity in program design, and it also posits that a program
|
||
|
|
do one thing and one thing very well, and that's where redirection comes in the play that
|
||
|
|
makes these applications a program so versatile.
|
||
|
|
You don't have an application that does it all, instead you have a bunch of smaller applications
|
||
|
|
that do one thing, do it well, and allow you to chain these commands together and redirect
|
||
|
|
their output to do something extremely useful.
|
||
|
|
For instance, the LS command does a great job listing files or directories, but it doesn't
|
||
|
|
really do much anything else.
|
||
|
|
You can list them in different orders, by size, by creation time, you can do all sorts
|
||
|
|
of listings, but it's not used to copy files or move files or looking files for strings.
|
||
|
|
You can use the LS command in conjunction with other commands, like XRs or WC to get word
|
||
|
|
lists and do really interesting things, but the LS command does one thing and does it
|
||
|
|
well, lists files and directories.
|
||
|
|
The LS command does a great job listing, and it allows you to expand upon just the basic
|
||
|
|
outputting of the command to the screen.
|
||
|
|
What will we redirect in many of these cases is standard streams.
|
||
|
|
There are three standard streams we're going to be talking about or redirecting.
|
||
|
|
First is standard stream zero, which is called standard input, typically your mouse or
|
||
|
|
keyboard.
|
||
|
|
Second is standard stream one, which is standard output, typically your screen or maybe
|
||
|
|
a printer.
|
||
|
|
And third is standard error, or standard stream two.
|
||
|
|
And that is error codes being displayed by programs.
|
||
|
|
They usually get sent to the same location as standard out, which is your screen.
|
||
|
|
There are three symbols that we are going to be using for redirecting in the bash shell.
|
||
|
|
The first is the greater than symbol.
|
||
|
|
The greater than symbol found right above the period, which is like a V on its side pointing
|
||
|
|
to the right and opening to the left, allows you to redirect standard out to a file.
|
||
|
|
The second symbol is the less than symbol, which is above the comma, and it points to the
|
||
|
|
left and opens to the right.
|
||
|
|
That allows you to redirect standard in from a file to a command.
|
||
|
|
And third, we will be using the pipe key, which is found usually above the backslash,
|
||
|
|
or maybe somewhere else.
|
||
|
|
I've seen it above the enter key, and I've seen it above in the upper left hand corner
|
||
|
|
of the keyboard, or usually around the one key.
|
||
|
|
It looks like a straight line on some keyboards, or it might look like a colon, but instead
|
||
|
|
of periods, they're two vertical lines bisected by just an empty space.
|
||
|
|
It's a pipe key.
|
||
|
|
That allows you to redirect the output of one command to another.
|
||
|
|
The greater than symbol for redirecting standard out, let's say that you wanted to create
|
||
|
|
a file in your home directory that was a listing of all the other files in your home directory.
|
||
|
|
That's very simple to do.
|
||
|
|
So you use the LS command, and if you just type in LS and hit enter, it'll show it on
|
||
|
|
the screen.
|
||
|
|
But if you type LS, the space greater than symbol, and the file name, it will redirect
|
||
|
|
all the output of LS to the file name.
|
||
|
|
Now let's say we wanted to, instead of just redirecting all the files in our home directory,
|
||
|
|
we only wanted to find JPEG files that are in our home directory.
|
||
|
|
We do LS asteris.jPEG and the greater than symbol to the file name.
|
||
|
|
Now if we were using the same file name that we used before, be aware that a single greater
|
||
|
|
than symbol is an overwrite, it's destructive.
|
||
|
|
So if anything existed in that file, it would overwrite the contents of that file and replace
|
||
|
|
it with the output of the LS command.
|
||
|
|
Let's say you wanted to preserve the contents of a file if they existed, and instead of overwriting
|
||
|
|
you want to append to, well that's simple.
|
||
|
|
Just use two greater than symbols.
|
||
|
|
Two greater than symbols will append.
|
||
|
|
Now in either case, if the file does not exist that you're redirecting the output to, it
|
||
|
|
will create it.
|
||
|
|
But remember, one greater than symbol will overwrite the location with the data, two greater
|
||
|
|
than symbols will append the data to that location.
|
||
|
|
When you are running a command, be aware that there are two potential standard output streams.
|
||
|
|
One is standard out, of course, and that's number one.
|
||
|
|
And two, which is number two, is standard error.
|
||
|
|
So if you run a command and it throws an error, you are trying to grab for a string inside
|
||
|
|
a log file that you don't have permissions to read, you will get an error message on the
|
||
|
|
screen that says you don't have permission to read that file.
|
||
|
|
That's standard error.
|
||
|
|
Now if you were to run a command and output the contents to a file, you would get the output
|
||
|
|
of the command going to a file, but standard error would still show up on your screen.
|
||
|
|
That would not be redirected.
|
||
|
|
By default, unless you're specifying a standard stream number, one or two, it's going to only
|
||
|
|
redirect standard out, and you will still see standard error on the screen.
|
||
|
|
Now if you wanted to redirect both standard out and standard error into a file, you would
|
||
|
|
use the ampersand.
|
||
|
|
So you would have the command followed by a space ampersand greater than symbol, and then
|
||
|
|
the file that you wanted to redirect the output and the standard error, too.
|
||
|
|
Now if you wanted to just redirect standard error, replace the ampersand with the two.
|
||
|
|
So it would be the command space to greater than symbol and location you want to go to.
|
||
|
|
That's very handy that if you only wanted to see the output of a command, like say for
|
||
|
|
instance, you were gripping through those log files, but you only wanted to see the output
|
||
|
|
of the commands that you had access to those files to that you had permissions to read.
|
||
|
|
You can redirect standard error to something like DevNull, which would throw it to the bit
|
||
|
|
bucket in sky.
|
||
|
|
You would not see standard error.
|
||
|
|
Or in this case, let's say you wanted to output the command into a file, but you did
|
||
|
|
not want to see or redirect standard error.
|
||
|
|
You can provide two redirections.
|
||
|
|
One, you would do the command space greater than symbol to a file and then space to greater
|
||
|
|
than symbol slash something like DevNull.
|
||
|
|
So now standard out would go to the file of your choice and standard error would go to DevNull.
|
||
|
|
The other symbol for redirection of a file redirecting standard in from a file to a command,
|
||
|
|
that is using the less than symbol.
|
||
|
|
Again, that is the less than symbol where the opening is to the right and it's pointing
|
||
|
|
to the left.
|
||
|
|
That will allow you to take a file and use it as the input to a command.
|
||
|
|
Now not every command will accept a file as an input.
|
||
|
|
So just be aware of that.
|
||
|
|
I have seen the greatest use I've seen of this and one of the most interesting uses I've
|
||
|
|
seen of redirecting to and from a file is the use of the cat command as a quick and dirty
|
||
|
|
text writer, not necessarily text editor, but a text writer.
|
||
|
|
And I've seen this used a lot in Linux from scratch.
|
||
|
|
The cat command will take whatever you're catting and output it to the screen or you could
|
||
|
|
redirect that to a file.
|
||
|
|
So what you're going to do is you're going to take the output of the cat command and
|
||
|
|
direct it into a file.
|
||
|
|
But instead of just executing it like that, you're then going to append an input append
|
||
|
|
so that would be two less than symbols append the input of standard in which would be your
|
||
|
|
keyboard until you get until you type a string like E O F. So it would be cat space greater
|
||
|
|
than symbol to a file space less than less than symbol, double quotes, capital E O F, double
|
||
|
|
quotes, closing them.
|
||
|
|
And when you hit enter, anything you type in will get sent to that file until you type
|
||
|
|
the string E O F. At which point it'll close the command line, close cat, close the file
|
||
|
|
that was being written into and everything you put in there, you type would appear in
|
||
|
|
that file now.
|
||
|
|
This is a quick and dirty way for creating the necessary configuration files and Linux
|
||
|
|
from scratch when you don't have access to a text editor because you're building Linux
|
||
|
|
from scratch.
|
||
|
|
The final symbol we're going to talk about is the pipe.
|
||
|
|
And the pipe allows you to redirect the output of one command to another.
|
||
|
|
This is extremely versatile in chaining together a bunch of these commands to do something
|
||
|
|
incredibly useful.
|
||
|
|
For instance, let's say you wanted to do a directory listing of all your files and
|
||
|
|
with the dash L and dash T dash L does a long listing.
|
||
|
|
So you see the permissions when it was created, the file size, everything, the dash T orders
|
||
|
|
it from the most recently modified or creative file down to the last modified and creative
|
||
|
|
file.
|
||
|
|
When you run this, if you have a lot of files on your screen, it's going to scroll off.
|
||
|
|
You're not going to see the first dozen or so entries in most cases.
|
||
|
|
If you have a lot of files in your home director or director, you're listing.
|
||
|
|
So what you can do is you can use that command.
|
||
|
|
You can pipe it by putting the pipe in to another command like less.
|
||
|
|
So now you would do L S dash L T space pipe space L S S. And now all the output of L S will
|
||
|
|
go into the less page or allowing you to scroll up and down and view the output of
|
||
|
|
the command until you're done looking at it and hit queue to quit out of there.
|
||
|
|
Another example would do the same thing, but instead of piping it to less, you pipe it
|
||
|
|
to head.
|
||
|
|
Let's say you only wanted to see the first 10.
|
||
|
|
So you just pipe it right to head and would show the first 10 lines of the L S command.
|
||
|
|
Head dash 20 will show you the first 20.
|
||
|
|
Similarly, you could just type tail instead of head and it will show you the last couple
|
||
|
|
of lines.
|
||
|
|
That's what pipe allows you to do is pass the output of one command to the input of another.
|
||
|
|
So we talked about three different redirection tools that we will be using, the greater
|
||
|
|
than for redirecting standard out and standard error to a file, the less than symbol for redirecting
|
||
|
|
standard in from a file to a command and finally the pipe, which allows you to redirect
|
||
|
|
the output of a command to another command.
|
||
|
|
In two weeks, we are going to start our adventures with an actual Linux command that I hope you'll
|
||
|
|
find very useful and very exciting.
|
||
|
|
I hope that you will be back and spread the love here.
|
||
|
|
Again, my name is Dan.
|
||
|
|
Hit the website if you haven't already to read up on redirection and see the videos there.
|
||
|
|
Thank you very much and have a great day.
|
||
|
|
You have been listening to Hacker Public Radio at Hacker Public Radio.
|
||
|
|
We are a community podcast network that releases shows every weekday Monday through Friday.
|
||
|
|
Today's show, like all our shows, was contributed by a HBR listener by yourself.
|
||
|
|
If you ever consider recording a podcast, then visit our website to find out how easy it
|
||
|
|
really is.
|
||
|
|
Hacker Public Radio was founded by the Digital.Pound and the Infonomicum Computer Club.
|
||
|
|
HBR is funded by the binary revolution at binref.com.
|
||
|
|
All binref projects are crowd-responsive by linear pages.
|
||
|
|
From shared hosting to custom private clouds, go to lunarpages.com for all your hosting
|
||
|
|
needs.
|
||
|
|
Unless otherwise stasis, today's show is released under a creative commons, attribution,
|
||
|
|
share a line, free those own license.
|