What is Ken referring to? Is there a "creat" command?
4 Answers
It's a Unix system call that creates a file: At a Unix shell prompt, type man 2 creat
to learn more.
Man pages are also available online these days:
-
31
Not only he refers to man 2 creat
system call. He also refers to the obsolete trends to save on every tiny character, where possible, sometimes this being only confusing, especially now, when typing and storing another character is rarely an obstacle.
-
18I think in the context of the question he was only referring to creat(). The point he was making was there was nothing about Unix he would have done differently except for this small spelling error in the system call to create a file.– jmucchielloNov 11, 2009 at 8:04
-
17@jmucchiello, it's not a spelling error. It's a deliberate (albeit non-standard) abbreviation. It fits with the heavy use of abbreviations like
fcntl
,ls
,mv
, etc, in general. Apr 13, 2011 at 19:15 -
9
-
2Teletype keys are hard to press. It was beneficial to save a few letters. First ones that could be eliminated were vowels and redundant consonants. Apr 26, 2017 at 11:15
-
1
I'm six years late to answer, but I believe that the extant answers all miss the point of Thompson's quote.
I'd spell creat with an 'e'.
Ken Thompson is not lamenting the name of the function used to open and possibly create a file. Rather, he is expressing that Unix was done properly, i.e. there is nothing major that should have been done differently.
The subtle point is that Unix architecture is sound, and the implementations are fine. One would need to bikeshed to find anything to improve in Unix. Thus, the obvious nitpick about the name of a common system call.
-
3Right, he wants to tell us, that the UNIX architecture can be improved in very tiny aspects. But basically UNIX has done it right. BTW.
creat
is a system call not a CLI command.– ikrabbeJul 9, 2015 at 20:59
It refers to the UNIX system call to create new files. Linkers on some machines were limited to identifiers of at most 6 characters. Apparently, Ken had to work with such a linker and hence the create system call was shortened to creat to match this limitation. The irony is that create does too.
See also: What does the 9th commandment mean?
-
15The 6 character limit translated to 5, as the compiler (in order to avoid user symbols clashing with compiler generated ones) prepended a
'_'
before user variable/function names, and was careful not to use'_'
when generating symbols.– vonbrandMar 14, 2013 at 1:08 -
4@vonbrand: That doesn't seem to explain how
unlink
orumount
could exist, however, which I would think are contemporary withcreat
. Jul 11, 2015 at 6:23 -
2@Dolda2000 Well, it's quite possible the linker had this limitation, while the compiler did not. So
umount
would clash withumoun
orumounx
or whatever, but the name would be allowed. But that's pure speculation :)– LuaanJul 12, 2015 at 7:32
creat
with two 'e's - after all, one is already present. Of course, the implicit message being that UNIX turned out the way it was meant to be without any substantial changes only requiring fixing this [one] typo.