# Einführung in Linux



## Kirby.exe (10. Apr 2020)

Könnte mir jemand von euch erläutern was die folgenden Befehle tuen?


```
1. ls -lct /etc | tail -1 | awk '{print $7, $6, $8}'
2. cat /proc/version
3. neofetch
    Falls das Programm noch nicht installiert ist, so führen Sie die folgenden Schritte vorher aus:
    3.1 sudo add-apt-repository ppa:dawidd0811/neofetch 
    3.2 sudo apt-get update
    3.3 sudo apt-get install neofetch
    Aus Datenschutzgründen können Sie die erste Zeile Account@Rehner löschen
4. od -t u1 -N 6 /dev/random | head -1
```


----------



## kneitzel (10. Apr 2020)

Also erst einmal die Frage: Wenn Du dich mit Linux beschäftigen willst/sollst: Hast du denn schon ein Linux System installiert? So wie es aussieht, basiert die Aufgabe oder der Text auf Ubuntu.

Generell solltest Du Dich mit dem Befehl "man" auseinander setzen. Mit dem Befehl kannst Du dir sogenannte manual pages also Handbuch Seiten anzeigen lassen.

Also probier doch einmal:
man ls
man tail
man awk
man cat
man neofetch
man od

ggf auch
man sudo
man add-apt-repository
man apt-get

Wie Du an den Links sehen kannst: Diese manual pages findet man auch per Google 

Bleibt maximal noch die Frage, was denn /proc/version ist. Aber auch da wird sich einiges finden lassen denke ich mal 
In ganz kurz: /proc ist eine art virtuelles Filesystem, welches eine Schnittstelle zum Kernel darstellt. Über /proc kann man Dinge auslesen (/proc/version kannst Du ja mal raten - was könnte der Kernel in version ausgeben?) aber auch teilweise dem Kernel Daten geben...


----------



## Kirby.exe (10. Apr 2020)

Mal eine blöde Frage, aber würden diese Befehle auch mit MacOS funktionieren (da es ja UNIX basiert ist) oder sollte ich mir eine VM mit Ubuntu installieren?


----------



## kneitzel (10. Apr 2020)

Viele Befehle sind gleich. Da wird also einiges funktionieren. (Apple hat auf gnu Tools gesetzt und nicht auf System V wie z.B. *BSD).

Aber das sind nur die Tools selbst. mac OS hat kein /proc, in /etc wirst du weniger Dateien finden, apt gibt es da nicht. Als Alternative könntest Du Homebrew verwenden. Darüber könntest Du z.B. neofetch installieren.

Die Frage ist, was Du da überhaupt genau machst. Ist es eine Vorlesung oder so zu Linux? Dann wäre meine Empfehlung, eine Linux VM aufzusetzen, damit Du wirklich alles nachvollziehen kannst.

Ist es nur eine Spielerei oder so, dann könnte man schauen, was man auf dem Mac nutzen kann und den Rest einfach ignorieren.


----------



## Kirby.exe (10. Apr 2020)

Es ist ein Vorlesungsmodul  Betriebssysteme heißt es xD Na ich installiere mir einfach eine VM  Danke für deine Hilfe


----------



## mihe7 (10. Apr 2020)

Da wir @Kirby_Sike ja kennen und davon ausgehen können, dass er es sowieso nachvollziehen wird:

1. ls = list directory, entspricht in etwa dem Befehl "dir" unter Windows. ls /etc zeigt also die Inhalte des Verzeichnisses /etc an. Das Flag -l sorgt für eine "lange" Ausgabe, d. h. hier werden Berechtigungen, Größen und Zeiten angezeigt. Das Flag -c bedeutet, dass als Zeit die ctime (Zeit der letzten Aktualisierung der Statusinformation, z. B. bei Änderung der Berechtigungen) verwendet wird und die Kombination -lct sortiert den Spaß nach ctime (neueste zuerst).

Die Ausgabe könnte dann so aussehen:

```
...
-rw-r--r--  1 root     root       3108 Aug 15  2019 passwd
...
-rw-r--r--  1 root     root        474 Mär 14  2008 fstab
-rw-r--r--  1 root     root        111 Mär 14  2008 magic
-rw-r--r--  1 root     root       2064 Mär 14  2008 netscsid.conf
```

Diese Ausgabe wird nun über die Pipe als Eingabe an den Befehl tail -1 weitergeleitet. tail -1 zeigt die letzte Zeile an. D. h. ls -lct | tail -1 zeigt die Berechtigungen, Größe etc. der Datei mit den ältesten Statusinfos an:

```
-rw-r--r--  1 root     root       2064 Mär 14  2008 netscsid.conf
```

Die Ausgabe wird wieder über die Pipe als Eingabe an den Befehl awk weitergegeben. AWK ist eine Programmiersprache, die Datensätze in Felder aufteilt (analog String.split in Java), der print-Befehl oben sorgt dafür, dass die Felder 6-8 ausgegeben werden. Wenn Du richtig zählst wäre das `Mär 14  2008`, also das Datum.

Alles in allem gibt die Zeile also das Datum der ältesten Statusinfos im Verzeichnis /etc aus.

2. Zeigt den Inhalt von /proc/version an. cat ist unter Windows mit "type" vergleichbar. /proc ist in der Regel der Mount-Point eines Dateisystems, das Informationen über Prozesse in Dateiform enthält 

3. Es wurde versucht, ein Programm aufzurufen, das nicht installiert ist.

4. Liest 6 Bytes (-N 6) von /dev/random (Zufallszahlengenerator) und gibt jedes Byte (-t u1) in oktaler Form aus (od 1). Mittels head -1 wird sichergestellt, dass alle Zeilen außer der letzten angezeigt werden.  Die Ausgabe sieht dann z. B. so aus:

```
0000000 227 111 217 234 155  16
```


----------



## Kirby.exe (10. Apr 2020)

Na das wird wieder eine Exponentielle Lernkurve xD @mihe7 Danke für die detaillierte Erklärung


----------



## mihe7 (10. Apr 2020)

Kirby_Sike hat gesagt.:


> Na das wird wieder eine Exponentielle Lernkurve xD @mihe7 Danke für die detaillierte Erklärung


Das sieht schlimmer aus als es ist.


----------



## kneitzel (10. Apr 2020)

mihe7 hat gesagt.:


> 3. Es wurde versucht, ein Programm aufzurufen, das nicht installiert ist.



Man soll es ja erst einmal installieren, so man es noch nicht installiert hat. Dazu wurde ein Ubuntu Weg zur Installation über ein ppa mit angegeben.

neofetch ist ein Script, welches Informationen zu dem System anzeigt. Auf der Homepage sieht man dann auch zwei Screenshots, wie die Ausgabe aussehen kann: https://github.com/dylanaraps/neofetch


----------



## Kirby.exe (20. Apr 2020)

Mal eine Frage:
Es gibt in Linux ja den Befehl `ps -ef` welcher die Prozessliste anzeigen sollte. Was macht -ef im Detail ? Ich versuche gerade mir die Prozessliste auf meinem Mac auszugeben, jedoch gibt es ps -ef nicht 

So sieht es bei mir im Moment aus, jedoch ist das meiner Meinung nicht ganz die Prozessliste:


----------



## httpdigest (20. Apr 2020)

man ps

-e : Select all processes.  Identical to -A.
-f : Do full-format listing. This option can be combined with many other UNIX-style options to add additional columns. It also causes the command arguments to be printed.  When used with -L, the NLWP (number of threads) and LWP
 (thread ID) columns will be added.  See the c option, the format keyword args, and the format keyword comm.

-ef ist nur die Kurzschreibweise für -e -f


----------



## Kirby.exe (20. Apr 2020)

Danke xD Ich hatte das schonmal eingegeben und war sehr verwirrt so eine riesige Nachricht zu bekommen, welche für mich etwas nach Erro Meldung aussah xD Könntest du mir erklären was da "&" tut nach `./test &`


----------



## httpdigest (20. Apr 2020)

https://unix.stackexchange.com/questions/329432/what-does-the-ampersand-in-cat-mean-in-linux
https://superuser.com/questions/488434/running-linux-commands-in-the-background-ampersand-or-screen


----------

