brag(1)
π brag(1) β ok bestie, let's grab some binaries π
Hii so this page is brag(1), and it lives in the General Commands Manual. If you've ever wanted to yank multipart binaries off a news server without losing your entire mind, this is literally the girl for you. Sit down, get a snack, we're doing this together. π
πΈ NAME πΈ
brag β grab multipart binaries from a news server, no cap.
β¨ SYNOPSIS β¨
dir] [-n num] [-c] [-C] [-X] [-a pattern [-a pattern] ...] [-r pattern
[-r pattern] ...] [-A file] [-R file] [-t n] [-b break] [-m max]
or
π¦ DESCRIPTION π¦
So brag downloads multipart binaries from an NNTP server and assembles them into whole files for you. It's giving personal assistant, honestly.
Attachments encoded with uuencode, Base64 or yenc are all supported. She's versatile. She contains multitudes. π
π OPTIONS π
One bullet per flag, no skipping, we don't do that here. π«Ά
-Lβ Just print out a list of the groups that are available on the server. That's it, that's the whole job.-sserver β Set the news server to server.-Pport β Set the TCP port to port.-ggroup β Set the newsgroup to group.-luser β Set the user name to user. Heads up bestie: turning this option on switches NNTP authentication ON. You can hand over the password with the-pcommand line option, or you can use a password file (more on that below π).-ppass β Set the password to pass.-qβ Be silent, shhh π€« β don't display progress information.-uβ Save the subjects right alongside the assembled binaries. Subject files get the same name as the binary, just with.subtacked on the end.-kβ Keep the original file names whenever possible, and only rename when it's actually necessary to dodge a collision with files that already exist.-odir β Set the output directory to dir.-nnum β Start with message number num.-cβ Combine parts even if they come from different newsgroups. Also, an article gets downloaded only once, even if it was crossposted to more than one newsgroup. Efficiency queen.-Cβ Combine parts even if they come from different news servers. Chaos, but make it productive.-Xβ Process single-part messages too, not just the multipart ones.-apattern β Add pattern to the list of accept patterns. (Next section has the whole accept/reject tea. π΅)-rpattern β Add pattern to the list of reject patterns.-Afile β Read accept patterns from this file.-Rfile β Read reject patterns from this file.-tn β Use n parallel connections to the server. Default: 2. Bump it to 4 or more if you've got a high-speed network connection and you're feeling spicy π₯.-bbreak β Specify the "break factor": the number of milliseconds to wait between retrieving lines from the server. Genuinely useful when you're sharing a low-speed connection with other applications. Be a considerate icon.-mmax β Specify the maximum number of messages to download.
π ACCEPT AND REJECT PATTERNS π
Okay so this is the part where the subjects of the messages you're downloading get matched against your list of accept and/or reject patterns β but only if you actually specified them, either on the command line or in the accept/reject files (files come later, keep scrolling).
- Only articles matching at least one of the accept patterns will be accepted.
- Similarly, articles matching one of the reject patterns will be rejected.
Match operations are performed as in csh(1). For example, to accept all files with extension mp5, specify
-a Β΄*.mp5*'
on the command line.
Note the quotes (we do not want the shell to process the pattern) and the second * (we are matching against subject lines, not file names). Both of those little details matter, bestie, do not skip them. π
π FILES π
π DOWNLOADED FILES
Grabbed files get collected in ~/.brag/<server>/<group>/finished β unless you said otherwise with the -o command line option. And if you're combining parts from multiple servers (that's the -C option), the results land in ~/.brag/all-servers/<group>/finished instead.
π§ WORK FILES
Work files live in ~/.brag/<server>/<group>/unfinished, or in ~/.brag/all-servers/<group>/unfinished if the -C option is in play.
It is recommended to regularly purge these directories by removing old files and subdirectories. What counts as "old" depends on the newsgroup's traffic; one week can be a good approximation. Go clean your room, metaphorically. π§Ή
π PASSWORD FILES
Passwords can go on the command line, or β for extra security β in password files. Each server can have its own password file, named ~/.brag/<server>/passwd. The format of these files is:
user1:password1
user2:password2
...
Passwords are not encoded. Take care of the file ownership and permissions. Seriously. Lock that down. π
β ACCEPT AND REJECT FILES
If a file called accept is present in ~/.brag/<server>/<group>, its lines get added to the list of accept patterns. Empty ones and comments starting with # are ignored. Similarly, the contents of the file named reject get added to the list of reject patterns. Symmetry, we love to see it.
π₯ EXIT CODES π₯
0β Success π1β Usage errors2β Network errors3β File system errors
π ENVIRONMENT π
If you didn't specify them on the command line, the environment variable NNTPSERVER identifies the server, while NNTPGROUP identifies the group to read the news from. Set them once, vibe forever.
π«Ά DEPENDENCIES π«Ά
brag is written in Tcl, so you need tclsh(1) version 8.0 or later. And for the actual decoding of downloaded parts, uudeview(1) (http://www.fpx.de/fp/Software/UUDeview) is used. Get both, or nothing works, and we'd simply pass away. π
π AUTHOR π
Akos Polster (akos@pipacs.com) and many others β see README for the complete list of contributors. Legends, all of them. π
And that's the whole page, bestie. This one is filed under the General Commands Manual, and it signs off at the bottom as brag(1) β that's the manual name waving goodbye at you. Now go forth and assemble something beautiful. π
β¨
π¦ where this page comes from
- debian bookworm: brag 1.4.1-2.2
- debian trixie: brag 1.4.1-2.3
- ubuntu jammy: brag 1.4.1-2.2
- ubuntu noble: brag 1.4.1-2.3
- ubuntu resolute: brag 1.4.1-3 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms