linux tar: Exiting with failure status due to previous
- sudo 权限
今天进行解压DM3730_DVSDK安装包的时候,我直接用的解压命令 tar -jxvf … 然而到最后出现了解压错误tar: Exiting with failure status due to previous error
原来是我没有加sudo 导致出现了这个错误,解决办法就是,加上sudo tar -jxvf 安装包。
————————————————
版权声明:本文为CSDN博主「YoungHonker」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yanghonker/article/details/35594695
- 过滤标注stdout,只打印stderr
事实上tar命令应该会打印出所谓的“上一个错误”(“previous errors”)到底是什么错误,但是如果你让tar运行在详细模式(即verbose mode,例如, -cvf),那么你会很容易错失这些信息。要找到这些信息,你可以像下面那样,把tar的标准输出(stdout)信息过滤掉。
$ tar cvzfz backup.tgz my_program/ > /dev/null
然后你会看到tar输出的标准错误(stderr)信息。(LCTT 译注:自然,不用 v 参数也可以。)
tar: my_program/src/lib/.conf.db.lock: Cannot open: Permission denied
tar: Exiting with failure status due to previous errors
你可以从上面的例子中看到,引起错误的原因的确是“读权限不允许”(denied read permission.)要解决这个问题,只要简单地更改(或移除)问题文件的权限,然后重新执行tar命令即可。
source filename 与 sh filename 及./filename执行脚本的区别
当shell脚本具有可执行权限时,用sh filename与./filename执行脚本是没有区别得。./filename是因为当前目录没有在PATH中,所有”.”是用来表示当前目录的。
sh filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export。
source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。