This one Linux shell character made me feel like a hacker


Like many people using Unix-like operating systems for the first time, I was introduced to the concept of the pipeline. Here’s how a single character on the command line changed everything.

What is the pipe (|) character?

Building programs from other programs

The pipleline character, or |, sends the output of one Linux command to the input of another. It was originally developed at Bell Labs in the early 1970s. I was introduced to this in a book on Unix on what was then called “Mac OS X.” This simple character changed everything.

A good example of a pipeline is searching the output of a program for some string. Suppose I wanted to find out which processes on the system belonged to root. I would display all of the processes running on the system with the “ps aux” command and send that output to grep, searching for “root”

ps aux | grep root
Output of "ps aux" piped into "grep root" on the Linux command line.

The concept was invented by Doug McIllroy. At the time, Unix was actually considered user-friendly because you typed commands into a terminal instead of punching up a deck of computer cards to hand to an operator in the computer center and wait to receive your results (and your inevitable errors).

The latter was called “batch mode,” and it was how mainframe computers were used since their inception.

Pipelines make use of a concept in Unix and modern Linux systems of “standard input/output.” The standard input is the keyboard, and the standard output is the terminal. There’s also a “standard error” for error messages. This is also the terminal. You can “redirect” standard input. I’d seen this concept when trying to follow along with a C++ book, but it made a lot more sense to me when I started using the Linux command line.

You can save the output to a file for later with the > (greater than) symbol:

ps aux > allprocs

Or you can feed the contents of a file to another program with the

cat < some_text.py

The vibe coding of the ’70s?

This approach might be simple, but it was a kind of manifesto. Instead of building monolithic programs, the ideal was now to build programs out of smaller components. This approach was called “software tools.” It’s similar how you can use the same hammers, nails, saws, and drills to create different woodworking projects.

One effect of designing programs that can be used as filters is that traditional Unix utilities don’t produce a lot of output. They tend to give only the minimum necessary, unless you use command-line switches to add extra input.

You can see a master in action. Brian Kernighan, who was a Bell Labs researcher at the time and the “K” in “K&R”, or The C Programming Language, co-authored with Dennis Ritchie, whips up a spelling checker in a 1982 Bell Labs film promoting Unix as a programming platform. The whole thing is worth watching, but the segment of interest begins around the 5-minute mark.

Although the names of the utilities seem different from standard modern ones, you can see how powerful this approach was. Creating a small program right from the command line. must have seemed like magic. Unix shell programming might have been like the vibe coding of the late ’70s and early ’80s. Both movements are touted as a method for professional programmers to manage complexity.

With vibe coding or the use of agents, it’s getting an AI to handle coding. The software tools method was an attempt to make software easier to change by breaking big programs into smaller chunks. This was a key component of the “Unix Philosophy” of building a program that does one thing well instead of a large program that tries to be all things to all people.

Practical examples of pipelining

Changing case with ease

Many shell pipelines process plain text. This includes searching for text, such as with the grep command I demonstrated earlier, but also making modifications to text streams.

One good example would be changing text. In researching this piece, I found that there weren’t any built-in commands for changing uppercase to lowercase and vice versa. Fortunately, it was easy to create my own pipelines.

For example, if I wanted to change an input to lowercase, I would use the tr command:

tr '[:upper:]' '[:lower:]'

This will change every uppercase character to a lowercase one, using the GNU coreutils version of tr. By default, tr will use standard input, so I can just type this at the shell. I can then type text, and tr will lowercase it.

This can be useful, but I don’t want to type all that out every time. I have options for saving this for later. The simplest option would be to save a shell alias in my .zshrc file, since zsh is my shell of choice, so that it would be available every time. Since this function seems so small and being able to change case as a writer is useful, that’s what I’ve decided to do.

alias lc="tr '[:upper:]' '[:lower:]'" # Set standard input to lowercase
lc lowercase output of "Hello, world!"

I could also define a shell function:

lc ()
{ 
tr '[:upper:]' '[:lower:]'
}

I could also reverse the changes to the text to capitalize it as well:

alias uc="tr '[:lower:]' '[:upper:]'" # Uppercase standard input
Output of lc from "Hello, world!" on standard input.

I can also pipe output from other programs into these new commands I’ve just created. I can convert the text from the fortune program into uppercase and then make it colorful with lolcat:

fortune | uc | lolcat
Pipline from fortune to uc to lolcat in the Linux terminal.

In this case, it happened to be a passage from the Tao Te Ching.


The power of pipelining

These examples should show why Linux has such a hold on the programming community and among hobbyist developers like myself. It’s because you can get productive with simple pipelines quickly.

Dell XPS 13 Plus 2023

Operating System

Ubuntu Linux 22.04 LTS

CPU

13th Gen Intel Core i7-1360P

GPU

Intel Iris Xe Graphics

RAM

16GB DDR5

Storage

512GB SSD

Weight

2.71 lbs




Source link

Leave a Reply

Subscribe to Our Newsletter

Get our latest articles delivered straight to your inbox. No spam, we promise.

Recent Reviews


As I’m writing this, NVIDIA is the largest company in the world, with a market cap exceeding $4 trillion. Team Green is now the leader among the Magnificent Seven of the tech world, having surpassed them all in just a few short years.

The company has managed to reach these incredible heights with smart planning and by making the right moves for decades, the latest being the decision to sell shovels during the AI gold rush. Considering the current hardware landscape, there’s simply no reason for NVIDIA to rush a new gaming GPU generation for at least a few years. Here’s why.

Scarcity has become the new normal

Not even Nvidia is powerful enough to overcome market constraints

Global memory shortages have been a reality since late 2025, and they aren’t just affecting RAM and storage manufacturers. Rather, this impacts every company making any product that contains memory or storage—including graphics cards.

Since NVIDIA sells GPU and memory bundles to its partners, which they then solder onto PCBs and add cooling to create full-blown graphics cards, this means that NVIDIA doesn’t just have to battle other tech giants to secure a chunk of TSMC’s limited production capacity to produce its GPU chips. It also has to procure massive amounts of GPU memory, which has never been harder or more expensive to obtain.

While a company as large as NVIDIA certainly has long-term contracts that guarantee stable memory prices, those contracts aren’t going to last forever. The company has likely had to sign new ones, considering the GPU price surge that began at the beginning of 2026, with gaming graphics cards still being overpriced.

With GPU memory costing more than ever, NVIDIA has little reason to rush a new gaming GPU generation, because its gaming earnings are just a drop in the bucket compared to its total earnings.

NVIDIA is an AI company now

Gaming GPUs are taking a back seat

A graph showing NVIDIA revenue breakdown in the last few years. Credit: appeconomyinsights.com

NVIDIA’s gaming division had been its golden goose for decades, but come 2022, the company’s data center and AI division’s revenue started to balloon dramatically. By the beginning of fiscal year 2023, data center and AI revenue had surpassed that of the gaming division.

In fiscal year 2026 (which began on July 1, 2025, and ends on June 30, 2026), NVIDIA’s gaming revenue has contributed less than 8% of the company’s total earnings so far. On the other hand, the data center division has made almost 90% of NVIDIA’s total revenue in fiscal year 2026. What I’m trying to say is that NVIDIA is no longer a gaming company—it’s all about AI now.

Considering that we’re in the middle of the biggest memory shortage in history, and that its AI GPUs rake in almost ten times the revenue of gaming GPUs, there’s little reason for NVIDIA to funnel exorbitantly priced memory toward gaming GPUs. It’s much more profitable to put every memory chip they can get their hands on into AI GPU racks and continue receiving mountains of cash by selling them to AI behemoths.

The RTX 50 Super GPUs might never get released

A sign of times to come

NVIDIA’s RTX 50 Super series was supposed to increase memory capacity of its most popular gaming GPUs. The 16GB RTX 5080 was to be superseded by a 24GB RTX 5080 Super; the same fate would await the 16GB RTX 5070 Ti, while the 18GB RTX 5070 Super was to replace its 12GB non-Super sibling. But according to recent reports, NVIDIA has put it on ice.

The RTX 50 Super launch had been slated for this year’s CES in January, but after missing the show, it now looks like NVIDIA has delayed the lineup indefinitely. According to a recent report, NVIDIA doesn’t plan to launch a single new gaming GPU in 2026. Worse still, the RTX 60 series, which had been expected to debut sometime in 2027, has also been delayed.

A report by The Information (via Tom’s Hardware) states that NVIDIA had finalized the design and specs of its RTX 50 Super refresh, but the RAM-pocalypse threw a wrench into the works, forcing the company to “deprioritize RTX 50 Super production.” In other words, it’s exactly what I said a few paragraphs ago: selling enterprise GPU racks to AI companies is far more lucrative than selling comparatively cheaper GPUs to gamers, especially now that memory prices have been skyrocketing.

Before putting the RTX 50 series on ice, NVIDIA had already slashed its gaming GPU supply by about a fifth and started prioritizing models with less VRAM, like the 8GB versions of the RTX 5060 and RTX 5060 Ti, so this news isn’t that surprising.

So when can we expect RTX 60 GPUs?

Late 2028-ish?

A GPU with a pile of money around it. Credit: Lucas Gouveia / How-To Geek

The good news is that the RTX 60 series is definitely in the pipeline, and we will see it sooner or later. The bad news is that its release date is up in the air, and it’s best not to even think about pricing. The word on the street around CES 2026 was that NVIDIA would release the RTX 60 series in mid-2027, give or take a few months. But as of this writing, it’s increasingly likely we won’t see RTX 60 GPUs until 2028.

If you’ve been following the discussion around memory shortages, this won’t be surprising. In late 2025, the prognosis was that we wouldn’t see the end of the RAM-pocalypse until 2027, maybe 2028. But a recent statement by SK Hynix chairman (the company is one of the world’s three largest memory manufacturers) warns that the global memory shortage may last well into 2030.

If that turns out to be true, and if the global AI data center boom doesn’t slow down in the next few years, I wouldn’t be surprised if NVIDIA delays the RTX 60 GPUs as long as possible. There’s a good chance we won’t see them until the second half of 2028, and I wouldn’t be surprised if they miss that window as well if memory supply doesn’t recover by then. Data center GPUs are simply too profitable for NVIDIA to reserve a meaningful portion of memory for gaming graphics cards as long as shortages persist.


At least current-gen gaming GPUs are still a great option for any PC gamer

If there is a silver lining here, it is that current-gen gaming GPUs (NVIDIA RTX 50 and AMD Radeon RX 90) are still more than powerful enough for any current AAA title. Considering that Sony is reportedly delaying the PlayStation 6 and that global PC shipments are projected to see a sharp, double-digit decline in 2026, game developers have little incentive to push requirements beyond what current hardware can handle.

DLSS 5, on the other hand, may be the future of gaming, but no one likes it, and it will take a few years (and likely the arrival of the RTX 60 lineup) for it to mature and become usable on anything that’s not a heckin’ RTX 5090.

If you’re open to buying used GPUs, even last-gen gaming graphics cards offer tons of performance and are able to rein in any AAA game you throw at them. While we likely won’t get a new gaming GPU from NVIDIA for at least a few years, at least the ones we’ve got are great today and will continue to chew through any game for the foreseeable future.



Source link