Como editar arquivos em / usr / bin?

2

Corrija-me se estiver errado, mas um dos diretórios nos quais os comandos estão armazenados no Ubuntu é /usr/bin . Eu tentei visualizar um dos arquivos executáveis ELB de 64 bits LSB (sinergia) com nano , mas tudo que vejo é uma mistura de símbolos / letras aleatórios. Posso ver esses arquivos? Se sim, como faço para isso?

    
por user253122 07.03.2014 / 20:40

2 respostas

8

A maioria dos arquivos (se não todos) de /usr/bin são arquivos binário executáveis. Agora, um arquivo binário é um arquivo de computador que não é um arquivo de texto ; ele pode conter qualquer tipo de dado, codificado em formato binário para fins de armazenamento e processamento do computador (mais sobre: Arquivo binário ).

Portanto, se um arquivo binário não é um arquivo de texto, você não pode usar nano (ou outro editor de texto) para editá-lo (bem, você pode, mas com certeza você não saberá o que está fazendo) .

No Ubuntu (e Linux, como sistemas operacionais em geral) existem alguns aplicativos chamados hexeditors , como GHex , que pode ser usado para visualizar e editar arquivos de duas formas, hex ou ascii:

Além disso, você pode transformar vim em um hexeditor digitando :%!xxd dentro dele ( :%!xxd -r para voltar ao modo normal).

    
por Radu Rădeanu 07.03.2014 / 21:01
2

Arquivos sob /usr/bin que não são shell scripts são normalmente executáveis "reais", ou seja, eles contêm código de máquina que é executado diretamente pela CPU (misturado com alguns cabeçalhos / estruturas usados pelo carregador e pelo vinculador dinâmico para fazer seu trabalho )

Você pode abri-los com um editor hexadecimal, mas normalmente você não pode fazer muito com isso; Se você souber sobre o formato ELF, a ferramenta clássica para verificar propriedades de executáveis é objdump ; objdump -x filename imprimirá muitas informações sobre os cabeçalhos ELF, enquanto a opção -d produzirá a desmontagem de todos os segmentos executáveis do executável fornecido. Mas, novamente, ou você é realmente especialista e está fazendo coisas muito específicas, ou isso é realmente inútil. Executáveis são feitos para serem executados por um computador, não lidos por um ser humano.

O que é mais interessante, se você for programador, é pegar o código-fonte (ou seja, o código realmente escrito por um humano e então compilado em um executável binário) de um programa que você instalou, para verificar, aplique patches , modifique-o, ... Se o seu sources.list estiver configurado apropriadamente e o pacote de origem estiver disponível (normalmente é o caso de todos os pacotes fornecidos em repos de "main" para "universe"), você pode obter as fontes usando o comando apt-get source name_of_the_package .

    
por Matteo Italia 08.03.2014 / 02:39