Ich bin auf einen Befehl im Bash-Skript gestoßen, in dem ich Folgendes gefunden habe:
find /var/log/abcd -type f
Der obige Befehl befand sich im Zusammenhang mit der Bereinigung der Protokolldateien. Ich weiß was find
tut.
Nachdem ich es gesehen hatte -type f
, suchte ich die Handbuchseite danach. Ich muss es in der Manpage von BASH_BUILTINS (1) sehen
Die Beschreibung des type
Befehls -f flag lautet: -
The -f option suppresses shell function lookup, as with the command builtin.
Im Folgenden sind meine Fragen:
- Wofür ist das gut
type
? - Welche Bedeutung hat die
-f
Flagge? - Was nützt die Verwendung von
type
withfind
command?
[EDIT]: - Nachdem ich alle Kommentare und Antworten bis jetzt gelesen habe, möchte ich die Ursache für meine Fehlinterpretation von -type option in command find
Vs erwähnen type command
. Dies alles geschah, weil ich angenommen habe und bis dato nur die kurzen Optionen (Tests im Falle des find
Befehls) mit einem einzelnen Minuszeichen '-' gesehen habe , zum Beispiel ls -l
. Die meisten der Zeit habe ich lange Optionen mit gesehen ‚-‘ Doppelminuszeichen , beispielsweise ls --version
.
quelle
type
eingebaute Befehl wird von nicht verwendetfind
. Die-type
Option,find
etwas anderes zu tun. Sehenhelp type
undman find
erhalten Sie Ihre Antworten.Antworten:
In diesem Fall
type
hat das nichts mit der eingebauten Bash zu tuntype
, aber dazu später mehr.Ein bisschen über "Typ"
Mit dem integrierten
type
Befehl BASH erhalten Sie Informationen zu Befehlen. Somit:Die Syntax lautet:
-t
: Nur Typ drucken, falls gefunden-a
: Gibt alle Vorkommen des Befehls aus, sowohl die eingebauten als auch die anderen.-p
: druckt die Disk-Datei, die beim Aufruf des Befehls ausgeführt werden würde, oder nichts.Wenn wir betrachten
time
,kill
undcat
als Beispiel:Nun geben Sie an, dass, wenn Sie sich in einer Bash-Shell befinden und tippen
time some_cmd
, die integrierte Bashtime
verwendet wird. Um das System zu benutzen, könnentime
Sie tun/usr/bin/time some_cmd
.Eine häufig verwendete Methode, um sicherzustellen, dass der Systembefehl und nicht der integrierte Befehl verwendet wird, ist die Verwendung von
which
.und dann verwenden
$tt
, um das System aufzurufentime
.Der fragliche Befehl
In diesem Fall
-type
ist das eine Option zum Befehlfind
. Die Option akzeptiert ein Argument, mit dem der Entitätstyp angegeben wird. BeispielEs gibt mehr, überprüfen Sie
man find
den Rest.So suchen Sie nach einer bestimmten Option, die Sie (während Sie im Mann sind) ausführen können:
Dann benutze
n
für nächstes, bis du es findest.Ein wenig über den Shell-Befehl
Dies ist eine persönliche Interpretation.
Einige der Dinge, die in diesem speziellen Fall erwähnenswert sind, sind Befehle, Optionen, Argumente und Pipes.
Dies wird etwas locker verwendet, aber in meinem Wortschatz haben wir kurz gesagt:
In einer Befehlsspezifikation werden eckige Klammern verwendet, um Optionen anzugeben, und optional weniger / mehr, um Argumente anzugeben. Somit:
Gibt
-a
-b
und-s
als optionale Parameter an undfile
einen erforderlichen.-t
ist optional, verwendet aber, falls angegeben, das erforderliche Argumentbar
. Punkte stehen dafür, dass es mehrere Dateien aufnehmen kann.Dies ist keine genaue Spezifikation und wird häufig
man
oderhelp
zur Sicherheit benötigt.Optionen und Eingaben für die Positionierung von Argumenten können häufig verwechselt werden. Es ist jedoch im Allgemeinen am besten, einen positionsbasierten Ansatz beizubehalten, da einige Systeme die gemischte Positionierung von Argumenten nicht verarbeiten. Als Beispiel:
Beide funktionieren auf einigen Systemen, während letzteres auf anderen nicht funktioniert.
In Ihrem genauen Befehl gehören alle Parameter dazu
find
- also, wenn Sie sich über eine Immobilie wundern,man find
ist der richtige Ort zu suchen. In Fällen, in denen Sie sich Manpages für die Shell usw. ansehen müssen, kann dies beispielsweise sein:Das
-exec
ist ein spezielles, bei dem-exec some_command {} \;
alle Parameter angegeben werdenfind
, dersome_command {} \;
Teil jedoch innerhalb vonfind
to erweitert wirdsome_command string_of_found_entity
.Weiter
Das könnte hilfreich sein .
quelle
Du sollst reinschauen
man find
, nicht reinhelp type
oderman bash
.type
Infind
wird angegeben, welchen Dateityp Sie benötigen:Und Builtin
type
ist eine völlig andere Sache und es ist NICHT die, die im Inneren verwendet wirdfind
.quelle
Sie haben auf die falsche Handbuchseite geschaut. Dies ist nicht der
type -f
Befehl, sondernfind -type f
eine ganz andere Option.find
Weitere Erklärungen finden Sie im Handbuch.quelle
-type f
Mit find werden nur Dateien vom Typ f gedruckt, dh einfache Dateien, keine Verzeichnisse, keine symbolischen Links und keine Gerätedateien.man find
dann suche nach-f
Option.quelle
Dies ist nicht die richtige Handbuchseite, die Sie sich ansehen. Sie sollten verwenden
Das wird Ihnen sagen, dass mit
-type f
dem-type
Prädikat nur die regulären Dateien ausgewählt werden.quelle