Que extensão usar para arquivos de texto? (Unix / Linux)

19

Notei que posso ler arquivos de texto sem uma extensão .txt . Por quê? Devo salvar esses arquivos com ou sem a extensão .txt ?

Além disso, e os arquivos .ini ? Eu costumo usá-los assim: config.ini , devo remover a extensão aqui para?

Quaisquer recursos gerais sobre como o Linux lida com extensões de arquivos seriam úteis.

    
por jcora 09.08.2012 / 18:49

6 respostas

36

O UNIX / Linux não possui o mesmo histórico DOS / CP / M herdado do Windows. Portanto, as extensões são geralmente menos significativas para a maioria dos utilitários e ferramentas do UNIX.

Eu geralmente uso um ambiente somente de linha de comando. As extensões em tal ambiente no Linux não são realmente significativas, exceto como uma conveniência para o operador ou usuário. (Eu não tenho experiência suficiente com o KDE ou o GNOME para saber como seus gerenciadores de arquivos lidam com extensões.)

Mas tal conveniência é geralmente importante. Se config.ini estiver realmente no formato ".ini" padrão da Microsoft, deixarei a extensão em vigor. Arquivos de texto antigos não carregam extensões no Linux, mas isso não é universal para todos os arquivos de configuração de programas. O programador geralmente decide isso.

Acho que ".txt" é útil no Linux se você quiser enfatizar que NÃO é um arquivo de configuração ou outro documento legível por máquina. No entanto, nas distribuições de origem, a convenção é nomear todos esses arquivos sem uma extensão (ou seja, README, INSTALL, COPYING, etc.)

Existem alguns padrões e convenções, mas nada impede você de nomear qualquer coisa que você queira, a menos que você esteja compartilhando coisas com outras pessoas.

No Windows, nomear um arquivo .exe indica ao shell (geralmente explorer.exe ) que é um arquivo executável. O UNIX cria esse conhecimento nas permissões do sistema de arquivos. Se os x bits apropriados (ver man chmod ) estiverem configurados, ele será reconhecido como executável por shells e funções de kernel (acredito). Além disso, o Linux não se importa, a maioria das shells não se importa, e a maioria dos programas procura no arquivo para encontrar o "tipo".

Claro, há o comando nice file , que pode analisar o arquivo e dizer o que é com um grau de certeza. Acredito que, se não puder corresponder os dados no arquivo com qualquer tipo conhecido, e se ele contiver apenas caracteres ASCII / Unicode imprimíveis, então ele assumirá um arquivo de texto.

@Bruce Ediger abaixo está absolutamente correto. Não há nada no nível do kernel ou do sistema de arquivos, ou seja, o próprio Linux, reforçando ou cuidando que o conteúdo de um arquivo precise corresponder ao seu nome ou ao programa que deve compreendê-lo. Isso não significa que não é possível criar um utilitário shell ou launcher para fazer coisas com base no nome do arquivo.

    
por 09.08.2012 / 19:08
21

Diferentemente do Windows, nos sistemas UNIX, o tipo de arquivo não é determinado pela extensão. A extensão do arquivo é e foi simplesmente um indicador visual para humanos. Você pode nomear um JPEG foo.c e abri-lo no Gimp. Outro contraste do Windows é que nos sistemas UNIX você deve usar o nome do arquivo inteiro, enquanto o Windows geralmente cuida disso para você (por exemplo, executando apenas explorer vs. explorer.exe ). No UNIX foo.sh deve ser chamado como foo.sh , não simplesmente foo .

Por convenção, as pessoas tendem a usar um conjunto comum de extensões. Esta prática, embora desnecessária, é provavelmente benéfica para a humanidade em geral.

    
por 09.08.2012 / 19:02
6

Você pode querer ler uma Introdução ao Unix File System .

    
por 09.08.2012 / 18:56
6

Em geral, descobri que manter uma convenção de nomenclatura estrita e descritiva é muito útil. Você não precisa da extensão no Unix, mas eu a manteria por dois motivos:

1) Se esse arquivo for lido por uma máquina windows, será mais fácil abrir do que tentar encontrar "open with ...".

2) As extensões ajudam você, o usuário, a descobrir o que o arquivo está fazendo. No nosso laboratório: .txt = arquivo de texto .sgi = binário compilado irix .linux = linux compilado binário

Se você tiver que usar máquinas unix antigas (ainda usamos o IRIX), tenha em mente que o retorno de carro é diferente em máquinas * nix e programas podem não apreciar se você tentar abrir um arquivo com retornos de carro do Windows. p>     

por 09.08.2012 / 20:04
3

Existem várias boas respostas. Eu gostaria de responder mais uma parte da pergunta original: "Qualquer recurso geral sobre como o Linux manipula as extensões de arquivo seria útil".

É possível registrar extensões, para que o Linux sempre abra certas extensões com certos programas. Este recurso é chamado de binfmt .

binfmt_misc is a capability of the Linux kernel which allows arbitrary executable file formats to be recognized and passed to certain user space applications, such as emulators and virtual machines. The executable formats are registered through a special purpose file system interface (similar to /proc). Debian-based distributions provide the functionality through an extra binfmt-support package.

Each format has a corresponding file entry in the /proc/sys/fs/binfmt_misc directory which can be read to get information about a given file format.

    
por 17.08.2012 / 08:09
-2

.txt pode ser aberto através de diferentes aplicativos. mas o importante é que é usado para classificar o arquivo em determinado tipo. Você pode ver se salvamos o mesmo arquivo usando o arquivo .html que o arquivo tenta abrir no Internet Explorer. os aplicativos são feitos de acordo para suportar esses tipos de arquivos. Se você usar .html acima, o compilador tenta encontrar os atributos html e mostra o resultado de acordo. mesmo com as outras extensões. O arquivo .ini pode ser lido como texto, mas a extensão o classifica como arquivo de configuração e, portanto, o compilador o trata como arquivo de configuração não como um arquivo de texto comum, pois o arquivo de texto é apenas um conjunto de registros e não possui função específica. ini.hence você não iria querer mudar a extensão do ini para o texto

    
por 10.08.2012 / 08:42