bfsRecursos • Instalação • Uso • Construção • Contribuindo • Changelog
bfs é uma variante do comando UNIX find que opera a largura e não a profundidade . De outra forma é compatível com muitas versões de find , incluindo
Posix • GNU • FreeBSD • OpenBSD • NetBSD • MacOS
Se você não conhece find , o Manual GNU Find fornece uma boa introdução.
bfs opera a largura-primeiro, que normalmente encontra o (s) arquivo (s) que você está procurando mais rápido.Imagine a seguinte árvore de diretório:
palheiro
├── Deep
│ └── 1
│ └── 2
│ └── 3
│ └── 4
│ └── ...
└── raso
└── agulha
find explorará toda a árvore de diretório deep antes que ela chegue ao shallow que contém o que você está procurando. Por outro lado, bfs lista os arquivos do raso mais profundo, para que você nunca precise esperar que ele explore uma subárvore não relacionada inteira.
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 tenta ser mais fácil de usar do que find , permanecendo compatível. Por exemplo, bfs é menos exigente sobre onde você coloca seus argumentos:
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 dá erros e avisos úteis. Por exemplo, bfs detectará e sugerirá correções para erros de digitação:
$ bfs -nam needle
bfs: error: bfs -nam needle
bfs: error: ~~~~
bfs: error: Unknown argument; did you mean -name? bfs também inclui uma análise estática poderosa para ajudar a capturar erros:
$ bfs -print -name ' needle '
bfs: warning: bfs -print -name needle
bfs: warning: ~~~~~~~~~~~~
bfs: warning: The result of this expression is ignored.bfs adiciona algumas opções que facilitam as tarefas comuns. Por exemplo, o operador -exclude pula sobre subárvores inteiras sempre que uma expressão corresponde. -exclude é mais poderoso e mais fácil de usar do que a ação padrão -prune ; comparar
$ bfs -name config -exclude -name .git
para o equivalente
$ encontre ! (-name .git -prune ) -name config
Como uma abreviação adicional, -nohidden Spips sobre todos os arquivos e diretórios ocultos. Consulte a documentação de uso para obter mais informações sobre as extensões fornecidas pelo bfs .
bfs já pode ser embalado para o seu sistema operacional.| Linux | macos |
|---|---|
Alpine Linux # apk adicione BFS Arch Linux # Pacman -s BFS Debian/Ubuntu # APT Install BFS Fedora Linux # dnf install bfs Gentoo # Emerge sys-apps/bfs GNU Guix # guix install bfs Nixos # nix -env -i bfs Void Linux # xbps -install -s BFS | Homebrew $ Brew Install BFS Macports # porta install bfs |
| BSD | |
FreeBSD # pkg install bfs OpenBSD # pkg_add bfs |
bfs a partir da fonte, pode ser necessário instalar algumas dependências. Os únicos requisitos absolutos para a construção bfs são um compilador C, GNU Make e Bash. Eles são instalados por padrão em muitos sistemas e fáceis de instalar na maioria dos outros. Consulte a documentação do seu sistema operacional sobre o software de construção.
bfs também depende de algumas bibliotecas de sistemas para alguns de seus recursos. Veja como instalá -los em algumas plataformas comuns:
Alpine Linux
# apk add ACL {,-dev} att libcap {,-dev} liburing-dev oniguruma-dev
Arch Linux
# Pacman -s ACL ATTL Libcap Liburing Oniguruma
Debian/Ubuntu
# APT Instale o ACL Libacl1-Dev Att Libattr1-Dev Libcap2-Bin Libcap-Dev Liburing-Dev Liber-Dev
Fedora
# dnf install acl libacl-devel attr libcap-devel liburning-devel onguruma-devel
Nixos
# nix -env -i ACL ATT Libcap Liburing Oniguruma
Void Linux
# xbps-install -s acl- {Devel, progs} attr-progs libcap- {Devel, progs} liburing-devel onguruma-devel
Homebrew
$ Brew Instale Oniguruma
Macports
# porta instalar oniguruma6
FreeBSD
# pkg instalar onguruma
Essas dependências são tecnicamente opcionais, embora altamente recomendadas. Veja a documentação de construção sobre como desativá -los.
bfs .Faça o download de um dos lançamentos ou clone o repo Git. Em seguida, corra
$ ./configure
$ make
Isso construirá o ./bin/bfs binário. Execute a suíte de teste para garantir que funcione corretamente:
$ make check
Se você estiver interessado em velocidade, convém criar a versão de lançamento:
$ ./configure --enable-release
$ make
Finalmente, se você quiser instalá -lo globalmente, execute
# make install