Le estensioni di file hanno qualche scopo (per il sistema operativo)?


73

Linux determina il tipo di un file tramite un codice nell'intestazione del file. Non dipende dalle estensioni dei file per sapere quale software utilizzare per l'apertura del file.

Questo è ciò che ricordo dalla mia educazione. Per favore, correggimi se sbaglio!

Lavorare un po 'con i sistemi Ubuntu recentemente: Vedo un sacco di file sui sistemi che hanno le estensioni come .sh, .txt, .o,.c

Ora mi chiedo: queste estensioni sono pensate solo per gli umani? In modo che uno dovrebbe avere un'idea di che tipo di file è?

O hanno anche qualche scopo per il sistema operativo?


5
Se non ottieni una buona risposta qui, ricorda che c'è anche unix.stackexchange.com
mchid

Correlati, quasi duplicati: askubuntu.com/questions/390015/…
Zzzach ...


5
In Windows lo fanno, in Linux / Unix per lo più no. La principale eccezione sono i programmi di compressione-- gzip, bzip2, xz- e così via. Questi programmi utilizzano suffissi per separare la versione compressa di un file da quella non compressa che sostituiscono. I programmi di compressione spesso lamentano un suffisso errato, anche se il file in realtà è un file compresso del tipo che dovrebbe gestire.
Baard Kopperud,

6
Penso che parte del problema con questa domanda sia che "il sistema operativo" non è un concetto ben definito. Cosa fa parte del sistema operativo e in cosa consiste un'applicazione? Non molte parti del sistema operativo (indipendentemente dal sistema operativo di cui stiamo parlando) si preoccupano del tipo di file: fanno semplicemente ciò che viene loro detto. Quindi le distinzioni su come sanno sono irrilevanti; non fanno nessuno dei due. Le apparecchiature, d'altra parte, possono fare una o entrambe le cose.
IMSoP

Risposte:


39

Linux determina il tipo di un file tramite un codice nell'intestazione del file. Non dipende dalle estensioni dei file per sapere che con il software è necessario aprire il file.

Questo è ciò che ricordo dalla mia educazione. Per favore, correggimi se sbaglio!

  • correttamente ricordato.

Queste estensioni sono pensate solo per gli umani?

  • Sì, con un ma.

Quando interagisci con altri sistemi operativi che dipendono dal fatto che le estensioni siano ciò che sono, è più intelligente utilizzarle.

In Windows, l'apertura del software è collegata alle estensioni.

L'apertura di un file di testo chiamato "file" è più difficile in Windows che aprire lo stesso file denominato "file.txt" (è necessario cambiare la finestra di dialogo Apri file da *.txta *.*ogni volta). Lo stesso vale per i file di testo separati da TAB e punti e virgola. Lo stesso vale per l'importazione e l'esportazione di e-mail (estensione .mbox).

In particolare quando si codifica il software. Aprire un file denominato "software1" che è un file HTML e "software2" che è un file JavaScript diventa più difficile rispetto a "software.html" e "software.js".


Se esiste un sistema in Linux in cui le estensioni dei file sono importanti, lo definirei un bug. Quando il software dipende dalle estensioni dei file, è sfruttabile. Usiamo una direttiva interprete per identificare cosa sia un file ("i primi due byte in un file possono essere i caratteri" #! ", Che costituiscono un numero magico (esadecimale 23 e 21, i valori ASCII di" # "e"! ") spesso indicato come shebang").

Il problema più famoso con le estensioni dei file è stato LOVE-LETTER-FOR-YOU.TXT.vbs su Windows. Questo è uno script di base visivo che viene mostrato in Esplora file come file di testo.

In Ubuntu quando avvii un file da Nautilus ricevi un avviso su cosa sta per fare. L'esecuzione di uno script da Nautilus in cui vuole avviare alcuni software in cui dovrebbe aprire gEdit è un problema evidente e riceviamo un avviso al riguardo.

Nella riga di comando quando esegui qualcosa, puoi vedere visivamente qual è l'estensione. Se finisce su .vbs inizierei a diventare sospettoso (non che .vbs sia eseguibile su Linux. Almeno non senza qualche sforzo in più;)).


31
Non capisco esattamente quello che volevi dire nella tua ultima frase. Innanzitutto, si tratta di nascondere l'estensione piuttosto che averla, in secondo luogo l'exploit funzionerebbe allo stesso modo in Linux: si nomina un file binario readme.txte lo si rende eseguibile. Se l'utente lo ha eseguito, non apre l'editor, ma esegue il codice. A questo proposito, rendere le estensioni importanti (ma non nasconderle) è più sicuro e più facile da spiegare per gli utenti non esperti. Esistono altre differenze (in particolare non eseguendo i file dalla directory corrente), ma non hanno nulla a che fare con le estensioni.
techraf,

4
@techraf In realtà il file manager probabilmente proverà ad aprire il readme.txtfile con un editor di testo. Ho appena provato con Dolphin in KDE, creando uno script di shell che aggiunge il permesso eseguibile, salvandolo come .txte facendo clic su di esso lo aprirà in Kate. Se lo rinomino per .shpoi fare clic su di esso lo esegue.
Bakuriu,

9
linux: dato che make è costruito attorno a regole che dipendono dall'estensione del file, questo non renderebbe (senza gioco di parole) le estensioni pensate per più che semplici umani?
Bolov,

15
Questa è una risposta monumentalmente sbagliata. Alcune parti di Linux usano numeri magici per determinare i tipi di file. Esecuzione di file dalla riga di comando. Ma altre enormi parti del sistema usano le estensioni dei file per sapere cosa guardare, se si tratta del linker dinamico (che vuole file .so), modprobe, sistemi di compilazione, plugin, librerie per python, ruby, ecc. Molti file non ha numeri magici, fileè euristico, non definito.
Alan Shutko,

3
"Linux determina il tipo di un file tramite un codice nell'intestazione del file" "corretto" WTF? Quale "codice nell'intestazione del file"? Non esiste un codice del genere e non esiste un "file header" generico in Linux.
leonbloy,

68

Non esiste una risposta al 100% in bianco o nero qui.

Di solito Linux non si basa sui nomi dei file (e sulle estensioni dei file, ovvero la parte del nome del file dopo l'ultimo periodo normalmente) e determina invece il tipo di file esaminando i primi byte del suo contenuto e confrontandolo con un elenco di numeri magici noti .

Ad esempio, tutti i file di immagine Bitmap (di solito con l'estensione del nome .bmp) devono iniziare con le lettere BMnei primi due byte. Gli script nella maggior parte dei linguaggi di scripting come Bash, Python, Perl, AWK, ecc. (Praticamente tutto ciò che tratta le righe che iniziano con un #commento) possono contenere un shebang come #!/bin/bashprima riga. Questo commento speciale indica al sistema con quale applicazione aprire il file.

Quindi normalmente il sistema operativo si basa sul contenuto del file e non sul suo nome per determinare il tipo di file, ma affermare che le estensioni di file non sono mai necessarie su Linux è solo metà della verità.


Le applicazioni possono ovviamente implementare i controlli dei file come vogliono, il che include la verifica del nome e dell'estensione del file. Un esempio è Eye of Gnome ( eog, visualizzatore di immagini standard) che determina il formato dell'immagine dall'estensione del file e genera un errore se non corrisponde al contenuto. Se si tratta di un bug o di una funzionalità, può essere discusso ...

Tuttavia, anche alcune parti del sistema operativo si basano su estensioni di file, ad esempio quando si analizzano i file delle sorgenti del software /etc/apt/sources.list.d/: solo i file con l' *.listestensione vengono analizzati, tutti gli altri vengono ignorati. Forse non viene principalmente utilizzato per determinare il tipo di file qui, ma piuttosto per abilitare / disabilitare l'analisi di alcuni file, ma è comunque un'estensione che influenza il modo in cui il sistema tratta un file.

E, naturalmente, i profitti degli utenti umani più da estensioni di file come che rende il tipo di un file evidente e permette anche di più file con lo stesso nome di base e le estensioni diverse, come site.html, site.php, site.js, site.cssecc Lo svantaggio è, naturalmente, che il file di estensione e l'effettivo il tipo / contenuto del file non deve necessariamente corrispondere.

Inoltre è necessario per l'interoperabilità multipiattaforma, ad esempio Windows non saprà cosa fare con un readmefile, ma solo a readme.txt.


Ti contraddici leggermente qui: se il visualizzatore di immagini standard richiede un nome file che termina .bmp, quale parte del sistema operativo stai dicendo si basa sul contenuto del file che inizia con "BM"? AFAIK, gli unici "numeri magici di cui si preoccupa il kernel sono tipi eseguibili, incluso il caso speciale #!. Tutto il resto dipende dalla decisione di un'applicazione.
IMSoP

@IMSoP Non conosco l'esatta implementazione di eoge non so perché si preoccupino del nome del file. Questo è un bug secondo me. E ovviamente se il file si chiama "bmp" ma il suo formato del contenuto non corrisponde, ci sarà anche un errore, ovviamente. Naturalmente ogni applicazione decide come verificare i file, ma in generale le applicazioni Linux non dovrebbero fare affidamento sul nome. A proposito, puoi usare il fileencomio per esaminare i tipi di file in base al loro contenuto.
Byte Commander

1
La frase che sto sfidando è questa: "Linux ... determina il tipo di file esaminando i primi pochi byte". Quale definizione di "Linux" stai usando in quella frase? L'esistenza filedell'utilità in realtà non dimostra nulla; è uno strumento utile, che potrebbe esistere su qualsiasi sistema operativo. Quale parte fondamentale del sistema operativo rende l'esecuzione filepiù "corretta" rispetto al globbing del nome del file?
IMSoP,

Si noti che i file senza estensione possono essere associati a un programma.
Isanae,

24

Come menzionato da altri, in Linux viene utilizzato un metodo di direttiva interprete (memorizzazione di alcuni metadati in un file come intestazione o numero magico in modo che l'interprete corretto possa leggerlo) anziché il metodo di associazione dell'estensione del nome file utilizzato da Windows.

Ciò significa che puoi creare un file con quasi tutti i nomi che ti piacciono ... con alcune eccezioni

però

Vorrei aggiungere un avvertimento.

Se hai alcuni file sul tuo sistema da un sistema che utilizza l'associazione dei nomi di file, i file potrebbero non avere quei numeri o intestazioni magici. Le estensioni dei nomi di file vengono utilizzate per identificare questi file da applicazioni in grado di leggerli e potresti riscontrare alcuni effetti imprevisti se si rinomina tali file. Per esempio:

Se rinomini un file My Novel.docin My-Novel, Libreoffice sarà comunque in grado di aprirlo, ma si aprirà come "Senza titolo" e dovrai nominarlo di nuovo per salvarlo (Libreoffice aggiunge un'estensione di default, quindi avresti due file My-Novele My-Novel.odt, che potrebbe essere fastidioso)

Più seriamente, se rinominate un file My Spreadsheet.xlsx in My-Spreadsheet, quindi provate ad aprirlo con xdg-open My-Spreadsheetvoi otterrete questo (perché in realtà è un file compresso):

E se si rinomina un file My Spreadsheet.xlsin My-Spreadsheet, quando xdg-open My-Spreadsheetviene visualizzato un errore

posizione di apertura dell'errore: nessuna applicazione registrata per la gestione di questo file

(Anche se in entrambi questi casi funziona bene se lo fai soffice My-Spreadsheet)

Se poi rinominate il file senza estensione My-Spreadsheet.odscon mve provate ad aprirlo otterrete questo:

(riparazione non riuscita)

E dovrai reinserire l'estensione originale per aprire correttamente il file (puoi quindi convertire il formato se lo desideri)

TL; DR:

Se hai file non nativi con estensioni di nome, non rimuovere le estensioni supponendo che tutto andrà bene!


4
Nel gestore archivio si apre un documento MS Office di nuovo stile (docx, xlsx, pptx ecc.) Senza estensione di file perché questi tipi di file sono in realtà solo normali file compressi ZIP che contengono tutti i documenti XML e i file multimediali necessari per definire il contenuto del documento. Il formato di file di una directory compressa ZIP è piuttosto comune al giorno d'oggi a proposito.
Byte comandante

1
Già molte ottime risposte, ma solo una più specifica per libreoffice che ho notato. Si crea un file di valori separati da virgola (CSV) e lo si salva come "test.csv", si aprirà una finestra che chiede quale tipo di separatore si sta utilizzando (ad es. Libreoffice Calc). Se si rinomina questo file in "test.cs", ad esempio, allora Writer di libreoffice lo apre. Quindi, oltre all'esempio ZIP sopra, sembra che libreoffice faccia uso dell'estensione del file.
Ray,

3
Il filesystem linux non fa nulla riguardo ai tipi di file. Questo dipende dai programmi in esecuzione su di esso.
Peter Green,

@PeterGreen Sì, ma il fatto che i programmi gli attribuiscano un significato significa che non è "solo per gli esseri umani", ad esempio, il classico MacOS lo aveva [c'erano campi "tipo di file" a quattro byte e "app creatore" che non erano " t parte del nome del file, quindi il sistema operativo e le applicazioni avevano tutte le informazioni di cui avevano bisogno senza guardare le estensioni dei file]
Random832

3
@PeterGreen Anche il filesystem di Windows non fa nulla riguardo ai tipi di file. La shell grafica (Esplora risorse) utilizza l'estensione del file per scegliere un'azione per il doppio clic, ma tecnicamente si tratta solo di un programma in esecuzione sul sistema operativo, proprio come Nautilus. Sarebbe perfettamente possibile scrivere un file manager Linux con quel comportamento, o uno Windows che ha esaminato il contenuto del file.
IMSoP,

20

Mi piacerebbe adottare un approccio diverso da questo rispetto alle altre risposte, e sfidare l'idea che "Linux" o "Windows" hanno qualcosa a che fare con questo (abbi pazienza con me).

Il concetto di estensione di un file può essere semplicemente espresso come "una convenzione per identificare il tipo di un file in base alla parte del suo nome". Le altre convenzioni comuni per identificare il tipo di un file stanno confrontando il suo contenuto con un database di firme conosciute (l'approccio "numero magico") e memorizzandolo come un attributo extra sul file system (l'approccio usato nel MacOS originale) .

Poiché ogni file su un sistema Windows o Linux ha sia un nome che un contenuto, i processi che vogliono conoscere il tipo di file possono usare gli approcci "estensione" o "numero magico" come meglio credono. L'approccio dei metadati non è generalmente disponibile, in quanto non esiste un posto standard per questo attributo sulla maggior parte dei file system.

Su Windows, esiste una forte tradizione di utilizzare l'estensione del file come mezzo principale per identificare un file; più visibilmente, il browser di file grafico (File Manager su Windows 3.1 ed Explorer su Windows moderno) lo utilizza quando si fa doppio clic su un file per determinare quale applicazione avviare. Su Linux (e, più in generale, sistemi basati su Unix), c'è più tradizione nell'ispezione dei contenuti; in particolare, il kernel osserva l'inizio di un file eseguito direttamente per determinare come eseguirlo; i file di script possono indicare un interprete da utilizzare iniziando con #!seguito dal percorso dell'interprete.

Queste tradizioni influenzano la progettazione dell'interfaccia utente di programmi scritti per ciascun sistema, ma ci sono molte eccezioni, poiché ogni approccio presenta pro e contro in situazioni diverse. I motivi per utilizzare le estensioni di file anziché esaminare i contenuti includono:

  • l'esame del contenuto dei file è piuttosto costoso rispetto all'esame dei nomi dei file; quindi per esempio "trova tutti i file chiamati * .conf" sarà molto più veloce di "trova tutti i file la cui prima riga corrisponde a questa firma"
  • il contenuto del file può essere ambiguo; molti formati di file sono in realtà solo file di testo trattati in modo speciale, molti altri sono file zip appositamente strutturati e definire firme precise per questi può essere complicato
  • un file può essere autenticamente valido come più di un tipo; un file HTML può anche essere XML valido, un file zip e una GIF concatenati insieme rimangono validi per entrambi i formati
  • la corrispondenza dei numeri magici potrebbe portare a falsi positivi; un formato di file senza intestazione potrebbe iniziare con i byte "GIF89a" ed essere identificato erroneamente come immagine GIF
  • rinominare un file può essere un modo conveniente per contrassegnarlo come "disabilitato"; ad esempio, cambiare "foo.conf" in "foo.conf ~" per indicare che un backup è più semplice della modifica del file per commentare tutte le sue direttive e più conveniente che spostarlo da una directory caricata automaticamente; allo stesso modo, rinominare un file .php in .txt dirà ad Apache di servire la sua fonte come testo normale, piuttosto che passarlo al motore PHP

Esempi di programmi Linux che utilizzano nomi di file per impostazione predefinita (ma potrebbero avere altre modalità):

  • gzip e gunzip hanno una gestione speciale di qualsiasi file che termina ".gz"
  • gcc gestirà i file ".c" come C e ".cc" o ".C" come C ++

Windows ha anche una forte tradizione di nascondere l'estensione se è "ben noto" e persino DOS ha permesso a un comando di omettere .COM, .BAT e .EXE, cercando automaticamente quelli per determinare quale programma reale eseguire. Non esiste una tradizione simile in * nix.
Monty Harder,

Questa è una risposta molto migliore ma ha un errore di fatto ... uno script non può essere reso eseguibile posizionandolo #!all'inizio. Qualsiasi file con i suoi bit eseguibili impostati può essere eseguito in diversi modi. #!/bin/bashe firme simili specificano semplicemente quale interprete usare. Se non viene fornita tale firma, viene assunto l'interprete shell predefinito. Un file contenente nient'altro che le due parole "Hello World", ma con il bit di esecuzione impostato, tenterà di trovare un comando "Hello" durante l'esecuzione.
DocSalvager

1
@DocSalvager Buona cattura, che era una formulazione goffa come qualsiasi altra cosa. L'ho riformulato un po 'per chiarire che lo shebang non rende eseguibile lo script, cambia solo il modo in cui viene eseguito.
IMSoP

15

In realtà, alcune tecnologie si basano sulle estensioni dei file, quindi se usi tali tecnologie in Ubuntu, dovrai fare affidamento anche sulle estensioni. Alcuni esempi:

  • gccusa le estensioni per distinguere tra file C e C ++. Senza l'estensione è praticamente impossibile differenziarli (immagina un file C ++ senza classi).
  • molti file ( docx, jar, apk) sono solo particolarmente strutturati archivi ZIP. Sebbene di solito sia possibile dedurre il tipo dal contenuto, potrebbe non essere sempre possibile (ad esempio Java Manifest è facoltativo nei jarfile).

Non utilizzare le estensioni dei file in questi casi sarà possibile solo con soluzioni alternative e potrebbe essere molto soggetto a errori.


Bene per te per aver menzionato la programmazione, ma hai sbagliato la maggior parte dei dettagli. gccè il front-end per i file C, per i file C ++ è necessario il g++front-end o un'opzione della riga di comando per specificare la lingua. Più importante è il makeprogramma che decide se utilizzare gcco g++creare un determinato file e makedipende completamente dai modelli di file (principalmente estensioni) per la corrispondenza delle regole.
Ben Voigt,

@BenVoigt Quando si compila un file con .ccun'estensione gcc, sarà davvero compilato come C ++, e questo è documentato in man gcc: "Per ogni dato file di input, il suffisso del nome del file determina che tipo di compilazione viene eseguita:" seguito da un elenco di estensioni e come vengono trattati.
hvd,

1
@hvd Quindi forse è l'insieme predefinito di librerie che va terribilmente storto se non si utilizza il frontend giusto. Ad ogni modo make è l'esempio principale perché tutto ciò che fa si basa sull'estensione del file.
Ben Voigt,

1
@BenVoigt makeè anche un buon esempio, ma gccfa altrettanto affidamento sui nomi dei file. Ecco un esempio più chiaro di .cvs .cc: per C, gccusa i suffissi per dire se il suo primo passo è preprocess ( .c), compile ( .i), assemble ( .s) o link ( .o). Ecco, io uso -E, -Se -cper dire gccdove fermarsi , ma utilizza i nomi di file sapere da dove cominciare . gcc something.ccNon collegherà alle librerie giusti per C ++, ma sarà trattare il file come C ++, che è il motivo per cui molti utenti sono confusi dai messaggi di errore che ricevono quando si effettua questo errore.
Eliah Kagan

7

Il tuo primo presupposto è corretto: le estensioni su Linux non contano e sono utili solo per gli umani (e altri sistemi operativi non simili a Unix che si occupano delle estensioni). Il tipo di un file è determinato dai primi 32 bit di dati nel file, che è noto come numero magico. Questo è il motivo per cui gli script della shell hanno bisogno di una #!linea - per dire al sistema operativo quale interprete chiamare. Senza di essa, lo script della shell è solo un file di testo.

Per quanto riguarda i gestori di file vanno, vogliono conoscere le estensioni di alcuni file, ad esempio .desktopfile, che sostanzialmente lo stesso come la versione di Window di scorciatoie, ma con più funzionalità. Ma per quanto riguarda il sistema operativo, deve sapere cosa c'è nel file, non cosa c'è nel suo nome


3
Questo non è del tutto vero. Esistono programmi che prevedono un'estensione specifica. L'esempio più comunemente usato è probabilmente gunzipche non decomprimerà un file se non viene chiamato foo.gz.
terdon

Questa è un'implementazione di software specifico. Per la maggior parte, i programmi di utilità su sistemi unix-like non prevedono un'estensione.
Sergiy Kolodyazhnyy,

7
Per la maggior parte no, no. La tua prima frase, tuttavia, afferma che non vengono mai utilizzati e contano solo per gli umani. Questo non è del tutto vero. gunzipè un esempio, eogè un altro. Inoltre, molti strumenti non completeranno automaticamente i nomi senza l'estensione corretta. Tutto quello che sto dicendo è che è un po 'più complicato di "le estensioni sono sempre irrilevanti".
terdon

1
1 piccolo problema: OP ha chiesto informazioni sul sistema operativo. 'gunzip' ed 'eog' non sono il sistema operativo ma hanno deciso di creare le proprie restrizioni (in caso di gunzip) o il metodo (eog). "tipi mime" però.
Rinzwind,

1
@Serg Certo, puoi definire il sistema operativo in modo restrittivo e ottenere una risposta banale alla domanda. Non è una risposta particolarmente utile, tuttavia, perché la stragrande maggioranza di ciò che un utente fa con un computer riguarda software che hai escluso. Si noti che la domanda contrastava "solo per gli umani" contro "il sistema operativo"; Non penso che intendessero "il kernel".
IMSoP

6

Questo è troppo grande per una risposta di commento.

Tieni presente che anche "estensione" ha molti significati diversi.

Quello di cui stai parlando sembra essere le 3 lettere dopo il. DOS ha reso il formato 8.3 molto popolare e Windows utilizza la parte .3 fino ad oggi.

Linux ha molti file come .conf o .list o .d o .c che hanno un significato, ma non sono in realtà estensioni in senso 8.3. Ad esempio Apache guarda /etc/apache2/sites-enabled/website.conf per la sua direttiva di configurazione. Mentre il sistema utilizza i tipi MIME e le intestazioni dei contenuti e cosa non determinare è un file di testo, Apache (per impostazione predefinita) non lo caricherà ancora senza che finisca in .conf.

.c è un altro fantastico. Sì, è un file di testo, ma gcc dipende dal fatto che main.c diventi main.o e infine main (dopo il collegamento). In nessun momento il sistema utilizza l'estensione .c, .o o nessuna per avere un significato per quanto riguarda il contenuto, ma le cose dopo il. ha un significato. Probabilmente configureresti SCM per ignorare main.oe main.

Il punto è questo: le estensioni non vengono utilizzate come in Windows. Il kernel non eseguirà un file .txt perché rimuovi la parte .txt del nome. È anche molto felice di eseguire un file .txt se è impostata l'autorizzazione di esecuzione. Detto questo, hanno un significato e sono ancora utilizzati a "livello di computer" per molte cose.


1
Windows non è anche legato alla x.3schema di denominazione eventuali estensioni più lunghi di più, si è arrivati così come .doxc, .torrent, .part, ecc E 'solo che molti formati di file ed estensioni sono stati già definiti indietro nel tempo in cui denominazione 8.3 era ancora una cosa e più tardi i formati per lo più hanno semplicemente adattato la convenzione di utilizzare fino a 3 lettere.
Byte Commander

Non vedo come ".conf", ".c", ecc., Siano "un significato diverso" da "senso 8.3". Il concetto di estensione di un file può essere semplicemente espresso come "una convenzione per identificare il tipo di un file in base a una parte del suo nome". Nemmeno DOS / Win3.1 richiedevano l'estensione corretta (è possibile chiamare un documento Word "STUPIDN.AME" e aprirlo con Ctrl-O in WinWord). È solo che alcuni sistemi (ad esempio doppio clic su Windows, il gziptuo Makefile, ecc.) Possono essere scritti per utilizzare questa convenzione per fare ipotesi sull'azione corretta da intraprendere su ciascun file.
IMSoP,

@ByteCommander È vero, ma l'estensione determina ancora l'app utilizzata. Non sono sicuro di come modificare la risposta per riflettere ciò.
Coteyr,

1
@coteyr Ancora una volta, tutto dipende da cosa intendiamo per "sistema operativo". Il File Manager cercherà sicuramente una chiave di registro per "AME" e mi dirà che "foo.txt" è un file di testo. Ma correre diral prompt dei comandi non mi dirà nulla di simile; semplicemente non importa. L'esecuzione dei file è certamente un'eccezione, su entrambi i sistemi operativi; se la domanda fosse limitata a quelle, la risposta sarebbe che DOS / Windows si preoccupano solo del nome e Unix / Linux si preoccupano solo dell'autorizzazione di esecuzione e dei primi byte del file. A parte questo, c'è sempre qualche applicazione che sceglie una convenzione da seguire.
IMSoP,

1
@coteyr Hai dimenticato * .scr (binario di screen saver) in Windows 3.1 e versioni successive. Detto questo, l'estensione del file anche nei sistemi DOS / Windows anche per gli eseguibili è ancora solo una comodità. Le specifiche dipendono molto da dove si disegna la linea del "sistema operativo", ma è sempre possibile caricare un file binario in memoria e saltarci dentro da soli, facendo il lavoro che normalmente si chiede al sistema operativo di fare. In MS-DOS, se guardi attraverso command.com, sono abbastanza sicuro che ci sia un elenco come EXE COM che puoi modificare in modo tale da cercare altre estensioni se non ne viene specificato nessuno (senza dire che sarebbe una buona idea, intendiamoci).
un CVn il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.