17
submitted 1 month ago by [email protected] to c/[email protected]

A week ago I started a little script to format the output of file and path listings from other programs. It got a little bit out of hand and I implemented lot of advanced features into the fmt commands; kind of a sub language to define how the output should be formatted and structured. Entire idea is to give it paths, process the stream (not the file content itself, but the path representing a file) and output them again.

fpath accepts two type of input: a) either as arguments like fpath *.txt or b) from stdin like ls -1 | fpath . With additional options and commands the output can be colored and reformatted to something entirely different. In example with -F option the advanced formatting is possible, such as fpath -F '{.size} {name}' as a simple example.

There is lot of functionality (based on Python, yes this is a Python script), such as {reverse}{name}{/reverse} to reverse font color and background of the segment that is enclosed by the command, a slice to get a subset as a range from the entire path {-1:}, or {center:80}text{/center} to add spaces to get centered text, or just {ext} to output the extension, {mime} to output the file mime type, or even execute arbitrary programs {!grep:a}{path}{/!} to reduce output that has an a in the path.

Did I over engineer it again? Or just ignore most stuff and use it with the most simple options, should be enough anyway: fpath -t -s red *.txt

you are viewing a single comment's thread
view the rest of the comments
[-] [email protected] 2 points 1 month ago

What is a real world example of how this could be used?

[-] [email protected] 4 points 1 month ago

Aliases to common commands so it gets automatically formatted.

[-] [email protected] 2 points 1 month ago

It's a bit hard to show examples that justifies such a tool. But it's not about making things possible, as there are other tools like ls, grep and sed and awk and Bash commands to do all the formatting and output. But its a little bit easier and more flexible to have fpath, which understands paths and has dedicated functionality to support that. It's more about being flexible and doing it in place easily. At least for me, because I know the tool.

Let's say I want to output some information about files that come as a result from my file indexer baloosearch6 (from KDE). It only outputs full paths. Let's say I want to show only its names and the file type information (or any other) next to it:

baloosearch6 "Super Mario" | grep /snes/ | fpath -F'{name}\n\t{file}\n'
this post was submitted on 16 May 2024
17 points (100.0% liked)

Linux

45443 readers
1405 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS