Những phần mở rộng để sử dụng cho các tập tin văn bản? (Unix / Linux)


20

Tôi nhận thấy rằng tôi có thể đọc các tệp văn bản mà không cần một phần mở rộng .txttốt. Làm thế nào mà? Tôi có nên lưu các tệp này có hoặc không có .txtphần mở rộng?

Ngoài ra, những gì về .inicác tập tin? Tôi thường sử dụng chúng như thế này: config.initôi có nên xóa tiện ích mở rộng ở đây không?

Bất kỳ tài nguyên chung nào về cách Linux xử lý các phần mở rộng tệp sẽ hữu ích.

Câu trả lời:


37

UNIX / Linux không có di sản DOS / CP / M ban đầu giống như Windows. Vì vậy, các phần mở rộng thường ít quan trọng hơn đối với hầu hết các tiện ích và công cụ UNIX.

Tôi thường sử dụng một môi trường chỉ dòng lệnh. Các tiện ích mở rộng trong môi trường như vậy trong Linux không thực sự quan trọng ngoại trừ sự tiện lợi cho người vận hành hoặc người dùng. (Tôi không có đủ kinh nghiệm với KDE hoặc Gnome để biết cách người quản lý của họ xử lý các tiện ích mở rộng.)

Nhưng sự thuận tiện như vậy thường rất quan trọng. Nếu config.inithực sự ở định dạng ".ini" theo tiêu chuẩn của Microsoft, tôi sẽ để tiện ích mở rộng. Các tệp văn bản cũ thường không có phần mở rộng trong Linux, nhưng điều này không phổ biến cho tất cả các tệp cấu hình chương trình. Các lập trình viên thường được quyết định rằng.

Tôi nghĩ rằng ".txt" hữu ích trong Linux nếu bạn muốn nhấn mạnh rằng đó KHÔNG phải là tệp cấu hình hoặc tài liệu có thể đọc được bằng máy khác. Tuy nhiên, trong các bản phân phối nguồn, quy ước là đặt tên cho tất cả các tệp như vậy mà không cần phần mở rộng (ví dụ README, INSTALL, COPYING, v.v.)

Có một số tiêu chuẩn và quy ước nhưng không có gì ngăn bạn đặt tên bất cứ thứ gì bạn muốn, trừ khi bạn đang chia sẻ mọi thứ với người khác.

Trong Windows, việc đặt tên một tệp .exechỉ ra trình bao (thường explorer.exe) rằng đó là tệp thực thi. UNIX xây dựng kiến ​​thức này vào các quyền của hệ thống tệp. Nếu các xbit thích hợp (xem man chmod) được đặt, nó được công nhận là có thể thực thi được bởi các shell và các hàm kernel (tôi tin). Ngoài ra, Linux không quan tâm, hầu hết các trình bao không quan tâm và hầu hết các chương trình tìm trong tệp để tìm "loại".

Tất nhiên, có một lệnh hay filecó thể phân tích tệp và cho bạn biết nó là gì với mức độ chắc chắn. Tôi tin rằng nếu nó không thể khớp dữ liệu trong tệp với bất kỳ loại đã biết nào và nếu nó chỉ chứa các ký tự ASCII / Unicode có thể in được thì nó sẽ giả sử tệp văn bản của nó.


@Bruce Ediger dưới đây là hoàn toàn chính xác. Không có gì ở cấp độ kernel hoặc hệ thống tập tin, tức là chính Linux, thực thi hoặc quan tâm rằng nội dung của tệp cần khớp với tên của nó hoặc chương trình được cho là hiểu nó. Điều này không có nghĩa là không thể tạo tiện ích shell hoặc launcher để thực hiện mọi việc dựa trên tên tệp.


7
Nó cũng hữu ích nếu bạn làm việc trong bảng điều khiển rất nhiều, vì các tệp được đặt tên độc đáo sẽ dễ dàng phân biệt với các tệp khác hơn trên toàn cầu.
lynxlynxlynx

9
Bạn nên nhấn mạnh rằng tên tệp Linux không có "phần mở rộng" - phần ".txt" của tên tệp có chứa nó chỉ là một chuỗi con. Bạn cũng nên nhấn mạnh rằng tổ chức tệp nội bộ (chuỗi kết thúc LF, chuỗi kết thúc CR-LF, bản ghi kích thước cố định, v.v.) thậm chí không liên quan đến tên, cũng không phải là "ứng dụng" biết về tệp có liên quan đến tên đó .
Bruce Ediger

2
Tôi nghĩ rằng chỉ có các mục trong thư mục FAT16 8.3 trong DOS có trường 3 byte riêng cho phần mở rộng. FAT32 giữ trường 8.3 để tương thích nhưng "tên tệp dài" thực tế là một chuỗi không có trường mở rộng riêng biệt, được phân chia thành nhiều mục nhập thư mục ( fandecheng.com/personal/interests/ewindows/nuhelp/lfnspec.htm )
LawrenceC

23

Không giống như Windows, trong các hệ thống UNIX, kiểu tệp không được xác định bởi phần mở rộng. Phần mở rộng tập tin là và chỉ đơn giản là một chỉ báo trực quan cho con người. Bạn có thể đặt tên cho JPEG foo.c và mở nó trong Gimp. Một sự tương phản khác với Windows là trên các hệ thống UNIX, bạn phải sử dụng toàn bộ tên tệp, trong khi Windows thường sẽ chăm sóc nó cho bạn (ví dụ: chỉ chạy explorerso với explorer.exe). Trên UNIX foo.shphải được gọi là foo.sh, không chỉ đơn giản foo.

Theo quy ước mọi người có xu hướng sử dụng một bộ tiện ích mở rộng chung. Thực tế này, trong khi không cần thiết, có lẽ có lợi cho nhân loại nói chung.


7
+1 choThis practice…is probably beneficial for humanity at large
Ulrich Dangel

Quá tệ, sự đa dạng bao bì khiến đôi khi xử lý mime thích hợp (ví dụ như trong KDE từ kinh nghiệm của tôi), mặc dù tôi không biết tại sao các chương trình không quay lại kiểm tra byte ma thuật.
lynxlynxlynx

3
Bởi vì không có byte "ma thuật". Đó chỉ là cách viết tắt của "tất cả các kiểu tệp đã biết được ghi chép hợp lý và có cấu trúc đủ để được phát hiện một cách đáng tin cậy với mức độ chắc chắn cao". Nó hoạt động rất tốt cho các tập tin văn bản hoặc container. Nó thường thất bại thảm hại cho bất kỳ loại dữ liệu thô hoặc không xác định.
bahamat

1
@bahamat Nó không phải là một byte, nhưng có một phần của tập tin truyền thống được gọi là " con số kỳ diệu " đó là nghĩa vụ để xác định những tập tin chứa. Đó là những gì filelệnh đang xem xét. ( #!là số ma thuật cho các tập lệnh sh chẳng hạn)
Izkata

1
@lzkata đúng, như tôi đã nói: "các kiểu tệp đã biết được ghi chép hợp lý và có cấu trúc đủ để được phát hiện một cách đáng tin cậy với mức độ chắc chắn cao".
bahamat

7

Nói chung, tôi thấy việc giữ một quy ước nghiêm ngặt, mô tả, đặt tên là rất hữu ích. Bạn không cần tiện ích mở rộng trong Unix, nhưng tôi sẽ giữ nó vì hai lý do:

1) Nếu tệp đó sẽ được đọc bởi máy Windows, nó sẽ dễ mở hơn là cố gắng tìm "mở bằng ...".

2) Tiện ích mở rộng giúp bạn, người dùng, tìm ra tệp đang làm gì. Trong phòng thí nghiệm của chúng tôi: .txt = tệp văn bản .sgi = irix được biên dịch nhị phân .linux = linux được biên dịch nhị phân

Nếu bạn phải sử dụng các máy unix cũ hơn (chúng tôi vẫn sử dụng IRIX), hãy nhớ rằng việc trả lại vận chuyển sẽ khác với các máy * nix và các chương trình có thể không đánh giá cao nếu bạn thử và mở một tệp có trả về vận chuyển windows.



3

Có một số câu trả lời tốt. Tôi muốn trả lời thêm một phần câu hỏi ban đầu: "Bất kỳ tài nguyên chung nào về cách Linux xử lý các phần mở rộng tệp sẽ hữu ích."

Có thể đăng ký các tiện ích mở rộng để Linux luôn mở một số tiện ích mở rộng nhất định với các chương trình nhất định. Cơ sở này được gọi là binfmt .

binfmt_misc là một khả năng của hạt nhân Linux, cho phép các định dạng tệp thực thi tùy ý được nhận dạng và chuyển đến các ứng dụng không gian người dùng nhất định, chẳng hạn như trình giả lập và máy ảo. Các định dạng thực thi được đăng ký thông qua giao diện hệ thống tệp mục đích đặc biệt (tương tự / Proc). Các bản phân phối dựa trên Debian cung cấp chức năng thông qua gói hỗ trợ binfmt bổ sung.

Mỗi định dạng có một mục nhập tệp tương ứng trong thư mục / Proc / sys / fs / binfmt_misc có thể được đọc để lấy thông tin về định dạng tệp đã cho.


-2

.txt có thể được mở thông qua các ứng dụng khác nhau. nhưng điều quan trọng là nó được sử dụng để phân loại tệp theo loại nhất định. Bạn có thể xem nếu chúng tôi lưu cùng một tệp bằng cách sử dụng .html, tệp sẽ cố mở trong trình duyệt internet explorer. các ứng dụng được thực hiện phù hợp để hỗ trợ các loại tệp như vậy. Nếu bạn sử dụng .html ở trên, trình biên dịch sẽ cố gắng tìm các thuộc tính html trong đó và hiển thị kết quả tương ứng. tương tự với các phần mở rộng khác. Tệp .ini có thể được đọc dưới dạng văn bản nhưng phần mở rộng phân loại nó là tệp cấu hình và do đó trình biên dịch coi nó là tệp cấu hình không phải là tệp văn bản thông thường vì tệp văn bản chỉ là một bộ bản ghi và không có chức năng cụ thể như của. ini.hence bạn sẽ không muốn thay đổi phần mở rộng của ini thành văn bản


6
Đó có thể là trường hợp trên Windows, nhưng (như được giải thích trong các câu trả lời khác), điều này không liên quan trong các hệ điều hành UN * X-ish.
Piskvor
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.