我有一个“自解压”的 .sh,但完成后会删除文件夹

我有一个“自解压”的 .sh,但完成后会删除文件夹

我需要保留这些文件夹,但找不到阻止脚本删除它们的方法。它本来是用来安装软件的,但它是为 RedHat 设计的,我想在 Ubuntu 中手动编译和运行这些文件。有没有办法逐步执行 bash 脚本或从自安装 .sh 文件中提取存档?谢谢!

有问题的包裹是:http://irsa.ipac.caltech.edu/data/SPITZER/docs/dataanalysistools/tools/spice/downloadspice/(Linux .sh)

答案1

在这种情况下你只需要做

tail -n +31  spice2_5_1-generic-linux.sh > spice2_5_1-generic-linux.tar

之后您可以将其作为普通 tar 文件进行处理。( tar -xvf spice2_5_1-generic-linux.tar)。

由于这个 tar 没有主目录,我建议你这样做

mkdir TempSpice   
cd TempSpice
tar -xvf ../spice2_5_1-generic-linux.tar

一些注释

自解压文件通常是一个 bash 脚本,后面跟着数据,只在一个文件中。在本例中,脚本位于前 30 行。

#!/bin/sh
PATH=/bin:/usr/bin
base=sut.$$
outname_tar=$base.tar
tempdir=spottmp.$$
mkdir $tempdir
echo "Unpacking..."
platform=`uname`
if [ $platform = "SunOS" ]; then
    tail +31 $0 > $outname_tar
else
    tail -n+31 $0 > $outname_tar
fi

echo "Extracting..."
(cd $tempdir; tar xvf ../$outname_tar)
  savestatus=$?
  if [ $savestatus != "0" ]; then
    echo status from tar = $savestatus
    echo ABORTING INSTALLATION
    /bin/rm -rf $tempdir
    /bin/rm -f $outname_tar
    exit $savestatus
    fi
echo "cleaning up..."
/bin/rm $outname_tar
echo "installing..."
(cd $tempdir; ./INSTALL)
/bin/rm -rf $tempdir
exit 0

里面的脚本很基础。可以用 less 读取文件并查看它的作用……然后以类似的方式执行。使用支持二进制部分(第二个)的编辑器也可以修改脚本部分。

相关内容