我需要保留这些文件夹,但找不到阻止脚本删除它们的方法。它本来是用来安装软件的,但它是为 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 读取文件并查看它的作用……然后以类似的方式执行。使用支持二进制部分(第二个)的编辑器也可以修改脚本部分。