Beschreibung | Befehl | Anmerkung |
|
Hilfe zum Befehl ls | man ls | verlassen mit: q |
Hife zu Kommandos, in deren Text der Begriff vorkommt | man -k Begriff |
|
Anmelden | login |
Anmeldung als User paul mit Beibehaltung der alten Umgebung | su paul |
| (Path-Variablen, aktueller Pfad, .profile von paul wird nicht ausgeführt) |
Anmeldung als User paul in dessen Umgebung | su - paul |
| (.profile von paul wird ausgeführt, bestehende Rechte bleiben erhalten) |
|
Abmelden | logout |
Abmelden | exit |
|
Ausführung eines Befehls als User root | sudo BEFEHL |
|
Einschalten des Befehlsspeichers | history | doskey |
Ausführung des Befehls Nr. 216 der History | r 216 |
|
Herunterfahren des Systems | init 0 | als root |
Herunterfahren des Systems (LINUX) | halt |
Warmstart | init 6 |
Die Datei /etc/initab noch einmal ausführen | init q |
|
Ausgabe von Datum und Uhrzeit | date |
Setzen von Datum und Uhrzeit (SINIX) | date -s MMDDhhmm |
Setzen von Datum und Uhrzeit (LINUX) | date MMDDhhmm |
|
Überblick über das System (LINUX) | top | Auslastung, Prozesse |
|
Anzeige der Betriebssystem-Version | uname |
Anzeige der Betriebssystem-Version (alle Infos) | uname -a |
Anzeige des Rechnernamens | uname -n |
Anzeige des Namens des Terminals | tty |
|
Anzeige von RAM und SWAP (LINUX) | free |
|
Anzeige der CPU-Last (LINUX) | mpstat |
|
Anzeige der Plattendaten (freier und belegter Platz der Filesysteme) | df -k |
Anzeige des belegten Plattenplatzes vom Verzeichnis (in 512 kB-Blöcken) | du -s /home/paul |
|
Programm zum Anlegen von Usern und Gruppen | sysadm |
|
Anzeige des angemeldeten Users und seiner Gruppe | id | uid=104(uwe) gid=103(u504) |
Anzeige aller angemeldeten Benutzer | who |
Anzeige des eigenen Benutzernamens | who am i |
Anzeige der Anzahl der angemeldeten Benutzer | echo `who | wc -l ` |
Anzeige aller angemeldeten Benutzer mit Leerlaufzeit | who -u |
Anzeige des aktuellen Runlevels | who -r |
|
Nachricht an einen Benutzer senden | write user terminal<CR> |
write paul pts/20 | Angabe des Terminals ist notwendig, wenn der Benutzer mehrfach angemeldet ist. |
Zeile1<CR> | Text |
Zeile2<CR> |
<CTRL> + d | Ende der Eingabe |
|
Meldung an alle Benutzer: Inhalt der Datei dat1 | wall dat1 |
|
Ändern des Passworts | passwd |
Ändern des Passworts des Users paul | passwd paul | als root |
Löschen des Passworts des Users paul | passwd -d paul | als root |
|
Anzeige des aktuellen Verzeichnisses | pwd |
Verzeichniswechsel in den Pfad | cd Pfad |
Verzeichniswechsel ins Root-Verzeichnis | cd / |
Verzeichniswechsel eine Ebene nach oben | cd .. |
|
Anlegen des Verzeichnisses test | mkdir test |
Anlegen des Verzeichnisses test3 mit übergeordneten Ordnern | mkdir -p test/test2/test3 |
|
Anzeige der freigegebenen Verzeichnisse auf dem Server | showmount -e IP-Nummer |
|
Liste der Dateien im aktuellen Verzeichnis | ls |
Liste der Dateien im aktuellen Verzeichnis auch mit .-Dateien | ls -a |
Liste der Dateien im akt. Verzeichnis (lange Ausgabe mit Zugriffsrechten) | ls -l |
| 1.Byte: -=File; d=Directory; c=character-orientiertes Device; |
| b=blockorientiertes Device; l=symbolischer Verweis |
Liste der Dateien im aktuellen Verzeichnis (lange Ausgabe mit Index) | ls -li |
Liste der Dateien im akt. Verzeichnis (lange Ausgabe mit Speicherblöcken) | ls -ls |
Liste der Dateien im akt. Verzeichnis (lange Ausgabe mit Index und .-Dateien) | ls -la |
Liste der Dateien im akt. Verzeichnis absteigend sortiert nach Erstellungszeit | ls -latr |
Liste der Dateien im aktuellen Verzeichnis mit Unterverzeichnissen | ls -R |
Ausgabe von Infos über ein Verzeichnis | ls -d |
Ausgabe von Infos zum Kernel | ls -l /stand/unix |
|
Liste der offenen Dateien | lsof |
Liste der offenen Dateien des Users paul | lsof -u paul |
|
Anzeige des Inhalts der Datei .profile | cat .profile | Login-Skript |
Anzeige der System-Fehlermeldungen (siehe auch tail) | cat /etc/.osm | Sichern vor Neustart |
Anzeige des Inhalts der Dateien auf Band | cat -v /dev/tape |
Anhängen der Dateien dat.91 bis dat.95 an Datei dat.100 | cat dat.9[1-5] >> dat.100 |
|
Anzeige des Inhalts der Datei passwd im Verzeichnis etc (durchnummeriert) | nl -ba /etc/passwd |
Anzeige des Inhalts der Datei passwd im Verzeichnis etc (seitenweise) | pg /etc/passwd |
Anzeige der ersten 15 Zeilen der Datei dat1 | head -15 dat1 |
Anzeige der letzten 15 Zeilen der Datei dat1 | tail dat1 |
Anzeige der letzten Systemmeldungen (Fehler) | tail /var/log/messages |
|
Ausgabe der Zeilenzahl der Datei dat1 | wc dat1 | erste Zahl |
|
Das Erstellungs-Datum der Datei dat1 wird auf das aktuelle Datum gesetzt | touch dat1 |
| (wenn dat1 nicht vorhanden: Erzeugen einer leeren Datei; wie >dat1) |
|
Kopieren der Datei dat1 als Datei dat2 (dat2 wird überschrieben) | cp dat1 dat2 | copy |
Kopieren der Datei dat1 in das Unterverzeichnis uverz1 | cp dat1 ./uverz1 |
Kopieren aller Dateien auch in Unterverzeichnissen in das Verzeichnis /home/uwe | cp -r * /home/uwe |
|
Remote-Kopie der Datei /home/datei vom Rechner rm64rza: | rcp rm64rza:/home/datei /home |
| ins /home-Verzeichnis des aktuellen Rechners |
|
Die Datei dat1 in dat2 umbenennen | mv dat1 dat2 |
Die Datei dat1 in das Unterverzeichnis uverz1 verschieben | mv dat1 ./uverz1 |
|
Teilen der Datei dat1 in Stücke von anz Zeilen | split -l anz dat1 dat2 | Anzeige mit: wc dat1 |
Es entstehen dat2a, dat2b und dat2c | split -l 334 dat1 dat2 | mit jeweils 334 Zeilen + Rest |
|
Komprimieren der Dateien dat1 und dat2 zu dat1.Z und dat2.Z | compress dat1 dat2 |
Entkomprimieren der Datei dat1.Z zu dat1 | uncompress dat1.Z |
|
Löschen der Datei dat1 | rm dat1 |
Löschen aller Dateien im Verzeichnis außer denen, die mit einem Punkt beginnen | rm * |
Löschen des Verzeichnisses mit Dateien und Unterverzeichnissen | rm -r verz1 |
Löschen des Verzeichnisses (muss leer sein) | rmdir verz1 |
Löschen der Datei fragen? (" wegen ? im Name) | rm "fragen?" |
Löschen der Datei fragen? (\ wegen ? im Name) | rm fragen\? |
Löschen aller Dateien dat1 ab Home-Verzeichnis auch in Unterverzeichnissen | rm `find $HOME -name dat1 -print` |
|
Suche aller Dateien dat1 ab dem aktuellen Verzeichnis mit Unterverzeichnissen | find . -name dat1 -print |
ohne Ausgabe von Fehlermeldungen | find . -name dat1 -print 2>/dev/null |
durchnummeriert in Datei dat2 | find . -name dat1 -print 2>/dev/null | nl >dat2 |
Suche aller Dateien des Users paul ab dem aktuellen Verzeichnis | find . -user paul -print |
mit Unterverzeichnissen |
Suche aller Dateien des Users paul ab dem aktuellen Verzeichnis | find . -user paul -exec ls -l {} \; |
mit Unterverzeichnissen und langer Ausgabe |
Suche aller Dateien, die nicht Users paul gehören ab aktuellem Verzeichnis | find . ! -user paul -print |
Löschen aller Dateien dat1 im Home-Verzeichnis und den Unterverzeichnissen | find $HOME -name dat1 -exec rm {} \; |
Suche aller Dateien mit mehr als 100000 Blöcken | find / -size 100000 -print |
Suche aller Dateien kleiner als 2 Blöcke | find / -size -2 -print |
Suche aller Verzeichnisse ab dem aktuellen Verzeichnis | find . -typ d -print |
Suche aller Dateien ab dem aktuellen Verzeichnis ohne Anzeige der Verzeichnisse | find . -typ f -print |
Suche aller symbolischen Verweise ab root mit Unterverzeichnissen | find / -typ l -print |
|
Anzeige aller Zeilen der Datei /etc/passwd, in denen das Wort root vorkommt | grep root /etc/passwd |
Anzeige aller Zeilen der Datei, in denen das Wort root nicht vorkommt | grep -v root /etc/passwd |
Anzeige der Dateien im Home-Verzeichnis, in denen das Wort uwe vorkommt | grep -l uwe $HOME |
Anzeige aller Zeilen der Datei, in denen das Wort paul oder root vorkommt | egrep "paul|root" /etc/passwd |
Anzeige aller Zeilen der Datei, für welche User die Kornshell | grep '/ksh$' /etc/passwd |
als Start-Programm ($:am Zeilenende) eingetragen ist |
Suche nach "paul" mit Ausschneiden der ersten Spalte (-f1) | grep paul /etc/passwd | cut -d: -f1 |
das Trennzeichen für die Spalten ist ":" (-d:) |
Suche nach "paul:" nur am Zeilenanfang("^") | grep "^"$NUTZER":" /etc/passwd | in Variable NUTZER steht paul |
|
DOS-Dateien anzeigen | dosdir a: | dir |
DOS-Dateien anzeigen | dosls | dir |
Anzeige der DOS-Datei | doscat a:/a.txt | type |
Kopieren der Datei .profile als Datei profile.txt auf DOS-Diskette | doscp .profile a:profile.txt | copy |
(ohne Angabe der Zieldatei entsteht: profile.pro) |
Kopieren der Datei dat1.bmp von Diskette ins akt. Verzeichnis (r=RAW-Modus, binär) |
doscp -r a:dat1.bmp .
/dat1.bmp | copy |
Umwandlung der deutschen(-d) Umlaute in der Datei dat1 nach(-o) neuer Datei dat2 | dosfilt -d -o dat2 dat1 |
Formatieren der Diskette a: im DOS-Format | dosformat a: | format |
Löschen der Datei dat1.txt auf Diskette a: | dosrm a:/dat1.txt | delete |
Verzeichnis anlegen | dosmkdir | mkdir |
Verzeichnis löschen | dosrmdir | rmdir |
|
Drucken der Datei dat1 auf den Drucker k3410 | lp -dk3410 dat1 |
Drucken der Datei /etc/hosts auf den ASCII-Drucker | lpr -Pascii /etc/hosts | mit Umlauten |
Schöndruck der Datei dat1 auf den Drucker lp_net | a2ps -Plp_net dat1 |
|
Anzeige der Druckerwarteschlange | lpq -a |
Löschen des Druckauftrages Nr. 4 | lprm 4 |
|
Anzeige der Prozeßdaten | ps |
Anzeige der eigenen Prozeßdaten (lange Ausgabe) | ps -f |
Anzeige aller Prozeßdaten (lange Ausgabe) | ps -ef |
Anzeige der Prozeßdaten des Users paul (auch nach Abmelden) | ps -fu paul |
Anzeige der eigenen Prozeßdaten (auch nach Abmelden) | ps -fu $LOGNAME |
Anzeige aller Prozeßdaten mit User (LINUX) | ps aux |
Anzeige der Prozeßdaten des Daemon named (LINUX) | ps jax | grep named |
|
Abbrechen des Hintergrundprozesses 2950 | kill -15 2950 |
|
Anzeige der Prozesse, die auf das Floppy zugreifen | fuser /dev/dsk/f03ht |
|
Warten 10 Sekunden | sleep 10 |
Erzeugen eines Hintergrundprozesses für 5 min | sleep 300 & |
|
Wechseln in eine andere Gruppe | newgroup Gruppe |
|
Alle Dateien auch in Unterverzeichnissen werden der Gruppe Gruppe1 zugewiesen | chgrp -R Gruppe1 * |
| chgrp Gruppe Verz1 Verz2 | (LINUX) |
|
Für neu zu erstellende Dateien werden others alle Rechte genommen | umask 007 |
|
Für die Datei dat1 erhalten user, group, others das Execute-Recht | chmod +x dat1 |
Für die Datei dat1 verliert der eingetragene User das Schreib-Recht | chmod u-w dat1 |
|
Der User paul wird Besitzer aller Dateien auch in Unterverzeichnissen | chown -R paul * |
| chown User Verz1 Verz2 | (LINUX) |
|
Anzeige der periodischen Jobs | crontab -l | IMMER mit Parameter -l !!! |
Ändern der periodischen Jobs | crontab -e | mit vi-Kommandos bearbeiten |
|
Ausführen der Datei script zum Zeitpunkt (SINIX) | at -f script -t MMDDhhmm |
Ausführen der Datei script zum Zeitpunkt (LINUX) | at -f script MMDDhhmm |
Ausführen der Datei script zum Zeitpunkt mit mail-Benachrichtung (LINUX) | at -f script -m MMDDhhmm |
|
Anzeige der Aufträge in der AT-Warteschlange | atq |
Löschen des Auftrages aufjob aus der AT-Warteschlange | atrm aufjob |
|
Prüfen, ob der Dienst läuft (LINUX) | chkconfig | grep dienst |
Den Dienst auf automatischen Start setzen (LINUX) | chkconfig -a dienst |
Den Dienst starten (LINUX) | /etc/init.d/dienst start |
|
Anzeige(-i) der Dateinamen auf Band | cpio -itv </dev/tape |
Suche nach dem Muster (evtl. mit Wildcards) Dateinamen in der Datei archiv | cpio -itv <archiv | grep Muster |
(anstatt archiv wäre auch eine Gerätedatei möglich) |
Sichern(-o) des aktuellen Verzeichnisses und der Unterverzeichnisse auf Band | find . -print | cpio -ovB >/dev/tape |
mit Anzeige am Terminal(v), große Blöcke(B) |
Sichern(-o) des aktuellen Verzeichnisses und der Unterverzeichnisse auf Band | find . -print | cpio -ovB >/dev/tape 2>fehler |
mit Anzeige am Terminal(v), große Blöcke(B) und Fehlermeldungen in Datei fehler |
Sichern der Root-Partition auf Band | find / -mount -print | cpio -ovB >/dev/tape |
Rücksichern des kompletten Bandes mit Anzeige am Terminal(v), große Blöcke(B), | cpio -ivBdm </dev/tape |
Erstellen von fehlenden Directories(d) und Erhalten der Datumsangaben(m) |
|
Sichern der Datei dat1 auf Band | tar -cvf /dev/tape dat1 |
Sichern der Dateien dat1* aus dem aktuellen Verzeichnis auf Band | tar -cvf /dev/ios0/rstape005h dat1* |
| (rstape005h Rückspulen vor Sicherung, rstape005h hohe Dichte) |
| (bei mehreren Platzhaltern in Hochkomma) |
Listen des Bandinhalts | tar -tvf /dev/tape |
Rücksichern der Datei dat1 vom Band | tar -xvf /dev/tape dat1 |
|
Anzeige der am host angemeldeten User | finger @host |
(Der finger-Dienst muss am Ziel-Rechner laufen) | finger @192.168.1.124 |
|
Hardlink: Die Datei dat1 wird mit gleicher Id nochmals als dat2 eingetragen | ln dat1 dat2 |
| (wird dat1 gelöscht, bleibt Datei als dat2 erhalten) |
Symbolic Link: Die Datei dat2 wird mit dem Typ "l" angelegt. | ln -s dat1 dat2 |
| (Der Inhalt von dat2 zeigt auf Datei dat1) |
|
Anzeige der Devices seitenweise | autoconf -l | pg |
Anzeige der Gerätenamen z.B. USB-Stick (LINUX) | blkid -o list -w /dev/null/ | mit sudo, wenn nicht als root |
|
Erstellen eines Filesystems (Größe: 163200 * 512 Byte) | mkfs -F ufs /dev/rdisk/c0d1s1 163200 |
Erstellen eines Filesystems auf 1,44 MB-Diskette | mkfs -F ufs /dev/rdsk/f03ht 2880 | format |
|
Mounten der Home-Partition (nur wenn diese in vfstab eingetragen ist) | mount /home |
Mounten der Partition an das Verzeichnis DVZ im Homeverzeichnis | mount -F ufs /dev/dsk/c0d1s1 $home/DVZ |
Mounten der Partition des Rechners rm64rza: | mount -F nfs rm64rza:/home/rinstall /install |
| an das Verzeichnis install des eigenen Rechners |
| (fremde Dateien werden wie eigene behandelt) |
Mounten des Gerätes an das Verzeichnis /home (LINUX) | mount /dev/hda3 /home |
Mounten einer Diskette an das Verzeichnis /floppy (LINUX) | mount -t msdos /dev/fd0 /floppy |
Mounten des freigegebenen Verzeichnisses public/in des Filesservers (LINUX) | mount -t nfs 149.202.71.55:/public/in /mnt |
| an das Verzeichnis /mnt des eigenen Rechners |
Mounten einer CD/DVD an das Verzeichnis /mnt/cdrom (UNIX) | mount -F DVDfs /dev/dsk/c1t2d0 /mnt/cdrom |
Mounten einer CD/DVD an das Verzeichnis /mnt/cdrom (LINUX) | mount -t iso9660 /dev/cdrom /mnt/cdrom |
Mounten eines USB-Sticks an das Verzeichnis /mnt/usb (LINUX) | mount /dev/sdc1 /mnt/usb -o rw,umask=0000 | mit sudo, wenn nicht als root |
| mit Vollzugriff (für den Geräte-Namen siehe blkid) |
|
Entmounten des Gerätes | umount /dev/fd0 |
| umount /mnt |
|
Filesystem-Check: Lesen des Flags | fsck -pass |
Überprüfen und Reparatur des Filesystem vxfs | fsck -F vxfs -y /dev/rdisk/c0d1s1 | 2. Platte, 1. Slide (Partition) |
|
Die Swap-Dateien anzeigen | swap -l |
| (Anlegen mit: dd if=/dev/zero of=swap_dat b=10k count=800) |
Eine Swap-Datei mit der Größe von 8MB einbinden | swap -a /tmp/swap_dat 0 1600 |
|
Test, ob das Gerät mit der IP-Nummer verfügbar ist | ping IP-Nummer |
Test, ob der Rechner verfügbar ist mit Anzeige der IP-Nummer | ping Rechnername |
|
Anzeige der offenen Ports (TCP/IP) | netstat -nlp |
|
Kontrolle der Namensauflösung (DNS oder /etc/hosts) | nslockup |
| >set debug |
| >set any |
| >set ns |
|
Client der DNS-Server im Active Directory | Eintrag in der Datei /etc/named-conf |
| forwarders { 192.168.1.120; 192.168.1.122; }; |
|
Anzeige der Netzwerkkarten und WLAN-Adapter | ifconfig |
Binden der IP-Nummer an die Netzwerkkarte eth0 | ifconfig eth0 192.168.1.14 netmask 255.255.255.0 broadcast 192.168.1.255 |
Binden einer zweiten IP-Nummer an die Netzwerkkarte eth0 | ifconfig eth0:1 192.168.2.14 netmask 255.255.255.0 broadcast 192.168.2.255 |
Aktivieren des WLAN-Adapters wlan0 | ifconfig wlan0 up |
Deaktivieren des WLAN-Adapters wlan0 | ifconfig wlan0 down |
|
Eine neue IP-Adresse für die Netzwerkkarte eth0 vom DHCP-Server beziehen | dhclient eth0 | ipconfig /renew |
|
Maskieren des Anschlusses ipp0 (LINUX) | ipfwadm -M ipp0 | ISDN-Karte, Modem |
|
Wegeverfolgung für IP-Pakete | traceroute IP-Nummer | tracert |
|
Anzeige der Routing-Tabelle | route |
Neuer Eintrag in Routing-Tabelle | route add -net 192.168.1.0 |
| (das eigene Netz; ist für ping erforderlich) |
Neuer Eintrag in Routing-Tabelle | route add default gw 192.168.1.254 |
| (Standard-Gateway in andere Netze) |
Neuer Eintrag in Routing-Tabelle | route add -net 192.168.3.0 gw 192.168.1.253 |
| (Gateway ins Netz 192.168.3.0 über den Rechner 192.168.1.253) |
Eintrag aus Routing-Tabelle löschen | route del -net 192.168.1.0 |
|
Anzeige der ARP-Tabelle (Zuordnung MAC-Adresse zur IP-Nummer) | arp -a |
Löschen der IP-Nummer aus der ARP-Tabelle | arp -d IP-Nummer |
Neuer Eintrag in ARP-Tabelle | arp -s IP-Nummer MAC-Adresse |
|
Anzeige des Inhalts der Variable HOME | echo $HOME |
Anzeige des Namens der aktuellen Prozedur oder des Programms | echo $0 |
Anzeige aller Stellungsparameter ($1, $2 ...) | echo $* |
Anzeige der Anzahl der übergebenen Argumente | echo $# |
Anzeige der Prozeß-Id der aktuellen Shell | echo $$ |
Anzeige der Prozeß-Id des letzten Hintergrund-Prozesses | echo $! |
Anzeige des Rückgabecodes | echo $? | 0 = OK; <> 0 = Fehler |
|
Benutzereingabe in die Variable VAR | read VAR | Anzeige mit: echo $VAR |
Benutzereingabe in die Variable VAR mit Meldung (nur ksh) | read VAR?"Welche Datei soll kopiert werden ?" |
|
Übergabe der Variable var1 für Subshells | export var1 |
Erhöhen der Variable i um 1 | i=`expr $i + 1` |
Erhöhen der Variable i um 1 | let i = i + 1 |
|
Anzeige der System-Variablen seitenweise | set | pg |
Einschalten der History (in .profile) | set -o vi | doskey |
Jede Zeile wird vor Ausführung mit Argument angezeigt | set -x | Ausschalten mit: set +x |
Alles, was in Datei steht wird angezeigt | set -v |
Setzen der Systemvariablen mit dem User, | set 'grep root /etc/passwd | cut -d: -f1' | Anzeige mit: echo $* |
bei dem im Homeverzeichnis root vorkommt |
|
Verschieben der Stellungsparameter nach links | shift |
|
Anzeige im Datei-System: | file |
Art des Eintrags: ascii text | file /etc/group |
Art des Eintrags: directory | file / |
Art des Eintrags: ELF 32-bit LSB executable 80386 Version 1 | file /user/bin/date | Programm-Datei |
Anzeige aller Prozeduren in /sbin | file /sbin/* | grep Kommandodaten | pg |
|
Anzeige der Art des Kommandos: | type |
type echo | is a shell builtin |
type vi | is a tracked alias for |
type type | is an exported alias for whence -v |
type sh | is a tracked alias for /usr/bin/sh | Start-Ort der Shell |
|
Neue Session erstellen | <ALT> + <Druck> + <F2> |
Zurück zur Konsole wechseln | <ALT> + <Druck> + h |
|
Echo der Eingabe ausschalten (z.B. für Passworte) | stty -echo |
Echo der Eingabe wieder einschalten | stty echo |
|
Cursor positionieren auf Zeile 10 (0-24 möglich), Spalte 20 (0-79 möglich) | tput cup 10 20 |
Schreiben der Invers-Sequenz in Variable inv | inv=`tput smso` | Anzeige mit: echo $inv |
Rücksetzen der inversen Darstellung | tput rmso |
Setzen der blinkenden Darstellung | tput blink |
Rücksetzen aller gesetzten Einstellungen | tput srg0 |
|
Den Bildschirm löschen | clear | cls |
|
Die Bildschirmausgabe und Tastatureingabe stoppen | <CTRL> + s |
Die Bildschirmausgabe und Tastatureingabe wieder freigeben | <CTRL> + q |
Das laufende Programm abbrechen | <CTRL> + c |
Die Eingabe für das laufende Programm beenden | <CTRL> + d |
|
Zeitsynchronisation mit dem Zeitserver | ntpdate ptbtime1.ptb.de |
|