|
Home | Switchboard | Unix Administration | Red Hat | TCP/IP Networks | Neoliberalism | Toxic Managers |
(slightly skeptical) Educational society promoting "Back to basics" movement against IT overcomplexity and bastardization of classic Unix |
News | Recommended Books | Recommended Links | Reference | ln command | |
tar | cpio | Admin Horror Stories | Unix History | Etc |
|
The file command determines what type of data a file contains. It returns a brief explanation of what type of data it believes is in each file. The file command is useful for knowing what type of data a file contains. It can help prevent you from locking up your terminal by informing you that a file contains executable program text. If you cat an executable file, your terminal may act strange and, in fact, the keyboard often becomes disabled. The only way out of the situation is to turn your terminal off and back on, then log back in to the system. If you perform file before you cat a file, you will know what type of data it contains and whether or not you can display it.
You can invoke it from find in case you want to check who many files are corrupting on in the particulate filesystem by finfing descrapanires between file extention and the type of file that file provides. this is especially effective for such file types like gz, tar, etc that are corrupted file print type data.
cd Scratch; find . -type f -print0 | xargs file -0 > /tmp/scratch_files.lst fgrep 'gz:' | grep -P 'gz\:\s+data' > scratch_corrupted_gz_files.lst
Those files then can be investigated further.
|
The file command makes calculated assumptions as to what type of data is in a file. The following list describes the types file may return. Keep in mind file is trying to guess what type of data is in a file. The known system types of data, such as executable or linkable object code, are known but some shell scripts and English text files may confuse file and thus an incorrect response is returned.
Following are the general formats of the file command.
file [ -h ] [ -m magic_file ] file_list file [ -h ] [ -m magic_file ] -f list_file file -c [ -m magic_file ]
Most commonly used options are -f and -h:
-f list_file | The next argument after the -f is read and the contents are used as the pathnames for files to be examined by file. |
-h | Do not follow symbolic links. |
You can also create your own magic file and specified it using option -m
-m magic_file | The next argument after the -m is used as the magic file instead of the default /etc/magic file. |
The following list describes the arguments passed to the file command.
The description given by the file command you are using may vary but it should inform you of the same type of data stored in the file. You can display the /etc/magic file to see the definitions used by your system's file command.
CAUTION: The file command is not always correct in its assumption of the type of data stored in a file. The most common mistakes of file are the ASCII text, English text, and commands text.
The /etc/magic file is used as a cross reference to determine what type of data is stored in a file. The magic number is based on numeric or string constants stored within the file itself. The format of the /etc/magic file is described in the first lines of the file (/etc/magic).
file [-bchikLNnprsvz0] [--apple] [--mime-encoding] [--mime-type] [-e testname] [-F separator] [-f namefile] [-m magicfiles] file ...
file -C [-m magicfiles]
file [--help]
This manual page documents version 5.04 of the file command.
file tests each argument in an attempt to classify it. There are three sets of tests, performed in this order: filesystem tests, magic tests, and language tests. The first test that succeeds causes the file type to be printed.
The type printed will usually contain one of the words text (the file contains only printing characters and a few common control characters and is probably safe to read on an ASCII terminal), executable (the file contains the result of compiling a program in a form understandable to some UNIX kernel or another), or data meaning anything else (data is usually 'binary' or non-printable). Exceptions are well-known file formats (core files, tar archives) that are known to contain binary data. When modifying magic files or the program itself, make sure to preserve these keywords. Users depend on knowing that all the readable files in a directory have the word 'text' printed. Don't do as Berkeley did and change 'shell commands text' to 'shell script'.
The filesystem tests are based on examining the return from a stat(2) system call. The program checks to see if the file is empty, or if it's some sort of special file. Any known file types appropriate to the system you are running on (sockets, symbolic links, or named pipes (FIFOs) on those systems that implement them) are intuited if they are defined in the system header file
The magic tests are used to check for files with data in particular fixed formats. The canonical example of this is a binary executable (compiled program) a.out file, whose format is defined in #include <a.out.h> and possibly #include <exec.h> in the standard include directory.
These files have a 'magic number' stored in a particular place near the beginning of the file that tells the UNIX operating system that the file is a binary executable, and which of several types thereof. The concept of a 'magic' has been applied by extension to data files. Any file with some invariant identifier at a small fixed offset into the file can usually be described in this way. The information identifying these files is read from the compiled magic file /usr/share/misc/magic.mgc, or the files in the directory /usr/share/misc/magic if the compiled file does not exist. In addition, if $HOME/.magic.mgc or $HOME/.magic exists, it will be used in preference to the system magic files. If /etc/magic exists, it will be used together with other magic files.
If a file does not match any of the entries in the magic file, it is examined to see if it seems to be a text file. ASCII, ISO-8859-x, non-ISO 8-bit extended-ASCII character sets (such as those used on Macintosh and IBM PC systems), UTF-8-encoded Unicode, UTF-16-encoded Unicode, and EBCDIC character sets can be distinguished by the different ranges and sequences of bytes that constitute printable text in each set. If a file passes any of these tests, its character set is reported. ASCII, ISO-8859-x, UTF-8, and extended-ASCII files are identified as 'text' because they will be mostly readable on nearly any terminal; UTF-16 and EBCDIC are only 'character data' because, while they contain text, it is text that will require translation before it can be read. In addition, file will attempt to determine other characteristics of text-type files. If the lines of a file are terminated by CR, CRLF, or NEL, instead of the Unix-standard LF, this will be reported. Files that contain embedded escape sequences or overstriking will also be identified.
Once file has determined the character set used in a text-type file, it will attempt to determine in what language the file is written. The language tests look for particular strings (cf. #include <names.h> ) that can appear anywhere in the first few blocks of a file. For example, the keyword .br indicates that the file is most likely a troff(1) input file, just as the keyword struct indicates a C program. These tests are less reliable than the previous two groups, so they are performed last.
The language test routines also test for some miscellany (such as tar(1) archives).
Any file that cannot be identified as having been written in any of the character sets listed above is simply said to be 'data'.
-b, --brief
-C, --compile
Write a magic.mgc output file that contains a pre-parsed version of the magic file or directory.
-c, --checking-printout
Cause a checking printout of the parsed form of the magic file. This is usually used in conjunction with the -m flag to
debug a new magic file before installing it.
-e, --exclude testname
Exclude the test named in testname from the list of tests made to determine the file type. Valid test names are:
apptype
EMX application type (only on EMX).
text' Various types of text files (this test will try to guess the text encoding, irrespective of the setting of the 'encoding' option).
encoding
Different text encodings for soft magic tests.
tokens' Looks for known tokens inside text files.
cdf' Prints details of Compound Document Files.
compress
Checks for, and looks inside, compressed files.
elf' Prints ELF file details.
soft' Consults magic files.
tar' Examines tar files.
-F, --separator separator
Use the specified string as the separator between the filename and the file result returned. Defaults to ':'.
-f, --files-from namefile
Read the names of the files to be examined from namefile (one per line) before the argument list. Either namefile or
at least one filename argument must be present; to test the standard input, use '-' as a filename argument.
-h, --no-dereference
option causes symlinks not to be followed (on systems that support symbolic links). This is the default if the environment variable
POSIXLY_CORRECT is not defined.
-i, --mime
Causes the file command to output mime type strings rather than the more traditional human readable ones. Thus it may say 'text/plain;
charset=us-ascii' rather than 'ASCII text'. In order for this option to work, file changes the way it handles files recognized by
the command itself (such as many of the text file types, directories etc), and makes use of an alternative 'magic' file. (See the
FILES section, below).
--mime-type, --mime-encoding
Like -i, but print only the specified element(s).
-k, --keep-going
Don't stop at the first match, keep going. Subsequent matches will be have the string '\012- ' prepended. (If you want a newline,
see the '-r' option.)
-L, --dereference
option causes symlinks to be followed, as the like-named option in ls(1) (on
systems that support symbolic links). This is the default if the environment variable POSIXLY_CORRECT is defined.
-m, --magic-file magicfiles
Specify an alternate list of files and directories containing magic. This can be a single item, or a colon-separated list. If a compiled
magic file is found alongside a file or directory, it will be used instead.
-N, --no-pad
Don't pad filenames so that they align in the output.
-n, --no-buffer
Force stdout to be flushed after checking each file. This is only useful if checking a list of files. It is intended to be used by
programs that want filetype output from a pipe.
-p, --preserve-date
On systems that support utime(2) or
utimes(2), attempt to preserve the access time of files analyzed, to pretend
that file never read them.
-r, --raw
Don't translate unprintable characters to \ooo. Normally file translates unprintable characters to their octal representation.
-s, --special-files
Normally, file only attempts to read and determine the type of argument files which
stat(2) reports are ordinary files. This prevents problems, because
reading special files may have peculiar consequences. Specifying the -s option causes file to also read argument
files which are block or character special files. This is useful for determining the filesystem types of the data in raw disk partitions,
which are block special files. This option also causes file to disregard the file size as reported by
stat(2) since on some systems it reports a zero size for raw disk
partitions.
-v, --version
Print the version of the program and exit.
-z, --uncompress
Try to look inside compressed files.
-0, --print0
Output a null character '\0' after the end of the filename. Nice to cut(1)
the output. This does not affect the separator which is still printed.
--help
Print a help message and exit.
/usr/share/misc/magic.mgcDefault compiled list of magic.
The environment variable MAGIC can be used to set the default magic file name. If that variable is set, then file will not attempt to open $HOME/.magic. file adds '.mgc' to the value of this variable as appropriate. The environment variable POSIXLY_CORRECT controls (on systems that support symbolic links), whether file will attempt to follow symlinks or not. If set, then file follows symlink, otherwise it does not. This is also controlled by the -L and -h options.
The file command writes to the standard output. Its output may be piped to another command or redirected to a file.
foreach f (/etc/*)
file $f
end
To see what your types of files the current directory contains
file * bin: directory calendar: ascii text db: directory file1: English text letters: directory myfile: empty
|
Switchboard | ||||
Latest | |||||
Past week | |||||
Past month |
Get over extensions, use file command to determine file types in Linux
Dec 14 2012 | IBM real world Linux Blog
Himanshuz.chd 270004408M | Dec 14 2012 | Tags: linux extensions magic command file | 58,194 Views The other day when I was searching for some file in my Linux system, I got a result with name 'TheLinuxCommandLine'. I was not sure what type of file was that as 'vim TheLinuxCommandLine' produced the following output :
%PDF-1.6^M%âãÏÓ^M 3006 0 obj^M<>stream^M ... ... ...While I got a clue from the word 'PDF' in the output above that it could be a PDF file but then I thought that there should be utility that could gracefully tell the type of file supplied to it as input. I searched a bit and found a Linux command line utility known as 'file' which is used to classify the files (whose names are supplied as input) based on their type. So, I thought to share whatever I learned about the 'file' command in Linux.Here is the syntax of this command :
file [options] file-nameSo we see that the file command expects a file name as a mandatory argument while there are certain options that are non-mandatory but can be supplied to customize the output as per need. Here is a basic example of what file command does. In this exercise, I supplied different types of files as input to file command. The output is shown below :
$ file grof grof: PostScript document text conforming DSC level 3.0$ file Desktop/ Desktop/: directory$ file env_script.sh env_script.sh: Bourne-Again shell script, ASCII text executable$ file a.out a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xee08a653cc2bcbca7fcd1fc62900bd9d6d053731, not strippedSo, we see that for every type of file supplied, the file command was able to classify it by providing the details related to it's type. Finally I supplied the file 'TheLinuxCommandLine' (that I was originally confused about) to this utility.
Here is the output that I got:
$ file TheLinuxCommandLine TheLinuxCommandLine: PDF document, version 1.6So we see that the file command successfully classified it as a PDF file. This prompted me to look into the details about how this command works. I read the man page and found that there are three sets of tests, performed in this order: file system tests, magic tests, and language tests.
Here is more about these tests from the man page :
The file-system tests are based on examining the return from a stat(2) system call. The program checks to see if the file is empty, or if it's some sort of special file. Any known file types appropriate to the system you are running on (sockets, symbolic links, or named pipes (FIFOs) on those systems that implement them) are intuited if they are defined in the system header fileThis gave me a good idea as to how this command works. Thereon I tried a few options provided by this command.. The magic tests are used to check for files with data in particular fixed formats. These files have a "magic number" stored in a particular place near the beginning of the file that tells the UNIX operating system that the file is a binary executable, and which of several types thereof. The concept of a "magic" has been applied by extension to data files. Any file with some invariant identifier at a small fixed offset into the file can usually be described in this way. The information identifying these files is read from /etc/magic and the compiled magic file /usr/share/misc/magic.mgc, or the files in the directory /usr/share/misc/magic if the compiled file does not exist. In addition, if $HOME/.magic.mgc or $HOME/.magic exists, it will be used in preference to the system magic files.
If a file does not match any of the entries in the magic file, it is examined to see if it seems to be a text file. ASCII, ISO-8859-x, non-ISO 8-bit extended-ASCII character sets (such as those used on Macintosh and IBM PC systems), UTF-8-encoded Unicode, UTF-16-encoded Unicode, and EBCDIC character sets can be distinguished by the different ranges and sequences of bytes that constitute printable text in each set. If a file passes any of these tests, its character set is reported. ASCII, ISO-8859-x, UTF-8, and extended-ASCII files are identified as "text" because they will be mostly readable on nearly any terminal; UTF-16 and EBCDIC are only "character data" because, while they contain text, it is text that will require translation before it can be read.
Once file has determined the character set used in a text-type file, it will attempt to determine in what language the file is written. The language tests look for particular strings (cf.
) that can appear anywhere in the first few blocks of a file. For example, the keyword .br indicates that the file is most likely a troff(1) input file, just as the keyword struct indicates a C program. These tests are less reliable than the previous two groups, so they are performed last. The language test routines also test for some miscellany (such as tar(1) archives). Any file that cannot be identified as having been written in any of the character sets listed above is simply said to be "data".
Examples of file command options
1. Remove file-names from output using -b option.
I used this option in the following example :
$ file -b grof PostScript document text conforming DSC level 3.0 $So we see that there was no file name in the output. The output contained only details about the file.
2. Exclude a particular test while determining the file type
There are various test that are performed by file command while determining the type of file. There exists an option -e that can be used to exclude a particular type of test. For example, to exclude a test in which the file command checks and prints the details of an ELF file, we can pass the test name 'elf' to -e option in the file command. Here is an example :
$ file -e elf a.out a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV)So we see that the details were skipped due to the 'elf' test name supplied to -e option. There are various other test names available. Here is the list of test names available :
apptype EMX application type (only on EMX).
ascii Various types of text files (this test will try to guess the text encoding, irrespective of the setting of the 'encoding' option).
encoding Different text encodings for soft magic tests.
tokens Looks for known tokens inside text files.
cdf Prints details of Compound Document Files.
compress Checks for, and looks inside, compressed files.
elf Prints ELF file details.
soft Consults magic files.
tar Examines tar files.3. Change the default separator using -F option
If you observe that a separator ':' is used between the file names and the description in the outputs produced by file command. There exists an option -F through which we can change the separator.Here is an example in which I tried to replace the default ':' with '#'.
$ file -F# * a.out# ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xee08a653cc2bcbca7fcd1fc62900bd9d6d053731, not stripped bufrovrflw# ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x359ad47b9c29ca2b287e1d0adb26029b859ac7e4, not stripped bufrovrflw.c# ASCII English text Cfile.c# ASCII text Cfile.h# ASCII text Cfile.o# ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped cmd# ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xfac3f75dfae01e0ac037c39099182eb5c51fca82, not stripped cmd.c# ASCII English text CPPfile.cpp# ASCII C program text CPPfile.h# ASCII textSo we see that the separator was changed to '#'.
4. Read input file-names from a file using -f option
This command provides an option -f through which we can provide name of a file that contains input file-names for this command.Here is an example :
$ cat file.txt main main.cppThe above mentioned file 'file.txt' contains two file names. Let's use 'file.txt' with -f option :$ file -f file.txt main: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xee08a653cc2bcbca7fcd1fc62900bd9d6d053731, not stripped main.cpp: ASCII C program textSo we see that the file command displayed the details about the file-names that were contained in the file 'file.txt'.
5. Output mime type information using -i option
If it is required to display the mime type information rather than the other human readable information then the option -i can be used.Here is an example :
$ file -i a.out a.out: application/x-executable; charset=binarySo we see that the output displayed mime type information.
6. Disable padding for file-names in output using -N option.
When file command is run normally, you will see that there is a bit of padding in the output so that file-names and description is distinguishable.For example, a normal output looks like :
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xee08a653cc2bcbca7fcd1fc62900bd9d6d053731, not stripped bufrovrflw: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x359ad47b9c29ca2b287e1d0adb26029b859ac7e4, not stripped bufrovrflw.c: ASCII English text Cfile.c: ASCII text Cfile.h: ASCII text Cfile.o: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped cmd: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xfac3f75dfae01e0ac037c39099182eb5c51fca82, not stripped cmd.c: ASCII English text CPPfile.cpp: ASCII C program text CPPfile.h: ASCII text CPPfile.o: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped dir1: directory dir2: directoryThe file command provides an option -N through which this padding can be disabled.
Here is an example using this option :
$ file -N * a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xee08a653cc2bcbca7fcd1fc62900bd9d6d053731, not stripped bufrovrflw: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x359ad47b9c29ca2b287e1d0adb26029b859ac7e4, not stripped bufrovrflw.c: ASCII English text Cfile.c: ASCII text Cfile.h: ASCII text Cfile.o: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped cmd: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xfac3f75dfae01e0ac037c39099182eb5c51fca82, not stripped cmd.c: ASCII English text CPPfile.cpp: ASCII C program text CPPfile.h: ASCII text CPPfile.o: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped dir1: directory dir2: directorySo we see that the padding was disabled in the output.
7. Provide details about files contained in compressed file using -z option.
Normally, if a compressed file (like .zip) is provided as input to file command, it displays that it is compressed zip file etc.For example :
$ file grof.zip grof.zip: Zip archive data, at least v1.0 to extractBut, the command also provides an option -z through which it displays the details of the files contained inside the compressed file. For example, if -z is used with the .zip file we used in above example, here is what we get in output :
$ file -z grof.zip grof.zip: PNG image data, 64 x 64, 8-bit/color RGBA, non-interlaced (Zip archive data, at least v1.0 to extract)So we see that this time the details of the data contained in the compressed file is displayed along with the general details that were displayed in the above example.
Some discussions related to file command on forums
Here are a couple of discussions on various forums related to file command that might be an interesting read.Discussion - 1 :
The results from file are less than perfect, and it has more problems with some types of files than others. File basically just looks for particular pieces of binary data in predictable patterns to figure out filetypes. Unfortunately, in particular, some of the filetypes often used for video fall into this "problematic" category. The newer container formats like .mp4 and .mkv usually have several different MIME types that should properly depend on what type of data is being contained. For example, an .mp4 could properly be identified as video/mp4, audio/mp4, or application/mp4 depending on the content. In practice, file often makes guesses that simply conform with common usage, and it may work perfectly well for you. For example, while I mentioned some theoretical difficulties with identifying Matroska files correctly, file basically just assumes that any Matroska file is a video. On the other hand, the usage of the Ogg container is more evenly split between audio and video, and I believe the current version of file just splits the difference, and identifies Ogg files as application/ogg, which wouldn't fall into any of your categories. The one thing I can say with certainty is that you want the most up-to-date version of file you can get your hands on. The "magic" files that contain the patterns to match against and the MIME types that will result from a match are updated fairly often to include newer filetypes like WebM, or just to improve accuracy for older types.Discussion - 2 :
I have a couple of C++ source files (one .cpp and one .h) that are being reported as type data by the file command in Linux. When I run the file -bi command against these files, I'm given this output (same output for each file): application/octet-stream; charset=binary Each file is clearly plain-text (I can view them in vi). What's causing file to misreport the type of these files? Could it be some sort of Unicode thing? Both of these files were created in Windows-land (using Visual Studio 2005), but they're being compiled in Linux (it's a cross-platform application)....
...
...I found the issue using binary search to locate the problematic lines. head -n {1/2 line count} file.cpp > a.txt tail -n {1/2 line count} file.cpp > b.txt Running file against each half, and repeating the process, helped me locate the offending line. I found a Control+P (^P) character embedded in it. Removing it solved the problem.
Google matched content |
Get over extensions, use file command to determine file types in Linux - Real world Linux Blog
How to see the file type - Linux Audit
How to Find Out File Types in Linux
Linux - UNIX Determine File Type - nixCraft
File Command in Linux 5 Essential Examples
Society
Groupthink : Two Party System as Polyarchy : Corruption of Regulators : Bureaucracies : Understanding Micromanagers and Control Freaks : Toxic Managers : Harvard Mafia : Diplomatic Communication : Surviving a Bad Performance Review : Insufficient Retirement Funds as Immanent Problem of Neoliberal Regime : PseudoScience : Who Rules America : Neoliberalism : The Iron Law of Oligarchy : Libertarian Philosophy
Quotes
War and Peace : Skeptical Finance : John Kenneth Galbraith :Talleyrand : Oscar Wilde : Otto Von Bismarck : Keynes : George Carlin : Skeptics : Propaganda : SE quotes : Language Design and Programming Quotes : Random IT-related quotes : Somerset Maugham : Marcus Aurelius : Kurt Vonnegut : Eric Hoffer : Winston Churchill : Napoleon Bonaparte : Ambrose Bierce : Bernard Shaw : Mark Twain Quotes
Bulletin:
Vol 25, No.12 (December, 2013) Rational Fools vs. Efficient Crooks The efficient markets hypothesis : Political Skeptic Bulletin, 2013 : Unemployment Bulletin, 2010 : Vol 23, No.10 (October, 2011) An observation about corporate security departments : Slightly Skeptical Euromaydan Chronicles, June 2014 : Greenspan legacy bulletin, 2008 : Vol 25, No.10 (October, 2013) Cryptolocker Trojan (Win32/Crilock.A) : Vol 25, No.08 (August, 2013) Cloud providers as intelligence collection hubs : Financial Humor Bulletin, 2010 : Inequality Bulletin, 2009 : Financial Humor Bulletin, 2008 : Copyleft Problems Bulletin, 2004 : Financial Humor Bulletin, 2011 : Energy Bulletin, 2010 : Malware Protection Bulletin, 2010 : Vol 26, No.1 (January, 2013) Object-Oriented Cult : Political Skeptic Bulletin, 2011 : Vol 23, No.11 (November, 2011) Softpanorama classification of sysadmin horror stories : Vol 25, No.05 (May, 2013) Corporate bullshit as a communication method : Vol 25, No.06 (June, 2013) A Note on the Relationship of Brooks Law and Conway Law
History:
Fifty glorious years (1950-2000): the triumph of the US computer engineering : Donald Knuth : TAoCP and its Influence of Computer Science : Richard Stallman : Linus Torvalds : Larry Wall : John K. Ousterhout : CTSS : Multix OS Unix History : Unix shell history : VI editor : History of pipes concept : Solaris : MS DOS : Programming Languages History : PL/1 : Simula 67 : C : History of GCC development : Scripting Languages : Perl history : OS History : Mail : DNS : SSH : CPU Instruction Sets : SPARC systems 1987-2006 : Norton Commander : Norton Utilities : Norton Ghost : Frontpage history : Malware Defense History : GNU Screen : OSS early history
Classic books:
The Peter Principle : Parkinson Law : 1984 : The Mythical Man-Month : How to Solve It by George Polya : The Art of Computer Programming : The Elements of Programming Style : The Unix Hater’s Handbook : The Jargon file : The True Believer : Programming Pearls : The Good Soldier Svejk : The Power Elite
Most popular humor pages:
Manifest of the Softpanorama IT Slacker Society : Ten Commandments of the IT Slackers Society : Computer Humor Collection : BSD Logo Story : The Cuckoo's Egg : IT Slang : C++ Humor : ARE YOU A BBS ADDICT? : The Perl Purity Test : Object oriented programmers of all nations : Financial Humor : Financial Humor Bulletin, 2008 : Financial Humor Bulletin, 2010 : The Most Comprehensive Collection of Editor-related Humor : Programming Language Humor : Goldman Sachs related humor : Greenspan humor : C Humor : Scripting Humor : Real Programmers Humor : Web Humor : GPL-related Humor : OFM Humor : Politically Incorrect Humor : IDS Humor : "Linux Sucks" Humor : Russian Musical Humor : Best Russian Programmer Humor : Microsoft plans to buy Catholic Church : Richard Stallman Related Humor : Admin Humor : Perl-related Humor : Linus Torvalds Related humor : PseudoScience Related Humor : Networking Humor : Shell Humor : Financial Humor Bulletin, 2011 : Financial Humor Bulletin, 2012 : Financial Humor Bulletin, 2013 : Java Humor : Software Engineering Humor : Sun Solaris Related Humor : Education Humor : IBM Humor : Assembler-related Humor : VIM Humor : Computer Viruses Humor : Bright tomorrow is rescheduled to a day after tomorrow : Classic Computer Humor
The Last but not Least Technology is dominated by two types of people: those who understand what they do not manage and those who manage what they do not understand ~Archibald Putt. Ph.D
Copyright © 1996-2021 by Softpanorama Society. www.softpanorama.org was initially created as a service to the (now defunct) UN Sustainable Development Networking Programme (SDNP) without any remuneration. This document is an industrial compilation designed and created exclusively for educational use and is distributed under the Softpanorama Content License. Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.
FAIR USE NOTICE This site contains copyrighted material the use of which has not always been specifically authorized by the copyright owner. We are making such material available to advance understanding of computer science, IT technology, economic, scientific, and social issues. We believe this constitutes a 'fair use' of any such copyrighted material as provided by section 107 of the US Copyright Law according to which such material can be distributed without profit exclusively for research and educational purposes.
This is a Spartan WHYFF (We Help You For Free) site written by people for whom English is not a native language. Grammar and spelling errors should be expected. The site contain some broken links as it develops like a living tree...
|
You can use PayPal to to buy a cup of coffee for authors of this site |
Disclaimer:
The statements, views and opinions presented on this web page are those of the author (or referenced source) and are not endorsed by, nor do they necessarily reflect, the opinions of the Softpanorama society. We do not warrant the correctness of the information provided or its fitness for any purpose. The site uses AdSense so you need to be aware of Google privacy policy. You you do not want to be tracked by Google please disable Javascript for this site. This site is perfectly usable without Javascript.
Last modified: October, 08, 2019