Je suis tombé sur une commande dans le script Bash dans laquelle j'ai trouvé:
find /var/log/abcd -type f
La commande ci-dessus était dans le contexte du nettoyage des fichiers journaux. Je sais ce que find
ça fait.
Après l'avoir vu -type f
, j'ai cherché la page de manuel pour ça. J'ai pu le voir dans la page de manuel de BASH_BUILTINS (1)
La description de l'indicateur -f sous la type
commande est: -
The -f option suppresses shell function lookup, as with the command builtin.
Voici mes questions:
- À quoi ça sert
type
? - Quelle est la signification du
-f
drapeau? - Quelle est l'utilité d'utiliser
type
avec lafind
commande?
[EDIT]: - Après avoir lu tous les commentaires et réponses jusqu'à maintenant, je voudrais mentionner la cause de ma mauvaise interprétation de -type option in command find
Vs type command
. Tout cela est arrivé parce que je supposais et jusqu'à ce jour, je n'ai vu que les options courtes (tests dans le cas de la find
commande) avec un seul signe moins '-' , par exemple ls -l
,. La plupart du temps, j'ai vu de longues options avec le signe moins double «-» , par exemple ls --version
.
la source
type
commande intégrée n'est pas utilisée parfind
. L'-type
option de fairefind
autre chose. Voirhelp type
etman find
obtenir vos réponses.Réponses:
Dans ce cas, cela
type
n'a rien à voir avec le bash intégrétype
, mais plus à ce sujet plus tard.Un peu de "type"
La
type
commande intégrée BASH vous donne des informations sur les commandes. Donc:La syntaxe est:
-t
: imprimer uniquement le type, s'il est trouvé-a
: affiche toutes les occurrences de la commande, intégrées et autres.-p
: imprime le fichier disque qui serait exécuté sur appel à la commande, ou rien.Si nous regardons
time
,kill
et àcat
titre d'exemple:Maintenant, cela spécifie que si vous êtes dans un shell et un type Bash
time some_cmd
, le code bashtime
est utilisé. Pour utiliser le système,time
vous pouvez le faire/usr/bin/time some_cmd
.Une façon souvent utilisée pour s'assurer que la commande système, et non intégrée, est utilisée est d'utiliser
which
.puis utilisez
$tt
pour appeler le systèmetime
.La commande en question
Dans ce cas,
-type
c'est une option de la commandefind
. L'option prend un argument par lequel spécifier le type d'entité. ExempleIl y a plus, vérifiez
man find
le reste.Pour rechercher l'option spécifique que vous pouvez faire (en étant chez l'homme):
Ensuite, utilisez
n
pour le prochain jusqu'à ce que vous le trouviez.Un peu sur la commande shell
C'est un peu une interprétation personnelle.
Certaines des choses qui méritent d'être mentionnées, dans ce cas spécifique, sont les commandes, les options, les arguments et les canaux.
C'est un peu vaguement utilisé, mais dans mon vocabulaire, nous avons en bref:
Dans une spécification de commande, les crochets sont utilisés pour spécifier les options et, éventuellement moins / plus grands ensuite, pour spécifier les arguments. Donc:
Donne
-a
-b
et en-s
tant que paramètres facultatifs, etfile
requis.-t
est facultatif, mais s'il est spécifié, prend l'argument requisbar
. Les points indiquent qu'il peut prendre plusieurs fichiers.Ce n'est pas une spécification exacte, et souvent
man
ouhelp
est nécessaire pour être sûr.Le positionnement des options d'arguments et la saisie peuvent souvent être mélangés, mais il est généralement préférable de conserver une approche basée sur la position car certains systèmes ne gèrent pas le positionnement mixte des arguments. Par exemple:
Les deux fonctionnent sur certains systèmes, tandis que ce dernier ne fonctionne pas sur d'autres.
Dans votre commande exacte, tous les paramètres appartiennent à
find
- donc si vous vous interrogez sur une propriété,man find
c'est le bon endroit à regarder. Dans les cas où vous devez consulter les pages de manuel du shell, etc., par exemple:Le
-exec
est un-exec some_command {} \;
paramètre spécial où tous les paramètres sont attribués àfind
, mais lasome_command {} \;
partie est développée, à l'intérieurfind
desome_command string_of_found_entity
.Plus loin
Vous pourriez trouver cela utile .
la source
Vous devez regarder dedans
man find
, pas danshelp type
ouman bash
.type
dansfind
spécifiera le type de fichier dont vous avez besoin:Et intégré
type
est une chose complètement différente et ce n'est PAS celui qui est utilisé à l'intérieurfind
.la source
Vous avez regardé la mauvaise page du manuel, ce n'est pas la
type -f
commande mais l'find -type f
option qui est assez différente, consultez lefind
manuel pour des explications appropriées.la source
-type f
indique à find de n'imprimer que les fichiers de type f, c'est-à-dire les fichiers simples, pas les répertoires, pas les liens symboliques et pas les fichiers de périphérique.man find
puis recherchez l'-f
option.la source
Ce n'est pas la bonne page de manuel que vous consultez. Vous devriez utiliser
qui vous dira qu'avec
-type f
le-type
prédicat ne sélectionne que les fichiers normaux.la source