Ubuntu 17.04 Bash Scripting Ajuda

1

Preciso de ajuda para criar uma função bash específica.

Aqui está um exemplo de algo que quero fazer em um terminal:

  • execute o comando apt-get update (execute isso no segundo plano sem saída)
  • ecoar APENAS o urls que ele atualiza de (não Hit: 1, Hit: 2, etc ...) em uma lista

Então, basicamente, eu preciso de um script bash para encontrar uma coisa específica, como "Hit: 1, Hit: 2, etc" e mostrar o que vem depois disso em uma lista.

PS: Este é um exemplo teórico. Eu não tenho nenhum uso para esses URLs.

    
por iamr00t 10.07.2017 / 17:54

1 resposta

1

você pode usar o argumento --print-uris do comando apt-get para produzir apenas os URIs dos pacotes de atualização. Por exemplo:

sudo apt-get --print-uris update

mostrará a lista de tarballs e arquivos .xz. mas a lista é muito impura e tem o seguinte formato geral.

'http://archive.ubuntu.com/ubuntu/dists/xenial-backports/multiverse/dep11/icons-64x64.tar.xz' archive.ubuntu.com_ubuntu_dists_xenial-backports_multiverse_dep11_icons-64x64.tar 0

no entanto, a saída pode ser limpa simplesmente usando egrep com a seguinte expressão regular simples que pode ser usada para corresponder links estáticos diretos de URLs a qualquer arquivo.

sudo apt-get -y --print-uris update | egrep -o -e egrep -o -e "(ht|f)tp://[^\']+"

para transformar isso em uma função,

updateURIonly(){
    sudo apt-get -y --print-uris update | egrep -o -e egrep -o -e "(ht|f)tp://[^\']+" ;
}

você também pode usar isso para gerar os URIs de pacotes para os argumentos upgrade e / ou dist-upgrade , assim como qualquer outro argumento que possa ser passado para o comando apt-get.

para que isso funcione com o argumento upgrade :

upgradeURIonly(){
    sudo apt-get -y --print-uris upgrade | egrep -o -e egrep -o -e "(ht|f)tp://[^\']+" ;
}

você pode usar os URIs dessa saída para realizar uma atualização rápida usando os downloaders multiencadeados inerentemente mais rápidos, como axel an / ou aria2c . Eu tenho um script no meu github que faz exatamente isso. Ou seja, ele usa o método mostrado acima para extrair uma lista de URIs e faz o download dos pacotes .deb para executar uma atualização muito rápida. velocidade aumenta até 40X. lembre-se que meu script usa axel , portanto, certifique-se de ter axel instalado antes de executar o script.

para clonar meu repositório github:

git clone https://github.com/el-beth/apt-faster.git

    
por endrias 10.07.2017 / 18:24