Unix / Linux - Shell-Zitationsmechanismen

Hallo, angehende Programmierer! Heute tauchen wir ein in die faszinierende Welt der Shell-Zitationsmechanismen in Unix und Linux. Als dein freundlicher Nachbarschafts-Computerlehrer bin ich hier, um dich auf dieser Reise Schritt für Schritt zu führen. Mach dir keine Sorgen, wenn du noch nie programmiert hast – wir beginnen mit den Grundlagen und arbeiten uns hoch. Also, hol dir eine Tasse Kaffee (oder Tee, wenn das dein Ding ist) und los geht's!

Unix / Linux - Quoting Mechanisms

Die Metazeichen

Bevor wir zur Zitation übergehen, müssen wir verstehen, was Metazeichen sind. In der Shell sind Metazeichen besondere Zeichen, die eine einzigartige Bedeutung haben. Sie sind wie das Gewürz in deinem Lieblingsgericht – eine kleine Menge geht weit!

Hier ist eine Tabelle mit häufigen Metazeichen:

Metazeichen Bedeutung
* Joker (passt auf jede Anzahl von Zeichen)
? Joker (passt auf jedes einzelne Zeichen)
> Ausgabenumleitung
< Eingabenumleitung
& Befehl im Hintergrund ausführen
; Befehlsteilere
() Befehle gruppieren
[] Zeichnenklasse

Schauen wir uns ein Beispiel an:

ls *.txt

In diesem Befehl ist das * ein Metazeichen. Es weist die Shell an, alle Dateien aufzulisten, die mit .txt enden. quite cool, oder?

Aber was ist, wenn wir diese Zeichen tatsächlich als reguläre Zeichen verwenden möchten? Das ist, wo die Zitation ins Spiel kommt!

Die einfachen Anführungszeichen

Einfache Anführungszeichen sind die einfachste Form der Zitation. Sie weisen die Shell an, alles, was sie umgibt, als Literalzeichen zu behandeln. Es ist, als ob du deine Worte in eine schützende Blase packst!

Lass uns ein Beispiel ausprobieren:

echo 'The * is a wildcard character'

Ausgabe:

The * is a wildcard character

Siehst du das? Das * hat sich nicht zu einer Liste aller Dateien erweitert. Es wurde als reguläres Zeichen behandelt.

Einfache Anführungszeichen sind großartig, wenn du den Literalwert jedes Zeichens in einer Zeichenkette erhalten möchtest. Selbst andere Zitationszeichen verlieren ihre besondere Bedeutung innerhalb einfacher Anführungszeichen!

echo 'This is a $VARIABLE with "double quotes" inside'

Ausgabe:

This is a $VARIABLE with "double quotes" inside

Alles innerhalb der einfachen Anführungszeichen wird genau so ausgegeben, wie es ist. Keine Eretzungen, keine Interpretationen. Nur reiner, ungeschminkter Text!

Die doppelten Anführungszeichen

Doppelte Anführungszeichen sind etwas flexibler als ihre einfachen Cousins. Sie erhalten die Literalwerte der meisten Zeichen, aber erlauben dennoch einige Eretzungen. Es ist wie eine halb-permeable Membran für deinen Text!

Hier ist, was doppelte Anführungszeichen erlauben:

  1. Variablenersetzung
  2. Befehlseretzung
  3. Backslash-Flucht

Schauen wir uns einige Beispiele an:

NAME="Alice"
echo "Hello, $NAME!"

Ausgabe:

Hello, Alice!

Die Variable $NAME wurde durch ihren Wert ersetzt. Magie!

Nun probieren wir die Befehlseretzung:

echo "Today's date is $(date)"

Ausgabe:

Today's date is Tue May 23 10:30:45 PDT 2023

Der Abschnitt $(date) wurde durch die Ausgabe des date-Befehls ersetzt. Ist das nicht toll?

Aber beachte, dass einige Zeichen innerhalb doppelter Anführungszeichen ihre besondere Bedeutung behalten:

echo "This is a newline: \n And this is a tab: \t"

Ausgabe:

This is a newline:
And this is a tab:

Die \n und \t wurden als Zeilenumbruch und Tabulator interpretiert.

Die Backquotes

Backquotes, auch als Backticks bezeichnet, sind eine ältere Form der Befehlseretzung. Sie sind wie Zeitreisende aus den frühen Tagen von Unix!

Hier ist, wie sie funktionieren:

echo "The current directory contains `ls | wc -l` files"

Ausgabe:

The current directory contains 42 files

Der Befehl zwischen den Backquotes (ls | wc -l) wird ausgeführt, und seine Ausgabe wird in die Zeichenkette eingesetzt.

Während Backquotes immer noch funktionieren, wird die modernere $()-Syntax normalerweise bevorzugt:

echo "The current directory contains $(ls | wc -l) files"

Dies tut dasselbe, ist aber einfacher zu verschachteln und, meiner bescheidenen Meinung nach, leichter zu lesen. Es ist wie der Übergang von einem Flip-Phone zu einem Smartphone – die grundlegende Funktion ist die gleiche, aber viel benutzerfreundlicher!

Alles zusammenfügen

Nun, da wir all diese Zitationsmechanismen erkundet haben, lassen wir sie in einem kleinen, spaßigen Skript kombinieren:

#!/bin/bash

NAME="World"
GREETING='Hello'
DATE=$(date +"%A, %B %d, %Y")

echo "$GREETING, $NAME!"
echo 'Today is not actually $DATE'
echo "But for real, today is $DATE"
echo "There are `ls | wc -l` files in this directory"

Wenn wir dieses Skript ausführen, könnten wir eine Ausgabe wie diese erhalten:

Hello, World!
Today is not actually $DATE
But for real, today is Tuesday, May 23, 2023
There are 42 files in this directory

Kannst du sehen, wie jede Art von Zitation die Ausgabe beeinflusst? Einfache Anführungszeichen erhalten alles literarisch, doppelte Anführungszeichen erlauben Eretzungen und Backquotes (oder $()) führen eine Befehlseretzung durch.

Und das war's, Leute! Du hast gerade deine ersten Schritte in die Welt der Shell-Zitationsmechanismen gemacht. Erinnere dich daran, dass Übung den Meister macht, also habe keine Angst, mit diesen Konzepten zu experimentieren. Bevor du es weißt, wirst du wie ein Profi zitieren!

Frohes Coden und möge die Shell mit dir sein! ??

Credits: Image by storyset