Skip to Content
bash Cookbook
book

bash Cookbook

by Carl Albing, JP Vossen, Cameron Newham
May 2007
Beginner
628 pages
15h 46m
English
O'Reilly Media, Inc.
Content preview from bash Cookbook

Saving Output from the ls Command

Problem

You tried to save output from the ls command with a redirect, but when you look at the resulting file, the format is not what you expected.

Solution

Use the -C option on ls when you redirect the output.

Here’s the ls command showing the contents of a directory:

$ ls
a.out cong.txt def.conf  file.txt  more.txt  zebra.list
$

But when we save the output with the > to redirect it to a file, and then show the file contents, we get this:

$ ls > /tmp/save.out
$ cat /tmp/save.out
a.out
cong.txt
def.conf
file.txt
more.txt.
zebra.list
$

This time we’ll use the -C option:

$ ls -C > /tmp/save.out
$ cat /tmp/save.out
a.out cong.txt def.conf file.txt more.txt zebra.list
$

Alternatively, if we use the -1 option on ls when we don’t redirect, then we get out-put like this:

$ ls -1
a.out
Cong.txt
def.conf.
file.txt
more.txt
save.out
zebra.list
$

Then the original attempt at redirection matches this output.

Discussion

Just when you thought that you understood redirection and you tried it on a simple ls command, it didn’t quite work right. What’s going on here?

The shell’s redirection is meant to be transparent to all programs, so programs don’t need special code to make their output redirect-able. The shell takes care of it when you use the > to send the output elsewhere. But it turns out that code can be added to a program to figure out when its output is being redirected. Then, the program can behave differently in those two cases—and that’s what ls is doing.

The authors of ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

bash Cookbook, 2nd Edition

bash Cookbook, 2nd Edition

Carl Albing, JP Vossen
Linux Shell Scripting Cookbook - Third Edition

Linux Shell Scripting Cookbook - Third Edition

Clif Flynt, Sarath Lakshman, Shantanu Tushar

Publisher Resources

ISBN: 0596526784Errata Page