/etc/grub.d/40_custom *mit* feedback im Terminal. Kommentare? Verbesserungen?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
michaa7
Beiträge: 4632
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

/etc/grub.d/40_custom *mit* feedback im Terminal. Kommentare? Verbesserungen?

Beitrag von michaa7 » 13.07.2023 15:09:35

Mich hat geärgert und irritiert, dass update-grub für Ergebnisse aus /etc/grub.d/40_custom keine Rückmeldung am Bildschirm gibt (andere dort ablaufende Scripte aber schon). Nachdem ich mich durch die Irritation, Kommentare (Is halt so), einen abgelehnten Bugreport (If you want that to happen, then just tweak the scripts accordingly) habe ich einen wishbug verfaßt (Schließlich gibt es ja dieses template; das könnte und sollte man so erweitern das Nutzereinträge ein sichtbares feedback auf dem Terminal hervorrufen).

Daher habe ich auch versucht zu verstehen wie das erstellen von /boot/grub/grub.cfg abläuft und was man wo ändern müsste (nicht zu verwechseln damit dass ich das könnte ;-) )

- update-grub is a stub for running grub-mkconfig -o /boot/grub/grub.cfg

- grub-mkconfig - eine GRUB-Konfigurationsdatei erzeugen

- /etc/grub.d/40_custom: the script is essentially running tail on itself, but with -n +3, which tells tail to start from the third line.
https://unix.stackexchange.com/question ... onfig-have

So wie ich das verstehe unterbindet "exec" alle weiteren Commands die man in das script schreiben würde, so auch "echo" (was allerdings ohnehin nicht wäre was ich für sinnvoll hielte).

In Pseudocode ausgedrückt würde ich wollen dass der mittels "tail usw" erzeugte Datenstrom nicht nur in /boot/grub/grub.cfg landet sondern *zusätzlich* gegrept wird und die *Namen* der Menüentries im Terminal ausgegeben werden.

Ich habe ein bisschen herumgegrept, und tobo war so nett zu zeigen wie es geht wenn man es kann :mrgreen:

Damit und dem script habe ich heute etwas herumgespielt und mehr durch try & error herausgefunden wie es halbwegs hinhaut (nicht wirklich so wie oben angesprochen):

/etc/grub.d/40_custom (neu)

Code: Alles auswählen

#!/bin/sh
grep -oP "(?<=^menuentry ')[^']+" $0 >&2
exec tail -n +4 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

<Nutzereinträge
...>
Was sagt ihr dazu? Geht das eleganter?
(Ich finde es deshalb nicht elegant, weil es am Bildschirm etwas ausgibt ohne dass dies bereits erledigt wäre und ohne sicher zu sein dass es tatsächlich klappt; vllt ist das aber auch ein zu hoher Anspruch)

V2:

Code: Alles auswählen

#!/bin/sh
sed -En "s/^menuentry '([^']+).*/Found custom entry: \1/p" $0 >&2 #new for feedback on terminal
exec tail -n +4 $0 # +4 instead of +3 due to above line
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

<Nutzer Einträge>
V3 (mit test für deaktivierten os-prober; bei aktivierten os-prober gibt es durch diesen ein feedback)

Code: Alles auswählen

#!/bin/sh
if grep -Fxq "#GRUB_DISABLE_OS_PROBER=false" /etc/default/grub; then
  sed -En "s/^menuentry '([^']+).*/Found custom entry: \1/p" $0 >&2; 
fi; #new for feedback on terminal
exec tail -n +6 $0 # +6 instead of +3 due to above lines
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

<Nutzer Einträge>
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

Antworten