FAQ: Redirection - <

This community-built FAQ covers the “<” exercise from the lesson “Redirection”.

Paths and Courses
This exercise can be found in the following Codecademy content:

Web Development

Learn the Command Line

FAQs on the exercise <

There are currently no frequently asked questions associated with this exercise – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this exercise. Ask or answer a question by clicking reply (reply) below.

If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this exercise, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!
You can also find further discussion and get answers to your questions over in #get-help.

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head to #get-help and #community:tips-and-resources. If you are wanting feedback or inspiration for a project, check out #project.

Looking for motivation to keep learning? Join our wider discussions in #community

Learn more about how to use this guide.

Found a bug? Report it online, or post in #community:Codecademy-Bug-Reporting

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!

What is the point of using “<” for the line cat < deserts.txt when you can just type cat deserts.txt
Isn’t it essentially doing the same thing?

27 Likes

why cat < file.txt when the command out the same result as cat file.txt.

6 Likes

please answer these questions

3 Likes

I have the same question. Could we please get a response?

2 Likes

I have opened a new topic thread to try and get a response:

5 Likes

In the first case,the shell opens the file passing it as cat’s standard input, and in the second case, cat opens the file.

Sometimes the output it’s not exactly the same.
Imagine that we do have a file called movies.txt, with the following information:

The Godfather
The Dark Knight
Pulp Fiction

If we use the command for word count “wc”:

wc -l movies.txt
Output: 3 movies.txt

wc -l < movies.txt
Output: 3

The ouput is different because when using the file as a parameter of the command he knows the origin of the file, otherwise when using the redirection < the data is sent anonymously. I don’t think its usage is common because most commands provide the needed infromation for the file passed as an argument. But maybe for other cases it’s easier to use this redirection depending of the needed data.

7 Likes

Well THANK YOU!!! At last…

1 Like

I’m really confused by this exercise. I don’t understand the purpose of the < command or what it actually does. Based on the my understanding of the exercise, it seems line the < command works very similar to cat command. Can someone explain what’s the difference between **cat < lakes.txt ** and cat lakes.txt? When I input both of these into the terminal, I got the same result. I tried this with a couple other files in the current working directory provided and got the same result as well. Can someone also explain the use case for the < command?

Thank you in advance!

1 Like

cat versus cat input

Hi !

when I am doing multiple cat versus cat < files together - the first file doesn’t show its contents on the terminal using cat <. In the image attached - in the first command cat with multiple file names - we get five lines -

Rikki is awesome - from hello_cli.txt
Hello - from hello_cli2.txt
Hello command line - from hello_cli3.txt
Rikki is awesome - from hello_cli3.txt
Hello - from hello_cli3.txt.

HOWEVER, (second command) when using cat on all 3 files < - ‘Rikki is awesome’ from hello_cli.txt disappears.

When I try to only print ‘Rikki is awesome’ from hello_cli.txt using cat < - that works too only cat < with multiple files seems to not print the text of hello_cli.txt.

Please advise.

1 Like

I’d love to know why, myself!

This was a really interesting point you made here and took a bit of digging to understand why it behaves the way it does.

Try this one :slight_smile:

cat - <hello_cli.txt hello_cli2.txt hello_cli3.txt

So if we look at the man page, it all starts to make sense:

image

Going through your iterations one by one:

  1. cat hello_cli.txt hello_cli2.txt hello_cli3.txt is straightforward: running cat with multiple filenames as arguments, and so it will read each of the three files, in order

  2. The second one is a bit trickier: cat < hello_cli.txt hello_cli2.txt hello_cli3 is sending the file hello_cli.txt to cat's standard input (STDIN), and also sending cat the filename arguments hello_cli2.txt and hello_cli3.txt . However, if you look at the man page entry, you’ll see that STDIN is only used when no filename arguments are present, or - is used as one of the arguments, so in this case poor hello_cli.txt gets completely ignored, while the other two files are read.

  3. cat < hello_cli.txt - this one works because there are no filename arguments, so cat reads from STDIN (standard input). Since you have sent hello_cli.txt to cat as standard input with the redirect < operator, its output is exactly what you expect it to be.

  4. cat < hello_cli2.txt and 5. cat < hello_cli3.txt - work exactly the same as #3

And thus the example I posted at the top, I believe, is the only way to use both file redirection and filename arguments at the same time.

1 Like

Thanks so much man. Really helpful!

1 Like