Ich bin ziemlich neu bei Linux und versuche derzeit, den folgenden Befehl auszuführen,
find ~ -name apt.no
Ich suche apt.no
in einem anderen Verzeichnis, das als aufgeführt ist montrose-files
.
Es erfolgt keine Reaktion von der Shell, sondern es wird einfach eine neue Zeile erstellt. Kann mir bitte jemand erklären, warum dies nicht einmal ein Ergebnis liefert?
bbcharlieca@myvm:~$ find ~ -name apt.no
bbcharlieca@myvm:~$ █
Antwort1
Ihr Befehl find ~ -name apt.no
sucht nach einer Datei oder einem Verzeichnis mit dem Namen *apt.no
in Ihrem $HOME
Verzeichnis und in allen darunterliegenden Verzeichnissen. (Das ~
steht für Ihr eigenes Home-Verzeichnis.)
Sofern sich die Datei nicht montrose-files
in Ihrem eigenen Home-Verzeichnis befindet, wird sie nicht durchsucht und die Zieldatei wird nicht gefunden. Wenn sie montrose-files
sich beispielsweise in einem anderen Pfad befindet, müssen Sie diesen Pfad angeben:
find /path/to/montrose-files -name 'apt.no' -print
montrose-files
Verwirrenderweise wird auch dieser nicht durchsucht , wenn Sie zuvor einen symbolischen Link in Ihrem Home-Verzeichnis erstellt haben , da find
symbolische Links standardmäßig nicht verfolgt werden. Sie können das auf zwei Arten beheben:
find ~ -follow -name 'apt.no' -print
find ~/montrose-files/ -name 'apt.no' -print
Im ersten Ansatz sprechen wir find
von follow
symbolischen Links. Bei einigen Versionen find
kann dies ein schlechter Ansatz sein, denn wenn ein symbolischer Link in einer Schleife herumzeigt, kann es passieren, dass Sie die Struktur mehrmals durchlaufen.
Beim zweiten Ansatz erzwingen wir die Auflösung des symbolischen Links zu einem realen Verzeichnisziel, indem wir einen abschließenden Schrägstrich anhängen.
Beachten Sie abschließend, dass ich in allen Fällen den Dateinamen, nach dem ich suche, in Anführungszeichen gesetzt habe. In Ihrem einfachen Fall macht das keinen Unterschied, aber wenn Sie anfangen, Platzhalter zu verwenden, um unbekannte Teile von Dateinamen abzugleichen (z. B. apt.*
), sollten Sie die einfachen Anführungszeichen verwenden, um sicherzustellen, dass die Platzhalter nicht von der Shell verarbeitet werden, bevor find
sie darauf zugreifen kann. Es ist eine gute Idee, sich anzugewöhnen, Argumente in Anführungszeichen zu setzen.
* Technisch gesehen wird es mit jedem beliebigen Element übereinstimmen, aber es ist unwahrscheinlich, dass Sie Pipes, Sockets oder Geräteknoten in Ihrem Home-Verzeichnis haben