Shell-Fragen

Schiffversenker

Aktives Mitglied
Dabei seit
25.06.2012
Beiträge
13.479
Punkte Reaktionen
5.511
Aber das Problem ist doch, dass es beim Mac anders als bei Linux ist, Unix hin oder her! Einige Linux Befehle haben bei meinem MacBook nicht funktioniert... einige...
UNIX ist der Kern. Es gibt kein Verbot, zusätzliche Kommandos/Befehle/Shellskripte hinzuzufügen, und man bemerkt in der Shell halt nicht, ob's "original" ist oder dazuinstalliert.
Und es kann durchaus sein, daß dann zwar der Befehl gleiches bewirkt, die Argumente sich aber unterscheiden.
Und natürlich darf man immer weitere Befehle/Kommandos/Programem hinzufügen.
Die dann vielleicht woanders liegen. Also statt in /bin oder /sbin on /opt, /usr oder so.

Uns spezielle Apple-Kommandos (für Funktionen, die es eben nur auf Macs gibt) unterscheiden sich sogar (selten, aber ebne doch manchmal) von System zu System, obwhl das schwer zu verstehen ist. Aber die haben nichts mit dem UNIX-Unterbau zu tun, erlauben den Zugriff auf ansonsten per GUI erreichbare Mac-Funktionen.
 

maba_de

Aktives Mitglied
Dabei seit
15.12.2003
Beiträge
18.265
Punkte Reaktionen
9.749
Aber das Problem ist doch, dass es beim Mac anders als bei Linux ist, Unix hin oder her! Einige Linux Befehle haben bei meinem MacBook nicht funktioniert... einige...

Aber trotzdem danke für alles!
Linux ist nun mal kein Unix. Also musst du dich im Terminal natürlich an die Unix Befehle halten, wobei macOS ein BSD Unix ist.
 

warnochfrei

Aktives Mitglied
Dabei seit
02.03.2019
Beiträge
1.739
Punkte Reaktionen
748
Die Standardshell (interaktiv) ist nicht automatisch die Standardshell (Scripting).

/bin/sh ist selten die bash.
 

warnochfrei

Aktives Mitglied
Dabei seit
02.03.2019
Beiträge
1.739
Punkte Reaktionen
748
Also musst du dich im Terminal natürlich an die Unix Befehle halten, wobei macOS ein BSD Unix ist.

BSD ist seit Ende der 80er frei von jedem Unixcode. Unix V8 war ein BSD. Und wenn dann noch GCC usw. dazukommt, wird es kompliziert. ;)
 

electricdawn

Aktives Mitglied
Dabei seit
01.12.2004
Beiträge
11.841
Punkte Reaktionen
9.317
Das sind jetzt aber Details, die den TE jetzt nicht wirklich zu interessieren brauchen. ;)
 

electricdawn

Aktives Mitglied
Dabei seit
01.12.2004
Beiträge
11.841
Punkte Reaktionen
9.317
Er/Sie muss ja erstmal überhaupt lernen mit der Shell umzugehen. Dafür ist es egal, welches *NIX darunter liegt. Solange es eine bash ist.
 

maba_de

Aktives Mitglied
Dabei seit
15.12.2003
Beiträge
18.265
Punkte Reaktionen
9.749
Er/Sie muss ja erstmal überhaupt lernen mit der Shell umzugehen. Dafür ist es egal, welches *NIX darunter liegt. Solange es eine bash ist.
Naja, am Anfang lernt man, indem man Befehle abtippt. Und wenn die nicht funktionieren wundert man sich halt.
Ich wechsle regelmäßig die Systeme und suche mir manchmal einen Wolf, wie der Befehl auf dem jeweiligen System jetzt genau lautet und welche Parameter funktionieren. Gerade bei selten benutzten Befehlen.
 

electricdawn

Aktives Mitglied
Dabei seit
01.12.2004
Beiträge
11.841
Punkte Reaktionen
9.317
Klar. Du willst aber was Spezifisches erreichen. Im Falle des TEs aber geht es um die Grundlagen. Und die sind auf jeder Basis gleich, solange es sich um die gleiche Shell handelt.
 

Olivetti

Aktives Mitglied
Dabei seit
09.12.2005
Beiträge
11.697
Punkte Reaktionen
4.071
sagt mal, ihr laberseppel, ist hier irgendjemand anwesend, der ihm wenigstens im entferntesten helfen kann?!

1. ist schon beantwortet.
zu 2.
Code:
for i in {0..2}; do echo "${i}"; done
# oder
for ((i = 0; i < 3; i++)); do echo "${i}"; done
 
Zuletzt bearbeitet:

mikne64

Aktives Mitglied
Dabei seit
02.04.2004
Beiträge
3.546
Punkte Reaktionen
286
Hallo,

zu 2) Wenn Du Labels/Sektionen arbeitest, da geht wie erwähnt auch if then ... else

zu 3) Farbige Ausgabe
Vordergrund
Linux Skript farbig formatieren und übersichtlich ausrichten
https://www.pc-erfahrung.de/linux/s...inux/linux-scripting-ausgabe-formatieren.html
Hintergrund
Bunte Shells - Benutzung der Shell-Farben
https://www.selflinux.org/selflinux/html/bash_farben01.html
Du musst einfach statt der 3x die 4x-Nummern nehmen.

zu 4) Fortschrittsbalken
How to add a progress bar to a shell script?
https://stackoverflow.com/questions/238073/how-to-add-a-progress-bar-to-a-shell-script
Ich finde gerade Artikel nicht mehr. Das System weiß nicht wann Dein Vorgang fertig ist. Deswegen ist es mit dem Fortschrittsbalken schwierig. Auf jeden Fall den absoluten Wert prozentual errechnen.

Fü welchen Linux soll Dein Skript sein? Sonst nutze z.B. eine Distribution per USB-Stick zum Üben/Lernen.

Viele Grüße
 
Zuletzt bearbeitet:

Olivetti

Aktives Mitglied
Dabei seit
09.12.2005
Beiträge
11.697
Punkte Reaktionen
4.071
ich verstehe ihn so, dass er es für macos/BSD möchte, aber mit den üblichen linux-beispielen im netz dann probleme hatte.
 

electricdawn

Aktives Mitglied
Dabei seit
01.12.2004
Beiträge
11.841
Punkte Reaktionen
9.317
@Olivetti
Ich denke, hier ging es auch um Hilfe zur Selbsthilfe. Und die wurde hier gegeben. Und natuerlich klappt nicht alles, was spezifisch ist fuer Linux auch bei BSD. Deswegen sollte man erst auch mal mit den Grundlagen anfangen, bevor man anfaengt in die spezifischen Tiefen von MacOS zu steigen.

Just IMHO.

PS: Und bei dem TE habe ich irgendwie das Gefuehl, dass hier moeglichst schnell zum "Erfolg" gekommen werden muss, ohne sich wirklich in die Materie einarbeiten zu wollen. Vielleicht sehen wir da bald einen Thread "Hilfe, ich habe meine Kinder geschrumpft, aeh... meine Platte geloescht!".
 

Olivetti

Aktives Mitglied
Dabei seit
09.12.2005
Beiträge
11.697
Punkte Reaktionen
4.071
zu 3. färberei:
genannt wurden schon ansi-farbcodes in den links von @mikne64.
den kompletten background immer stringent zu färben, ist leider sehr umständlich und vergrößert den script-aufwand doch erheblich.
beispiel:
Bash:
t=$(($(tput cols)/3)); for IT in $(jot $(tput lines)); do printf "\e[42m%${t}s\e[47m%${t}s\e[41m%${t}s\e[0m\n"; done
stichworte wären also "tput ansi-escape-codes echo/printf".

ich würde empfehlen, das script mit dialog bzw. whiptail aufzubauen (dazu wäre homebrew nötig).
damit könntest du sämtliche problemstellungen, wie input, farben und progress gauge leicht im package erledigen.
 
Zuletzt bearbeitet:

mikne64

Aktives Mitglied
Dabei seit
02.04.2004
Beiträge
3.546
Punkte Reaktionen
286

wegus

Moderator
Dabei seit
13.09.2004
Beiträge
18.358
Punkte Reaktionen
5.711
Grundsätzlich sind die Einwände bezüglich der Farben richtig. Eine Shell ist eben eigentlich reine Textinformation. Es gibt durchaus Bibliotheken die so etwas wie Grafik auch in Shells ausgeben können. So funktioniert etwa auch der Midnight-Commander ( ein Norton Clone). Für den Start ist das aber nicht die einfachste Materie. Wer trotzdem Ausgaben färben will, der wird in Beiträgen wie diesen hier fündig:

https://stackoverflow.com/questions/5947742/how-to-change-the-output-color-of-echo-in-linux

Kurz gesagt geht es um das richtige Senden von Kontroll-Zeichen. Ist die verbundene Konsole/Terminal farbfähig werden dann Vorder- oder Hintergrundfarben angepaßt.
 
Oben Unten