Bash 脚本将目录名作为命令行参数!

Bash 脚本将目录名作为命令行参数!

编写一个 Bash 脚本,将目录名称作为命令行参数,并通过删除在此目录中找到的所有长度为零、扩展名为 .tmp 或扩展名为 .swp 的文件来清理目录。之后,创建该目录的存档,压缩该存档并将其放置在您的〜目录中?

#!/bin/bash

if [ -d $1 ]
then
  find -empty -print -exec rm -f {} \;
  find . -name "*.tmp" -print -exec rm -f {} \;
  find . -name "*.swp" -print -exec rm -f {} \;
  tar -zxvf $filename.tar.gz /~/ \;
else
  echo "this file is not a directory"
fi

我被困在存档部分,你们能给我一些提示吗!谢谢,祝你有愉快的一天。

答案1

  1. 如果这是家庭作业,你应该这么说。
  2. 无论您为其指定什么目录名称,您的脚本都仅搜索当前目录。
  3. 除非您真正知道自己在做什么,否则rm -f用命令编写脚本是一个非常糟糕的主意。find
  4. \;命令末尾tar会导致错误。
  5. 根据#4,您似乎对命令;中的角色感到困惑find。它作为参数传递,以告知find传入命令的结尾在哪里。
  6. 您的tar命令正在尝试从存档中提取,而不是创建存档。
  7. 你的变量没有被引用
  8. /~/shell 不会将其转换为您的主目录名称;仅当~位于单词开头时才会出现。
  9. 如果操作正确,所有三个find命令都可以合并为一个命令。

我确信还有更多;这就是我的想法。在这个网站上浏览一下,您可以学到很多东西。

我们很乐意提供帮助,但这实际上并不是一个“家庭作业帮助”网站。如果您证明这一点,您可能会得到更多帮助真正想学习,而不仅仅是想完成作业。

答案2

具体回答有关如何目录的问题tar- 因为您的脚本还存在其他几个问题:

tar -cvzf tarfile.tgz "$1"

将创建一个名为 tarfile.tar 的 gzip 压缩 tar,并将脚本参数中的目录放入其中。

相关内容