tar -zcvf error_${current_month}.tar.gz ./error_${current_month}*.log 报错
时间: 2023-03-05 09:43:03 浏览: 94
这个命令中出现了一个问题,它试图将名为 `error_${current_month}.tar.gz` 的归档文件创建并压缩名为 `error_${current_month}*.log` 的所有文件。 由于 `*` 符号不会在归档文件名中被展开,因此会导致该命令出错。
要解决这个问题,您可以使用以下命令:
```
tar -zcvf error_$(date +%Y-%m).tar.gz error_$(date +%Y-%m)*.log
```
这个命令将创建名为 `error_YYYY-MM.tar.gz` 的归档文件,并将名为 `error_YYYY-MM*.log` 的所有文件添加到该归档文件中。`$(date +%Y-%m)` 的语法会返回当前的年份和月份,以便正确命名归档文件。
相关问题
tar -zcvf error_$(current_month).tar.gz ./error_$(current_month)*.log这句命令中包含两个变量, 为什么会报错, 应该怎么修改
这句命令中包含了两个变量 `$(current_month)`,这是一种 shell 变量的写法,可以在命令行中被展开为当前月份。但是,这种写法只在交互式 shell 中有效,在 shell 脚本中不起作用。
因此,当您在脚本中执行此命令时,`$(current_month)` 不会被展开,tar 命令会将其视为文件名的一部分,从而导致错误。您可以尝试修改命令,将变量替换为当前月份的实际值。例如,如果当前月份是 02,您可以使用以下命令:
```
tar -zcvf error_02.tar.gz ./error_02*.log
```
如果您希望使用变量来指定月份,可以将命令写入一个脚本文件,然后在脚本中使用 shell 变量来指定月份,例如:
```
#!/bin/bash
current_month=$(date +%m)
tar -zcvf error_${current_month}.tar.gz ./error_${current_month}*.log
```
在此脚本中,`$(date +%m)` 将会展开为当前月份,然后将其存储在变量 `current_month` 中。然后,`tar` 命令将使用该变量来创建归档文件。
tar -zcvf out_release/${EXTERNAL_VERSION}.tar.gz -C out/target/product/cancun/cp_sign/QOGIRL6_SIGN .
这是一个命令,将指定目录下的文件打包成一个名为`${EXTERNAL_VERSION}.tar.gz`的压缩包,并保存在`out_release`目录下。具体来说,该命令的参数含义如下:
- `-z`: 表示使用 gzip 压缩算法进行压缩。
- `-c`: 表示创建新的压缩包。
- `-v`: 表示在压缩过程中输出详细信息。
- `-f`: 表示指定压缩后的文件名,该参数必须放在最后,后面紧跟着压缩后文件的路径。
- `${EXTERNAL_VERSION}.tar.gz`: 压缩后的文件名,其中`${EXTERNAL_VERSION}`是一个变量,表示外部版本号。
- `-C out/target/product/cancun/cp_sign/QOGIRL6_SIGN`: 表示压缩指定目录下的文件,其中`-C`参数表示切换到指定目录,后面跟着的就是该目录的路径。`. `表示压缩该目录下的所有文件和子目录。