ls --ignore-backups buggy?

classic Classic list List threaded Threaded
11 messages Options
Reply | Threaded
Open this post in threaded view
|

ls --ignore-backups buggy?

Martin Klaiber
Hallo Liste,

auf einer anderen Mailingliste stolperte ich gerade über das Phänomen,
dass "ls -B" nicht funktioniert, wenn man einen Dateinamen angibt.

Zur Erinnerung, aus der manpage:

   -B, --ignore-backups
          do not list implied entries ending with ~

Beispiel:

   martinkl@maurice:~/tmp$ ls
   abc  abc~  abc~~
   martinkl@maurice:~/tmp$ ls -B
   abc
   martinkl@maurice:~/tmp$ ls -B *
   abc  abc~  abc~~
   martinkl@maurice:~/tmp$ ls --ignore-backups
   abc
   martinkl@maurice:~/tmp$ ls --ignore-backups *
   abc  abc~  abc~~

Soll das so sein oder ist das ein bug?

Ich benutze Debian stable. Kann jemand mit unstable bitte mal testen,
ob da das Verhalten gleich ist? Danke!

In tar gab es offenbar mal ein ähnliches Verhalten, das als bug
eingestuft und korrigiert wurde:

   <https://unix.stackexchange.com/questions/49715/tar-exclude-backups-does-not-exclude-files-with-tilde-at-end>

Für ls konnte ich dazu bisher nichts finden. Weiß jemand Genaueres?

TIA, Martin

Reply | Threaded
Open this post in threaded view
|

Re: ls --ignore-backups buggy?

Ulf Volmer
On Thu, Nov 22, 2018 at 07:21:41PM +0100, Martin Klaiber wrote:

>    -B, --ignore-backups
>           do not list implied entries ending with ~
>
> Beispiel:
>
>    martinkl@maurice:~/tmp$ ls
>    abc  abc~  abc~~
>    martinkl@maurice:~/tmp$ ls -B
>    abc
>    martinkl@maurice:~/tmp$ ls -B *
>    abc  abc~  abc~~
>    martinkl@maurice:~/tmp$ ls --ignore-backups
>    abc
>    martinkl@maurice:~/tmp$ ls --ignore-backups *
>    abc  abc~  abc~~

Halt ich für völlig normales Verhalten. Die Shell expandiert Dein *,
Du führst also im Endeffekt

ls -B abc abc~ abc~~

aus. Das ls in dem Fall auch die Backups anzeigt, um die es ja explizit
gebeten wurde, ist meiner Meinung nach ok.

Viele Grüße
Ulf

Reply | Threaded
Open this post in threaded view
|

Re: ls --ignore-backups buggy?

Christian Knoke
Ulf Volmer schrieb am 22. Nov um 19:41 Uhr:
> On Thu, Nov 22, 2018 at 07:21:41PM +0100, Martin Klaiber wrote:
>
> >    -B, --ignore-backups
> >           do not list implied entries ending with ~

> Halt ich für völlig normales Verhalten. Die Shell expandiert Dein *,
> Du führst also im Endeffekt
>
> ls -B abc abc~ abc~~
>
> aus. Das ls in dem Fall auch die Backups anzeigt, um die es ja explizit
> gebeten wurde, ist meiner Meinung nach ok.

Hilfreich ist die englische Sprache. implied = impliziert <> explizit

Impliziert wäre also eine Datei, die Inhalt eines (explizit) angeforderten
Verzeichnisses ist.

Gruß
Christian

--
***   Christian Knoke  *  25541 Brunsbüttel  *  http://cknoke.de   ***
...                                                                ...
   The prejudices people feel about each other disappear when they
get to know each other.   -- Kirk, "Elaan of Troyius", stardate 4372.5

Reply | Threaded
Open this post in threaded view
|

Re: ls --ignore-backups buggy?

Martin Klaiber
In reply to this post by Ulf Volmer
Ulf Volmer <[hidden email]> wrote:

> Halt ich für völlig normales Verhalten. Die Shell expandiert Dein *,
> Du führst also im Endeffekt

> ls -B abc abc~ abc~~

> aus.

Ja, aber das -B fordert ja, Dateien, deren Name auf eine Tilde endet,
nicht anzuzeigen.

> Das ls in dem Fall auch die Backups anzeigt, um die es ja explizit
> gebeten wurde, ist meiner Meinung nach ok.

Wie erklärst Du dann, dass "ls" alle drei Dateien und "ls -B" nur abc
anzeigt? "ls" ohne Dateiname ist ja im Prinzip das gleiche wie "ls *",
oder nicht? Für mich ist das nicht konsistent.

Danke und schöne Grüße
Martin

Reply | Threaded
Open this post in threaded view
|

Re: ls --ignore-backups buggy?

Ulf Volmer
On Thu, Nov 22, 2018 at 08:13:35PM +0100, Martin Klaiber wrote:

> Wie erklärst Du dann, dass "ls" alle drei Dateien und "ls -B" nur abc
> anzeigt? "ls" ohne Dateiname ist ja im Prinzip das gleiche wie "ls *",
> oder nicht? Für mich ist das nicht konsistent.

Nein. ls ohne Agrument listet den Inhalt des aktuellen Verzeichnisses.

Der Wildcard hingegen wird von der Shell zu einer Liste expandiert,
die dann ls übergeben wird.

Viele Grüße
Ulf

Reply | Threaded
Open this post in threaded view
|

Re: ls --ignore-backups buggy?

Martin Klaiber
Ulf Volmer <[hidden email]> wrote:
> On Thu, Nov 22, 2018 at 08:13:35PM +0100, Martin Klaiber wrote:

>> Wie erklärst Du dann, dass "ls" alle drei Dateien und "ls -B" nur abc
>> anzeigt? "ls" ohne Dateiname ist ja im Prinzip das gleiche wie "ls *",
>> oder nicht? Für mich ist das nicht konsistent.

> Nein. ls ohne Agrument listet den Inhalt des aktuellen Verzeichnisses.

> Der Wildcard hingegen wird von der Shell zu einer Liste expandiert,
> die dann ls übergeben wird.

Ja, Du hast recht. Das sind verschiedene Mechanismen, auch wenn das
Ergebnis gleich ist. Da stolpere ich (leider) öfter drüber.

Woran erkennst Du, dass sich die Option -B nur auf das Listing des
Verzeichnisses bezieht? An der Formulierung "list implied entries"
in der Beschreibung?

TIA, Martin

Reply | Threaded
Open this post in threaded view
|

Re: ls --ignore-backups buggy?

Ulf Volmer
On Thu, Nov 22, 2018 at 10:06:32PM +0100, Martin Klaiber wrote:
V> Ulf Volmer <[hidden email]> wrote:

> > Nein. ls ohne Agrument listet den Inhalt des aktuellen Verzeichnisses.
>
> > Der Wildcard hingegen wird von der Shell zu einer Liste expandiert,
> > die dann ls übergeben wird.
>
> Ja, Du hast recht. Das sind verschiedene Mechanismen, auch wenn das
> Ergebnis gleich ist. Da stolpere ich (leider) öfter drüber.
>
> Woran erkennst Du, dass sich die Option -B nur auf das Listing des
> Verzeichnisses bezieht? An der Formulierung "list implied entries"
> in der Beschreibung?

Wurde ich so aus der Formulierung herauslesen.

Aber auch ganz praktisch, stellt Dir vor, Du hättest einen Alias

alias ls='ls -B'

Würdest Du dann erwarten, dass ein 'ls abc~' nichts ausgibt?

Viele Grüße
Ulf

Reply | Threaded
Open this post in threaded view
|

Re: ls --ignore-backups buggy?

Martin Klaiber
Ulf Volmer <[hidden email]> wrote:
> On Thu, Nov 22, 2018 at 10:06:32PM +0100, Martin Klaiber wrote:

>> Woran erkennst Du, dass sich die Option -B nur auf das Listing des
>> Verzeichnisses bezieht? An der Formulierung "list implied entries"
>> in der Beschreibung?

> Wurde ich so aus der Formulierung herauslesen.

> Aber auch ganz praktisch, stellt Dir vor, Du hättest einen Alias

> alias ls='ls -B'

> Würdest Du dann erwarten, dass ein 'ls abc~' nichts ausgibt?

Hätte ich erwartet, ja. Bei einem "alias ls='ls -l'" wirkt die Option
ja auch gleichermaßen auf die Anzeige des Verzeichnislistings und auf
die der übergebenen Datei(en):

   martinkl@maurice:~/tmp$ alias ls
   alias ls='ls -l'
   martinkl@maurice:~/tmp$ ls
   total 12
   -rw-r--r-- 1 martinkl martinkl 14 Nov 20 21:05 abc
   -rw-r--r-- 1 martinkl martinkl 14 Nov 20 21:06 abc~
   -rw-r--r-- 1 martinkl martinkl  7 Nov 20 21:04 abc~~
   martinkl@maurice:~/tmp$ ls abc~
   -rw-r--r-- 1 martinkl martinkl 14 Nov 20 21:06 abc~

Warum sollte im letzten Fall ein "ls abc~" nur "abc~" ausgeben, wo
doch explizit das long-listing-format angefordert wurde? So hatte
ich -B bisher auch interpretiert: als explizite Anforderung, in der
Anzeige alle Dateien auszuschließen, die auf "~" enden.

Klar, der Unterschied ist der, dass in der Beschreibung der Option -l
keine Einschränkung auf "implied entries" vorgenommen wird. Ich hatte
auf diese Unterscheidung bei den Optionen bisher nur nie geachtet.

Ich verstehe allerdings die Intention auch nicht. Warum soll -B nicht
auch auf die als Argument übergebenen Dateien wirken? Was wäre daran
schlecht?

TIA, Martin

Reply | Threaded
Open this post in threaded view
|

Re: ls --ignore-backups buggy?

Ulf Volmer
On 22.11.18 23:21, Martin Klaiber wrote:
> Ulf Volmer <[hidden email]> wrote:

>> alias ls='ls -B'
>
>> Würdest Du dann erwarten, dass ein 'ls abc~' nichts ausgibt?
>
> Hätte ich erwartet, ja. Bei einem "alias ls='ls -l'" wirkt die Option
> ja auch gleichermaßen auf die Anzeige des Verzeichnislistings und auf
> die der übergebenen Datei(en):

Meione Sicht ist: Wenn Du ausdrücklich sagst, gibt mir bitte
Informationen über die Datei abc~, dann übersteuert das die Option -B.

Viele Grüße
Ulf

Reply | Threaded
Open this post in threaded view
|

Re: ls --ignore-backups buggy?

Martin Klaiber
Ulf Volmer <[hidden email]> wrote:

> Meione Sicht ist: Wenn Du ausdrücklich sagst, gibt mir bitte
> Informationen über die Datei abc~, dann übersteuert das die Option -B.

Ja, ok, kann man so sehen. Aber wenn man will, dass abc~ angezeigt
wird, dann braucht man die Option -B doch gar nicht erst anzugeben.

Oder anders gesagt, wenn man das will:

   martinkl@maurice:~/tmp$ ls *
   abc  abc~  abc~~

Warum sollte man dann -B überhaupt angeben? Da würde ich das:

   martinkl@maurice:~/tmp$ ls -B *
   abc  abc~  abc~~

jedenfalls nicht erwarten. Die Option -B gibt man doch nur an, weil
man Backup-Dateien eben gerade aus der Anzeige ausschließen möchte.
So sehe ich es zumindest.

Aber es ist interessant, wie unterschiedlich man darüber denken kann.

Für mich war's das für heute, morgen ist auch noch ein Tag :-)

Danke für die interessante Diskussion und gute Nacht
Martin

Reply | Threaded
Open this post in threaded view
|

Re: ls --ignore-backups buggy?

Jochen Spieker
Martin Klaiber:
>
> Oder anders gesagt, wenn man das will:
>
>    martinkl@maurice:~/tmp$ ls *
>    abc  abc~  abc~~

"ls *" will man (also: ich) überhaupt nie. Die Shell expandiert den
Stern wie schon erwähnt zu allen nicht mit einem Punkt anfangenden
Verzeichniseinträgen und ls zeigt dann alle diese Einträge an. Bei
Verzeichnissen bedeutet das, das deren Inhalt angezeigt wird.

Wenn ich den Inhalt des aktuellen Verzeichnisses ausgeben will, dann
mache ich "ls". Den Inhalt des aktuellen Verzeichnisses und der direkten
Unterverzeichnisse will zumindest ich praktisch nie sehen.

> Warum sollte man dann -B überhaupt angeben? Da würde ich das:

Ich habe bis eben von dieser Option gar nichts gewusst. :)

>    martinkl@maurice:~/tmp$ ls -B *
>    abc  abc~  abc~~
>
> jedenfalls nicht erwarten. Die Option -B gibt man doch nur an, weil
> man Backup-Dateien eben gerade aus der Anzeige ausschließen möchte.
> So sehe ich es zumindest.
>
> Aber es ist interessant, wie unterschiedlich man darüber denken kann.

Wie Du als Nutzer darüber denkst, ist ja eine Sache. Aber die Doku
schreibt ja explizit, dass -B nur *implizit* enthaltene Backup-Dateien
auslässt. Der einzige solche Fall, der mir einfällt, ist das Listing von
Verzeichnissen (ls wird ein Verzeichnis oder gar kein Argument
übergeben).

Kann man überraschend finden und sich anders wünschen, ganz klar. Aber
die Doku halte ich für eindeutig und die Entscheidung, es so zu machen,
auch für nachvollziehbar.

J.
--
The houses of parliament make me think of school bullies.
[Agree]   [Disagree]
                 <http://archive.slowlydownward.com/NODATA/data_enter2.html>

signature.asc (849 bytes) Download Attachment