Long text often wraps automatically in Linux terminals or through pipes. This guide covers practical, scene-by-scene methods to keep lines intact.
1. Hard Wrap Text with fold -w N
fold is the simplest hard-wrap tool. It breaks lines exceeding the specified width by inserting newline characters. By default it counts display columns; add -b to wrap by byte count instead [1].
echo "A very long line that should wrap at eighty characters and continue on the next line in the terminal output" | fold -w 30
WSL Ubuntu 24.04 verified: at 30 columns, the word “wraps” is split into “wnrap”, showing that fold does not word-break—it simply hard-cuts by column. Don’t rely on fold alone when you need to keep whole words intact.
2. Smart Reflow with fmt -w N
fmt tries to break at spaces, avoids splitting words, and collapses multiple spaces into one. It’s a natural fit for tidying messy logs or text into a consistent width [2].
echo "A very long line that should wrap at eighty characters and continue on the next line in the terminal output" | fmt -w 30
Verified at 30 columns: “wraps” stays intact, and “that should wrap” becomes “that shouldnwrap”. The default width is 75 columns; override with -w. fmt handles paragraphs in pipelines more naturally than fold.
3. Join Everything into One Line with tr / sed / awk
If your goal is to strip newlines entirely and collapse multiple lines into one, any of these three tool families can do it. POSIX awk’s printf does not append a newline automatically, which is the key to controlling output format [3].
# tr: delete every newline
echo -e "line1nline2nline3" | tr -d 'n'
# sed: replace newlines with spaces
echo -e "line1nline2nline3" | sed ':a;N;s/n/ /g;ta'
# awk: concatenate line by line, then print once
echo -e "line1nline2nline3" | awk '{printf "%s", $0} END {print ""}'
WSL verified: all three methods produce a single line correctly. tr -d 'n' is fastest, but it wipes every newline—useful for squeezing multi-line records into CSV-style rows. sed and awk let you replace newlines while preserving structure. Note that omitting n from printf inside awk is what makes the output truly continuous.
4. Disable Wrap at the Terminal Layer with tput / setterm
The methods above transform data in the processing layer. If you simply want the terminal itself to stop wrapping long lines to the next row, use terminal capability controls [4].
# Disable terminal line wrapping
tput rmam
# Restore terminal line wrapping
tput smam
# Equivalent setterm syntax (virtual console only)
setterm -linewrap off
setterm -linewrap on
tput rmam maps to the terminfo capability rmam (disable automatic margins); smam restores it. This usually works on terminal emulators like gnome-terminal and xterm. setterm -linewrap works reliably only on Linux virtual consoles (tty1–6); SSH sessions and GUI terminals may ignore it [6]. WSL terminals use emulators by default. After disabling wrap, long lines extend beyond the screen width and require horizontal scrolling to read. Remember to restore afterward: tput smam or setterm -linewrap on.
5. Browse Without Wrapping Using less -S
When reviewing long-line logs, the easiest approach is to let the pager truncate lines horizontally instead of wrapping them [5].
long_output | less -S
The less manual states that -S or --chop-long-lines truncates lines exceeding the screen width; hidden portions appear when you press the right arrow. Without -S, lines wrap by default. Pair it with -N to show line numbers—handy for pinpointing long log entries. WSL verified: with less -S, long lines do not wrap; the right arrow scrolls horizontally.
Troubleshooting Quick Reference
| Symptom | Cause | Fix |
|---|---|---|
fold splits words in half |
fold hard-cuts by column, ignoring spaces |
Switch to fmt -w or clean up splits with sed |
fmt width is off |
Input contains tabs, counted as multiple chars | Run expand first to convert tabs to spaces |
Lines glued together after tr -d |
Removes every newline, including paragraph breaks | Use sed to replace specific newlines, or awk for conditional joins |
tput rmam has no effect |
Current terminal lacks termcap rmam | Try setterm instead, or check your terminal with echo $TERM |
Can’t see truncated text with less -S |
Not pressing the right arrow | Press → to scroll horizontally; less -S truncates, it does not wrap |
WSL terminal width is determined by Windows Terminal. Some terminfo capabilities (such as setterm -linewrap) behave differently in WSL than on native Linux ttys. Horizontal scrolling with less -S depends on terminal-emulator arrow-key support; minimal containers with TERM=linux may lack arrow keys. Tests were performed on WSL2 Ubuntu 24.04; behavior on physical machines or other distros may vary due to package-version differences.
References
- [1] fold(1p) – Linux manual page
- [2] fmt(1) – Linux manual page
- [3] awk – POSIX
- [4] tput(1) – Linux manual page
- [5] less(1) – Linux manual page
- [6] setterm(1) linux man page
Main commands tested on WSL Ubuntu (24.04); a few entries (untested tool-installation commands) were cross-checked against official docs only.