Everything is a file?


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Everything is a file?
# 1  
Old 11-10-2009
Everything is a file?

In Unix, If everything is treated as a file is true(so directory is also a file)

Can we print the directory like printing the file?
# 2  
Old 11-10-2009
What do you think?
# 3  
Old 11-10-2009
Actually it depends on the OS and version.

The old "everything is a file" is becoming a little less true than it used to be.

In the olden days, I could "od ." on any Unix system and see the actual directory entries. Most today will fail, telling you what you probably already know
Code:
od: .: Is a directory

Typically, the reason for doing this was to either to see the order of the files in the directory (so you could tell how far along a backup or restore was that you were watching on another screen) or to look for "holes" (so that you could rearrange the order of entries by judicious copying and deleting). Why would you want to do that? If you have to ask, you'll probably never want to, but in some situations involving large directories and ultra critical performance, it's worth moving frequently accessed files to the "top", (assuming the namei cache can't help you, perhaps because you need that boost on the *first* access).

Yet another reason was to spot garbage characters in file names.

If all you need is the order of file names in the slots, ls -f will do it.

You can write your own program. I did this on a SCO Unix system:

Code:
#include <dirent.h>
#include <stdio.h>
main()
{
DIR *dirp;
char *c;
long offset=0L;
struct dirent *dp;
dirp = opendir( "." );
while ( (dp = readdir( dirp )) != NULL )
{
        printf("Inode: %8lu Offset %4ld Length %4hd ", dp->d_ino,offset,dp->d_reclen);
        printf("%s ",dp->d_name);
        offset = dp->d_off;
        c=dp->d_name;
        while (*c)
        {
        printf("%x ",*c++);
        }
        printf("\n");

        
}
closedir( dirp );
}

You can add to this to display other information, of course, but while it does show the order, it doesn't show holes. You can infer holes from the directory size and offsets, and you can create holes where you want them by removing or copying files, but it's certainly true that an od on a directory was useful now and then.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

3 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Shell script (sh file) logic to compare contents of one file with another file and output to file

Shell script logic Hi I have 2 input files like with file 1 content as (file1) "BRGTEST-242" a.txt "BRGTEST-240" a.txt "BRGTEST-219" e.txt File 2 contents as fle(2) "BRGTEST-244" a.txt "BRGTEST-244" b.txt "BRGTEST-231" c.txt "BRGTEST-231" d.txt "BRGTEST-221" e.txt I want to get... (22 Replies)
Discussion started by: pottic
22 Replies

2. Shell Programming and Scripting

Compare 2 text file with 1 column in each file and write mismatch data to 3rd file

Hi, I need to compare 2 text files with around 60000 rows and 1 column. I need to compare these and write the mismatch data to 3rd file. File1 - file2 = file3 wc -l file1.txt 58112 wc -l file2.txt 55260 head -5 file1.txt 101214200123 101214700300 101250030067 101214100500... (10 Replies)
Discussion started by: Divya Nochiyil
10 Replies

3. Shell Programming and Scripting

Match list of strings in File A and compare with File B, C and write to a output file in CSV format

Hi Friends, I'm a great fan of this forum... it has helped me tone my skills in shell scripting. I have a challenge here, which I'm sure you guys would help me in achieving... File A has a list of job ids and I need to compare this with the File B (*.log) and File C (extend *.log) and copy... (6 Replies)
Discussion started by: asnandhakumar
6 Replies
Login or Register to Ask a Question