関数を使用せずにごみ箱機能を作成する

関数を使用せずにごみ箱機能を作成する

私は古いLinux学習プロジェクトを進めています。

「ファイルを.Trashというディレクトリに移動して、永続的な削除からファイルを保護するエイリアスを作成します。30日より古い.Trashの内容を定期的に削除するようにcrontabのコマンドを作成します(ディレクトリの場合でも)。」

これを行うには、alias cliコマンドを使用すると予想しました。関数を使用したり、入力を許可する小さなスクリプトを作成することはできません。

まずこれは可能ですか?本に出ているからそうだと思います。第二に、どこから始めるべきですか?これらのいくつかは明らかです。 .Trashディレクトリを作成し、rmの代わりにエイリアスを使用するという概念を理解できますが、これを行うためにエイリアスにどのようなcliアクションを入れることができますか?

Alias trash=mv xxx .trash xxx

上記の場合、ユーザー入力または変数情報が必要です。ここで私が見ていないものは何ですか?

答え1

LinuxなのでGNUがmv使えるとします。-t移動する必要があるパス名の前にターゲットディレクトリを指定するオプションがあります。

したがって、簡単なことは次のとおりです。

alias trash='mkdir -p "$HOME/.trash" && mv -b -t "$HOME/.trash"'

trashこれにより、代わりに使用できるエイリアスが生成されますrm(ただし、実際にはどのオプションも許可されませんrm)。使用するとき

trash thisfile thatdir

実際に実装されたもの

mkdir -p "$HOME/.trash" && mv -b -t "$HOME/.trash" thisfile thatdir

また、このエイリアスは、ごみ箱ディレクトリがまだ存在しないか削除されている場合、ホームディレクトリにごみ箱ディレクトリを作成します。また、同じ名前のファイルがすでに存在する場合mv -b(別のGNUのみのフラグ)を使用して、ごみ箱フォルダにバックアップを作成します。mv

このごみ箱ディレクトリから古い項目をクリーンアップするクローン操作は、次のことを行います。

find "$HOME/.trash" -mindepth 1 -ctime +30 -delete 2>/dev/null

これにより、30日以上経過したすべてのコンテンツが削除され、ディレクトリ自体にスパムが送信されるのを防ぎます。ディレクトリはすべての内容が消えるまで削除されません。

関連情報