$1 würde ich quoten => “$1”, nur zur Sicherheit, damit keine Parameterinjektion durchschlüpfen kann.
Sinnvoll wäre noch mkdir -p (erstellt fehlende Unterordner zwischen Wurzel und Blatt automatisch) und && anstatt Neulinie, da das im Fehlerfall abbricht.
Ich habe meine Benutzerskripte in ~/.local/bin (als PATH Variable eingetragen). Dort legst du das Skript ohne Endung an und machst es für den Nutzer ausführbar => chmod u+x <script>
Und schon kannst du es einfach mit scriptname von überall aus aufrufen, als sei es ein normales Kommando.
Aliase/functions nutze ich nur, wenn ich mir was verbieten will (z.b. kubectl ohne --config, poweroff usw…). Grund dafür ist, dass die Kommandos so nicht für andere Programme auffindbar sind, was manchmal etwas nervig sein kann.
Grund dafür ist, dass die Kommandos so nicht für andere Programme auffindbar sind, was manchmal etwas nervig sein kann.
Gut zu wissen, aber ich hatte noch das Problem, dass der cd Befehl wenn er als script ausgeführt wird, nicht in der aufrufenden shell ausgeführt wird, sondern das script quasi eine eigene shell Instanz ausführt, deshalb muss immer . (Punkt und Leerzeichen) voran gestellt werden. Ich hoffe es ist verständlich geschrieben.
Ja das wollte ich gerade sagen. cd ist kein richtiges Linux-Programm (wie es z.B. cat, echo, mkdir, … sind). Stattdessen ist es ein Bash-Pseudo-Befehl, den nur Bash versteht. Jede Bash-Instanz beinhaltet für sich eine Variable in der das aktuelle Arbeitsverzeichnis gespeichert wird. Wenn du jetzt cd in einem Skript ausführst, wird das Arbeitsverzeichnis nur in der neuen Bash-Instanz ausgeführt, die das Skript bearbeitet, aber nicht in der alten Instanz.
$1 würde ich quoten => “$1”, nur zur Sicherheit, damit keine Parameterinjektion durchschlüpfen kann.
Sinnvoll wäre noch mkdir -p (erstellt fehlende Unterordner zwischen Wurzel und Blatt automatisch) und && anstatt Neulinie, da das im Fehlerfall abbricht.
Hey, danke. Werde ich umbauen, das war auch nur schnell hingerotzt.
Klar, wie alle meine Hüllenskripte auch. Aber es macht Spaß, sich drüber zu unterhalten.
Zuerst hatte ich auch nur scripte in einen $PATH Ordner angelegt, aber das ständige
hat auf Dauer irgendwie genervt.
Das geht auch anders:
Ich habe meine Benutzerskripte in
~/.local/bin(als PATH Variable eingetragen). Dort legst du das Skript ohne Endung an und machst es für den Nutzer ausführbar =>chmod u+x <script>Und schon kannst du es einfach mit
scriptnamevon überall aus aufrufen, als sei es ein normales Kommando.Aliase/functions nutze ich nur, wenn ich mir was verbieten will (z.b. kubectl ohne --config, poweroff usw…). Grund dafür ist, dass die Kommandos so nicht für andere Programme auffindbar sind, was manchmal etwas nervig sein kann.
Gut zu wissen, aber ich hatte noch das Problem, dass der cd Befehl wenn er als script ausgeführt wird, nicht in der aufrufenden shell ausgeführt wird, sondern das script quasi eine eigene shell Instanz ausführt, deshalb muss immer
.(Punkt und Leerzeichen) voran gestellt werden. Ich hoffe es ist verständlich geschrieben.Ja das wollte ich gerade sagen.
cdist kein richtiges Linux-Programm (wie es z.B.cat,echo,mkdir, … sind). Stattdessen ist es ein Bash-Pseudo-Befehl, den nur Bash versteht. Jede Bash-Instanz beinhaltet für sich eine Variable in der das aktuelle Arbeitsverzeichnis gespeichert wird. Wenn du jetztcdin einem Skript ausführst, wird das Arbeitsverzeichnis nur in der neuen Bash-Instanz ausgeführt, die das Skript bearbeitet, aber nicht in der alten Instanz.