【问题标题】:restoring deleted file using bash in unix在 unix 中使用 bash 恢复已删除的文件
【发布时间】:2017-03-16 20:56:06
【问题描述】:

晚上好

我有一个任务要完成并尝试了以下但不起作用

#!/bin/bash

FPath=$(grep $1 $HOME/.restore.info | cut -d":" -f2)
FName=$(grep $1 $HOME/.restore.info | cut -d":" -f1)
if [ $# -eq 0 ]
then
        echo "No input detected"
        exit $?

elif [ "$FName" = $1 ]
then
        echo " Match found and restored to its original location"
        mv ~/deleted/$1 $FPath
else
        echo "File does not exist"
        exit $?
fi

它应该将特定文件夹中已删除的文件恢复到其原始位置

但是,它一直说文件不存在,即使文件存在。

如果用户选择覆盖现有文件,我还需要为现有文件创建一个案例。请帮我解决这个问题

感谢您的帮助

【问题讨论】:

  • 如果任何文件名包含空格,脚本将由于缺少引号而失败。写"$1"而不是$1"$(...)"而不是$(...)等等(但不要引用~,必须保持不引用:)
  • 感谢您的回复,我已经完成了您所指出的操作,但仍然显示相同的错误消息
  • 看来"$FName" = $1 不是真的。所以尝试呼应它们并确保它们是平等的。
  • 非常感谢阿拉什。你是绝对正确的路径不正确我已将路径修改如下:并且代码都开始工作#!/bin/bash FPath="$(grep "$1" $HOME/.restore.info | cut -d" :" -f2)" FName="$(grep "$1" $HOME/.restore.info | cut -d":" -f1)" echo $FPath echo $FName if [ $# -eq 0 ] then echo "未检测到输入" exit 1 else if [ "$1" = $FName ] then echo " 找到匹配并恢复到其原始位置" mv ~/deleted/$1 $FPath else echo "文件不存在" exit 1 fi fi跨度>
  • 编辑您的问题,以便您可以格式化您的代码。并展示.restore.info 的样子。以及如何调用脚本的示例(带有完整路径的文件?)。

标签: linux bash shell ubuntu unix


【解决方案1】:

$FPath$FName 如果$# 确实为0,则将进入无限等待,这意味着它永远不会到达其余行。

如果您已经处理好了: 忽略 grep 中的大小写: grep -i $1 $HOME/.restore.info | cut -d":" -f2

如果 $1 有多个条目,则捕获 grep 中的第一个匹配项 grep -i $1 $HOME/.restore.info | cut -d":" -f2 | head -1

【讨论】:

  • 它与上述修改后的命令一起使用,仅用于恢复两个文件。现在它再次显示文件不存在。你认为是什么问题?路径和名称都很好。如果没有检测到输入,它总是说没有检测到输入,因此不会进入无限等待
  • 这个脚本是怎么调用的?你能告诉我你是如何获得“文件不存在”的吗?
猜你喜欢
  • 1970-01-01
  • 2020-07-09
  • 1970-01-01
  • 1970-01-01
  • 2013-06-27
  • 2014-06-11
  • 2013-06-22
  • 2020-06-09
  • 1970-01-01
相关资源
最近更新 更多