私は古い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日以上経過したすべてのコンテンツが削除され、ディレクトリ自体にスパムが送信されるのを防ぎます。ディレクトリはすべての内容が消えるまで削除されません。