bfsCaractéristiques • Installation • Utilisation • Bâtiment • Contribution • Changelog
bfs est une variante de la commande UNIX find qui fonctionne d'étendue première plutôt que de profondeur d'abord . Il est par ailleurs compatible avec de nombreuses versions de find , y compris
POSIX • GNU • FreeBSD • OpenBSD • NetBSD • macOS
Si vous n'êtes pas familier avec find , le manuel GNU Find fournit une bonne introduction.
bfs exploite l'étendue-première, qui trouve généralement le ou les fichiers que vous recherchez plus rapidement.Imaginez l'arbre de répertoire suivant:
meule de foin
├fiques profondément
│ └fique
│ └fique
│ └fiques 3
│ └fique
│ └fique
└fiques peu profondes
└tille
find explorera l'intégralité de l'arbre de répertoire deep avant qu'il n'atteigne le shallow qui contient ce que vous recherchez. D'un autre côté, bfs répertorie les fichiers du plus profond au plus profond, vous n'avez donc jamais à attendre qu'il explore un sous-arbre sans rapport.
bfs | find |
|---|---|
$ bfs haystack
haystack
haystack/deep
haystack/shallow
haystack/deep/1
haystack/shallow/needle
... | $ find haystack
haystack
haystack/deep
haystack/deep/1
haystack/deep/1/2
haystack/deep/1/2/3
haystack/deep/1/2/3/4
...
haystack/shallow
haystack/shallow/needle |
bfs essaie d'être plus facile à utiliser que find , tout en restant compatible. Par exemple, bfs est moins pointilleux sur l'endroit où vous mettez ses arguments:
bfs | find |
|---|---|
$ bfs -L -name ' needle ' haystack
haystack/needle
$ bfs haystack -L -name ' needle '
haystack/needle
$ bfs -L haystack -name ' needle '
haystack/needle | $ find -L -name ' needle ' haystack
find: paths must precede expression: haystack
$ find haystack -L -name ' needle '
find: unknown predicate `-L'
$ find -L haystack -name ' needle '
haystack/needle |
bfs donne des erreurs et des avertissements utiles. Par exemple, bfs détectera et suggérera des corrections pour les fautes de frappe:
$ bfs -nam needle
bfs: error: bfs -nam needle
bfs: error: ~~~~
bfs: error: Unknown argument; did you mean -name? bfs comprend également une puissante analyse statique pour aider à saisir les erreurs:
$ bfs -print -name ' needle '
bfs: warning: bfs -print -name needle
bfs: warning: ~~~~~~~~~~~~
bfs: warning: The result of this expression is ignored.bfs ajoute certaines options qui facilitent les tâches courantes. Par exemple, l'opérateur -exclude saute sur des sous-arbres entiers chaque fois qu'une expression correspond. -exclude est à la fois plus puissant et plus facile à utiliser que l'action standard -prune ; comparer
$ bfs -Name config -exclude -name .git
à l'équivalent
$ trouver ! (-name .git -prune ) -Name config Config
En tant que raccourci supplémentaire, -nohidden saute tous les fichiers et répertoires cachés. Voir la documentation d'utilisation pour en savoir plus sur les extensions fournies par bfs .
bfs peut déjà être emballé pour votre système d'exploitation.| Linux | macos |
|---|---|
Alpine Linux # APK Ajouter BFS Arch Linux # Pacman -s BFS Debian / Ubuntu # apt install bfs Fedora Linux # DNF Installer BFS Gentoo # émerger sys-apps / bfs GNU Guix # Guix Installer BFS Nixos # nix-env -i bfs Void Linux # xbps-stall -s bfs | Homebrew $ Brew Installer BFS Macport # Port Installer BFS |
| BSD | |
FreeBSD # pkg installer BFS Openbsd # pkg_add bfs |
bfs à partir de Source, vous devrez peut-être installer certaines dépendances. Les seules exigences absolues pour la construction bfs sont un compilateur C, GNU Make et Bash. Ceux-ci sont installés par défaut sur de nombreux systèmes et faciles à installer sur la plupart des autres. Reportez-vous à la documentation de votre système d'exploitation sur la construction du logiciel.
bfs dépend également de certaines bibliothèques système pour certaines de ses fonctionnalités. Voici comment les installer sur certaines plates-formes communes:
Alpine Linux
# apk add ACL {, - dev} attr libcap {, - dev} liburing-dev oniguruma-dev
Arch Linux
# pacman -s acl att libcap liburing oniguruma
Debian / Ubuntu
# apt installer ACL libacl1-dev att Att libattr1-dev libcap2-bin libcap-dev liburing-dev libonig-dev
Feutre
# dnf installer ACL libacl-devel att
Nixos
# Nix-env -i ACL ATR LIBCAP LIBURING ONIGURUMA
Void Linux
# xbps-stall -s acl- {devel, progs} attrops pROGS libcap- {devel, prog.
Homebrew
$ Brew Installer Oniguruma
Macport
# Port Installer Onigurum6
FreeBSD
# PKG Installer Oniguruma
Ces dépendances sont techniquement facultatives, bien que fortement recommandées. Voir la documentation de construction pour les désactiver.
bfs .Téléchargez l'une des versions ou clonez le repo Git. Puis courez
$ ./configure
$ make
Cela construira le binaire ./bin/bfs . Exécutez la suite de test pour vous assurer qu'elle fonctionne correctement:
$ make check
Si vous êtes intéressé par la vitesse, vous voudrez peut-être créer la version de version à la place:
$ ./configure --enable-release
$ make
Enfin, si vous souhaitez l'installer à l'échelle mondiale, exécutez
# make install