less (aus busybox) findet Zeichenkette nicht bei Zeilenumbruch im Terminal

  • Hallo,


    Das Programm less (ist auf der DB Teil von busybox) findet Zeichenketten nicht, wenn diese im aktuellen Terminalfenster von einem Zeilenumbruch betroffen sind. Sobald das Fenster vergrößert oder verkleinert wird, so dass der Suchbegriff nicht mehr umgebrochen wird, wird less diesen finden.


    Beispiel: less /usr/lib/enigma2/python/Navigation.py im üblichen 80x25 Fenster sucht erfolglos nach update (die Suche wird wie in vi mit / eingeleitet):


    Code
    if getFPWasTimerWakeup(): # sanity check to detect if t
    he FP driver is working correct!
    				print "buggy fp driver detected!!! please updat
    e drivers.... ignore timer wakeup!"


    Damit ist less völlig unzuverlässig, um in längeren Dateien etwas zu suchen (bspw. ls -lR über alle Aufnahmedateien).


    Package: busybox
    Version: 1.19.4-r8-dream13
    dm800se (v1) OE 2.0 2015-12-05 mit Upgrades 2015-12-31


    Sinnvoll wäre es noch, diesen Bug report bei busybox zu posten, aber würde eine Fehlerbehebung bei http://busybox.net in das busybox von OE 2.0 einfließen? (busybox.net hat 1.24, DB 1.19)

  • Warum nutzt du nicht grep wenn du etwas suchst? So würde es jeder eigentlich tun außer dir. :winking_face:


    grep ist trotz Optionen -A und -B kein Ersatz für less, denn oft genug bin ich nicht am Treffer selbst, sondern am Kontext drum herum interessiert.


    Du hättest vi -R (für Read-Only) vorschlagen können. Das habe ich ausprobiert und folgende Bugs gefunden:

    • busybox vi zeigt mit ":set" zwar ignorecase an, die Suche mit "/" bleibt dennoch case-sensitiv.
    • busybox vi kann nicht rückwärts suchen (mit "N" statt "n", einleiten mit "?" statt "/") und zeigt irreführend "Pattern not found" an.

    Eine knappe Einführung in busybox vi fand ich hier, im Quellcode sehe ich, dass es noch weitere Kommandos gibt.


    Wegen dieser Bugs ist busybox vi kein Ersatz für less. :thumbs_down:

    Einmal editiert, zuletzt von jophi ()

  • \\Edit


    hier stand Quatsch - du meinst die Suche innerhalb von less. Sorry das hatte ich missverstanden



    1. Wenn ich mit less oder vi eine Datei ansehen, maximiere ich immer vohrer das Konsolenfenster, einfach weil der Inhalt besser lesbar und übersichtlicher ist.


    2. Wenn du mit grep einen string in einer Datei suchst, kannst du dir mit der Option -n die Zeilennummern des Vorkommens des Suchstrings ausgeben lassen, dann kannst du im vi einfach zu der Zeile navigieren (Zeile/Spalte wird dir ja im vi Rechts unten angezeigt)


    Code
    root@dm7020hd:~# grep -n update /usr/lib/enigma2/python/Navigation.py 
    38:				print "buggy fp driver detected!!! please update drivers.... ignore timer wakeup!"
    root@dm7020hd:~#


    Wenn du die Suche mit less vereinfachen willst kannst du dir dann die Zeilennummern mit ausgeben lassen. Wenn dann ein Zeilenumbruch im Terminal stattfindet, erkennst du das sofort an der Zeile ohne vorangestellter Zeilennummer.

    Code
    less -N /usr/lib/enigma2/python/Navigation.py


    dann funktoniert auch wieder die Suche



    die Funktionalität der busybox Befehle sind leider oft sehr kastriert, da braucht es eben oft Umwege. Aber das ist nicht nur mit der Dreambox busybox so. Abhilfe schafft dann meist die Verwendung vollwertiger binaries.

    Gruß Fred

    Die Dreambox ist tot, es lebe die Dreambox

    Einmal editiert, zuletzt von Fred Bogus Trumper ()

  • die Funktionalität der busybox Befehle sind leider oft sehr kastriert, [...].

    Ich habe mich gefragt, ob die Rückwärtssuche wegkompiliert wurde, um Platz zu sparen. Aber im Quellcode kann ich nichts dergleichen finden, also ist es einfach ein Bug (vermutlich, denn ich habe mir nur den neuesten Quellcode angeschaut, 1.24, nicht den zur 1.19 in OE 2.0)


    Und noch ein Bug in busybox less -N /var/log/messages: Suche nach einem Begriff wie "stop" und die Zeilennummern aller Zeilen, in denen der Suchbegriff hervorgehoben wird, sind Schrott:

    Code
    918 Jan  9 20:43:32 dm800se daemon.info dbttcd 1.6: CMD: CTRL_CACHE [pid 0x
        918 0000, dmx 0]
    6352500 Jan  9 20:43:32 dm800se user.warn kernel: [73698.432000] stop pcr0 on d
        919 mx 3 pid:3ff
  • Erfahrungsgemäß kommt da kein update mehr. Solche "Bugs" gehen weit über die Bedienung eines Sat Receivers hinaus und werden von 99% der user nicht mal bemerkt. Ich habe selbst schon Rückmeldungen in der Art bekommen :frowning_face:


    Mir ist der Bug nie aufgefallen, weil ich less auf der Dream nur als pager verwende (keine Suche). less war lange nicht in der busybox, d.h. man musst mit cat file|more und grep arbeiten.


    Tipp:
    hol dir less aus den debian mipsel sourcen und pack die binaries nach /home/root/bin ... und ruf die binaries über aliases auf, dann kann auch das busybox less so sein wie es es ist. Ich rufe einige binaries so über die ~/.user_aliases auf (im Merlin ist das default in der ~/.profile - dort ist das dann auch update sicher, das habe ich mal angeregt :winking_face: )


    Es gibt auch andere Workarounds busybox commands durch vollwertige binaries zu ersetzen ohne das sich die BB und das binary in die Quere kommen. Bei solchen Sachen muss man fast immer basteln ...

    Gruß Fred

    Die Dreambox ist tot, es lebe die Dreambox

    Einmal editiert, zuletzt von Fred Bogus Trumper ()