Kann man mit SHELL-SCRIPTING (BASH) nicht eigentlich das gleiche machen wie mit PYTHON? Bzw. was kann man dort nicht machen?

6 Antworten

Du bannst mit Bashscripting schon einiges machen vor allem ist das oftmals eine einfache Option um Dinge zu automatisieren.

Dazu ein kleines Beispiel: https://github.com/Hood3dRob1n/Linux-RDP/blob/master/rdpsploit.sh

Und noch zwei einfache Beispiele was mach damit machen kann: https://hackenlernen.com/blog.php?t=bash_portscanner

Woher ich das weiß:Berufserfahrung – Softwareentwickler f. Web, Win. & Linux (seit 2001)

Bash ist Turing-vollständig und kann über das Dateisystem mit der Hardware kommunizieren. Also kannst du mit der Bash vermutlich so ziemlich alles machen, was denkbar ist.

Du kannst aber ebenfalls mit reinem Maschinencode alles machen. Die Wahl der Sprache ist in erster Linie keine Frage der Mächtigkeit, sondern von Performance, Komfort, Sicherheit, Qualität der verfügbaren Compiler und dergleichen. Deshalb gibt es auch so viele Programmiersprachen.

In Python kannst du z.B. sogenannte Dictionaries anlegen, eine sehr effiziente Datenstruktur um benannte Einträge in Listen zu finden (z.B. die Telefonnummer von "Clarissa Müller"). Klar kannst du versuchen, dir in Bash diesen Datentyp nachzubauen, aber damit schreibst du dir im Endeffekt eine andere Sprache auf der Grundlage von Bash.

Die Wahl der Programmiersprache ist eigentlich immer von der Anwendung abhängig (und ob man die Sprache bereits beherrscht 😉 ). Bash-Skripte sind eine fantastische Methode, Abläufe zu automatisieren, die man so auch manuell im Terminal erledigen würde. Beruflich mache ich persönlich meine Berechnungen und Datenauswertungen mit Python, weil dafür mit Numpy/Scipy/Matplotlib sehr mächtige und effiziente Bibliotheken zur Verfügung stehen.

Woher ich das weiß:Berufserfahrung

Mit bash kann man eigentlich auch fast alles machen. Bei komplexeren Sachen wird ein Nash Skript aber schnell unübersichtlich und sehr kryptisch. Das lässt sich mit Python dann schöner machen.

Nash hat auch den Nachteil, dass für viele Operationen externe Programme gespannt werden, was theoretisch langsamer ist. In der Praxis habe ich das bisher aber noch nicht bemerkt.

Woher ich das weiß:eigene Erfahrung

wtf hört sex in die tags zu schreiben

naja wenn man bedenkt dass man in einem bash script auch ein python script ausführen kann dann kann man damit tatsächlich alles machen.

wenn man sowas aber mal raus lässt dann kann man damit schon ne ganze menge machen aber wenn es um objektorientierung und generell eine übersichtliche struktur geht fängt es an schwer zu werden.

Woher ich das weiß:Studium / Ausbildung – Softwareentwickler, B. Sc. Informatik

Shells (BASH ist da nur ein Beispiel) dienen einfach nur dazu, einer ganzen Folge von Befehlen, die man sonst interaktiv, einzeln nach einander, immer wieder über die Kommandozeile eintippen müsste, einen Namen zu geben, so dass man — statt sie einzeln einzutippen — einfach nur noch diesen Namen eintippt.

Kurz: Shell Skripts haben deutlich einfachere Kontrollstruktur als solche, die man in Python hinschreiben könnte. (Nebenbei: Python ist verstümmeltes C/C++ — eine Sprache, die es besser nie gegeben hätte, die aber dennoch deutlich mächtiger ist als BASH).


guenterhalt  02.11.2019, 16:23
Shells (BASH ist da nur ein Beispiel) dienen einfach nur dazu, einer ganzen Folge von Befehlen, die man sonst interaktiv, einzeln nach einander, immer wieder über die Kommandozeile eintippen müsste, einen Namen zu geben, so dass man — statt sie einzeln einzutippen — einfach nur noch diesen Namen eintippt.

das verwechselst du mit batch aus der Windows-Welt.
Unix/Linux.Shells können da doch viel mehr. Währen eine Stapelabarbeitung wirklich nur einen Befehl nach dem anderen abarbeitet, haben Linux-Shells Kontrollstrukturen mit if , then else ; case usw.

1
grtgrt  02.11.2019, 16:31
@guenterhalt

Mir ist schon klar, dass es diese Kontrollstrukturen gibt (und IF ... THEN ... ELSE gibt es ja auch in den BAT Files der Windows-Welt). Recht viel damit ausrichten kann man dennoch nicht.

0
Mark Berger  02.11.2019, 19:18
@grtgrt

Schau dir zB RDPsploit an (https://github.com/Hood3dRob1n/Linux-RDP/blob/master/rdpsploit.sh)

... das ist quasi "nur" ein Shellscript.

Du kannst schon recht komplexe Dinge mit Bash-Scripting machen bis hin zu einfachen GUI-Tools. Vor allem da sich sehr viele Linux-Programme auch in Shellscripts verwenden lassen kann man doch sehr komplexe Dinge machen wie zB das oben genannte Tool.

Du hast Kontrollstrukturen und Funktionen - was braucht man mehr um ein Projekt umzusetzen? Bis zu einer gewissen Größe kommt man sehr gut ohne OOP aus und für riesige Softwareprojekte ist das ohnehin die falsche Sprache!

2