bfsОсобенности • Установка • Использование • Здание • Внесение вклад • Чангэлог
bfs -это вариант команды Unix find , которая управляет шириной, а не глубиной . В остальном он совместим со многими версиями find , включая
POSIX • GNU • FreeBSD • OPENBSD • NETBSD • MacOS
Если вы не знакомы с find , руководство GNU Find обеспечивает хорошее введение.
bfs управляет шириной, которая обычно находит файлы (ы), которые вы ищете быстрее.Представьте себе следующее дерево каталога:
Сетей
├ack Deep
│ └ack. 1
│ └ack 2
│ └ ½. 3
│ └ack 4
│ └acke ... ...
└ac Неглубокий
└ack игл
find , исследуйте все дерево deep Directory, прежде чем оно попадет к shallow , который содержит то, что вы ищете. С другой стороны, bfs перечисляет файлы от самых мелких до самого глубокого, поэтому вам никогда не придется ждать, пока он изучит целый не связанный поддере.
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 пытается быть проще в использовании, чем find , оставаясь совместимым. Например, bfs менее разборчив в том, где вы поставите его аргументы:
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 дает полезные ошибки и предупреждения. Например, bfs обнаружит и предлагает исправления для опечаток:
$ bfs -nam needle
bfs: error: bfs -nam needle
bfs: error: ~~~~
bfs: error: Unknown argument; did you mean -name? bfs также включает в себя мощный статический анализ, чтобы помочь поймать ошибки:
$ bfs -print -name ' needle '
bfs: warning: bfs -print -name needle
bfs: warning: ~~~~~~~~~~~~
bfs: warning: The result of this expression is ignored.bfs добавляет некоторые варианты, которые облегчают общие задачи. Например, оператор -exclude пропускает целые поддеревни всякий раз, когда соответствует выражению. -exclude более мощный и проще в использовании, чем -prune действие - сравнивать
$ bfs -name config -exclude -name .git
к эквиваленту
$ ins ! (-name .git -prune ) -name config
В качестве дополнительной стенографии -nohidden пропускают все скрытые файлы и каталоги. Смотрите документацию по использованию для получения дополнительной информации о расширениях, предоставленных bfs .
bfs уже может быть упакована для вашей операционной системы.| Linux | macOS |
|---|---|
Альпийский Linux # APK добавить BFS Arch Linux # pacman -s bfs Debian/Ubuntu # Apt Установка BFS Fedora Linux # DNF установить BFS Дженто # Emerge Sys-Apps/BFS GNU Guix # Guix Install BFS Никсос # nix -env -i bfs Void linux # xbps -install -s bfs | Домашний $ Brew Install BFS Макспорт # Установка порта BFS |
| BSD | |
FreeBSD # PKG Установка BFS OpenBSD # PKG_ADD BFS |
bfs из Source, вам может потребоваться установить некоторые зависимости. Единственными абсолютными требованиями для строительства bfs является C -компилятор C, GNU Make и Bash. Они устанавливаются по умолчанию во многих системах и просты в установке для большинства других. Обратитесь к документации вашей операционной системы по строительству программного обеспечения.
bfs также зависит от некоторых системных библиотек для некоторых его функций. Вот как установить их на некоторых общих платформах:
Альпийский Linux
# apk добавить acl {,-dev} attr libcap {,-dev} liburing-dev oniguruma-dev
Arch Linux
# pacman -s act attr libcap Libcap Liburing Oniguruma
Debian/Ubuntu
# apt Установить ACL Libacl1-Dev attr libattr1-dev libcap2-bin libcap-dev liburing-dev libonig-dev
Федора
# DNF установить ACL Libacl-Devel attr libcap-devel Liburing-Devel Oniguruma-Devel
Никсос
# nix -env -i act attr libcap Libring oniguruma
Void linux
# xbps-install -s acl- {devel, progs} attr-progs libcap- {devel, progs} Liburing-devel oniguruma-devel
Домашний
$ brew install oniguruma
Макспорт
# Порт установка Oniguruma6
FreeBSD
# PKG Установка Oniguruma
Эти зависимости технически необязательны, хотя и настоятельно рекомендуются. Смотрите документацию по сборке, как их отключить.
bfs .Загрузите один из релизов или клонировать Git Repo. Затем беги
$ ./configure
$ make
Это построит бинарный ./bin/bfs . Запустите тестовый набор, чтобы убедиться, что он работает правильно:
$ make check
Если вы заинтересованы в скорости, вы можете вместо этого создать версию релиза:
$ ./configure --enable-release
$ make
Наконец, если вы хотите установить его во всем мире, запустите
# make install