staging.inyokaproject.org

cat ,grep os-release

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

msebastian100

Avatar von msebastian100

Anmeldungsdatum:
13. Oktober 2016

Beiträge: 36

Hallo ich wollte cat und grep die os-Version in einer if Abfrage machen. Ich habe auch schon gegooglt, aber viele komplizierte Beispiele gefunden.. Ich dachte mir, das muss doch auch einfacher gehen.

Ich dachte an sowas - ich bin mir nicht sicher, wie ich den Befehl aufbauen muss:

1
2
3
4
if cat /etc/os-release | grep 'PRETTY_NAME=' | grep 'Ubuntu'
then 
echo "Ubuntu"
else echo "Kein Ubuntu"

Mit freundlichen Grüßen msebastian100

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

Wie wäre es damit?

1
grep -Pq '(?<=^NAME\=")Ubuntu' /etc/os-release && echo "Ubuntu" || echo "kein Ubuntu"

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

In der Bash sollte™ auch sowas gehen:

[[ "$(uname -v)" == *Ubuntu* ]] && echo Ubuntu || echo kein Ubuntu

Ich weiß nur gerade gar nicht, ob der Kernel Ubuntu im Namen trägt.

schollsky

Anmeldungsdatum:
3. Dezember 2012

Beiträge: 1730

Mit

uname -a

sollte es gehen.

fleet_street

Top-Wikiautor
Avatar von fleet_street

Anmeldungsdatum:
30. August 2016

Beiträge: 2400

msebastian100 schrieb:

... - ich bin mir nicht sicher, wie ich den Befehl aufbauen muss:

https://openbook.rheinwerk-verlag.de/shell_programmierung/shell_006_000.htm ff.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Es gibt noch lsb_release - zumindest auf Ubuntus.

msebastian100

(Themenstarter)
Avatar von msebastian100

Anmeldungsdatum:
13. Oktober 2016

Beiträge: 36

fleet_street schrieb:

msebastian100 schrieb:

... - ich bin mir nicht sicher, wie ich den Befehl aufbauen muss:

https://openbook.rheinwerk-verlag.de/shell_programmierung/shell_006_000.htm ff.

Danke das sie sich die Mühe gemacht haben einen Link zu posten! Wow 😉

Mann kann eine Webseite lesen bzw. auswendig lernen. Auch dann, wenn du bash oder eine andere Programmiersprache zu 80% kannst gibt es trotzdem Momente wo du eine Idee hast, aber grade diese Idee nicht umgesetzt bekommst. So gibt es dann nette Leute, die dir dann einen Lösungsansatz oder die Lösung geben. " Und du dir dann vielleicht denkst: "ach so einfach war die Lösung..." so kannst du dann etwas daraus lernen.

Und für die Leute die neu in bash ist es kontraproduktiv denen eine Webseite hinzuwerfen. Denn die sind damit meist überfordert.

msebastian100

(Themenstarter)
Avatar von msebastian100

Anmeldungsdatum:
13. Oktober 2016

Beiträge: 36

seahawk1986 schrieb:

Wie wäre es damit?

1
grep -Pq '(?<=^NAME\=")Ubuntu' /etc/os-release && echo "Ubuntu" || echo "kein Ubuntu"

ChickenLipsRfun2eat schrieb:

In der Bash sollte™ auch sowas gehen:

[[ "$(uname -v)" == *Ubuntu* ]] && echo Ubuntu || echo kein Ubuntu

Ich weiß nur gerade gar nicht, ob der Kernel Ubuntu im Namen trägt.

Vielen Dank, das funktioniert!

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17630

1
[[ "$(uname -v)" == *Ubuntu* ]] && echo Ubuntu || echo kein Ubuntu

Eine gute, klare Lösung.

Wer eine Obsession für die Vermeidung von Redundanz hat, der stört sich natürlich an den fast identischen Kommandos:

1
2
echo Ubuntu 
echo kein Ubuntu

Man könnte das "Ubuntu" so oder so ausgeben, mal mit "kein", mal ohne:

1
[[ "$(uname -v)" == *Ubuntu* ]] || echo -n kein ; echo Ubuntu

"Ubuntu" haben wir in Test und Output - wieso nicht in einer Variablen speichern?

1
u=Ubuntu; [[ "$(uname -v)" == *$u* ]] || echo -n kein ; echo $u

Jetzt haben wir aber noch 2 echos.

1
u=Ubuntu; [[ "$(uname -v)" == *$u* ]] || a=kein ; echo $a $u

Kürzer ist freilich

1
uname -v | egrep -o "[A-Z][^ ]+ " | head -1

nur dass der User bei einem Nichtubuntu nicht "kein Ubuntu", sondern "Kali" oder sowas zu lesen bekommt.

Das kann man auch mit

1
cut -f 1 -d' ' /proc/version_signature 

erreichen.

msebastian100

(Themenstarter)
Avatar von msebastian100

Anmeldungsdatum:
13. Oktober 2016

Beiträge: 36

user_unknown schrieb:

1
[[ "$(uname -v)" == *Ubuntu* ]] && echo Ubuntu || echo kein Ubuntu

Eine gute, klare Lösung.

Wer eine Obsession für die Vermeidung von Redundanz hat, der stört sich natürlich an den fast identischen Kommandos:

1
2
echo Ubuntu 
echo kein Ubuntu

Man könnte das "Ubuntu" so oder so ausgeben, mal mit "kein", mal ohne:

1
[[ "$(uname -v)" == *Ubuntu* ]] || echo -n kein ; echo Ubuntu

"Ubuntu" haben wir in Test und Output - wieso nicht in einer Variablen speichern?

1
u=Ubuntu; [[ "$(uname -v)" == *$u* ]] || echo -n kein ; echo $u

Jetzt haben wir aber noch 2 echos.

1
u=Ubuntu; [[ "$(uname -v)" == *$u* ]] || a=kein ; echo $a $u

Kürzer ist freilich

1
uname -v | egrep -o "[A-Z][^ ]+ " | head -1

nur dass der User bei einem Nichtubuntu nicht "kein Ubuntu", sondern "Kali" oder sowas zu lesen bekommt.

Das kann man auch mit

1
cut -f 1 -d' ' /proc/version_signature 

erreichen.

Vielen Dank, Das hat mir sehr weiter geholfen ☺

Antworten |