Kommandosubstitution?

moonlook

!alleswissenwollen!
Beiträge
403
Hi,

ich würd gern mal erfahren (und zwar am besten genau und mit Beispiel), was Kommandosubstitution genau bedeutet.
Irgendwie finde ich leine vernünftige Erklärung für diesen Begriff beim Shellscripten.?(
 

Doomshammer

Aushilfs-Blowfish
Beiträge
95
Kommandosubstitution ist das ausfuehren eines Kommandos (oder Kommandofolge) direkt in eine Variable.

Da ganze funktioniert so:

Alte (nicht mehr uebliche) Form: Backticks
varibale=`cat /proc/cpuinfo`;

Neue Form: $()
variable=$(cat /proc/cpuinfo);
 

moonlook

!alleswissenwollen!
Beiträge
403
Verstehe ich richtig, das eine Abfolge wie z.B.:
ps aux | grep irgendwas
in einer Variable definiert werden kann und dann bei Benutzung der Variable die Abfolge.abgearbeitet wird?

Ist das alles?
 

moonlook

!alleswissenwollen!
Beiträge
403
Mensch Doomshammer,
Du glaubst ja gar nicht, wie lang ich darüber nachgedacht und mir den Kopf zerbrochen hab!!!
So einfach, tststss..
:]!!REAL THNX, MAN!!:]
 

Doomshammer

Aushilfs-Blowfish
Beiträge
95
No Prob.

export PAGER='cat' && man $(echo $SHELL | sed -e 's/.*\/\(.*\)/\1/') | grep -n 'command substitution' | awk '{print $1}' | sed -e 's/://'

Oder einfach das machen und in den Ausgegebenen Zeilen der man-pages Deiner Shell nachlesen ;)
 

moonlook

!alleswissenwollen!
Beiträge
403
Das auch inner Shell-Manpage steht, hätt ich mir denken können. Nur ist die so fett, dass ich danach echt keine Verlangen hatte.
Aber wie kommst Du zu solch Konstrukten?
Ist Sed so gut nutzbar( regex & Co.)? Dann sollt ich mir den mal genauer anschauen.

Ein paar Tips währen nicht schlecht, was man als Doku mit einführenden Beispielen nutzen kann!
 

Doomshammer

Aushilfs-Blowfish
Beiträge
95
Original geschrieben von moonlook
Aber wie kommst Du zu solch Konstrukten?
Das sind einfach ein paar Spielereien. Diese Einzeiler kann man auch auf anderem Weg loesen, aber es macht immer wieder Spass ein paar "komplexere" Konstrukte zu basteln. Macht auch im Perl viel Spass (siehe. Sig.) ;)

Original geschrieben von moonlook
Ist Sed so gut nutzbar( regex & Co.)? Dann sollt ich mir den mal genauer anschauen.
sed, (g)awk & Co. gehoeren eingentlich zu den Standardtools. die jeder beherrschen sollte, der Shell-Scripting unter *iX betreibt (IMHO)

Links, hab ich so keinen parat. Hab eigentlich alles aus den man-pages und meinen O'Reilly Buechern. Falls Du Fragen hast, versuch ich aber gern sie zu beantworten.
 

rup

Haudegen
Beiträge
627
sed oder awk, das ist IMHO Geschmackssache, beides muss man sicher nicht beherschen . Awk ist eine komplette Programmiersprache, allerdings sehr langsam.
Meist wird awk nur dazu verwendet innerhalb einer Zeile ein Textmuster zu suchen, die Zeile selbst findet man mit grep schneller.
 

rup

Haudegen
Beiträge
627
Datenmanipulation unter Unix sed & awk

http://www.aip.de/~dieter/Documentation/Betriebssysteme/UNIX/sed und awk.pdf
 
Zuletzt bearbeitet:

Doomshammer

Aushilfs-Blowfish
Beiträge
95
Original geschrieben von rup
sed oder awk, das ist IMHO Geschmackssache, beides muss man sicher nicht beherschen . Awk ist eine komplette Programmiersprache, allerdings sehr langsam.
Meist wird awk nur dazu verwendet innerhalb einer Zeile ein Textmuster zu suchen, die Zeile selbst findet man mit grep schneller.

grep gehoert ebenfalls zu den Tools die man beherrschen sollte. Ebenso sind auch Tools wie find oder die Shelleigenen Schleifenformen IMHO ein muss. Wer schnell und effizient in der Shell arbeiten und programmieren moechte, kommt da nicht drumrum.

Bsp:
Warum sollte ich ein C-Programm schreiben das mir Bestimmte Dateien loescht, wenn ich es mit den Standard-UNIX-Tools um laengen schneller erledigen kann.

Code:
find /usr/src/linux -name *.h -exec rm -f {} \;
 

moonlook

!alleswissenwollen!
Beiträge
403
Thnx, Rup, das ist echt ein gutes Teil zur Einführung!
Füher hab ich mich immer gefragt, wozu die massenhaften Tools zur Textbearbeitung unter Unix/Linux gut sein sollen und hab das alles weit von mir geschoben.
Nach und nach brauche ich aber solche Tools wie sed, grep und Programmiersprachen wie awk/perl usw., um effizient auf der Konsole zu arbeiten, wie Doomshammer schon sagte.

Und gleich mit Shellscripten perfekt Aufgaben zu erledigen ist einfach nicht möglich, ohne solche o.g. Tools zu kennen.
Grundlagentraining nenn ich das und werds in nächster Zukunft auch betreiben.
Ich denk, dass mich das Ganze genau so anregen wird wie der vim, der immer noch jederzeit bei näherer Beschäftigung
Quell neuer Kenntnisse und Freude ist (Meinung aller Bekannten, die ich darauf gebracht habe, den vim als Standardedi zu präferieren):P
Um eventuellen Flamewars aus dem Wege zu gehen, gilt dies sicherlich auch für andere Edi's wie emacs&co;)

Alles in allem danke! Da hab ich dann erstma die nächsten Tage, Wochen genug zu tun.
 

Doomshammer

Aushilfs-Blowfish
Beiträge
95
Original geschrieben von moonlook
Ich denk, dass mich das Ganze genau so anregen wird wie der vim, der immer noch jederzeit bei näherer Beschäftigung Quell neuer Kenntnisse und Freude ist (Meinung aller Bekannten, die ich darauf gebracht habe, den vim als Standardedi zu präferieren) :P

Nunja, vi(m) regelt ja nunmal auch! :)
http://doomshammer.ath.cx/~doomy/vi.jpg
http://doomshammer.ath.cx/~doomy/vim-html.jpg
http://doomshammer.ath.cx/~doomy/mutt.jpg (vim als Editor fuer mutt)
 

Ähnliche Themen

Seit Ubuntu 18.04.5 LTS vermisse ich im Ordnermenü die Option Erstellungsdatum

Partitionsschema für Manjaro Gnome Dualboot mit Windows 10

Keine grafische Oberfläche (Debian Installation)

Port Forwarding mit iptables

Telefoninterview (Wie sich auf Bash-Shell-Fragen vorbereiten?)

Oben