Set: Unterschied zwischen den Versionen

Aus Foxwiki
K Alaa Eldhawibi verschob die Seite Set nach Linuxbefehl: set, ohne dabei eine Weiterleitung anzulegen
K Textersetzung - „Man-Pages“ durch „Man-Page“
 
(40 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Sie können sich alle aktuell gesetzten Shellvariablen anzeigen lassen, indem Sie das Kommando <code>set</code> ohne  Optionen und  Argumente  verwenden.  Da die Ausgabe  des Kommandos recht umfangreich ist, lohnt sich eine Ausgabe mit dem Pager <code>less</code>:
{{DISPLAYTITLE:set}}
  archangel:~ # set | less
 
= Beschreibung =
* die das Verhalten der Shell maßgeblich beeinflussen
* Sie können sich alle aktuell gesetzten Shellvariablen anzeigen lassen, indem Sie das Kommando <code>set</code> ohne  Optionen und  Argumente  verwenden.   
 
Da die Ausgabe  des Kommandos recht umfangreich ist, lohnt sich eine Ausgabe mit dem Pager <code>less</code>:
  # set | less
  BASH=/bin/bash
  BASH=/bin/bash
  BASH_ARGC=()
  BASH_ARGC=()
  BASH_ARGV=()
  BASH_ARGV=()
  ... ca. 800 Zeilen wurden abgeschnitten ...
  ...
 
* Setzen von Shell-Optionen und Positionsparametern ($1 ... $n).  
* Einige Optionen: * v Gibt die eingelesenen Shell-Eingaben auf dem Bildschirm aus.
* x Gibt alle Kommandos vor der Ausführungen aus (--> zeigt Ersetzungen).
* n Liest die Kommandos von Shell-Skripten, führt sie jedoch nicht aus.
* Der Aufruf von set ohne Parameter liefert die aktuelle Belegung der Shell-Variablen.
* Außerdem kann set verwendet werden, um die Positionsparameter zu besetzen.
 
= Installation =
 
= Syntax =
set [Optionen] [Parameterliste]
== Parameter ==
== Optionen ==
 
= Konfiguration =
 
= Anwendung =
set eins zwei drei vier besetzt die Parameter mit $1=eins, $2=zwei, $3=drei und $4=vier. Da dabei auch Leerzeichen, Tabs, Zeilenwechsel und anderes "ausgefiltert" wird (genauer alles, was in der Variablen IFS steht), ist set manchmal einfacher zu verwenden, als die Zerlegung einer Zeile mit cut.
 
Die Belegung der Parameter kann auch aus einer Variablen (z.&nbsp;B.&nbsp; set $VAR) oder aus dem Ergebnis eines Kommandoaufrufs erfolgen.
set `date` # $1=Fri $2=Apr $3=28 $4=10:44:16 $5=MEZ $6=1999
echo "Es ist $4 Uhr"
Es ist 10:44:16 Uhr
 
'''Fallstricke'''
 
Wenn man beispielsweise den Output von "ls" bearbeiten möchte, gibt es zunächst unerklärliche Fehlermeldungen (set: unknown option):
ls -l > foo
echo "Dateiname Laenge"
while read LINE
  do
  set $LINE
  echo $9 $5
done < foo
rm foo
 
Da die Zeile mit dem Dateityp und den Zugriffsrechten beginnt, und für normale Dateien ein "-" am Zeilenbeginn steht, erkennt set eine falsche Option (z.&nbsp;B.&nbsp; "-rwxr-xr-x"). Abhilfe schafft das Voranstelle eines Buchstabens:
ls -l > foo
echo "Dateiname Laenge"
while read LINE
  do
  set Z$LINE
  echo $9 $5
done < foo
rm foo
 
Weitere Beispiele: Wenn ein Benutzer eingeloggt ist, wird ausgegeben seit wann. Sonst erfolgt eine Fehlermeldung.
if HELP=`who | grep $1`
then
  echo -n "$1 ist seit "
  set $HELP
  echo "$5 Uhr eingeloggt."
else
  echo "$1 ist nicht auffindbar"
fi
 
Ersetzen der englischen Tagesbezeichung durch die deutsche:
set `date`
case $1 in
  Tue) tag=Die;;
  Wed) tag=Mit;;
  Thu) tag=Don;;
  Sat) tag=Sam;;
  Sun) tag=Son;;
  *) tag=$1;;
esac
echo $tag $3.$2 $4 $6 $5
 
= Links =
== Dateien ==
 
== Man-Page ==
 
== Intern ==
 
== Weblinks ==
 
=Kontrollfragen=
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 1''
<div class="mw-collapsible-content">'''Antwort1'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 2''
<div class="mw-collapsible-content">'''Antwort2'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 3''
<div class="mw-collapsible-content">'''Antwort3'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 4''
<div class="mw-collapsible-content">'''Antwort4'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 5''
<div class="mw-collapsible-content">'''Antwort5'''</div>
</div>


[[Category:Linuxbefehle]]
[[Kategorie:Bash/Scripting]]
[[Category:Linux]]
[[Kategorie:Bash/Builtin]]
[[Category:Linux:LPIC:101]]
[[Kategorie:Bash/Konfiguration]]
[[Kategorie:Bash/Variablen]]
{{DEFAULTSORT:set}}

Aktuelle Version vom 6. November 2024, 12:54 Uhr


Beschreibung

  • die das Verhalten der Shell maßgeblich beeinflussen
  • Sie können sich alle aktuell gesetzten Shellvariablen anzeigen lassen, indem Sie das Kommando set ohne Optionen und Argumente verwenden.

Da die Ausgabe des Kommandos recht umfangreich ist, lohnt sich eine Ausgabe mit dem Pager less:

# set | less
BASH=/bin/bash
BASH_ARGC=()
BASH_ARGV=()
...
  • Setzen von Shell-Optionen und Positionsparametern ($1 ... $n).
  • Einige Optionen: * v Gibt die eingelesenen Shell-Eingaben auf dem Bildschirm aus.
  • x Gibt alle Kommandos vor der Ausführungen aus (--> zeigt Ersetzungen).
  • n Liest die Kommandos von Shell-Skripten, führt sie jedoch nicht aus.
  • Der Aufruf von set ohne Parameter liefert die aktuelle Belegung der Shell-Variablen.
  • Außerdem kann set verwendet werden, um die Positionsparameter zu besetzen.

Installation

Syntax

set [Optionen] [Parameterliste]

Parameter

Optionen

Konfiguration

Anwendung

set eins zwei drei vier besetzt die Parameter mit $1=eins, $2=zwei, $3=drei und $4=vier. Da dabei auch Leerzeichen, Tabs, Zeilenwechsel und anderes "ausgefiltert" wird (genauer alles, was in der Variablen IFS steht), ist set manchmal einfacher zu verwenden, als die Zerlegung einer Zeile mit cut.

Die Belegung der Parameter kann auch aus einer Variablen (z. B.  set $VAR) oder aus dem Ergebnis eines Kommandoaufrufs erfolgen.

set `date` # $1=Fri $2=Apr $3=28 $4=10:44:16 $5=MEZ $6=1999
echo "Es ist $4 Uhr"
Es ist 10:44:16 Uhr

Fallstricke

Wenn man beispielsweise den Output von "ls" bearbeiten möchte, gibt es zunächst unerklärliche Fehlermeldungen (set: unknown option):

ls -l > foo
echo "Dateiname Laenge"
while read LINE
 do
 set $LINE
 echo $9 $5
done < foo
rm foo

Da die Zeile mit dem Dateityp und den Zugriffsrechten beginnt, und für normale Dateien ein "-" am Zeilenbeginn steht, erkennt set eine falsche Option (z. B.  "-rwxr-xr-x"). Abhilfe schafft das Voranstelle eines Buchstabens:

ls -l > foo
echo "Dateiname Laenge"
while read LINE
 do
 set Z$LINE
 echo $9 $5
done < foo
rm foo

Weitere Beispiele: Wenn ein Benutzer eingeloggt ist, wird ausgegeben seit wann. Sonst erfolgt eine Fehlermeldung.

if HELP=`who | grep $1`
then
 echo -n "$1 ist seit "
 set $HELP
 echo "$5 Uhr eingeloggt."
else
 echo "$1 ist nicht auffindbar"
fi

Ersetzen der englischen Tagesbezeichung durch die deutsche:

set `date`
case $1 in
 Tue) tag=Die;;
 Wed) tag=Mit;;
 Thu) tag=Don;;
 Sat) tag=Sam;;
 Sun) tag=Son;;
 *) tag=$1;;
esac
echo $tag $3.$2 $4 $6 $5

Links

Dateien

Man-Page

Intern

Weblinks

Kontrollfragen

Testfrage 1

Antwort1

Testfrage 2

Antwort2

Testfrage 3

Antwort3

Testfrage 4

Antwort4

Testfrage 5

Antwort5