Respostas:
Você pode usar o file
comando para verificar qual formato tem esse executável. Por exemplo:
file /usr/bin/gedit
/usr/bin/gedit: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x5a388215eb6f60b420fc3b6d68ec52d563071f84, stripped
Este comando simples mostra se o arquivo executável é de 32 bits (i386) ou 64 bits (amd64).
Sintaxe:
apt-cache show $(dpkg -S /path/to/the/file | awk -F ':' '{print $1 }') | awk '/Architecture:/ {print $2}' -
Exemplo:
$ apt-cache show $(dpkg -S /usr/bin/gedit | awk -F ':' '{print $1 }') | awk '/Architecture:/ {print $2}' -
amd64
Explicação:
dpkg -S
O comando pega o pacote no qual o arquivo realmente pertence. apt-cache show package
O comando mostra os detalhes sobre o pacote. A partir desses detalhes, o awk pega apenas a parte Architecture e a redireciona para stdout.
OU
Você pode tentar este comando também,
$ dpkg -l $(dpkg -S /usr/bin/gedit | awk -F ':' '{print $1 }') | awk '/ii/ {print $4}'
amd64
cut -d: -f1
seria mais curto aqui e observe que isso funciona apenas para pacotes instalados, não para um arquivo aleatório na sua pasta pessoal. Talvezxargs -r
seja mais apropriado caso odpkg -S
comando retorne vazio.