About | Screen Shot | News | Download | Help | Mailing Lists | CVS | College Student | Project Road Map | Geek Stuff | SF Project Page | Tyler Riddle


Tyler's File Commands is a modified version of cp which includes verbosity upgrades, including a progress meter. It is known to work on the following platforms:

Screen Shot

bork.big -> /tmp/garbage/bork.big: 67.3% |=============       |


Deliverables for Tyler's File Commands 1.2

Sun Sep 26, 2004 The deliverables required to release Tyler's File Commands 1.2 have been decided on. Version 1.2 will include these new features:

Active development is going on inside the TFC-SECOND branch. If you don't know how to get CVS to check out a branch you probably don't want to be using that version of the software; stick with the stable versions listed on the download page.

I am releasing the progress meter into the public domain because I believe that something so small and useful should be available to anyone who wants to use it with out any kind of worry about licensing requirements. This was inspired by my own worries about licensing issues because of code from the Linux fsck utility. I was worried that the infectious nature of the GPL would get into my program and that troubled me as I would have to dual license the software. It turns out I did not find any code directly from the fsck utility, only inspiration. As such, I am releasing everything I have the power to as public domain. You may use that source code in any way you see fit. Put it into your GPL, BSD, open-source, closed-source, what ever software. I hope you enjoy it.

A Sneak Preview of the Future: Tyler's File Commands 1.2

Wed September 8, 2004. My thoughts on what I want Tyler's File Commands 1.2 to look like. Includes ideas for the new utility which will allow you to large numbers of filenames easily with regular expressions. Please read the article I wrote and leave your comments if you have any. Anonymous posting is allowed, you just have to select it when you see the login screen.


Pick your favorite download option:


Source tarball:
tar.bz2 or tar.gz
Pre-compiled binary for Darwin on PPC: tar.bz2 or tar.gz


Source tarball: tar.bz2 or tar.gz
Pre-compiled binary for Darwin on PPC: tar.bz2 or tar.gz


Source tarball: tar.bz2 or tar.gz
Pre-compiled binary for Darwin on PPC: tar.bz2 or tar.gz


The only help resource right now is the mail lists. We will try to help you out as much as we can there.

Mailing Lists

Subscribe/Unsubscribe to the user's mailing list or view the archives.

College Student

Donate Here You can help feed me! This is a shameless plug for money. I'm a college student pursuing an AAS in Welding Technology and taking 18 credits this quarter so my time to work is limited. SourceForge has a donation system where you can donate some funds to me. I might use it for food, gas, welding equipment or even beer. Don't feel guilty for not giving but if you do give I'll add your name to a public list at your request and personally thank you in an email. I'll probably even tell you what I'm going to use the money for if you are interested.

Project Road Map

The source is now split into two branches: TFC-FIRST and TFC-SECOND. TFC-FIRST is where 1.0, 1.0.1 and other minor revisions are kept. Important features and bug fixes may be included and new versions released.

TFC-SECOND contains the next version of the source which will be released as Tyler's File Commands 1.2. This branch includes new features to cp and a new program called 'apply regular expression' and the binary is called 'are'. The program is designed to make it easy to rename large ammounts of files easily using an expanded regular expression syntax that includes helpful tidbits in the domain of manipulating files.

Geek Stuff

This is where I get to ramble on about the geeky and gory details of how my version of cp works. First of all, I did not want the overhead of ncurses, so I never even considered using it. All formatting is done with printf() and spaces for padding. Excessive looping was not wanted either, so strings are setup in ram as long sequences of ' ' (space) and '='. Indexes into these strings are feed into printf() to produce the desired amount of characters.

Another requirement was to understand the width of the terminal as well as handle terminal size changes gracefully. With out ncurses I had to use SIGWINCH and ioctl() to get the terminal size. This was constructed together so a global variable always contains the current terminal size.

While the primary motivation behind this hack was eye-candy, I was not willing to sacrifice quality. As such, I implemented logic to size the filename display and progress meter intelligently. The progress meter will crowd out the filename until it is 30 characters. In this case, the remaining available space will be devoted to the filename being copied. If the filename is short enough, the progress meter will expand to fill any available space. If the terminal is sized very small, the software will only display a centered display of percentage completed. If the terminal is shrunk down to less than 10 characters the result is undefined (I can't even get Apple's terminal to go that small).

Did you notice that this web site also works very well with text browsers? Every image has an alt tag on it, even the screen shot, which has an ASCII version of the progress meter as its alt tag.

Thank you Source Forge!
SourceForge.net Logo