Listar todas as versões de uma biblioteca usando o bash

3

Eu escrevi este script para obter o número da versão de todas as bibliotecas libpcap no meu sistema Ubuntu.

#!/bin/bash

allLIBs=$(ldconfig -p | grep libpcap)
echo "$allLIBs" | while IFS= read -r a; do
    loc=$(echo $a | awk '{print }')

    # resolve if a sym link
    if [[ -h $loc ]]; then
        loc_res=$(readlink -f $loc)
    fi

    # get lib name
    libName=$(basename $loc_res)

    echo "$loc"
    echo "    resolved to: $loc_res"
    echo "    lib name: $libName"
done

A saída deste script na minha máquina é

/usr/local/lib/libpcap.so.1
    resolved to: /usr/local/lib/libpcap.so.1.8.0-PRE-GIT
    lib name: libpcap.so.1.8.0-PRE-GIT
/usr/lib/x86_64-linux-gnu/libpcap.so.0.8
    resolved to: /usr/lib/x86_64-linux-gnu/libpcap.so.1.5.3
    lib name: libpcap.so.1.5.3
/usr/local/lib/libpcap.so
    resolved to: /usr/local/lib/libpcap.so.1.8.0-PRE-GIT
    lib name: libpcap.so.1.8.0-PRE-GIT
/usr/lib/x86_64-linux-gnu/libpcap.so
    resolved to: /usr/lib/x86_64-linux-gnu/libpcap.so.1.5.3
    lib name: libpcap.so.1.5.3
  1. Como posso obter o número depois disso?
  2. Esta é a maneira correta de obter o número da versão de todas as bibliotecas libpcap instaladas em minha máquina?
por ManiAm 18.01.2016 / 07:36

1 resposta

2

Se você não tiver certeza sobre o número de versões da biblioteca instaladas:

echo "$(ldconfig -p | grep -Eo '/[^ ]+libpcap[^ ]+$')" | \
        while IFS= read -r lib; do readlink "$lib"; done   

Se você não tiver espaços em branco no caminho para o arquivo usando apenas xargs seria suficiente:

echo "$(ldconfig -p | grep -Eo '/[^ ]+libpcap[^ ]+$')" | xargs -L 1 readlink

Se houver apenas uma versão:

readlink "$(ldconfig -p | grep -Eo '/[^ ]+libpcap[^ ]+$')"

Para obter o número da versão após so. , use grep :

% grep -Eo '[0-9][^[:alpha:]]+$' <<<'libpcap.so.1.5.3'
1.5.3

aqui estamos recebendo o número inicial da versão e continuando até o final, garantindo que não haja caracteres alfabéticos intermediários entre eles.

    
por heemayl 18.01.2016 / 08:09

Tags