Linux may be configured to execute some Windows executables using mono or wine
.deb, .rpm, etc
.msi
Installer package for the various distributions. Note that the packages in Linux distributions are more powerful as it supports dependency management and more.
.tar.gz, .tar, .gz, .zip, .lzo, .lz4
.zip
Archives that can contain a program or any other files, and may be compressed
.ko
.sys
Drivers and kernel modules are loaded into the Linux kernel and have more hardware access than other programs.
Note that Linux/Unix doesn't tend to use file extensions on directly executable files including binaries and shell scripts, instead identifying the executable type by inspecting the file.
There is no standard File-Extention like an ".exe" file in Windows.
On Linux nearly any file can be executable.
The file ending just describes (but not necessarily) what or how a file is "executed".
For example a shell script ends with .sh and is "executed" via the bash shell.
In your question you ask for .deb and .tar.gz
Well, the .deb file installs software on your system (Please be careful!)
And the .tar.gz file is a compressed file like a .zip that you could know from Windows.
The concept of an executable is different in unix/linux than Windows.
Windows
Anything that ends in .exe or .com becomes an executable file.
Linux/Unix
Each and every file has an executable bit, so any file can be executed, unlike Windows. To see if a file is executable, you can check its properties (Permissions tab), or even see them marked in the terminal (they are all marked with a *).
Even text files (like shell scripts) can have their executable bits set, and be run as one.
File execution on Linux isn't related at all to the file name or extension. Any file can potentially be executed, provided that it's handled by the kernel's binfmt mechanism (and that its executable permissions are set).
The most common format for executable is ELF, although some kernels can be compiled for support of the old a.out format. (For full technical details, binfmt_elf.c is where to look.)
Another common mechanism is the "Shebang" system, handled by binfmt_script, which looks for #!/path/to/interpreter at the beginning of the file.
binfmt_misc allows for the registration of other handlers, as documented here.
If you fancy doing a bit of kernel programming, you can even write your own.
Although not directly related, the file command should tell you whether a file is an ELF executable or something else.
The naming convention has nothing to do with the executable status of a file (except when it's used for binfmt_misc registration). They're just conventions. Typically, a .exe file found on Linux could be a mono application, getting the .exe extension as a convention coming from the Windows/.Net world.
The other aspect that can happen when you want to "run" a file is to have the file explorer tool that you use register extensions to be able to launch a program that will open these files. This is what would happen if you double click on a .txt, .tar.gz or .deb, for example: the files are not executables nor executed, but what you use to double-click chooses which executable to launch to open these files.
Linux does not use the file extension to determine if a file is executable. It uses a file attribute called the executable bit.
Any file can be marked executable, and when attempting to execute a file Linux will look at the start of the file to see what type of executable it is.
Types of executable files
Binary executables in Linux usually use the ELF (Executable and Linkable Format) file format. These are Linux's equivalent to the PE (Portable Executable) format used in Windows or the MZ and NE formats used in DOS and early Windows versions, all of which used the EXE file extension. That is, these formats consist of binary, compiled code but may be large and may embed other items in the file.
Interestingly, the ELF file format also forms the equivalent of the Windows DLL file, because Linux also uses the format for shared libraries which contain functions callable from other executables.
When executing an ELF format file, Linux recognises the file type from its magic number - the first four bytes are 7f 45 4c 46 - the 7f is included to avoid misclassification of text files. This is similar to the way Windows can distinguish the different executable formats that all use the EXE file extension.
Linux also allows direct execution of text-based script files, which serve a similar purpose to Batch files in DOS/Windows. Linux's scripting support is extensible in the sense you can install or create any scripting language you like and configure your Linux installation to be able to run scripts in that language, by specifying in the script which binary should be used to interpret that script.
Linux installations have a default script interpreter available at /bin/sh which interprets any scripts that don't otherwise specify which interpreter to use. This script interpreter interprets shell scripts that adhere to scripting standard specified in POSIX, an initiative to standardize Unix-like operating systems. Historically Linux's POSIX-compliant script interpreter has been bash - an open source re-implementation based on the Unix bourne shell and others - with bash so commonly used that in the Linux community such scripts are commonly referred to as bash scripts, but other scripting interpreters supporting POSIX may be used at /bin/sh including dash.
Other scripting interpreters commonly used in Linux include perl and python. Within the script, you use a hashbang on the first line to specify which interpreter should be used. Here are some examples:
#!/bin/perl
#!/usr/bin/env python3
In the second example, /usr/bin/env allows reading an environment variable to determine the executable to run.
Executable attribute
The executable bit forms part of a file's file permissions, and can be specified separately for the owner and group of the file, or for world (everyone). A user who does not have execute permission applicable to them sees the file as a regular, non-executable file.
In windows, an .exe file is a computer file that ends with the extension ".exe" commonly known as executable file. When one clicks on an exe file, a built-in routine automatically executes code that can set several functions into motion. Exe files are commonly used to install files in the windows operating system.
Additionally, you have .tar files,commonly known as compressed files.Linux versions, such as Ubuntu use features prominently in various software distributions, with most software source code made available in the tar.gz format .From that you can assume that tar.gz is a form of the well know .tar format, which is used for archiving.
In Ubuntu on the other hand, the .deb file format is the one that behaves more like the .exe file in windows.When you open it the software center handles it's code and installs the program it contains, such as an executable file.
Even though you can still install software and packages from source format ( tar.gz), the best suited format for installing software is the .deb one.Take as example the Ubuntu Software Center; all the applications it contains are in fact .deb files.In general, in linux, almost every file format(including .deb and tar.gz as well as the well know bash files .sh) can behave as an executable file so that you can install packages or software with that.
In Ubuntu you don't have a specific extension for an executable file. These are generally files that are named after the application they relate too.
The important factor is that these files have the executable bit set. If you have a color terminal you will notice that these are a different color when listed using ls.
In the unix file system binary executable files are generally stored in there own location.
/bin (core binaries)
/sbin (system binaries)
/usr/bin (application binaries)
whereas other application resources may be stored in /usr/lib/ or /usr/share/
A deb file is more correctly corresponded to an msi file in windows (i.e a package installer).
Generally tar.gz files or bz2 files contain source code from which an application can be built
Any filename can be set to executable regardless of extension, but the file needs to have the appropriate permission set. The permission may be given by right-clicking the file in Nautilus, clicking Properties, and ticking the "Allow executing file as program" checkbox:
Note that Linux/Unix doesn't tend to use file extensions on directly executable files including binaries and shell scripts, instead identifying the executable type by inspecting the file.
There is no standard File-Extention like an ".exe" file in Windows.
On Linux nearly any file can be executable. The file ending just describes (but not necessarily) what or how a file is "executed".
For example a shell script ends with .sh and is "executed" via the bash shell.
In your question you ask for .deb and .tar.gz Well, the .deb file installs software on your system (Please be careful!) And the .tar.gz file is a compressed file like a .zip that you could know from Windows.
The concept of an executable is different in unix/linux than Windows.
Windows
Anything that ends in
.exe
or.com
becomes an executable file.Linux/Unix
Each and every file has an executable bit, so any file can be executed, unlike Windows. To see if a file is executable, you can check its properties (Permissions tab), or even see them marked in the terminal (they are all marked with a *).
Even text files (like shell scripts) can have their executable bits set, and be run as one.
To find out what a UNIX operating system thinks a particular file's type is, you use the file command:
In the above example, I give the path to the program 'ls', you would replace with the path of your file.
A script file would look like:
A random text file:
An archive file:
It is even smart enough to correctly identify a windows program, should you happen to have one lying around on your UNIX box:
And when it can't figure out what a file is (but is able to open it), it calls it data:
File execution on Linux isn't related at all to the file name or extension. Any file can potentially be executed, provided that it's handled by the kernel's
binfmt
mechanism (and that its executable permissions are set).The most common format for executable is ELF, although some kernels can be compiled for support of the old
a.out
format. (For full technical details,binfmt_elf.c
is where to look.)Another common mechanism is the "Shebang" system, handled by
binfmt_script
, which looks for#!/path/to/interpreter
at the beginning of the file.binfmt_misc
allows for the registration of other handlers, as documented here.If you fancy doing a bit of kernel programming, you can even write your own.
Although not directly related, the
file
command should tell you whether a file is an ELF executable or something else.The naming convention has nothing to do with the executable status of a file (except when it's used for
binfmt_misc
registration). They're just conventions. Typically, a.exe
file found on Linux could be a mono application, getting the.exe
extension as a convention coming from the Windows/.Net world.The other aspect that can happen when you want to "run" a file is to have the file explorer tool that you use register extensions to be able to launch a program that will open these files. This is what would happen if you double click on a
.txt
,.tar.gz
or.deb
, for example: the files are not executables nor executed, but what you use to double-click chooses which executable to launch to open these files.Linux does not use the file extension to determine if a file is executable. It uses a file attribute called the executable bit.
Any file can be marked executable, and when attempting to execute a file Linux will look at the start of the file to see what type of executable it is.
Types of executable files
Binary executables in Linux usually use the ELF (Executable and Linkable Format) file format. These are Linux's equivalent to the PE (Portable Executable) format used in Windows or the MZ and NE formats used in DOS and early Windows versions, all of which used the EXE file extension. That is, these formats consist of binary, compiled code but may be large and may embed other items in the file.
Interestingly, the ELF file format also forms the equivalent of the Windows DLL file, because Linux also uses the format for shared libraries which contain functions callable from other executables.
When executing an ELF format file, Linux recognises the file type from its magic number - the first four bytes are
7f 45 4c 46
- the7f
is included to avoid misclassification of text files. This is similar to the way Windows can distinguish the different executable formats that all use the EXE file extension.Linux also allows direct execution of text-based script files, which serve a similar purpose to Batch files in DOS/Windows. Linux's scripting support is extensible in the sense you can install or create any scripting language you like and configure your Linux installation to be able to run scripts in that language, by specifying in the script which binary should be used to interpret that script.
Linux installations have a default script interpreter available at
/bin/sh
which interprets any scripts that don't otherwise specify which interpreter to use. This script interpreter interprets shell scripts that adhere to scripting standard specified in POSIX, an initiative to standardize Unix-like operating systems. Historically Linux's POSIX-compliant script interpreter has been bash - an open source re-implementation based on the Unix bourne shell and others - with bash so commonly used that in the Linux community such scripts are commonly referred to as bash scripts, but other scripting interpreters supporting POSIX may be used at/bin/sh
including dash.Other scripting interpreters commonly used in Linux include perl and python. Within the script, you use a hashbang on the first line to specify which interpreter should be used. Here are some examples:
In the second example, /usr/bin/env allows reading an environment variable to determine the executable to run.
Executable attribute
The executable bit forms part of a file's file permissions, and can be specified separately for the owner and group of the file, or for world (everyone). A user who does not have execute permission applicable to them sees the file as a regular, non-executable file.
In windows, an .exe file is a computer file that ends with the extension ".exe" commonly known as executable file. When one clicks on an exe file, a built-in routine automatically executes code that can set several functions into motion. Exe files are commonly used to install files in the windows operating system.
Additionally, you have .tar files,commonly known as compressed files.Linux versions, such as Ubuntu use features prominently in various software distributions, with most software source code made available in the tar.gz format .From that you can assume that tar.gz is a form of the well know .tar format, which is used for archiving.
In Ubuntu on the other hand, the .deb file format is the one that behaves more like the .exe file in windows.When you open it the software center handles it's code and installs the program it contains, such as an executable file.
Even though you can still install software and packages from source format ( tar.gz), the best suited format for installing software is the .deb one.Take as example the Ubuntu Software Center; all the applications it contains are in fact .deb files.In general, in linux, almost every file format(including .deb and tar.gz as well as the well know bash files .sh) can behave as an executable file so that you can install packages or software with that.
EXE and DLL files are portable executable files. These are based on the PE/COFF unix files.
Read http://en.wikipedia.org/wiki/Portable_Executable for more information.
In Ubuntu you don't have a specific extension for an executable file. These are generally files that are named after the application they relate too.
The important factor is that these files have the executable bit set. If you have a color terminal you will notice that these are a different color when listed using
ls
.In the unix file system binary executable files are generally stored in there own location.
whereas other application resources may be stored in /usr/lib/ or /usr/share/
A deb file is more correctly corresponded to an msi file in windows (i.e a package installer).
Generally tar.gz files or bz2 files contain source code from which an application can be built
Ubuntu equallant of .exe / .com file is extensionless file, usually some extensions like .bin ,.run etc are added to it for covinience
there are several alternatives for .bat file(almost all files),the most popular one is .sh
.deb is just an archive binary files(similar to .msi in windows) with debian standerds
.tar.gz is just a common archiving format used in ubuntu
Any filename can be set to executable regardless of extension, but the file needs to have the appropriate permission set. The permission may be given by right-clicking the file in Nautilus, clicking Properties, and ticking the "Allow executing file as program" checkbox: