Re: Globbing versus regular expressions

Liste des GroupesRevenir à cu shell 
Sujet : Re: Globbing versus regular expressions
De : mortonspam (at) *nospam* gmail.com (Ed Morton)
Groupes : comp.unix.shell
Date : 02. Aug 2024, 16:26:23
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v8itr3$2soau$1@dont-email.me>
References : 1
User-Agent : Mozilla Thunderbird
On 7/21/2024 2:01 AM, Axel Reichert wrote:
Hi all,
 a colleague (new to command line wizardry) seemed puzzled by the
existence of both globbing for file names (shell) and regular
expressions for strings (many other command line tools).
 Since I am familiar with both mechanisms for decades, I never thought
about this "redundancy", but now I think he has a point, even more so if
you are using the "dired" file manager in Emacs, which further blurs the
distinction between mangling text and working on files.
 Since regexes are (at quick glance) a superset of globs, why not
consistently use the former for both file names and strings? The
few additional keystrokes (.* instead of *) are IMHO easily compensated
for by the more powerful capabilities of regexes.
 A little reading on Wikipedia showed that both came into popular usage
in the early 70s. So why was globbing not dropped and regexes used
throughout? It seems that ksh93 supports "regex globbing". bash has
"extended globbing", but this seems a clumsy, bolted-on solution. Are
there shells out there which follow a regex-only approach (of this would
be non-POSIX)?
 Happy for any further insights (technical or historical) shed on this
topic!
 Axel
Bear in mind that a shell is an environment from which to manipulate (create/destroy) files and processes and sequence calls to other tools, not a tool to manipulate text, while regular expressions are part of the functionality for manipulating text in tools designed to do that. So while globbing (as used by shell pattern matching against file names) and regexps (as used by text processing tools for pattern matching against text strings) appear similar in functionality, they have different applications.
As a simple example, the `.` regexp metcaharacter matches any character, but it's very common in shell to have file names that start with a `.` (e.g. `.profile`) or contain a `.` (e.g. `stuff.txt`) so it's more convenient for `.` to be literal in shell pattern matching (and have `?` mean "any character" instead) than it is in text pattern matching.
It'd be annoying and more error-prone if every time you wanted to list files that start with `s` and end in `.txt` you had to write:
     ls ^s.*\.txt$
instead of just:
     ls s*.txt
So, it's just horses-for-courses - globbing patterns make filename matching simplest most of the time while regexps make text matching simplest most of the time.
     Ed.

Date Sujet#  Auteur
21 Jul 24 * Globbing versus regular expressions10Axel Reichert
21 Jul 24 +- Re: Globbing versus regular expressions1Janis Papanagnou
21 Jul 24 +- Re: Globbing versus regular expressions1Joerg Mertens
21 Jul 24 +- Re: Globbing versus regular expressions1Kaz Kylheku
21 Jul 24 +- Re: Globbing versus regular expressions1Lawrence D'Oliveiro
2 Aug 24 +* Re: Globbing versus regular expressions2Ed Morton
5 Aug 24 i`- Re: Globbing versus regular expressions1Keith Thompson
2 Aug 24 `* Re: Globbing versus regular expressions3Ed Morton
10 Aug 24  `* Re: Globbing versus regular expressions2Axel Reichert
10 Aug 24   `- Re: Globbing versus regular expressions1Lawrence D'Oliveiro

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal