rm -iのデフォルト値として「yes」を設定する方法

rm -iのデフォルト値として「yes」を設定する方法

削除されたファイルの長いリストを見たいです。あまり重要ではないため、誤って一部のファイルを削除しても問題になりません。しかし、まだいくつかのファイルを保存したいと思います。

ダイヤルしてrm -i ./*プロンプトを受信しrm: remove regular file 'myfile'?ますが、デフォルトを「はい」(Y / n)に設定するにはどうすればよいですか?

答え1

rm関数やスクリプトの周りに独自のレイヤーを作成するのに邪魔になることはありません。 (私は個人的にスクリプトを好む。)

ファイルにコピーし、yrmディレクトリ$PATH(たとえば/usr/local/bin)に入れて実行可能にします(chmod a+x /usr/local/bin/yrm)。

#!/bin/sh
#
fails=0    # Number of failures is presented as exit status

for item in "$@"
do
    # Skip directories
    if [ -d "$item" ]
    then
        printf '%s: skipping directory\n' "$item" >&2
        fails=$((fails+1))
        continue
    fi

    # Prompt the user
    printf "%s: remove regular file '%s' (Y/n)? " "${0##*/}" "$item" >&2
    read yn || exit $((fails+1))

    # Either no response or "y" is good enough for deletion
    if [ -z "$yn" ] || [ y = "$yn" ]
    then
        rm "$item" </dev/null    # No -f so we expose error messages
        [ $? -gt 0 ] && fails=$((fails+1))
    fi
done

# Report failures (0=success)
exit $fails

その後、フラグと1つ以上のファイルなしで呼び出すことができます。例えば、

yrm *.txt

答え2

Case ステートメントを使用できます。

# path of file

file_path=$(ls -ltr | grep "^-" | awk -F" " '{ print $9 }' | grep -i ".txt*")
read -p "enter yes for removing files $file_path" user_inp

# -p :- for user prompt

case ${user_inp}
    in Yes | yes | YES )

        rm  $file_path
        ;;
    *)
        echo "you don't want to delete that file"
esac

関連情報