On Sat, Apr 27, 2019 at 8:26 AM Anthony Martin wrote: > From at least V2 to V6, the ls(1) command would not > show directory entries whose names began with a '.' > unless the -a flag was supplied. > > This was changed in V7: only the directory entries > for "." and ".." would be skipped by default. > gnu ls does not follow this convention. The system V sources one can find on the internet have the curious code: #define DOTSUP 1 ... if (aflg==0 && dentry->d_name[0]=='.' # ifndef DOTSUP && (dentry->d_name[1]=='\0' || dentry->d_name[1]=='.' && dentry->d_name[2]=='\0') # endif ) /* check for directory items '.', '..', * and items without valid inode-number; */ continue; which is the V7 behavior ifdef'd out. > All further versions of Research Unix retain the > convention of V7 and Plan 9 ultimately made it > unnecessary. However, BSD and its descendants did > not follow suit. Instead, they continued behaving > like V6 with an additional -A flag to emulate V7. > This has been the BSD convention since at least 4BSD :) But I find this interesting, since the 8th edition was based on BSD 4.1c I thought.... And system III and later all have the above code. > Was the initial behavior intentional or just a > matter of expediency? > > Who made the change and what was their motivation? > Was it a reaction to the intentional hiding of what > came to be known as "dot files"? It looks like, from the source, to be a blip in V7. Warner