Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv

A lot of time you have to split a string into pieces. There exist various ways to get it done. For example you can use sed or grep with a regular experssion. But there are much more efiicient ways available by using plain bash:

Question: How to extract the first and second path from the given string s="someString:/path1/path2/path3/path3/test.bin"

Solution: /path1/path2

Use cut:

echo $(cut -f 2-3 -d / <<< "$s")

Use sed:

echo $(sed -r 's/[^:]+:((\/[^/]+){2})(.*)/\1/' <<< "$s")

Use plain bash and read:

IFS=/ read x a b y <<< "$s"; echo "/$a/$b"

Use plain bash and set:

IFS=/ eval set -- \$s; echo "/$2/$3"
Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv

Als ich versuchte ein bash Script welches sich selbst aktualisiert sobald eine neuere Version verfügbar ist und sich selbst noch einmal mit der neuen Version aufruft mit den initialen Scripaufrufparametern bekam ich Probleme. Beim erneuten Aufruf wurden die Parameter nicht mehr genau so übergeben wie sie initial eingegeben wurden. Besonders Leerzeichen in Stringparametern bereiteten Probleme. Der Scripupdate soll ja für den Aufrufen unbemerkt stattfinden und der Aufrufer immer die aktuellste Version benutzen.

Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv

Wenn man git zur Codeverwaltung benutzt lernt man immer wieder neue Befehle kennen, die einem bei der Codeveraltung helfen. Anbei meine stetig wachsende Sammlung von Befehlen die ich oft - aber auch weniger häufig benutze um meinen Code zu verwalten. Speziell die weniger häufig benutzten muss man immer wieder mal nachsehen.

Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv

Bislang habe ich meinen Code in einem lokalen Git auf meinem Desktop verwaltet. Da ich auch remote von einem lokalen Labtop oder per VPN verbundenen remoten Labtop auf den Code zugreifen möchte musste das lokale Git Repository umgestellt werden. Bei mir läuft eine kleine Raspberry als LAN Server und der ist dafür ideal.

Es finden sich diverse Beiträge zu dem Thema im Netz aber es dauerte etwas bis ich die optimale Lösung gefunden habe. Es ist nicht schwer wenn man weiss wie.

Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv

Es ist ganz hilfreich wenn man mit einer Raspberry bestimmte Schaltvorgänge zeit- und sonnenauf- sowie -untergangsgesteuert vornehmen kann. Deshalb habe ich mich mal ein wenig umgesehen wie man sowas leicht rausbekommen kann. Dabei habe ich APIs im Internet gefunden, die bei der Ermittlung von beiden Informationen helfen und dann ein kleines Python Script bedingt durch die API-Nutzung innerhalb kürzester Zeit geschrieben. gneadr hat noch eine andere interessante Variante herausgefunden die ich noch etwas modifiziert habe.

Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv

Eben bin ich über einen sehr schönen und ausführlichen Beitrag (all about redirections) gestolpert, in dem die bash Redirections erklärt werden. Nach dem Lesen des Artikels hat man sie verstanden. Ist allerdings in Englisch. Dieser Artikel ist einer von fünfen in der Reihe 'bash one-liners' - Working with files, working with strings, working with history und navigating around, die ebenso sehr hilfreich sind.

Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv
Python allows to bundle a lot of Python files with py2exe in one executable for Windows. That way a simple call of this exe allows to start the Python program. No installation is required. I don't like windows and use Linux instead. That's why I had to search for a similar solution on Linux. I just want to have all my Python code bundled in one shell script and to be able to distribute one bash file only instead of the whole set of python files.
 
Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv
I just faced an issue I thought should be easy to solve. I wanted to know which Linux distribution a bash script runs on. There exists a proposal of the FSB (Free Standards Group) to implement lsb_release which delivers all the info.Unfortunately it's not implemented by all Linux distributions so I installed various distributions on VMWare to get a clue how to write code to extract the Linux distribution. Finally I wrote a bash script and python script to extract the Linux distribution.
Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv
Da ich gerade dabei bin mich mit Python vertraut zu machen. Anbei Links die mir dabei geholfen haben bzw noch helfen Python effektiv einzusetzen.
 
Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv
Wer ist nicht schon bei der Umrechung von Fahrenheit, Reaumur und Celsius verzweifelt. Letzten Winter war es sehr kalt und im nciht mehr existenten Minthouse Forum gab es Diskussionen bzgl der Umrechnungen. Deshalb habe ich ein kleines Groovy Programm geschrieben welches typische Groovyfunktionalitäten wie z.B. closures benutzt, um diese Umrechnungen vorzunehmen. Das Schöne an Groovy ist, das diese Programme automatisch unter der Decke den java Compiler aufrufen. Damit entfällt der typische Compile an Run Schritt bei Java und ermöglich schnellere Entwicklung und Test von Groovy Programmen. Einfach das Groovy Programm ändern und einfach wieder aufrufen. So wie man es von Python kennt. Vor dem Aufruf muss man allerdings erste Groovy installiert haben. Unter Linux geht das z.B. mit apt-get install groovy
Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv
Python bietet standardmäßig py2exe an um eine Menge von Python Scripts in einem Windows Executable zusammenzupacken. Danach muss nur dieses exe unter WIndows aufgerufen werden und das Pythonprogramm läuft los. Es ist dazu keine Installation des Programmes notwendig. Da ich kein Windows sondern Linux habe suchte ich nach einer Lösung die mir ein bash Script aus mehreren Python Files erzeugt so dass ich nur eine Datei verteilen muss anstatt den ganzen Satz meiner Python Module.
 
Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv
Wie lernt man eine Progammiersprache? Indem man sich in die Syntax und Semantik einliest und parallel dazu auch gleich kleine Beispiele in dieser neuen Programmiersprache schreibt. Anbei ist ein kleines Javascript Programm welches ich in diesem Zuge geschrieben habe und welches Text einliest und die Buchstaben der Worte nach gewissen Regeln durcheinanderwürfelt. Erstaunlicherweise kann man dann immer noch die Texte lesen. Dieselbe Logik habe ich schon hier mit Python und CGI implementiert.Dort finden sich auch weitere Hintergrundinformationen zu dem verwendeten Algorithmus. Es ist zweisprachig auf Deutsch und Englisch ausgelegt. Anhängig von der Browsersprache wird alles in Deutsch oder ansonsten in Englisch angezeigt.
 
 
Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv
In diesem Forum fragte jemand, wie er einfach aus Datei- und Verzeichnisnamen die Umlaute entfernen kann bzw aus den Umlauten äöü und dem ß ae,oe,ue und ss erzeugen kann.  Ist ein nettes Problem das ich dort in dem Forum mit einem kleinen Python Script gelöst habe. Ich habe dann mal eine wesentlich erweitere Version des Scripts erstellt:
 
    Ersetzt alle deutschen Umlaute ä,ö und ü sowie ß in Dateinamen und Verzeichnissen durch ae, oe und ue sowie ss
    Optional können alle Zeichen, die nicht Buchstaben oder Zahlen sind durch ein anderes Zeichen ersetzt werden.
   
    Optionen:
    -h: Anzeige des Hilfetextes
    -a: Änderungsmodus: Ohne diesen Parameter werden keine Verzeichnisse und Dateien umbenannt
        sondern nur Meldungen rausgeschrieben was getan würde wenn das Flag angegeben wird
    -v: Ausführlicher Modus: Es werden Meldungen geschrieben, die es erlauben zu verfolgen welche Verzeichnisse gerade bearbeitet werden
    -f: Überschreibmodus: Falls die umbenannten Verzeichnisse oder Dateien existieren werden
        sie überschrieben. Ohne dieses Flag wird eine Fehlermeldung geschrieben und nicht überschrieben.
    -d: Angabe des StartVerzeichnisses welches rekursive bearbeitet werden soll. Falls es nicht angegeben wird ist es das aktuelle Verzeichnis
    -z: Alle Zeichen im Namen die nicht Buchstaben oder Zahlen sind werden durch diesen Buchstaben ersetzt

 

Wer selbiges Problem hat kann es hier runterladen .