UNIX / Linux nie ma tego samego wczesnego dziedzictwa DOS / CP / M, co Windows. Dlatego rozszerzenia są na ogół mniej znaczące dla większości narzędzi i narzędzi UNIX.
Zwykle używam środowiska tylko z wiersza poleceń. Rozszerzenia w takim środowisku pod Linuksem nie są tak naprawdę znaczące, z wyjątkiem wygody dla operatora lub użytkownika. (Nie mam wystarczającego doświadczenia z KDE lub GNOME, aby wiedzieć, jak ich menedżerowie plików radzą sobie z rozszerzeniami).
Ale taka wygoda jest zwykle ważna. Jeśli config.ini
naprawdę jest w standardowym formacie Microsoft .ini, pozwoliłbym, aby rozszerzenie pozostało. Zwykłe stare pliki tekstowe zwykle nie mają rozszerzenia w systemie Linux, ale nie jest to uniwersalne dla wszystkich plików konfiguracyjnych programów. Programista zazwyczaj decyduje o tym.
Myślę, że „.txt” jest użyteczny pod Linuksem, jeśli chcesz podkreślić, że NIE jest to plik konfiguracyjny lub inny dokument odczytywalny maszynowo. Jednak w dystrybucjach źródłowych konwencja polega na nazywaniu takich plików wszystkimi wielkimi literami bez rozszerzenia (tj. README, INSTALL, COPYING itp.)
Istnieją pewne standardy i konwencje, ale nic nie powstrzymuje cię od nazywania czegokolwiek, co chcesz, chyba że dzielisz się z innymi.
W systemie Windows nazewnictwo pliku .exe
wskazuje powłoce (zwykle explorer.exe
), że jest to plik wykonywalny. UNIX wykorzystuje tę wiedzę w uprawnieniach systemu plików. Jeśli ustawione są odpowiednie x
bity (patrz man chmod
), jest on rozpoznawany jako wykonywalny przez powłoki i funkcje jądra (jak sądzę). Poza tym Linux nie dba o to, większość powłok nie dba o to, a większość programów szuka w pliku, by znaleźć „typ”.
Oczywiście istnieje ładne polecenie, file
które może przeanalizować plik i powiedzieć z pewną pewnością, co to jest. Uważam, że jeśli nie może dopasować danych w pliku do żadnego znanego typu i jeśli zawiera tylko drukowalne znaki ASCII / Unicode, to zakłada, że jest to plik tekstowy.
@Bruce Ediger poniżej jest absolutnie poprawny. Na poziomie jądra lub systemu plików nie ma nic, tj. Sam Linux, wymuszający lub dbający o to, aby zawartość pliku była zgodna z jego nazwą lub programem, który powinien to rozumieć. Nie oznacza to, że nie można utworzyć narzędzia powłoki lub programu uruchamiającego, aby wykonywać czynności na podstawie nazwy pliku.
W przeciwieństwie do systemu Windows, w systemach UNIX typ pliku nie jest określany przez rozszerzenie. Rozszerzenie pliku jest i było po prostu wizualnym wskaźnikiem dla ludzi. Możesz nazwać plik JPEG foo.c i otworzyć go w Gimp. Innym kontrastem w stosunku do systemu Windows jest to, że w systemach UNIX musisz użyć całej nazwy pliku, podczas gdy Windows często się tym zajmie (np. Działając tylko
explorer
vs.explorer.exe
). W systemie UNIXfoo.sh
należy wywoływać jakofoo.sh
nie tylkofoo
.Zgodnie z konwencją ludzie zwykle używają wspólnego zestawu rozszerzeń. Ta praktyka, choć niepotrzebna, jest prawdopodobnie korzystna dla całej ludzkości.
źródło
This practice…is probably beneficial for humanity at large
file
patrzy polecenie. (#!
to na przykład magiczna liczba skryptów sh)Ogólnie bardzo pomocne okazało się zachowanie ścisłej, opisowej konwencji nazewnictwa. Nie potrzebujesz rozszerzenia w Uniksie, ale zatrzymam je z dwóch powodów:
1) Jeśli plik zostanie kiedykolwiek odczytany przez maszynę z systemem Windows, łatwiej będzie go otworzyć niż próbować znaleźć „otwórz za pomocą ...”.
2) Rozszerzenia pomagają użytkownikowi ustalić, co robi plik. W naszym laboratorium: .txt = plik tekstowy .sgi = skompilowany plik binarny irix .linux = skompilowany plik binarny linux
Jeśli musisz używać starszych maszyn uniksowych (nadal używamy IRIX), pamiętaj, że zwrot karetki jest inny w maszynach * nix, a programy mogą nie docenić, jeśli spróbujesz otworzyć plik ze zwrotami karetki w systemie Windows.
źródło
Możesz przeczytać wprowadzenie do systemu plików Unix .
źródło
Istnieje kilka dobrych odpowiedzi. Chciałbym dalej odpowiedzieć na część pierwotnego pytania: „Przydałyby się wszelkie ogólne zasoby na temat tego, jak Linux obsługuje rozszerzenia plików”.
Możliwe jest rejestrowanie rozszerzeń, dzięki czemu Linux zawsze otwiera określone rozszerzenia w niektórych programach. Ta funkcja nazywa się binfmt .
źródło
.txt można otworzyć za pomocą różnych aplikacji. ale ważne jest to, że służy on do klasyfikowania pliku do określonego typu. Możesz sprawdzić, czy zapisujemy ten sam plik za pomocą .html, który próbuje otworzyć w programie Internet Explorer. aplikacje są tworzone odpowiednio do obsługi takich typów plików. Jeśli użyjesz .html powyżej, kompilator spróbuje znaleźć w nim atrybuty HTML i odpowiednio wyświetli wynik. to samo z innymi rozszerzeniami. Plik .ini można odczytać jako tekst, ale rozszerzenie klasyfikuje go jako plik konfiguracyjny, a zatem kompilator traktuje go jako plik konfiguracyjny, a nie zwykły plik tekstowy, ponieważ plik tekstowy jest tylko zbiorem rekordów i nie pełni określonej funkcji. ini.hence nie chcesz zmieniać rozszerzenia ini na tekst
źródło