Tương đương với một tập tin exe trên mạng là gì?


47

Tôi không biết phần mở rộng tập tin thực thi chính xác là gì. Là nó .debhay .tar.gz?


13
Không phải là một câu trả lời nhưng muốn thêm MỌI THỨ trong LINUX là một TẬP TIN vì vậy việc có Tiện ích mở rộng là .exe không bao giờ quan trọng.
atenz

15
@tijybba Triết lý thiết kế "mọi thứ là một tập tin" hoàn toàn không liên quan đến các .exephần mở rộng không cần thiết cho các tệp thực thi gốc. Các cựu giải thích các nội dung của /dev; thứ hai là vì thực thi quyền và phụ thuộc vào việc kiểm tra bên trong tệp để xác định loại tệp đó là gì.
Eliah Kagan

@ Eliah Kagan - Đó chỉ là một thông tin cơ bản vì trong phần mở rộng của Windows là cần thiết để thực thi, trong Linux, không có gì liên quan đến Quyền thực thi , nó đòi hỏi ít nhiều hơn về cách thức truy cập của người dùng Sudo và các vấn đề bảo mật được trả tiền , mà tôi đoán ai đó sẽ làm rõ trong câu trả lời là phần sau của nó, nếu cần thiết đó là lý do tại sao tôi đăng nó dưới dạng bình luận không phải là một câu trả lời.
atenz

4
@tijybba Nhưng "mọi thứ" là một tập tin thực sự không liên quan gì đến chủ đề của câu hỏi này, phải không?
Eliah Kagan

2
Tôi đoán là tôi đã đọc sai phần đó trong câu hỏi, nói rằng " tập tin exe trong Ubuntu là gì?", Tôi đã xem Executable , nhưng bây giờ với sự giúp đỡ háo hức của bạn, có vẻ như " tập tin .exe là gì trong Ubuntu?". Nếu nó rất không phù hợp, hãy cho tôi biết tôi sẽ rất vui khi xóa nó. (Sai ​​lầm là kinh nghiệm học tập tuyệt vời: D).
atenz

Câu trả lời:


42

Không có Mở rộng tệp tiêu chuẩn như tệp ".exe" trong Windows.

Trên Linux gần như bất kỳ tập tin nào cũng có thể được thực thi. Tệp kết thúc chỉ mô tả (nhưng không nhất thiết) những gì hoặc làm thế nào một tệp được "thực thi".

Ví dụ: tập lệnh shell kết thúc bằng .sh và được "thực thi" thông qua bash shell.

Trong câu hỏi của bạn, bạn yêu cầu .deb và .tar.gz, tệp .deb cài đặt phần mềm trên hệ thống của bạn (Xin hãy cẩn thận!) Và tệp .tar.gz là một tệp nén như .zip mà bạn có thể biết Các cửa sổ.


1
Vì vậy, .deb là một tập tin .exe!
dùng54905

13
@Nick, .debcác tệp có xu hướng KHÔNG thể thực thi được: chúng không phải là tập lệnh ELF hay "she-bang" và chúng không có khả năng được đăng ký với binfmt. Ngay cả với các quyền thực thi, kernel sẽ không biết phải làm gì với chúng. Thực tế là trình thám hiểm tệp của bạn có thể được đăng ký để mở tệp bằng một ứng dụng nhất định dựa trên tiện ích mở rộng không liên quan gì đến việc chúng có thể thực thi được (về mặt cấp phép tệp hoặc về mặt thực thi định dạng nhị phân kernel).
Bruno

4
Tệp .deb cũng giống như một tệp .zip sau đó giống như .exe. Vấn đề là .deb không tự thực thi , nó được trích xuất, giải thích và cài đặt bởi một số ứng dụng khác.
Rafał Cieślak

5
Ứng dụng khác đó thường là Trung tâm phần mềm, hoạt động như một trình cài đặt. Linux ít phụ thuộc vào các phần mở rộng so với Windows và do đó quyết định khả năng thực thi dựa trên quyền chứ không phải phần mở rộng.
tyjkenn

33
.debgiống như một .msitập tin hơn là một .exetập tin.
gièm pha

79

Tôi sẽ tóm tắt hệ thống theo cách sau:

Linux extension    |Windows Equivalent    |Short description
------------------------------------------------------------
.so, .o            | .dll                 | Object that can be loaded at runtime (Similar to DLL)
.a                 | .lib                 | Static library
[none], .elf(rare),| .exe, .com(rare)     | Linux executables
  .bin(rare)       |                      |
.sh                | .bat                 | Shell script
.exe               | .exe                 | Mono application, Wine application
.deb               | .msi                 | Installer package for Debian/Ubuntu releases
                   |                      |   (Though .deb is much more powerful with 
                   |                      |   native support for dependencies and repos). Note that .deb is actually a .ar archive with a special control file, a special file order, and a different extension.
.rpm               | .msi                 | Installer package for RedHat/CentOS releases.
.tar.gz, .tar, .gz | .zip                 | Compressed files that can contain a program or any other data, like images, documents, etc
.ko                | .sys                 | Drivers and kernel modules are loaded into the Linux kernel and have more hardware access than other programs.
.sh, .php, .py, etc| .bat, .cmd, .vbs,    | Linux is capable of running any file that it has an interpreter for. 
                   |   .js                |   A line at the top of the file called the shebang specifies what interpreter to run the file with. 
                   |                      |   Windows only supports .bat and .cmd files as Batch files, and .vbs (vbscript) and .js (JScript, not to be confused with JavaScript) via the Windows Script Host (WSH).

Bất kỳ tệp nào bắt đầu bằng #!(được gọi là shebang hoặc hashbang) trên dòng đầu tiên chỉ là một tập lệnh. Đường dẫn sau shebang là đường dẫn đến chương trình (có thể thực thi) cần phân tích cú pháp tập lệnh, giả sử rằng quyền thực thi đã được đặt trên tệp với chmod a+x filename.

Do đó, trả lời câu hỏi ban đầu của bạn, không có phần mở rộng, hoặc hiếm khi, nó là .elfhoặc .bin.

Điều này đã được tạo ra Community Wiki, vì vậy bất cứ ai cũng có thể thêm một mục.


2
Tôi chưa bao giờ thấy phần mở rộng .elf nhưng thấy phần mở rộng .bin khá thường xuyên.
Calmarius

1
Mặc dù các câu trả lời khác tập trung vào thực tế là tập tin 'bất kỳ' nào cũng có thể được thực thi, nhưng câu trả lời này thực sự đập vào đầu, trong khi nói 'bất cứ điều gì' có thể là một thực thi không thực sự thông tin hoặc đúng, mà là ngoại lệ. Tôi có thể đổi tên bất kỳ tệp nào trên windows thành .exe và nó sẽ cố thực thi nó, nhưng sẽ không nhất thiết phải hoạt động, trong linux cũng vậy, nếu nó không có nghĩa là được thực thi, nó sẽ không hoạt động ... Vấn đề của tôi nhiều lần đang tải xuống một gói, và không thực sự hiểu bắt đầu cái gì, nhưng tất nhiên, rtfm.
TrySpace

Bạn nên thêm tiện ích mở rộng .bin (dưới dạng Windows tương đương với .exe)
Dani-Br

@ Dani-Br Đây là một bài đăng trên cộng đồng, có nghĩa là những người khác được hoan nghênh chỉnh sửa nó và bạn có đủ danh tiếng để làm điều đó (ở 101). Tôi đã thêm .bin ngay bây giờ.
ζ--

Nó không phải là một phần mở rộng, nhưng nó hữu ích cho tôi khi biết rằng định dạng "PE" trên Windows tương đương với định dạng "ELF" trên Linux nghĩ
Kế toán م

23

Khái niệm về một tệp thực thi là khác nhau trong unix / linux so với Windows.

các cửa sổ

Bất cứ điều gì kết thúc .exehoặc .comtrở thành một tập tin thực thi.

Linux / Unix

Mỗi và mọi tệp đều có một bit thực thi, vì vậy bất kỳ tệp nào cũng có thể được thực thi, không giống như Windows. Để xem một tập tin có thể thực thi được không, bạn có thể kiểm tra các thuộc tính của nó (tab Quyền) hoặc thậm chí xem chúng được đánh dấu trong thiết bị đầu cuối (tất cả chúng đều được đánh dấu *).

Ngay cả các tệp văn bản (như tập lệnh shell) có thể được thiết lập các bit thực thi của chúng và được chạy như một.


4
cũng đáng bổ sung rằng trong trường hợp tệp văn bản, shebang ( #!/bin/bashví dụ) ở đầu tệp sẽ đặt chương trình nào thực thi tệp.
kỳ lạ

Các bit thực thi riêng biệt tồn tại cho người dùng, nhóm và khác. Việc sử dụng các bit này có thể giới hạn người có thể thực hiện chương trình. Các bit bổ sung tồn tại cho SUID và SGID để khiến chương trình chạy với tư cách là người dùng hoặc nhóm sở hữu tệp.
BillThor

Có một số điểm không chính xác ở trên: 2) "mỗi tệp có một bit thực thi": có ba bit thực thi (chủ sở hữu, nhóm và các tệp khác), vì vậy người ta có thể cho phép mình nhưng không cho phép người khác thực thi tệp. Ngoài ra còn có một bit setuid để "thực thi như chủ sở hữu" và setgid "thực thi theo nhóm". 2) "bất kỳ tập tin có thể được thực thi": không phải như vậy. các bit cho phép là điều kiện bắt buộc nhưng không đủ để thực hiện thành công một tệp. Ví dụ, một sự cố ngay lập tức sẽ xảy ra nếu tệp thực sự không thể được tải và chạy (Tham chiếu số ma thuật của tệp man magic, ELF man elfvà dòng băm man execve)
arielf

16

Để tìm hiểu hệ điều hành UNIX nghĩ loại tệp cụ thể là gì, bạn sử dụng lệnh tệp:

$ file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1, for OpenBSD, statically linked, stripped

Trong ví dụ trên, tôi đưa đường dẫn đến chương trình 'ls', bạn sẽ thay thế bằng đường dẫn của tệp.

Một tập tin kịch bản sẽ trông như:

$ file script.sh
script.sh: Bourne-Again shell script text

Một tệp văn bản ngẫu nhiên:

$ file textfile
textfile: ASCII text

Một tệp lưu trữ:

$ file rsync-3.0.6.tar.gz
rsync-3.0.6.tar.gz: gzip compressed data, from Unix

Nó thậm chí còn đủ thông minh để xác định chính xác một chương trình windows, nếu bạn tình cờ có một cái nằm xung quanh hộp UNIX của bạn:

$ file FMZsetup.exe
FMZsetup.exe: MS-DOS executable (EXE), OS/2 or Windows

Và khi nó không thể tìm ra tập tin là gì (nhưng có thể mở nó), nó sẽ gọi nó là dữ liệu:

$ file myrandom
myrandom: data

1
Không thực sự là một câu trả lời, nhưng mặt tốt - "câu trả lời"
dlin

11

Việc thực thi tệp trên Linux hoàn toàn không liên quan đến tên tệp hoặc phần mở rộng. Bất kỳ tệp nào có khả năng có thể được thực thi, miễn là nó được xử lý bởi binfmtcơ chế của kernel (và các quyền thực thi của nó được đặt).

Định dạng phổ biến nhất để thực thi là ELF , mặc dù một số hạt nhân có thể được biên dịch để hỗ trợ a.outđịnh dạng cũ . (Để biết chi tiết kỹ thuật đầy đủ, binfmt_elf.clà nơi để tìm.)

Một cơ chế phổ biến khác là hệ thống "Shebang" , được xử lý bởi binfmt_script, tìm kiếm #!/path/to/interpreterở phần đầu của tệp.

binfmt_misccho phép đăng ký của những người xử lý khác, như được ghi lại ở đây .

Nếu bạn thích làm một chút về lập trình kernel, bạn thậm chí có thể tự viết .

Mặc dù không liên quan trực tiếp, filelệnh sẽ cho bạn biết liệu một tệp là tệp thực thi ELF hay cái gì khác.

Quy ước đặt tên không liên quan gì đến trạng thái thực thi của tệp (trừ khi nó được sử dụng để binfmt_miscđăng ký). Họ chỉ là quy ước. Thông thường, một .exetệp được tìm thấy trên Linux có thể là một ứng dụng đơn , nhận .exephần mở rộng như một quy ước đến từ thế giới Windows / .Net.

Một khía cạnh khác có thể xảy ra khi bạn muốn "chạy" một tệp là có công cụ trình duyệt tệp mà bạn sử dụng tiện ích mở rộng đăng ký để có thể khởi chạy một chương trình sẽ mở các tệp này. Đây là những gì sẽ xảy ra nếu bạn nhấp đúp chuột vào a .txt, .tar.gzhoặc .deb, ví dụ: các tệp không phải là tệp thực thi cũng không được thực thi, nhưng những gì bạn sử dụng để bấm đúp sẽ chọn thực thi nào để khởi chạy để mở các tệp này.


Tôi nghĩ rằng điều này là tốt hơn khi bình luận về một trong những câu trả lời bao quát hơn.
ζ--

@ObsessiveFOSS, nhưng nó có xứng đáng với một downvote không? Không ai đã đề cập đến mono trước câu trả lời của tôi. Không có câu trả lời nào ở đây thực sự nói về cách thức thực thi của Linux thực sự hoạt động (xem nhận xét của tôi về binfmt về câu trả lời được chấp nhận) bằng mọi cách.
Bruno

Tôi đã không downvote. Tôi cảm thấy như là phiếu bầu nên được giữ nguyên.
ζ--

@ObsessiveFOSS, không vấn đề gì. Tôi cũng nhận thấy rằng câu hỏi đã được chỉnh sửa kể từ khi tôi trả lời, thay đổi một chút ý nghĩa của nó (ban đầu tôi hiểu nó là "Tôi có một tệp exe, tôi không thể chạy nó ...") và làm cho câu trả lời của tôi ít hơn thực sự có liên quan.
Bruno

ĐỒNG Ý. Không vấn đề gì.
ζ--

2

Trong windows, tệp .exe là tệp máy tính kết thúc bằng phần mở rộng ".exe" thường được gọi là tệp thực thi. Khi một lần nhấp vào tệp exe, một thói quen tích hợp sẽ tự động thực thi mã có thể đặt một số chức năng thành chuyển động. Các tệp exe thường được sử dụng để cài đặt các tệp trong hệ điều hành windows.

Ngoài ra, bạn có các tệp .tar, thường được gọi là các tệp nén. Các phiên bản chính, như Ubuntu sử dụng các tính năng nổi bật trong các bản phân phối phần mềm khác nhau, với hầu hết mã nguồn phần mềm được cung cấp ở định dạng tar.gz. Từ đó bạn có thể giả sử rằng tar. gz là một dạng của định dạng .tar cũng được biết đến, được sử dụng để lưu trữ.

Mặt khác, trong Ubuntu, định dạng tệp .deb là định dạng giống như tệp .exe trong windows. Khi bạn mở nó, trung tâm phần mềm sẽ xử lý mã của nó và cài đặt chương trình chứa trong đó, chẳng hạn như tệp thực thi.

Mặc dù bạn vẫn có thể cài đặt phần mềm và gói từ định dạng nguồn (tar.gz), định dạng phù hợp nhất để cài đặt phần mềm là .deb one. Lấy ví dụ như Trung tâm phần mềm Ubuntu; tất cả các ứng dụng chứa trong thực tế là các tệp .deb. Nói chung, trong linux, hầu hết mọi định dạng tệp (bao gồm .deb và tar.gz cũng như các tệp bash đều biết .sh) có thể hoạt động như một tệp thực thi để bạn có thể cài đặt gói hoặc phần mềm với điều đó.


5
Tôi muốn so sánh các tệp .deb trên các hệ thống có nguồn gốc Debian với các tệp .msi cho Microsoft Installer Nếu
MvG

đúng rồi! :)
dlin

2

Không có tương đương với phần mở rộng tệp exe trong Windows để chỉ ra một tệp có thể thực thi được. Thay vào đó, các tệp thi hành có thể có bất kỳ phần mở rộng nào và thường không có phần mở rộng nào cả .

Linux / Unix sử dụng quyền truy cập tệp để cho biết liệu tệp có thể được thực thi hay không. Cụ thể, có một quyền thực thi tệp cho hệ thống biết rằng tệp này được phép thực thi. Tuy nhiên, sự vắng mặt của sự cho phép này không cho thấy rằng tệp không phải là tệp thực thi; chỉ đơn thuần là người dùng có liên quan không được phép thực hiện nó. Tương tự, sự hiện diện của quyền này không phải lúc nào cũng chỉ ra rằng tệp là tệp thực thi hợp lệ.

Linux / Unix có định dạng tệp thực thi nhị phân được gọi là ELF tương đương với các định dạng thực thi nhị phân PE (Windows) hoặc MZ / NE (DOS) thường có phần mở rộng .exe

Tuy nhiên, các loại tệp khác có thể được thực thi, tùy thuộc vào trình bao. Thông thường, nếu bạn cố gắng thực thi một tệp mà hệ thống không nhận ra là tệp thực thi nhị phân (ví dụ: định dạng ELF), thì nó được thông dịch bởi trình thông dịch shell hiện tại. Điều này đáp ứng hiệu quả tương tự như các tệp bó trong Windows hoặc DOS, ngoại trừ một lần nữa, nó không phải là phần mở rộng xác định loại của nó hoặc cách thực hiện nó.

Các tệp Shell có thể tùy ý bắt đầu bằng một hashbang (hai ký tự đầu tiên trong tệp được #!theo sau bởi một đường dẫn đến trình thông dịch) trong trường hợp đó thay vì giải thích phần còn lại của tệp bằng trình thông dịch shell hiện tại, nó có thể khởi chạy trình bao hoặc trình thông dịch thay thế tới thực hiện các tập tin. Do đó, bạn có thể có một tập lệnh bằng bất kỳ ngôn ngữ được dịch nào và vẫn chạy nó với trình thông dịch chính xác khi cố gắng thực thi tập lệnh.


Whoah, tôi gần như đã trả lời điều này quá. Nhìn vào ngày, bài này là một con khủng long.
Tamsyn Michael

1

Các tập tin EXE và DLL là các tập tin thực thi di động. Chúng dựa trên các tệp unix PE / COFF.

Đọc http://en.wikipedia.org/wiki/Portable_Executable để biết thêm thông tin.

Trong Ubuntu, bạn không có tiện ích mở rộng cụ thể cho tệp thực thi. Đây thường là các tệp được đặt tên theo ứng dụng mà chúng liên quan.

Yếu tố quan trọng là các tệp này có tập bit thực thi. Nếu bạn có một thiết bị đầu cuối màu sắc mà bạn sẽ nhận thấy rằng đây là một màu sắc khác nhau khi niêm yết sử dụng ls.

Trong tệp unix hệ thống tệp thực thi nhị phân thường được lưu trữ ở vị trí riêng.

  1. / bin (nhị phân lõi)
  2. / sbin (hệ thống nhị phân)
  3. / usr / bin (nhị phân ứng dụng)

trong khi các tài nguyên ứng dụng khác có thể được lưu trữ trong / usr / lib / hoặc / usr / share /

Một tệp deb tương ứng chính xác hơn với tệp msi trong windows (tức là trình cài đặt gói).

Nói chung các tệp tar.gz hoặc tệp bz2 chứa mã nguồn mà từ đó ứng dụng có thể được xây dựng


0

Ubuntu tương đương với tệp .exe / .com là tệp không có phần mở rộng, thường là một số phần mở rộng như .bin, .run, v.v. được thêm vào nó để đồng thuận

có một số lựa chọn thay thế cho tệp .bat (hầu hết tất cả các tệp), phổ biến nhất là .sh

.deb chỉ là một tệp nhị phân lưu trữ (tương tự .msi trong windows) với các tiêu chuẩn debian

.tar.gz chỉ là một định dạng lưu trữ phổ biến được sử dụng trong Ubuntu


0

Bất kỳ tên tệp nào cũng có thể được đặt thành thực thi bất kể phần mở rộng, nhưng tệp cần phải có bộ quyền phù hợp. Quyền có thể được cung cấp bằng cách nhấp chuột phải vào tệp trong Nautilus, nhấp vào Thuộc tính và đánh dấu vào hộp kiểm "Cho phép thực thi tệp dưới dạng chương trình":

mục menu hiển thị Thực thi: -checkbox- Cho phép thực thi tệp dưới dạng chương trình


Tôi muốn chỉ ra rằng bất kỳ tên tệp nào cũng có thể được thực thi, không phải bất kỳ loại tệp nào như cụm từ "Bất kỳ tệp nào" dường như chỉ ra. chỉnh sửa cho rõ ràng.
Elder Geek

-3

.deb Gói Debian cho Linux và TAR lưu trữ được nén bằng thuật toán nén GNU zip (gzip) tiêu chuẩn; chứa một hoặc nhiều tệp nén; thường được sử dụng trên các hệ điều hành Unix để đóng gói các tệp, chương trình và trình cài đặt.

LƯU Ý : Trước tiên, các tệp TAR.GZ phải được giải nén và sau đó được mở rộng bằng tiện ích TAR. Chúng bao gồm cả hai loại tệp .TAR và .GZ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.