Eu tenho algumas dúvidas sobre * nix.
Não sei que tipo de arquivo executável é
ls
, se é .sh ou .ksh ou qualquer outro tipo de sistema executável, se for, o que é isso?quando tentei ver como é o código-fonte do
ls
comando, ele mostra algo ilegível, que método o * nix usa para criar esses tipos de arquivos ilegíveis e posso tornar meus arquivos semelhantes a esses arquivos (comols
- ilegíveis).
shell
executable
architecture
Jeyanthinath
fonte
fonte
Respostas:
Você pode determinar a natureza de um executável no Unix usando o
file
comando e otype
comandotipo
Você usa
type
para determinar a localização de um executável no disco da seguinte maneira:Então agora eu sei que
ls
está localizado aqui no meu sistema em 2 locais:/usr/bin/ls
&/bin/ls
. Olhando para esses executáveis, vejo que são idênticos:NOTA: Você pode confirmar que eles são idênticos além dos tamanhos usando
com diff com cmpcmp
oudiff
.Usando arquivo
Se eu consultá-los usando o
file
comando:Portanto, esses seriam programas físicos reais que foram compilados a partir do C / C ++. Se fossem scripts de shell, eles normalmente apresentariam assim
file
:O que é ELF?
ELF é um formato de arquivo , é a saída de um compilador como
gcc
, que é usado para compilar programas C / C ++ comols
.Normalmente, ele possui uma das seguintes extensões no nome do arquivo: none, .o, .so, .elf, .prx, .puff, .bin
fonte
type
em qualquer lugar que você está tentado a utilizaçãowhich
ouwhereis
.md5sum
ousha1sum
não apenas verificar o tamanho e o tempo dos arquivos.coreutils-8.21-13.fc19.x86_64
e eu sei que são idênticos desde 20 anos lidando com os lançamentos da Red Hat.É um executável binário (compilado no código da máquina, como a maioria do sistema). Os scripts de shell são mais como "cola" para unir partes e criar soluções de material existente de maneira rápida e flexível. Esse é o poder do * nix.
Você precisa do código fonte (c, às vezes c ++, são os idiomas mais comuns no * nix), não apenas do executável compilado. Como é de código aberto, você pode obter o código para tudo, desde repositórios online (os principais utilitários geralmente são do projeto gnu). No entanto, é um pouco complicado se você não sabe como usar o git ou outros sistemas de rastreamento de versão.
Aqui está o arquivo ls.c, se ajudar: http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/ls.c
fonte