2

ファイル/ディレクトリを削除するために「sudo rm -r」を使い始めました。私はそれをrmのエイリアスとして入れました。

私は通常、自分が何をしているのかを知っており、経験豊富な Linux ユーザーです。

ただし、「ENTER」を押すと、rm を実行する前に、ファイルのリストが画面に表示され、最後にファイルの削除を OK するプロンプトが表示されるようにしたいと思います。

オプション -i -I -v は、私が望むことをしません。画面上のすべての印刷ファイルに対して 1 つのプロンプトのみが必要です。

ありがとうございました。

4

4 に答える 4

4
##
# Double-check files to delete.
delcheck() {
  printf 'Here are the %d files you said you wanted to delete:\n' "$#"
  printf '"%s"\n' "$@"
  read -p 'Do you want to delete them? [y/N] ' doit
  case "$doit" in
    [yY]) rm "$@";;
    *) printf 'No files deleted\n';;
  esac
}

これは、(適切に使用すると) 必要な処理を実行するシェル関数です。ただし、現在のシェルに関数をロードして で使用しようとすると、別のシェルが作成されるsudoため、期待どおりに動作しません。sudoしたがって、これをシェル スクリプトにする必要があります…</p>

#!/bin/bash

… same code as above …

# All this script does is create the function and then execute it.
# It's lazy, but functions are nice.
delcheck "$@"

…次に、sudoアクセスできることを確認します。実行パスにある場所に配置sudoします(構成によって異なりsudoます。)次に、本当に正確に実行したい場合sudo rm -r *は、スクリプトに名前を付ける必要がありますrm(私の意見では危険です)。そのPATHがあなたのPATHの前に。 /bin(これも危険)。しかし、そこに行きます。

于 2013-07-23T19:50:25.427 に答える
1

この単純なスクリプトは、指定されたファイルを削除する前に応答を求めます。

rmc スクリプト ファイル:

read -p "ok to delete? " ans
case $ans in
    [yY]*) sudo rm "$@" ;;
    *) echo "Nothing deleted";;
esac

このように呼び出す

./rmc *.tmp
于 2013-07-23T19:35:57.513 に答える