Autor Thema: Fragen zur Bash  (Gelesen 8791 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline Norman

  • Neuling
  • *
  • Beiträge: 30
  • Skill: Durchschnitt
Fragen zur Bash
« am: 18. Dezember 2016, 15:49:58 »
Hallo ihr Lieben, ich möchte meine Kenntnisse in der Bash-Programmierung erweitern und mir zu Übungszwecken mal diese Konfiguration nachbauen:



Die Konfigurationsdateien habe ich mir schon runtergeladen und ein bisschen rumprobiert habe ich mit anderen Konfigurationen auch schon. Nun habe ich mal eine grundlegende Frage zu Bash-Scripting. Es müssen ja bestimmte Dateien mit sudo chmod +x ausführbar gemacht werden, damit sie zum Beispiel in Panels oder dergleichen eingelesen werden können. Woran erkennt man denn, welche Dateien ausführbar sein müssen und welche nicht oder müssen generell alle solche Dateien ausführbar sein? Ich bin leider was Bash-Scripting angeht noch ein blutiger Anfänger, habe mir aber schon ein Fachbuch von Gallileo Press geholt und hoffe, dass ich die Grundlagen bald drauf habe.
Ich möchte mein System einfach bis ins kleinste Detail konfigurieren können und da führt glaube ich kein Weg an der Shellprogrammierung vorbei, zumal ich im Moment bei den meisten Configs auch nur Bahnhof versetehe. Aber jeder hat schließlich mal bei null angefangen. :)
Kennt ihr nützliche Online-Quellen, z. B. Youtube, wo die Grundlagen gut erklärt werden?

Liebe Grüße

Norman

Offline gosia

  • Held Mitglied
  • *****
  • Beiträge: 1470
  • Dankeschön: 282 mal
  • Desktop: Openbox + xfce
  • Grafikkarte: Intel HD 4000
  • Grafikkartentreiber: i915 (free)
  • Kernel: 4.19 Artix
  • Prozessor: Intel Core i5-3210M
  • Skill: Durchschnitt
  • Zweig: stable
Re: Fragen zur Bash
« Antwort #1 am: 18. Dezember 2016, 16:21:46 »
Hallo Norman,
gute Einführungen in die Shell-Programmierung, das ist natürlich etwas subjektiv.
Meine Empfehlungen:
https://linuxconfig.org/bash-scripting-tutorial
http://mywiki.wooledge.org/BashGuide
http://www.shellscript.sh/
wenn Du es lieber deutsch haben möchtest, fällt mir jetzt nur das ein:
http://de.linwiki.org/wiki/Linuxfibel_-_Shells_-_Bashprogrammierung
http://bin-bash.de/
http://www.linux-services.org/shell/
https://de.wikibooks.org/wiki/Linux-Praxisbuch:_Shellprogrammierung

Dort wird auch die Frage zu chmod +x skriptname beantwortet (sudo ist überflüssig, wenn die Datei dir gehört),
Im allgemeinen ist es empfehlenswert und gute Praxis, Skripte mit
chmod +x skriptname"ausführbar" zu machen. Ohne dies müssten die Skripte mit
bash skriptnameaufgerufen werden.
Ebenfalls nützlich ist es, daß die erste Zeile eines bash-Skript so aussieht:
#!/bin/bashDas signalisiert, daß dies Skript von der Bash ausgeführt werden soll (es gibt ja auch noch Perl-, Python-, Ruby- und was weiss ich für Skripte).
Aber das führt schon alles zu sehr ins Detail.

Viele Grüße gosia
"funktioniert nicht" ist keine brauchbare Fehlermeldung
Folgende Mitglieder bedankten sich: Norman, mepi0011

Offline Norman

  • Neuling
  • *
  • Beiträge: 30
  • Skill: Durchschnitt
Re: Fragen zur Bash
« Antwort #2 am: 18. Dezember 2016, 16:55:51 »
Vielen Dank, gosia. Das hift mir schon sehr weiter. Die Quellen werde ich mir anschauen, ob jetzt deutsch oder englisch spielt für mich keine Rolle. Bin da flexibel. Dass es allgemein gängige Praxis ist, Scripte ausführbar zu machen, war mir gar nicht klar, daran sieht man wohl, dass ich noch nicht viel Ahnung habe.

Was mir jetzt in Bezug auf die Beispiele noch einfällt:

Ebenfalls nützlich ist es, daß die erste Zeile eines bash-Skript so aussieht:
#!/bin/bash

Heißt es denn immer #!/bin/bash oder muss ich beispielsweise bin/bash in bin/zsh umändern, wenn ich zsh nutze?

Grüße
Norman

Offline Norman

  • Neuling
  • *
  • Beiträge: 30
  • Skill: Durchschnitt
Re: Fragen zur Bash
« Antwort #3 am: 02. Januar 2017, 14:22:01 »
Ich habe mal ein paar Fragen zur .xinitrc. Gibt es einen bestimmten Grund, warum z. B. in der Standardvorlage so viele Zeilenumbrüche drin sind? Bin gerade dabei, mir das Design von oben nachzubauen, da ist mir das aufgefallen. Kann ich davon ein paar rausnehmen oder sind die irgendwie wichtig, damit der X-Server richtig funktioniert? Für die Interpretation der .xinitrc sind die ganzen Zeilenumbrüche doch irrelevant, oder? Es reicht doch wenn ich nach einem Befehl lediglich einen Umbruch mache und bei Verschachtelungen etwas einrücke, oder?

Offline gosia

  • Held Mitglied
  • *****
  • Beiträge: 1470
  • Dankeschön: 282 mal
  • Desktop: Openbox + xfce
  • Grafikkarte: Intel HD 4000
  • Grafikkartentreiber: i915 (free)
  • Kernel: 4.19 Artix
  • Prozessor: Intel Core i5-3210M
  • Skill: Durchschnitt
  • Zweig: stable
Re: Fragen zur Bash
« Antwort #4 am: 02. Januar 2017, 16:57:28 »
Hallo Norman,
ich weiss jetzt nicht welche "Standardvorlage" der .xinitrc Du meinst, aber im allgemeinen dienen Zeilenumbrüche (oder besser gesagt Leerzeilen) in einem Skript "nur" dazu, zusammeghöriges übersichtlicher zu gruppieren. Nun ist .xinitrc meist nicht gerade umfangreich, aber selbst da ist zumindest für mich sowas:
#!/bin/sh
#
# ~/.xinitrc
#
# Executed by startx (run your window manager from here)
#

## Ensure that the D-Bus Communication System is running properly to fix
## File management, authentication, and other essential system processes
if which dbus-launch >/dev/null && test -z "$DBUS_SESSION_BUS_ADDRESS"; then
    eval "$(dbus-launch --sh-syntax --exit-with-session)"
fi

## Ensure that GTK themes are applied uniformly in the Desktop Environment
export GTK2_RC_FILES="$HOME/.gtkrc-2.0"

## Where the default Home folders have not already been created, generate them
if [ -x /usr/bin/xdg-user-dirs-update ]; then
   /usr/bin/xdg-user-dirs-update
fi

## Ensure that obmenu-generator (a pipe menu) is set to the user.
sed 's/_user_/'$(whoami)'/' ~/.config/obmenu-generator/schema.pl -i
sed 's/_user_/'$(whoami)'/' ~/.config/obmenu-generator/config.pl -i

exec $1
übersichtlicher als
#!/bin/sh
# ~/.xinitrc
#Executed by startx (run your window manager from here)
#Ensure that the D-Bus Communication System is running properly to fix File management, authentication, and other essential system processes
if which dbus-launch >/dev/null && test -z "$DBUS_SESSION_BUS_ADDRESS"; then eval "$(dbus-launch --sh-syntax --exit-with-session)"; fi
#Ensure that GTK themes are applied uniformly in the Desktop Environment
export GTK2_RC_FILES="$HOME/.gtkrc-2.0"
# Where the default Home folders have not already been created, generate them
if [ -x /usr/bin/xdg-user-dirs-update ]; then /usr/bin/xdg-user-dirs-update; fi
#Ensure that obmenu-generator (a pipe menu) is set to the user.
sed 's/_user_/'$(whoami)'/' ~/.config/obmenu-generator/schema.pl -i
sed 's/_user_/'$(whoami)'/' ~/.config/obmenu-generator/config.pl -i
exec $1
Zeilenumbrüche gespart, aber an Übersichtlichkeit verloren. Laufen tut die zweite Version aber trotzdem (zumindest wenn ich keine Syntaxfehler reingebastelt habe)

Viele Grüße gosia
"funktioniert nicht" ist keine brauchbare Fehlermeldung
Folgende Mitglieder bedankten sich: Norman

Offline mepi0011

  • Neuling
  • *
  • Beiträge: 35
  • Dankeschön: 1 mal
  • Desktop: KDE Plasma 5
  • Kernel: 4.4
  • Prozessor: AMD Phenom II X6 (X6 1055T)
  • Skill: Durchschnitt
  • Zweig: stable
Re: Fragen zur Bash
« Antwort #5 am: 03. Januar 2017, 13:11:42 »
Hallo Norman,
gute Einführungen in die Shell-Programmierung, das ist natürlich etwas subjektiv.
Meine Empfehlungen:
https://linuxconfig.org/bash-scripting-tutorial
http://mywiki.wooledge.org/BashGuide
http://www.shellscript.sh/
wenn Du es lieber deutsch haben möchtest, fällt mir jetzt nur das ein:
http://de.linwiki.org/wiki/Linuxfibel_-_Shells_-_Bashprogrammierung
http://bin-bash.de/
http://www.linux-services.org/shell/
https://de.wikibooks.org/wiki/Linux-Praxisbuch:_Shellprogrammierung

...
Viele Grüße gosia

Hi,

um die Liste von @gosia zu vervollständigen, noch ein paar weitere Links:
http://openbook.rheinwerk-verlag.de/shell_programmierung/
  Auf openbook.rheinwerk-verlag.de gibte es noch weitere tolle Bücher zum Thema programmieren und Liux.
https://wiki.ubuntuusers.de/Shell/Bash-Skripting-Guide_f%C3%BCr_Anf%C3%A4nger/

Gruß
mepi0011
Folgende Mitglieder bedankten sich: Norman

Offline Norman

  • Neuling
  • *
  • Beiträge: 30
  • Skill: Durchschnitt
Re: Fragen zur Bash
« Antwort #6 am: 10. Januar 2017, 23:35:44 »
Ich habe noch zwei Fragen bezüglich eines #Include-Befehls in einer der .dotiles zu dem oberen Design. In dem Beispiel wird ja bspwm benutzt und auf der bspwm-Seite vom Arch-Wiki steht:

Zitat
Important: Make sure your environment variable $XDG_CONFIG_HOME is set or your bspwmrc will not be found. This can be done by adding XDG_CONFIG_HOME="$HOME/.config" and export XDG_CONFIG_HOME to your ~/.profile.

In meinem Home-Ordner ist keine .profile-Datei. Was ist denn mit

Zitat
export XDG_CONFIG_HOME to your ~/.profile.

gemeint? Muss ich beide Zeilen nur in die .profile-Datei schreiben oder wie genau soll ich die "exportieren"?

Meine zweite Frage hat auch mit $XDG_CONFIG_HOME zu tun. Ich möchte dieses Color-Scheme nutzen. In dem Kommentar ganz oben ist ein Infoblock.

http://www.xcolors.net/dl/nancy

Die Datei habe ich wie vorgegeben unter ~/Xcolors/nancy.Xresources gespeichert. Danach soll man ja diese Datei mit #include <path>/nancy.Xresources in die .Xresources reinladen. Nur wie genau muss es aussehen?
ist es so richtig?

$XDG_CONFIG_HOME/Xcolors/nancy.Xresources
wenn ich dann den Befehl xrdb -merge ~/.Xresources ausführe, gibt xterm eine Fehlermeldung aus und $XDG_CONFIG_HOME ist rot markiert. Wenn ich das Color-Scheme direkt in die Xresources reinschreibe funktioniert es in Xterm aber nicht mit urxvt. Ich möchte aber urxvt nutzen. Ich hab mir auch extra die gepatchte Version mit 256-Farben-Support aus dem AUR installiert, nur will es trotzdem einfach nicht klappen.

Liebe Grüße
Norman

Offline gosia

  • Held Mitglied
  • *****
  • Beiträge: 1470
  • Dankeschön: 282 mal
  • Desktop: Openbox + xfce
  • Grafikkarte: Intel HD 4000
  • Grafikkartentreiber: i915 (free)
  • Kernel: 4.19 Artix
  • Prozessor: Intel Core i5-3210M
  • Skill: Durchschnitt
  • Zweig: stable
Re: Fragen zur Bash
« Antwort #7 am: 11. Januar 2017, 00:36:21 »
Hallo Norman,
In meinem Home-Ordner ist keine .profile-Datei.
die Zeile sollte so aussehen
export XDG_CONFIG_HOME=$HOME/.configkannst Du in die existierende ~/.bashrc schreiben.
Danach soll man ja diese Datei mit #include <path>/nancy.Xresources in die .Xresources reinladen. Nur wie genau muss es aussehen?
Ich nehme mal an, so wie es dasteht:
#include ~/Xcolors/nancy.XresourcesDas ist jetzt aber schon etwas weiter weg von Bash-Scripting.

Viele Grüße gosia


"funktioniert nicht" ist keine brauchbare Fehlermeldung
Folgende Mitglieder bedankten sich: Norman

Offline gosia

  • Held Mitglied
  • *****
  • Beiträge: 1470
  • Dankeschön: 282 mal
  • Desktop: Openbox + xfce
  • Grafikkarte: Intel HD 4000
  • Grafikkartentreiber: i915 (free)
  • Kernel: 4.19 Artix
  • Prozessor: Intel Core i5-3210M
  • Skill: Durchschnitt
  • Zweig: stable
Re: Fragen zur Bash
« Antwort #8 am: 11. Januar 2017, 01:08:19 »
PS.
Um eventuelle Mißverständnisse zu vermeiden, die Zeile mit #include kommt natürlich nicht in die ~/.bashrc sondern nach ~/.Xresources
https://wiki.archlinux.org/index.php/X_resources#Include_files

Viele Grüße gosia
"funktioniert nicht" ist keine brauchbare Fehlermeldung
Folgende Mitglieder bedankten sich: Norman

Offline lambda

  • Neuling
  • *
  • Beiträge: 3
  • Desktop: i3, awesome, cinnamon
  • Grafikkarte: Intel Onboard (noch)
  • Grafikkartentreiber: free
  • Kernel: 4.4.45-1-MANJARO
  • Prozessor: Intel i3
  • Skill: Durchschnitt
  • Zweig: stable, testing
Re: Fragen zur Bash
« Antwort #9 am: 02. Februar 2017, 22:27:54 »
@Norman Wenn ich mal fragen duerfte, welcher WM (i3, awesome, etc) ist es und gibt es die configs iwo online (und wenn ja wo)? Danke.

MfG

Offline Norman

  • Neuling
  • *
  • Beiträge: 30
  • Skill: Durchschnitt
Re: Fragen zur Bash
« Antwort #10 am: 09. Februar 2017, 21:13:32 »
@Norman Wenn ich mal fragen duerfte, welcher WM (i3, awesome, etc) ist es und gibt es die configs iwo online (und wenn ja wo)? Danke.

Erst mal sorry für die späte Antwort, der WM ist bspwm und hier sind die Configs:

http://www.deviantart.com/art/Vibrant-539061980

https://github.com/Aphray/Configs

Offline Norman

  • Neuling
  • *
  • Beiträge: 30
  • Skill: Durchschnitt
Re: Fragen zur Bash
« Antwort #11 am: 09. Februar 2017, 23:56:58 »
Hatte jetzt doch nochmal Lust dieses bspwm-Setup nachzubauen. Hat auch geklappt soweit, das einzige, was nicht funktionieren will ist lemombar, obwohl ich das Repository komplett gespiegelt und alle Ordner und Dateien exakt an der richtigen Stelle habe. Wenn ich das Panel-Script im Terminal ausführe, dann kommen folgende Fehler:

mkfifo: der FIFO ' ' kann nicht erzeugt werden: Datei oder Verzeichnis nicht gefunden
Ich hab nichts an den Dateien verändert. Hat jemand ne Idee, woran es liegen könnte oder ist vielleicht das Repo mit 2 Jahren schon zu alt und möglicherweise mit der aktuellen Lemonbar-Version nicht kompatibel?

LG
Norman

Offline gosia

  • Held Mitglied
  • *****
  • Beiträge: 1470
  • Dankeschön: 282 mal
  • Desktop: Openbox + xfce
  • Grafikkarte: Intel HD 4000
  • Grafikkartentreiber: i915 (free)
  • Kernel: 4.19 Artix
  • Prozessor: Intel Core i5-3210M
  • Skill: Durchschnitt
  • Zweig: stable
Re: Fragen zur Bash
« Antwort #12 am: 10. Februar 2017, 00:18:59 »
Hallo Norman,
könntest Du bitte das betreffende Skript hier posten oder wenigstens einen genauen Link angeben? Ich nehme an, es geht um ein Skript aus diesen git-Repos:
https://github.com/Aphray/Configs
https://github.com/skwp/dotfiles
Es ist aber etwas mühsam aus den Skripts dort das fragliche zu suchen.

Viele Grüße gosia
"funktioniert nicht" ist keine brauchbare Fehlermeldung

Offline Norman

  • Neuling
  • *
  • Beiträge: 30
  • Skill: Durchschnitt
Re: Fragen zur Bash
« Antwort #13 am: 10. Februar 2017, 00:52:01 »
https://github.com/Aphray/Configs/blob/master/.config/bspwm/panel/panel

https://github.com/Aphray/Configs/blob/master/.config/bspwm/panel/panel_bar

Ich glaube, es liegt an diesen beiden, denn wenn ich das panel-Script manuell im Terminal starte, spuckt er mit diese Fehlermeldung aus, die ich weiter oben schon geschrieben hattte. Die bspwmrc ist denke ich okay, obwohl ich das nicht beschwören will. Ganz unten wird das panel mit panel &gestartet. Laut Arch-Wiki sollte es so funktionieren.

https://github.com/Aphray/Configs/blob/master/.config/bspwm/bspwmrc

Was bedeutet eigentlich der Punkt vor einer solchen Zeile?
. ~/.scripts/source

Habe danach schon gegoogelt, konnte aber nichts genaues finden. Im englischen Arch-Forum schrieb jemand irgendwas zu Root-Rechten im Zusammenhang mit dem Punkt, aber ich weiß nicht genau, was er bewirkt.

LG
Norman

migster

  • Gast
Re: Fragen zur Bash
« Antwort #14 am: 10. Februar 2017, 09:59:07 »
Hi,

schau mal hier :
https://de.wikibooks.org/wiki/Linux-Praxisbuch:_Verzeichnisse_unter_Linux

Ganz unten unter "absolute und relative Pfadangaben"

Migster
Folgende Mitglieder bedankten sich: Norman