25
submitted 3 weeks ago* (last edited 3 weeks ago) by zarkanian@sh.itjust.works to c/linux@lemmy.ml

Today, I was doing some command-line stuff and then this happened:

ls --help|less
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

Mandatory arguments to long options are mandatory for short options too.
ESC]8;;https://www.gnu.org/software/coreutils/manual/coreutils.html#ls-aESC\ESC[1m-a, --allESC[0mESC]8;;ESC\
do not ignore entries starting with .
ESC]8;;https://www.gnu.org/software/coreutils/manual/coreutils.html#ls-AESC\ESC[1m-A, --almost-allESC[0mESC]8;;ESC\
do not list implied . and ..
ESC]8;;https://www.gnu.org/software/coreutils/manual/coreutils.html#ls--authorESC\ESC[1m--authorESC[0mESC]8;;ESC\

It's rendering ls --help with control characters. When I do ls --help|less --raw-control-chars it doesn't show the control characters, and it looks all neat and pretty. Isn't this the opposite of how it's supposed to work?!

Is --raw-control-chars a toggle and some config is causing less to show control characters when I invoke it with no options? If so, where can I find this config and stop this?

This has absolutely no bearing on my work and my life in general except for the fact that I'll go absolutely batshit trying to figure this out, because that's how my brain is. So far, all of my web searches just confirm that less shouldn't be working this way, but they don't give me any way to fix it. Please help me, Lemmy!!!

you are viewing a single comment's thread
view the rest of the comments
[-] CallMeAl@piefed.zip 14 points 3 weeks ago* (last edited 3 weeks ago)

Per the Gnu Coreutils NEWS file:

  All commands now markup option names in --help and man pages,  
  with bold attributes, and hyperlinks into the online manual on gnu.org.  
  The links can be configured with the --enable-manual-url configure option,  
  and the bold highlighting with --disable-bold-man-page-references.  
  At runtime all markup can be disabled with the TERM=dumb env var value.  

This has nothing to do with less (or bash or fish). It is a new behavior as of Coreutils 9.10. It is to preserve the hyperlinks in the help output of ls, cp, rm, mv, etc. In default mode, less catches these control codes and escapes them so you see the visual escape codes. If you use less --raw-control-chars then less is NOT escaping the control characters (just passing them through) and they get interpreted by the terminal as screen formatting codes.

Debian 13, which ships Coreutils 9.7 does not have the change and cannot reproduce the behavior.

[-] syklemil@discuss.tchncs.de 2 points 3 weeks ago

You may want to tag your triple-backtick with something like text or plain so you don't get auto-inferred syntax highlighting. E.g:

 All commands now markup option names in --help and man pages, 
[-] CallMeAl@piefed.zip 2 points 3 weeks ago

good one, thanks!

this post was submitted on 22 Sep 2026
25 points (87.9% liked)

Linux

68103 readers
1650 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 7 years ago
MODERATORS