Jokerzeichen/Wildcard: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=Was ist das?=
+
= Was ist das? =
* Bash verwendet den Asterisk "*" als Platzhalter für beliebige Zeichen oder Zeichenfolgen in Dateinamen oder Verzeichnispfaden.
+
* Bash verwendet den Asterisk '''*''' als Platzhalter für beliebige Zeichen oder Zeichenfolgen in Dateinamen oder Verzeichnispfaden.
* Die Wildcard "*" kann in Kombination mit anderen Zeichen verwendet werden, um gezielt nach bestimmten Dateien zu suchen oder Aktionen auf eine Gruppe von Dateien anzuwenden.
+
* Die Wildcard '''*''' kann in Kombination mit anderen Zeichen verwendet werden, um gezielt nach bestimmten Dateien zu suchen oder Aktionen auf eine Gruppe von Dateien anzuwenden.
  
 
= Einführung =
 
= Einführung =
 
+
* '''mkdir test'''
* mkdir test
+
* '''cd test/'''
* cd test/
+
* '''touch a ab abc abcd b cd efg haij'''
* touch a ab abc abcd abcd b cd efg haij
 
  
 
= Ein * steht für jedes Zeichen beliebig oft =
 
= Ein * steht für jedes Zeichen beliebig oft =
* ls *
+
* '''ls *'''
  
  a  ab  abc  abcd b  cd  efg  haij
+
  a  ab  abc  abcd b  cd  efg  haij
  
* ls ab*
+
* '''ls ab*'''
  
 
  ab  abc  abcd
 
  ab  abc  abcd
  
 
= Ein ? steht genau für ein Zeichen =
 
= Ein ? steht genau für ein Zeichen =
 +
* '''ls ?'''
  
* ls ?
+
a  b
  
a b
+
* '''ls ??'''
  
* ls ??
+
ab  cd
  
ab cd
+
* '''ls ???*'''
  
* ls ???*
+
abc  abcd  efg  haij
  
abc  abcd  efg haij
+
= Eine [] steht genau für ein Zeichen, das in der Klammer ist =
 
+
* '''ls [ab]'''
= Eine [] steht genau für ein Zeichen das in der Klammer ist =
 
 
 
* ls [ab]
 
  
 
  a  b
 
  a  b
  
* ls [abc]?
+
* '''ls [abc]?'''
  
 
  ab  cd
 
  ab  cd
  
= Eine [!] steht genau für ein Zeichen das nicht in der Klammer ist =
+
= Eine [!] steht genau für ein Zeichen, das nicht in der Klammer ist =
 
+
* '''ls [!abc]*'''
* ls [!abc]*
 
  
 
  efg  haij
 
  efg  haij
  
= Mit der {element1,element2} kann man Dateinamen generieren =
+
= Mit {element1,element2} kann man Dateinamen generieren =
 
+
* '''mkdir -v dir{1,2,3,4,5,6}'''
* mkdir -v dir{1,2,3,4,5,6}
 
  
  mkdir: Verzeichnis „dir1“ angelegt
+
  mkdir: Verzeichnis „dir1“ angelegt
  mkdir: Verzeichnis „dir2“ angelegt
+
  mkdir: Verzeichnis „dir2“ angelegt
  mkdir: Verzeichnis „dir3“ angelegt
+
  mkdir: Verzeichnis „dir3“ angelegt
  mkdir: Verzeichnis „dir4“ angelegt
+
  mkdir: Verzeichnis „dir4“ angelegt
  mkdir: Verzeichnis „dir5“ angelegt
+
  mkdir: Verzeichnis „dir5“ angelegt
 
  mkdir: Verzeichnis „dir6“ angelegt
 
  mkdir: Verzeichnis „dir6“ angelegt
  
 
= Backup mit Dateinamengenerierung =
 
= Backup mit Dateinamengenerierung =
 +
* '''cp -v xx{,.save}'''
  
* cp -v xx{,.save}
+
= Wenn kein Treffer erfolgt, wird das Sonderzeichen eingesetzt =
 
+
* '''rm -r *'''
= Wenn kein Treffer erfolgt wird das Sonderzeichen eingesetzt =
+
* '''mkdir -v *'''
 
 
* rm -r *
 
* mkdir -v *
 
  
 
  mkdir: Verzeichnis „*“ angelegt
 
  mkdir: Verzeichnis „*“ angelegt
  
* cd *t/*$
+
* '''cd *t/*$'''
  
 
= Entwerten kann man ein Sonderzeichen mit einem \ =
 
= Entwerten kann man ein Sonderzeichen mit einem \ =
 
+
* '''rm -rvi \*'''
* rm -rvi \*
 
  
 
  rm: Verzeichnis „*“ entfernen? n
 
  rm: Verzeichnis „*“ entfernen? n
Zeile 84: Zeile 76:
  
 
= Entwerten kann man mehrere Sonderzeichen mit '...' =
 
= Entwerten kann man mehrere Sonderzeichen mit '...' =
*rm -rvi '*'
+
* '''rm -rvi '*' '''
 +
 
 
  rm: Verzeichnis „*“ entfernen? n
 
  rm: Verzeichnis „*“ entfernen? n
  
 
= Aufgaben =
 
= Aufgaben =
  
* [[Aufgaben Wildcards]]
+
* Wie lautet der Befehl, um alle Dateien (keine Verzeichnisse notwendig) aus Ihrem Homeverzeichnis nach '''/tmp''' zu kopieren?
 +
<!-- * '''cp ~/* /tmp''' -->
 +
 
 +
* Wie lautet der Befehl, um alle Dateien aus '''/etc''', die mit dem Buchstaben k anfangen, in Ihr Homeverzeichnis zu kopieren?
 +
<!-- * '''cp /etc/k* ~''' -->
 +
 
 +
* Erstellen Sie ein Verzeichnis '''~/joker''' und kopieren Sie alle Dateien aus '''/etc''', die genau 5 Zeichen lang sind, in das Verzeichnis.
 +
<!-- * '''mkdir ~/joker''' -->
 +
<!-- * '''cp /etc/????? ~/joker''' -->
 +
 
 +
* Wie lautet der Befehl, um alle Dateien, die mit einem m beginnen und genau 5 Zeichen lang sind, zu löschen?
 +
<!-- * '''rm m????''' -->
 +
 
 +
* Wie lautet der Befehl, um alle Dateien, die mit einem m beginnen, mindestens 3 Zeichen lang sind und einem c enden, nach '''joker''' zu kopieren?
 +
<!-- * '''cp m?*c ~/joker''' -->
 +
 
 +
* Wie lautet der Befehl, um alle Dateien, die mit einem w oder z beginnen, genau 5 Zeichen lang sind und nicht mit einer Ziffer enden, nach '''joker''' zu kopieren?
 +
<!-- * '''cp [wz]???[!0123456789] ~/joker''' -->
 +
 
 +
* Geben Sie folgendes ein: 
 +
  '''touch {1,2,3,4,5,6,7,8,9,0}{1,2,3,4,5,6,7,8,9,0}sux'''
 +
 
 +
* Wie kann man mit Hilfe der Wildcards diese Dateien wieder löschen?
 +
<!-- * '''rm {1,2,3,4,5,6,7,8,9,0}{1,2,3,4,5,6,7,8,9,0}sux''' -->
 +
 
 +
* Wie lautet der Befehl, um alle Dateien zu löschen, die nicht mit einem a oder b beginnen?
 +
<!-- * '''rm [!ab]*''' -->
 +
 
 +
* Wie lautet der Befehl, um alle Dateien, die aus 4 Ziffern bestehen, anzuzeigen?
 +
<!-- * '''ls [0-9][0-9][0-9][0-9]''' -->

Aktuelle Version vom 12. Oktober 2025, 19:21 Uhr

Was ist das?

  • Bash verwendet den Asterisk * als Platzhalter für beliebige Zeichen oder Zeichenfolgen in Dateinamen oder Verzeichnispfaden.
  • Die Wildcard * kann in Kombination mit anderen Zeichen verwendet werden, um gezielt nach bestimmten Dateien zu suchen oder Aktionen auf eine Gruppe von Dateien anzuwenden.

Einführung

  • mkdir test
  • cd test/
  • touch a ab abc abcd b cd efg haij

Ein * steht für jedes Zeichen beliebig oft

  • ls *
a  ab  abc  abcd  b  cd  efg  haij
  • ls ab*
ab  abc  abcd

Ein ? steht genau für ein Zeichen

  • ls ?
a  b
  • ls ??
ab  cd 
  • ls ???*
abc  abcd  efg  haij

Eine [] steht genau für ein Zeichen, das in der Klammer ist

  • ls [ab]
a  b
  • ls [abc]?
ab  cd

Eine [!] steht genau für ein Zeichen, das nicht in der Klammer ist

  • ls [!abc]*
efg  haij

Mit {element1,element2} kann man Dateinamen generieren

  • mkdir -v dir{1,2,3,4,5,6}
mkdir: Verzeichnis „dir1“ angelegt  
mkdir: Verzeichnis „dir2“ angelegt  
mkdir: Verzeichnis „dir3“ angelegt  
mkdir: Verzeichnis „dir4“ angelegt  
mkdir: Verzeichnis „dir5“ angelegt  
mkdir: Verzeichnis „dir6“ angelegt

Backup mit Dateinamengenerierung

  • cp -v xx{,.save}

Wenn kein Treffer erfolgt, wird das Sonderzeichen eingesetzt

  • rm -r *
  • mkdir -v *
mkdir: Verzeichnis „*“ angelegt
  • cd *t/*$

Entwerten kann man ein Sonderzeichen mit einem \

  • rm -rvi \*
rm: Verzeichnis „*“ entfernen? n

Entwerten kann man mehrere Sonderzeichen mit "..."

  • rm -rvi "*"
rm: Verzeichnis „*“ entfernen? n

Entwerten kann man mehrere Sonderzeichen mit '...'

  • rm -rvi '*'
rm: Verzeichnis „*“ entfernen? n

Aufgaben

  • Wie lautet der Befehl, um alle Dateien (keine Verzeichnisse notwendig) aus Ihrem Homeverzeichnis nach /tmp zu kopieren?
  • Wie lautet der Befehl, um alle Dateien aus /etc, die mit dem Buchstaben k anfangen, in Ihr Homeverzeichnis zu kopieren?
  • Erstellen Sie ein Verzeichnis ~/joker und kopieren Sie alle Dateien aus /etc, die genau 5 Zeichen lang sind, in das Verzeichnis.
  • Wie lautet der Befehl, um alle Dateien, die mit einem m beginnen und genau 5 Zeichen lang sind, zu löschen?
  • Wie lautet der Befehl, um alle Dateien, die mit einem m beginnen, mindestens 3 Zeichen lang sind und einem c enden, nach joker zu kopieren?
  • Wie lautet der Befehl, um alle Dateien, die mit einem w oder z beginnen, genau 5 Zeichen lang sind und nicht mit einer Ziffer enden, nach joker zu kopieren?
  • Geben Sie folgendes ein:
 touch {1,2,3,4,5,6,7,8,9,0}{1,2,3,4,5,6,7,8,9,0}sux
  • Wie kann man mit Hilfe der Wildcards diese Dateien wieder löschen?
  • Wie lautet der Befehl, um alle Dateien zu löschen, die nicht mit einem a oder b beginnen?
  • Wie lautet der Befehl, um alle Dateien, die aus 4 Ziffern bestehen, anzuzeigen?