Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?
24.07.2021, 22:05:22

.
Einloggen mit Benutzername, Passwort und Sitzungslänge

Mitglieder
  • Mitglieder insgesamt: 25776
  • Letzte: joba48
Statistiken
  • Beiträge insgesamt: 746688
  • Themen insgesamt: 60054
  • Heute online: 375
  • Am meisten online: 2287
  • (22.01.2020, 19:20:24)
Benutzer Online

Autor Thema:  Wie Name von Script mit bash ermitteln ?  (Gelesen 898 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Wie Name von Script mit bash ermitteln ?
« am: 04.02.2021, 10:02:11 »
Ich möchte den Namen eines bash Scriptes mit bash von sich selbst aus geben. Was ich gefunden habe ist das folgende, was mir aber eben noch nicht ausschließlich den Namen der Scriptdatei aus gibt wie z.B. so etwas "dateiname_des_script.sh"

Beispiele für das was ich gefunden habe:

Ausgabe des Dateipfades:
DIR=$( (cd -P $(dirname $0) && pwd) )
echo $DIR

Bei folgendem erfolgt die Ausgabe de Dateipfades un des Scriptnamens, obwohl ich hier gedacht hätte das hier nur die Ausgabe des Dateinamens erfolgt:

Kommandozeilen-Parameter

$0
    Name der Kommandoprozedur, die gerade ausgeführt wird

#!/bin/bash
echo 001
echo $0

Tatsächliche Ausgabe:
/home/user/und_so_weiter/dateiname.sh
Nachtrag:
Mittlerweile habe ich eine schöne Quelle gefunden. Muß ich bloß noch heute Abend durch arbeiten:
https://stackoverflow.com/questions/192319/how-do-i-know-the-script-file-name-in-a-bash-script
« Letzte Änderung: 04.02.2021, 12:25:51 von Jan.Tenner »

Re: Wie Name von Script mit bash ermitteln ?
« Antwort #1 am: 04.02.2021, 12:42:54 »
Auflösung zur Frage:

In der folgenden Variante kann man sich den Dateinamen des Scriptes ausgeben lassen, in dem sich die Abfrage selbst befindet:
#!/bin/bash
filename=$(basename $0)
echo "Der Name des Scriptes lautet: $filename"

Quelle: https://stackoverflow.com/questions/192319/how-do-i-know-the-script-file-name-in-a-bash-script

Und so geht es noch ein bißchen kürzer:
#!/bin/bash
echo Der Name des Scriptes lautet: "$(basename $0)"
« Letzte Änderung: 04.02.2021, 13:10:26 von Jan.Tenner »

TI99-4A

  • Gast
Re: Wie Name von Script mit bash ermitteln ?
« Antwort #2 am: 04.02.2021, 15:07:53 »
Und damit man nicht immer Rätseln muß, dann gleich den Scriptnamen für den Fenstertitel eingeben:
echo -e '\033]0;Beliebiger Scriptname.sh\007'
« Letzte Änderung: 04.02.2021, 15:11:19 von TI99-4A »

Re: Wie Name von Script mit bash ermitteln ?
« Antwort #3 am: 04.02.2021, 22:37:18 »
Und damit man nicht immer Rätseln muß, dann gleich den Scriptnamen für den Fenstertitel eingeben:

echo -e '\033]0;Beliebiger Scriptname.sh\007'

Sowohl bei Ausführung in der Konsole als auch bei Ausführung in einer .sh Datei bekomme ich keine Ausgabe.
Wie verwendet man die Codezeile ?
Was gibt sie bei entsprechender Verwendung aus ?
« Letzte Änderung: 04.02.2021, 22:44:00 von Jan.Tenner »

TI99-4A

  • Gast
Re: Wie Name von Script mit bash ermitteln ?
« Antwort #4 am: 05.02.2021, 01:36:41 »
Die Codezeile verwendet man in einem Script.
Es kommt darauf an welche Bash und welches Terminal man verwendet.
Da gibt es reichlich, aber ich verwende die, die bei Linux mit dabei ist.

Bei mir fangen Scripte mit der She Bang immer so an (1. Zeile im Script):
#!/bin/bash
Du kannst Dir einen Wolf suchen warum mache Empfehlungen nicht funktionieren.
Nicht jedes Terminal beherrscht die gewünschten Funktionen.
Leider ist da Trial and Error angesagt. Habe schon so manche Stunde mit diesen blöden Parametern verbracht.

Als alter Hase (Baujahr 1955) trauere ich öfter nach der präzisen Syntax eines Pascal (Borland Turbo-Pascal) nach.
Man schaue sich nur die Problematik zu Leerzeichen in der Bash (Spaces) an.

EDIT: Text korrigiert
« Letzte Änderung: 05.02.2021, 16:07:42 von TI99-4A »

Re: Wie Name von Script mit bash ermitteln ?
« Antwort #5 am: 05.02.2021, 10:47:41 »
Die Codezeile verwendet man in einem Script.
Es kommt darauf an welche Bash(Terminal) man verwendet.
Da gibt es reichlich, aber ich verwende die, die bei Linux mit dabei ist.

Bei mir fangen Scripte mit der She Bang immer so an (1. Zeile im Script):
Code: [Auswählen]

#!/bin/bash

Und damit man nicht immer Rätseln muß, dann gleich den Scriptnamen für den Fenstertitel eingeben:

echo -e '\033]0;Beliebiger Scriptname.sh\007'

Ich erhalte mit der Codezeile sowohl in der Konsole, als auch bei Ausführung in einer .sh Datei, unter Verwendung von #!/bin/bash eine 1A Leerzeile. Was erhältst du ?

Re: Wie Name von Script mit bash ermitteln ?
« Antwort #6 am: 05.02.2021, 12:36:11 »
Es kommt darauf an welche Bash(Terminal) man verwendet.
Shell (bash) und Terminal(programm) sind zwei Paar Schuhe!

Re: Wie Name von Script mit bash ermitteln ?
« Antwort #7 am: 05.02.2021, 15:56:59 »
Ich erhalte mit der Codezeile sowohl in der Konsole, als auch bei Ausführung in einer .sh Datei, unter Verwendung von #!/bin/bash eine 1A Leerzeile. Was erhältst du ?
Die Ausgabe im Terminal ist tatsächlich eine Leerzeile. Aber du solltest vielleicht auch genau lesen, was dazu geschrieben wurde. Diese Kommando schreibt den Namen in den Fenstertitel. 8)

TI99-4A

  • Gast
Re: Wie Name von Script mit bash ermitteln ?
« Antwort #8 am: 05.02.2021, 16:01:23 »
Der Befehl echo schließt normalerweise mit einen Zeilenvorschub ab. Daher siehst Du eine Leerzeile. Um den Zeilenvorschub zu unterdrücken einfach ein -n nach dem echo anfügen:echo -en '\033]0;Beliebiger Scriptname.sh\007'Zur Info: -e erlaubt ANSI-Steuerzeichen im Text und -n unterdrückt den Zeilenvorschub.
Beides kann man so kombinieren: -en

Re: Wie Name von Script mit bash ermitteln ?
« Antwort #9 am: 18.03.2021, 02:17:25 »
Diese Kommando schreibt den Namen in den Fenstertitel.
Das hat eine Weile gedauert bis ich das mitbekommen habe. Ich habe erst immer nur die Leerzeile gesehen und und nicht den geänderten Namen im Terminal.

Mit dem folgenden kann ich mir den Scriptnamen ausgeben lassen:
#!/bin/bash
echo Der Name des Scriptes lautet: "$(basename $0)"

Und mit dem folgenden kann ich mir "Wunschname" in dem Kopf des Terminal Fensters aus geben lassen
#!/bin/bash
echo -e '\033]0;Wunschname\007'

Was mir jedoch nicht gelingt, ist beides miteinander erfolgreich so zu kombinieren, das im Terminalkopf, der Name des Scrits ausgegeben wird.

Folgend ein fehlerhafter Versuch:
#!/bin/bash
echo -e '\033]0;"$(basename $0)"\007'

Bei diesem, bekomme folgenden Ausdruck im Kopf des Terminals ausgegeben, jedoch nicht den Scriptnamen:
$(basename $0)"
« Letzte Änderung: 18.03.2021, 02:26:50 von Jan.Tenner »

Re: Wie Name von Script mit bash ermitteln ?
« Antwort #10 am: 18.03.2021, 04:32:41 »
Moin,
hier  mal die 3 Varianten in einem Script..
#!/bin/bash

#echo Der Name des Scriptes lautet: "$(basename $0)"
#echo -e '\033]0;Wunschname\007'
echo -e '\033]0;'$(basename $0)'\007'
read
Gruß
Wolfgang

Re: Wie Name von Script mit bash ermitteln ?
« Antwort #11 am: 18.03.2021, 10:02:17 »
echo -e '\033]0;'$(basename $0)'\007'
Ahh. Mit den unterschiedlichen Hochkommavarianten kann man das machen. Das ist gut zu wissen.
« Letzte Änderung: 18.03.2021, 10:10:03 von Jan.Tenner »