0

事前に助けてくれてありがとう、これはコースワークなので、さらに読んで/ポインタをいただければ幸いです。

先日、私自身の削除/ごみ箱/復元スクリプトに関する質問をしました。削除とごみ箱を完了し、後で使用する復元用のバックアップ テキスト ファイルを削除しました。

ただし、エラーが発生する代わりに、Restore スクリプトがコンソールで停止するだけです。# ~/Restore -n と入力すると、カーソルは通常の # なしで次の行にスキップし、手動で閉じる必要があります。-n オプションなしでも同様です。-n オプションは、復元する新しい場所を要求する必要があり、それがないと、ファイルの元の場所に復元する必要があります。スクリプトを投稿します。皆さんの意見を見てください。

#!/bin/bash
if [ "$1" == "-n" ]
then  cd ~/rubbish
  restore= grep $2 ~/store      
  filename= basename "$restore"
  echo "Type the files new location"
  read location
  location1 = "readlink -f $location"       
  mv -i $filename "$location1" /$filename       
else  cd ~/rubbish          
  restore= grep $2 ~/store      
  filename= basename "$restore"         
  mv -i $filename "$location1" $location            
fi

したがって、 ~/rubbish はごみ箱として機能する私自身が作成したディレクトリであり、 ~/store は削除されたファイルを追加するテキスト ファイルです。必要に応じて、3 つのスクリプト全体を投稿できますか?

どうもありがとう!

4

2 に答える 2

2

呼び出す~/Restore -nと、そのif部分に移動してgrep $2 ~/store. パラメーターがない$2ためgrep ~/store、標準入力からの入力で "~/store" を検索するように grep に指示します。

そのため、スクリプトは停止して入力を待ちます。

2 番目のパラメーターをテストするか$2、二重引用符で囲んで、grep が正しい数のパラメーターを取得することを確認できます。1. 2 番目のパラメーターテストし、2 . $2 を二重引用符で囲みます。

さらにいくつかのポイント:

  • 前後にスペースを入れないでください=
  • 出力をキャプチャしたい場合は、コマンドをバッククォートで囲みます
  • ディレクトリとファイル名の間にスペースはありません

だから、あなたはおそらく書くべきです

restore=`grep "$2" ~/store`
filename=`basename "$restore"`
echo "Type the files new location"
read location
location1=`readlink -f "$location"`
mv -i $filename "$location1/$filename"

bash 情報を見て、「書籍とリソース」に従うことをお勧めします。

于 2012-11-23T22:21:26.693 に答える
1

私はかなり前にこれらの 1 つを書き、今日でも使用しています。デスクトップのゴミ箱を開き、右クリックして「復元」を選択できるように作成したため、復元スクリプトはありません。つまり、Linux の "trash info" 標準に従っています。

http://wiki.linuxquestions.org/wiki/Scripting#KDE4_Command_Line_Trash_Can

于 2013-10-18T14:43:43.330 に答える