Ubuntu 17.04 Bash 脚本帮助

Ubuntu 17.04 Bash 脚本帮助

我需要帮助制作一个特定的 bash 函数。

下面是我想在终端中执行的操作的一个例子:

  • 运行命令apt-get update(在后台运行,无输出)
  • 然后仅回显urls列表中更新的内容(不是 Hit: 1、Hit: 2 等...)

所以基本上我需要一个 bash 脚本来查找特定的东西,例如“Hit: 1、Hit: 2 等”,然后在列表中输出之后的内容。

PS:这只是一个理论上的例子。这些网址对我来说没有任何用处。

答案1

您可以使用--print-urisapt-get 命令的参数仅输出更新包的 URI。例如:

sudo apt-get --print-uris update

将输出 tarball 和 .xz 档案的列表。但该列表非常不干净,具有以下一般格式。

'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

但是,只需使用以下简单的正则表达式即可清理输出,egrep该正则表达式可用于匹配任何文件的 URL 直接静态链接。

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

为了把它变成一个函数,

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

upgrade您还可以使用它来输出和/或参数的包的 URI,dist-upgrade以及可以传递给 apt-get 命令的任何其他参数。

为了使这个论点发挥作用upgrade

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

您可以使用此输出中的 URI 执行快速升级,方法是使用本质上更快的多线程下载程序(如axelan/or)aria2c。我的 github 上有一个脚本,它正是执行此操作。即,它使用上面显示的方法提取 URI 列表并下载软件包.deb以执行非常快速的升级。速度提高了 40 倍。请注意我的脚本使用,axel因此请确保axel在运行脚本之前已安装。

克隆我的 github repo:

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

相关内容