使用文件夹提取文件然后使用 bash 完成

Extracting file with folders then using bash completion

我不怎么使用 bash 脚本编写,而是试图做这样的事情:

#!/bin/bash
wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-i686-static.tar.xz
tar xvf ffmpeg-git-i686-static.tar.xz
cd ./ffmpeg-git-20210501-i686-static/
cp ./ffmpeg-git-20210501-i686-static/ffmpeg /etc/bin

是否有变量或方法可以确定在脚本执行期间调用提取的文件夹的内容。例如,在命令行 bash 完成时,我会使用 cd ./ffmpeg (因为我知道它以 ffmpeg 开头)

有道理吗?

无法事先知道目录结构,但可以在复制命令中使用通配符:

cp ./*/ffmpeg /etc/bin

不过,我不建议在 /etc/bin.

中安装 tarball 提取的可执行文件

我会在 /usr/local/bin/ 中放置一个符号 link 而不是:

#!/usr/bin/env sh

__opwd="$PWD"
trap 'cd "$__opwd"' EXIT ABRT INT

wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-i686-static.tar.xz || exit 1

# Create place where to install the unpacked archive
mkdir -p '/opt/ffmpeg-git-i686-static' || exit 1

# Unpack the archive
cd '/opt/ffmpeg-git-i686-static' || exit 1
tar xf "$__opwd/ffmpeg-git-i686-static.tar.xz" || exit 1

# Create a symbolic link from the ffmpeg command into `/usr/local/bin/`
ln -sf /opt/ffmpeg-git-i686-static/*/ffmpeg /usr/local/bin/