Tag Archives: file

ndn: And memories of the past

About a month ago, StreaK left a note about ndn, a/k/a Necromancer’s DOS Navigator. I might catch some flak for this, but I saved it for last, before the shop closes down.

2015-04-26-6m47421-ndn-01 2015-04-26-6m47421-ndn-02 2015-04-26-6m47421-ndn-03

Introductions first. ndn has a precompiled Linux version that you see there, and as you might expect from the screenshots, I find it quite enjoyable. You can see the two-panel menu-based approach that hearkens back to Midnight Commander and its predecessor, Norton Commander.

ndn takes that style and adds multiple window support, a healthy smattering of disk functions (like renaming a volume, like you see above), separate histories for command line and panel activity, and a lot of other tricks. Most everything is driven by a popup dialogue, which I always appreciate.

Even more amazing, ndn adds in a calculator, a calendar, a phone book (remember, this has history back to the modem era), and a lot more. If you try ndn, take your time with the “Utilities” menu, but don’t be shy about the others either.

Much of what ndn can do is arranged by submenu, and that makes it mostly easy to follow. There are also provisions for user-defined menus, and a special function menu just for Linux tasks.

With all that going for it, I still have a few small problems to report. First, as you can probably see if you look close at the screenshots, I’m getting some screen artifacts when I run the precompiled version in Arch. I don’t blame anyone for that; it’s a distraction, but it’s just the nature of the beast.

Second, there are some obvious leftover “tools” and “menus” from the DOS era. The letter strip you see along the bottom of each panel clearly corresponds to drive labels under Windows, and double-clicking on one in Linux just drops you into /dev/, which doesn’t really help.

It would be nice if that area instead showed mountpoints or even polled devices like sda1, sdb1, sr0 and so forth. As it is, that strip is wasted space. Add to wasted space: Displaying file names in the same color as the background for certain file types. That’s an unfortunate oversight. :\

ndn is also a very powerful suite of tools, and will take a lot of time to learn all the commands. But to complicate things, it appears there are different controls when running under X and when in a virtual console. Keyboard navigation seems disabled under X, meaning you have to do all your selections and menu action with the mouse. On the other hand, gpm was no help in a console.

Those are the main reasons I was hesitant to include ndn in this list: It seems a lot of its functions will hinge on graphical support. Which makes it not much better than undistract-me, which we talked about a few days ago.

And why save it for last, you ask? Nostalgia, mostly. If you remember the text-only era and the parade of file managers and disk checkers that all ran within consoles and had no graphical support, ndn is like a trip down memory lane. Popup menus drawn and shaded in hashed boxes, menu bars triggered with ALT+letters, and F-row hotkeys will take you back to the software of 30 years ago … all the way down to the color scheme. It’s a good feeling.

So if you take issue with a leftover DOS file manager, overstocked with utilities and rather haphazardly converted to Linux, appearing here at all, that’s my excuse: It reminds me of other times. 🙂

rmlint: The potential to purge

I am behind the power curve today, because of some real-life obligations. I am going to grab something quick and easy so as not to fall behind; things are going to be even busier into the weekend.

This is a snapshot of rmlint in action:


rmlint cruises through your directory tree, and offers to remove files it thinks are duplicates, zero-byte or hollow folders. And as you can see, given enough space, it will take its time to come up with a menu of potential excisions.

I did say “offers,” which is an important distinction. rmlint’s output is a little unexpected: By default it generates a script that will remove suspicious targets, but doesn’t outright eliminate them.

Which is a good thing; it means you have the option to adjust its list, and it also means you take the next step — running the script — with conscious aforethought. You can’t blame rmlint for whacking apart your /usr/lib folder if you told it specifically to do it.

I like rmlint for a number of reasons — it’s rare that I see a system cleaner, it takes the safe route by creating the script, and it has a smidgen of color.

But that’s about all the time I have today; I’ll get deeper into something tomorrow … I promise. 😉

x_x: The Dead Guy CLI

With barely a week left for this site, I’m beginning to trim away programs that I just probably won’t get to, by virtue of time or technical dilemmas. I’m also making a conscious effort to pick out titles that amuse me in one form or another, so I finish with happy memories. 😛

x_x, which I mentally refer to as “the Dead Guy CLI,” because the home page uses that as a subtitle, is a rather nifty tool that I’m surprised I haven’t seen covered elsewhere. Using a bland, dull, boring Excel spreadsheet borrowed from a corner of the Interweb, Dead Guy CLI transmogrifies it into this:


Well isn’t that clever.

Dead Guy CLI gives you a small measure of control over your output, by allowing you to specify a header row or allow for special encoding. It also works with CSV files, so you’re not strapped trying to convert back and forth to Excel, just to fiddle with x_x.

Aside from that though, Dead Guy CLI seems very simple. Of course, your spreadsheet may need some management if you expect it to fit into a certain dimension, but I am confident that as a skilled and capable member of the information age, you won’t throw a wobbly over a pear-shaped spreadsheet.

Keep x_x in mind when you’re thinking about things like csv2xls or xlhtml, since it may save you a step or prevent you from relying on graphical tools just to extract data from a spreadsheet. And of course, if you’re working with csv files, x_x could supplement what tabview or other tools can do.

For my own recordkeeping, Dead Guy CLI gets points for doing something obvious that I don’t recall seeing elsewhere. And also for the snarky name. I’m a fan of snarky names. 😈

peat: Pete and Repeat are sitting on a fence. …

Here’s a simple python tool that jumps into action when a file changes: peat.


peat is built to execute a command of your choosing, and requires only a list of files to watch as input. As you can see above, probably its most basic use is just to send a message to the screen to announce a change.

But it seems capable of executing almost anything as its target, so you could set it to clean up files, compile a code snippet and run it, or … something completely different.

The syntax to get peat running can be a small challenge; by default peat wants a list separated by whitespace. Check the flags if you want to feed it a list separated by newlines or blank spaces.

I should also mention that in Arch, peat wouldn’t run without calling specifically for python2. On the other hand, it seemed to run without any oddball dependencies or bizarre python libraries, so it may be that it will run well on a vanilla system with no added weight.

I feel like I should mention the long list of file event watchers that are available, so it may be that using python as the basis for a file watcher is still too cumbersome.

And given that their list of features is as wide and long as the list itself, the choice becomes a little more academic. peat is worth investigating if you are comfortable with python and if its advanced handling doesn’t intimidate you. But remember there are many others in the running.

genstats: Quick statistical reports

I can see the usefulness of genstats almost immediately. Given a text file, you can pull out a frequency report with very little effort.


And since genstats handles its input and output in much the same way as cut, you should be able to get the information you want within just a few minutes of compiling it.

It may not be appealing to you to track word frequency in a flat text file, but consider what you could do with genstats and your average log file. That is the author’s suggestion, and the screenshot on the home page gives a good example of some advanced genstats usage.

My only complaint about genstats is so trivial that I’m embarrassed to mention it. In a file with 12 lines, and with four of the words in the second field being the same, the display should read “33%,” not “0.33%.” The latter is a third of a percent, while the former is a third of the whole. Or perhaps there is another calculation at work there, that I’m not sure about.

I get the picture though. And having said that, I suppose it’s worth mentioning that gentstats doesn’t give you a lot of control over the output. As best I can tell, that is the only style of report you’ll see from genstats.

genstats appears to be a free-roaming program; it’s not in Arch/AUR or Debian. So if you want something quick and easy to package, this might be one. 😉

xcv: Taking the long way around

Sometimes it’s difficult for me to see the practicality of someone’s invention. I understand that their perspective brought them to a particular point and they solved a problem with a program, but it appears they’ve taken the very long way around.

This is xcv, which in my eye seems to be taking the aforementioned circuitous route.


If you can follow the steps there, xcv seems to work by either copying or moving files (at your request) to a third location, then waiting for the command to paste them into a target. A breakdown, step-by-step, is on the home page.

In that sense it seems to break down the cp or mv command into steps, and give you more control over the results. I suppose the practicality of that would be in cases where you have files from many different locations, all moving to one new directory. xcv technically reduces the number of commands it would take to do that … I think.

That’s about the only time I can think where xcv would be preferable to the standard tools available, and only if other things like find and some advanced commands are ruled out. It may be that you can see xcv at work in another situation.

As for myself, I probably won’t keep this around. I can see one, perhaps two cases where this would benefit me, and they’re so rare as to be annual events, at best. And in one of those, an extended find command does the trick quite well.

All the same it may be a useful tool for you, if you can see where it would be to your benefit to break down your task, and take the long way around.

nap and nap: Take a nap or two

Two-for-one today, and not just because it’s 02-02, but because I have two programs with the same name, and I don’t think either of them really warrants an entire post to itself.

If you search both Debian and Arch/AUR for “nap,” you’ll find two different programs. The first, from Arch, is a variation on the sleep command, that shows a progress bar as it ticks away.


What you see there is really the grandest example of what I could do with nap, but that isn’t meant to suggest that it has no potential. If you search through this site, you’ll see that in the past two years, I never bothered to make any notes about the sleep command itself, because it was hard to think up something about a program that just waits.

nap does the same thing, but this time tells you how close you are to the end. If you want to know how much longer you’ll have to do nothing, nap will tell you.

The other nap is out of Debian, and is a console client for the now-ancient Napster file sharing protocol.


Unfortunately, that’s as far as I ever got with nap. Its self-configuration routine works fine, and I imagine if you could somehow force-feed it a list of servers, it might get further into its process, but I didn’t have any luck. It sat for the better part of an hour trying to download the server list from GotNap.com, and after that I felt pity and turned it off.

In any case, I don’t know what would be left on the Napster channels. I understand there is still some legitimate content operating under the same name, but whether this program can access it, or if this application is just lost in the dark ages of peer-to-peer networking … I can’t say for sure.

But that’s all for today. I see that my list is getting a bit short. I shall have to go out and beat the bushes this week, and see what falls out. … 😈