OnWorks Linux- und Windows-Online-WorkStations

Logo

Kostenloses Online-Hosting für WorkStations

<Zurück | Inhalte | Weiter>

rm: Verzeichnis „Archive“ entfernen? y

Wie Sie diese Option als Standard festlegen, besprechen wir in Kapitel 7, in dem es um die Anpassung Ihrer Shell-Umgebung geht.


Image


3.3.3. Dateien finden


3.3.3.1. Verwenden von Shell-Funktionen


Im Beispiel zum Verschieben von Dateien haben wir bereits gesehen, wie die Shell mehrere Dateien gleichzeitig bearbeiten kann. In diesem Beispiel findet die Shell automatisch heraus, was der Benutzer mit den Anforderungen zwischen den eckigen Klammern „[“ und „]“ meint. Die Shell kann sowohl Zahlenbereiche als auch Groß- und Kleinbuchstaben ersetzen. Außerdem werden beliebig viele Zeichen durch ein Sternchen und nur ein Zeichen durch ein Fragezeichen ersetzt.


Alle Arten von Ersetzungen können gleichzeitig verwendet werden; Die Shell ist dabei sehr logisch. Die Bash-Shell hat beispielsweise kein Problem mit Ausdrücken wie ls Verzeichnisname/*/*/*[2-3].


In anderen Shells wird das Sternchen häufig verwendet, um den Aufwand beim Tippen zu minimieren: Personen würden eingeben cd dir* statt cd Verzeichnis. In Bash ist dies jedoch nicht erforderlich, da die GNU-Shell über eine Funktion namens Dateinamenvervollständigung verfügt. Das bedeutet, dass Sie die ersten paar Zeichen eines Befehls (irgendwo) oder einer Datei (im aktuellen Verzeichnis) eingeben können und wenn keine Verwechslung möglich ist, findet die Shell heraus, was Sie meinen. Zum Beispiel


In einem Verzeichnis mit vielen Dateien können Sie durch einfaches Eintippen überprüfen, ob Dateien vorhanden sind, die mit dem Buchstaben A beginnen ls A und drück den Tab Taste zweimal drücken, anstatt sie zu drücken Enter. Wenn es nur eine Datei gibt, die mit „A“ beginnt, wird diese Datei als Argument für angezeigt ls (oder einen beliebigen Shell-Befehl) sofort ausführen.


Image

3.3.3.2. Welchen


Eine sehr einfache Möglichkeit zum Nachschlagen von Dateien ist die Verwendung von welche Befehl, um in den im Suchpfad des Benutzers aufgeführten Verzeichnissen nach der erforderlichen Datei zu suchen. Da der Suchpfad natürlich nur Pfade zu Verzeichnissen enthält, die ausführbare Programme enthalten, welche funktioniert nicht für normale Dateien. Der welche Der Befehl ist hilfreich bei der Fehlerbehebung bei „Befehl nicht gefunden“-Problemen. Im Beispiel unten: Benutzer tina kann das nicht nutzen acroread Programm, während ihre Kollegin keinerlei Probleme mit dem gleichen System hat. Das Problem ähnelt dem PATH Problem im vorherigen Teil: Tinas Kollege sagt ihr, dass er das gewünschte Programm darin sehen kann

/opt/acroread/bin, aber dieses Verzeichnis befindet sich nicht in ihrem Pfad:


tina:~> was acroread

/usr/bin/which: kein Acroread in (/bin:/usr/bin:/usr/bin/X11)

tina:~> was acroread

/usr/bin/which: kein Acroread in (/bin:/usr/bin:/usr/bin/X11)

Das Problem kann gelöst werden, indem der vollständige Pfad zum auszuführenden Befehl angegeben wird oder der Inhalt des Befehls erneut exportiert wird

PATH-Variable:


tina:~> export PATH=$PATH:/opt/acroread/bin


tina:~> echo $PFAD

/bin:/usr/bin:/usr/bin/X11:/opt/acroread/bin

tina:~> export PATH=$PATH:/opt/acroread/bin


tina:~> echo $PFAD

/bin:/usr/bin:/usr/bin/X11:/opt/acroread/bin

Verwendung der welche Der Befehl prüft außerdem, ob ein Befehl ein Alias ​​für einen anderen Befehl ist:


gerrit:~> which -a ls

ls hat den Alias ​​„ls -F --color=auto“. ls ist /bin/ls

gerrit:~> which -a ls

ls hat den Alias ​​„ls -F --color=auto“. ls ist /bin/ls

Wenn dies auf Ihrem System nicht funktioniert, verwenden Sie die alias Befehl:


Tille@www:~/mail$ alias ls

alias ls='ls --color'

Tille@www:~/mail$ alias ls

alias ls='ls --color'


Image


3.3.3.3. Suchen und lokalisieren


Dies sind die eigentlichen Werkzeuge, die bei der Suche nach anderen Pfaden als den im Suchpfad aufgeführten verwendet werden. Der gefunden Das von UNIX bekannte Tool ist sehr leistungsfähig, was die Ursache für eine etwas schwierigere Syntax sein kann. GNU gefundenbefasst sich jedoch mit den Syntaxproblemen. Mit diesem Befehl können Sie nicht nur nach Dateinamen suchen, sondern auch Dateigröße, Datum der letzten Änderung und andere Dateieigenschaften als Kriterien für eine Suche akzeptieren. Die häufigste Verwendung ist die Suche nach Dateinamen:


gefunden -Name


Dies kann interpretiert werden als „Suchen Sie in allen Dateien und Unterverzeichnissen, die in einem bestimmten Pfad enthalten sind, und geben Sie die Namen der Dateien aus, die die Suchzeichenfolge in ihrem Namen enthalten“ (nicht in ihrem Inhalt).


Eine andere Anwendung von gefunden dient zum Durchsuchen von Dateien einer bestimmten Größe, wie im folgenden Beispiel, wo user Peter

möchte alle Dateien im aktuellen Verzeichnis oder einem seiner Unterverzeichnisse finden, die größer als 5 MB sind:


peter:~> finden . -Größe +5000k

psychotic_chaos.mp3

peter:~> finden . -Größe +5000k

psychotic_chaos.mp3


Wenn Sie in den Manpages stöbern, werden Sie das sehen gefunden kann auch Operationen an den gefundenen Dateien durchführen. Ein häufiges Beispiel ist das Entfernen von Dateien. Am besten testen Sie es zunächst ohne -Exec Option, dass die richtigen Dateien ausgewählt werden, danach kann der Befehl erneut ausgeführt werden, um die ausgewählten Dateien zu löschen. Unten suchen wir nach Dateien mit der Endung .tmp:


peter:~> finden . -name "*.tmp" -exec rm {} \;


peter:~>

peter:~> finden . -name "*.tmp" -exec rm {} \;


peter:~>


ImageOptimieren!

Dieser Befehl ruft auf rm so oft, wie eine Datei gefunden wird, die den Anforderungen entspricht. Im schlimmsten Fall kann dies Tausende oder Millionen Mal der Fall sein. Das ist eine ziemliche Belastung für Ihr System.


Eine realistischere Arbeitsweise wäre die Verwendung einer Pipe (|) und der xargs Werkzeug mit rm als Argument. Auf diese Weise wird die rm Der Befehl wird nur aufgerufen, wenn die Befehlszeile voll ist, und nicht für jede Datei. Weitere Informationen zur Verwendung der E/A-Umleitung zur Erleichterung alltäglicher Aufgaben finden Sie in Kapitel 5.

Später (laut Manpages im Jahr 1999, nach 20 Jahren gefunden), lokalisieren wurde entwickelt. Dieses Programm ist einfacher zu verwenden, aber eingeschränkter als gefunden, da seine Ausgabe auf einer Dateiindexdatenbank basiert, die nur einmal täglich aktualisiert wird. Andererseits ist eine Suche in der lokalisieren Datenbank verbraucht weniger Ressourcen als gefunden und zeigt daher die Ergebnisse fast sofort an.


Die meisten Linux-Distributionen verwenden verlegen Heutzutage ist die Sicherheit verbessert, die moderne Version von lokalisieren Dadurch wird verhindert, dass Benutzer Ausgaben erhalten, zu deren Lesen sie kein Recht haben. Die Dateien in WurzelEin Beispiel hierfür sind die Home-Verzeichnisse von , die normalerweise nicht für die Öffentlichkeit zugänglich sind. Ein Benutzer, der jemanden finden möchte, der sich mit der C-Shell auskennt, kann den Befehl eingeben lokalisieren .cshrc, um alle Benutzer anzuzeigen, die über eine angepasste Konfigurationsdatei für die C-Shell verfügen. Angenommen, die Benutzer Wurzel und jenny Führen Sie die C-Shell aus, dann nur die Datei

/home/jenny/.cshrc angezeigt wird, und nicht das in Wurzel's Home-Verzeichnis. Auf den meisten Systemen

„locate“ ist ein symbolischer Link zum Programm „slocate“:


billy:~> ls -l /usr/bin/locate

lrwxrwxrwx 1 root slocate 7. Okt. 28 14:18 /usr/bin/locate -> slocate*

billy:~> ls -l /usr/bin/locate

lrwxrwxrwx 1 root slocate 7. Okt. 28 14:18 /usr/bin/locate -> slocate*

Mitglied tina hätte gebrauchen können lokalisieren um die gewünschte Anwendung zu finden:


tina:~> acroread finden

/usr/share/icons/hicolor/16x16/apps/acroread.png

/usr/share/icons/hicolor/32x32/apps/acroread.png

/usr/share/icons/locolor/16x16/apps/acroread.png

/usr/share/icons/locolor/32x32/apps/acroread.png

/usr/local/bin/acroread

/usr/local/Acrobat4/Reader/intellinux/bin/acroread

/usr/local/Acrobat4/bin/acroread

tina:~> acroread finden

/usr/share/icons/hicolor/16x16/apps/acroread.png

/usr/share/icons/hicolor/32x32/apps/acroread.png

/usr/share/icons/locolor/16x16/apps/acroread.png

/usr/share/icons/locolor/32x32/apps/acroread.png

/usr/local/bin/acroread

/usr/local/Acrobat4/Reader/intellinux/bin/acroread

/usr/local/Acrobat4/bin/acroread

Verzeichnisse, die den Namen nicht enthalten Kasten können das Programm nicht enthalten – sie enthalten keine ausführbaren Dateien. Es bleiben noch drei Möglichkeiten. Die Datei in / usr / local / bin ist der eine tina gewollt hätte: Es ist ein Link zum Shell-Skript, das das eigentliche Programm startet:


tina:~> Datei /usr/local/bin/acroread

/usr/local/bin/acroread: symbolischer Link zu ../Acrobat4/bin/acroread


tina:~> Datei /usr/local/Acrobat4/bin/acroread

/usr/local/Acrobat4/bin/acroread: Ausführbare Textdatei des Bourne-Shell-Skripts


tina:~> Datei /usr/local/Acrobat4/Reader/intellinux/bin/acroread

/usr/local/Acrobat4/Reader/intellinux/bin/acroread: ELF 32-Bit LSB ausführbare Datei, Intel 80386, Version 1, dynamisch verknüpft (verwendet

tina:~> Datei /usr/local/bin/acroread

/usr/local/bin/acroread: symbolischer Link zu ../Acrobat4/bin/acroread


tina:~> Datei /usr/local/Acrobat4/bin/acroread

/usr/local/Acrobat4/bin/acroread: Ausführbare Textdatei des Bourne-Shell-Skripts


tina:~> Datei /usr/local/Acrobat4/Reader/intellinux/bin/acroread

/usr/local/Acrobat4/Reader/intellinux/bin/acroread: ELF 32-Bit LSB ausführbare Datei, Intel 80386, Version 1, dynamisch verknüpft (verwendet


von Locals geführtes libs), nicht abgestreift Um den Pfad so kurz wie möglich zu halten, damit das System nicht jedes Mal, wenn ein Benutzer einen Befehl ausführen möchte, zu lange suchen muss, fügen wir hinzu / usr / local / bin auf den Pfad und nicht auf die anderen Verzeichnisse, die

enthalten nur die Binärdateien eines bestimmten Programms, während / usr / local / bin enthält andere nützliche

auch Programme.


Nochmals eine Beschreibung aller Funktionen von gefunden und lokalisieren finden Sie auf den Infoseiten.


Image

3.3.3.4. Der grep-Befehl


3.3.3.4.1. Allgemeine Leitungsfilterung


Ein einfaches, aber leistungsstarkes Programm, grep wird zum Filtern von Eingabezeilen und zum Zurückgeben bestimmter Muster an die Ausgabe verwendet. Es gibt buchstäblich Tausende von Anwendungen dafür grep Programm. Im Beispiel unten, Jerry verwendet grep um zu sehen, wie er das Ding damit gemacht hat gefunden:


Jerry:~> grep -a find .bash_history

finden . -name userinfo man find

finde ../ -name common.cfg

Jerry:~> grep -a find .bash_history

finden . -name userinfo man find

finde ../ -name common.cfg


ImageSuchverlauf

Auch in diesen Fällen ist die Suchfunktion hilfreich bash, aktiviert durch Drücken Ctrl+R auf einmal, wie zum Beispiel in dem Beispiel, in dem wir zuletzt überprüfen wollen, wie wir das gemacht haben gefunden wieder:


Thomas ~> ^R

(reverse-i-search)`find': finde `/home/thomas` -name *.xml

Thomas ~> ^R

(reverse-i-search)`find': finde `/home/thomas` -name *.xml

Geben Sie Ihre Suchzeichenfolge in die Suchaufforderung ein. Je mehr Zeichen Sie eingeben, desto eingeschränkter wird die Suche. Dies liest den Befehlsverlauf für diese Shell-Sitzung (in die geschrieben wird).

.bash_history in Ihrem Home-Verzeichnis, wenn Sie diese Sitzung beenden). Das jüngste Vorkommen Ihrer Suchzeichenfolge wird angezeigt. Wenn Sie frühere Befehle sehen möchten, die dieselbe Zeichenfolge enthalten, geben Sie Folgendes ein Ctrl+R erneut.


Siehe die Infoseiten auf bash für mehr.

Alle UNIX-Systeme mit ein wenig Anstand verfügen über ein Online-Wörterbuch. Das gilt auch für Linux. Das Wörterbuch ist eine Liste bekannter Wörter in einer Datei mit dem Namen Worte, gelegen in /usr/share/dict. Um schnell die korrekte Schreibweise eines Wortes zu überprüfen, ist keine grafische Anwendung erforderlich:


William:~> grep pinguin /usr/share/dict/words


William:~> grep penguin /usr/share/dict/words

Pinguin-Pinguine

William:~> grep pinguin /usr/share/dict/words


William:~> grep penguin /usr/share/dict/words

Pinguin-Pinguine


ImageWörterbuch vs. Wortliste

Einige Distributionen bieten das an diktieren Befehl, der mehr Funktionen bietet als nur die Suche nach Wörtern in einer Liste.

Wer ist der Besitzer des Home-Verzeichnisses neben meinem? Hey, da ist seine Telefonnummer!


lisa:~> grep gdbruyne /etc/passwd

gdbruyne:x:981:981:Guy Debruyne, Tel. 203234:/home/gdbruyne:/bin/bash

lisa:~> grep gdbruyne /etc/passwd

gdbruyne:x:981:981:Guy Debruyne, Tel. 203234:/home/gdbruyne:/bin/bash


Und wie war nochmal die E-Mail-Adresse von Arno?


serge:~/mail> grep -i arno *

gesendete E-Mail: An:[E-Mail geschützt] >

gesendete E-Mail: Am Montag, 24. Dezember 2001, [E-Mail geschützt] schrieb:

serge:~/mail> grep -i arno *

gesendete E-Mail: An:[E-Mail geschützt] >

gesendete E-Mail: Am Montag, 24. Dezember 2001, [E-Mail geschützt] schrieb:

„find“ und „locate“ werden oft in Kombination mit grep verwendet, um einige ernsthafte Abfragen zu definieren. Weitere Informationen finden Sie in Kapitel 5 zur E/A-Umleitung.


Image

3.3.3.4.2. Spezielle Charaktere


Zeichen, die für die Shell eine besondere Bedeutung haben, müssen es sein entkam. Das Escape-Zeichen in Bash ist wie in den meisten Shells ein Backslash; Dadurch wird dem folgenden Zeichen seine besondere Bedeutung entzogen. Die Shell kennt einige Sonderzeichen, darunter die häufigsten /, ., ? Und *. Eine vollständige Liste finden Sie auf den Infoseiten und in der Dokumentation zu Ihrer Shell.


Angenommen, Sie möchten die Datei „*“ anstelle aller Dateien in einem Verzeichnis anzeigen, die Sie verwenden müssten


weniger \*


Top OS Cloud Computing bei OnWorks: