コンピューターの起動時にすべてのディレクトリのファイルをクリーンアップする小さなスクリプトをどのように記述できますか?


9

インターネット用のゲストコンピュータを持っています。一部のユーザーはいくつかのファイルをダウンロードしてデスクトップに残しますが、コンピューターにはすべてのゲスト用の十分なスペースがなく、そこにファイルを置くことが許可されていません。

私がやりたいのは、コンピュータの起動時にホームディレクトリ内のすべてのファイルをクリーンアップすることですが、音楽、画像、ドキュメント、ダウンロードなどのディレクトリ構造は維持してください。

どうすればこれを達成できますか?


ほとんどすべてに:あなたの答え-すみません-吸うとあなたはそれを知っています。ゲストが別の言語を選択した場合はどうなりますか?これらすべての非表示の構成ファイルとキャッシュファイル(ブラウザの履歴、ゴミ箱など)はどうですか?(Roland Taylorによると)削除されないファイルのホワイトリストがあるはずです。さらに、デフォルトディレクトリのxdg-user-dirおよびの使用を検討する必要~/.config/user-dirs.dirsがあります。
dAnjou

@dAnjou:私のソリューションでは、ホームの標準フォルダーは選択した言語に従って作成されます。また、OPはクリーンな環境を要求しているようで、なぜ「ホワイトリスト」と呼ばれるのか理解できません。
enzotib 2011

1
@enzotib:わかりました。どうやらローランドテイラー(そして私)は間違っていました。何が当たったのかわかりません。あなたは、あなたの答えを編集し、可能性がにあなたのスクリプトを入れて追加することができます/etc/gdm/PostSession/etc/gdm/PreSession私は私のdownvoteを取り戻すことができるように?
dAnjou 2011

回答:


14

からユーザーが作成したときにコピーされたファイルは別として、ホームディレクトリ内のすべてのファイルは再作成されるため、安全に削除できます。/etc/skel

#!/bin/bash

shopt -s dotglob 
rm -rf /home/username/*
sudo -u username cp -a /etc/skel/* /home/username/

where usernameは、意味のあるものに置き換える必要があります。

リクエスト(「コンピュータの起動時」)ごとに、から実行できます/etc/rc.local。多くの場合、ログインするたびに実行するため、/etc/gdm/PostSessionまたはの下に配置し/etc/gdm/PreSessionます。


削除するとログインできなくなるファイルがあることを知っていますか?
RolandiXor

@Roland Taylor:どのファイルですか?すべてのファイルの削除をテストしました
enzotib '29

1
@danjjl:このオプションを使用すると、bash *はすべてのファイルとディレクトリ(非表示のものも含む)と一致します。
enzotib 2011

1
いいえ、ファイルがない場合でもログインできます。ホームディレクトリがない場合、問題が発生したり、ファイルに不正な権限が設定されたりする可能性があります。しかし、プログラムは、いかなる状況下においても、ファイルが存在すると想定してはなりません。存在しない場合は、作成するだけです。
Jo-Erlend Schinstad '30

1
「スタートアップアプリケーション」に配置することはお勧めしません。おそらく、グローバルスタートアップスクリプトのに実行さuser-dirs-update-gtkます。別のユーザーの場合はusername、スクリプトでを変更する必要があります。最後に、guestアカウントには永続的なホームディレクトリがないため、このアカウントではスクリプトは必要ありません。
enzotib 2011

6

ゲストセッションについて説明しています。それがどのように機能するかは完全にはわかりませんが、11.10では、ウェルカム画面にデフォルトで表示されます。そのアカウントはあなたが望むものを正確に実行するので、問題は11.04でアカウントを再作成することに時間を費やしたいのか、それとも11.10へのアップグレードに慣れるまで待つのかということです。木曜日にベータ1に入ります。いずれにしても、ライブセッションをダウンロードして起動し、好みを確認しても問題はありません。それがあなたの望みどおりの方法であれば、それを再作成する方法がわかります。


2

選択した名前でスクリプトを作成し、次のコンテンツを追加します。

rm -r ~/Music/*
rm -r ~/Pictures/*
rm -r ~/Documents/*
rm -r ~/Videos/*
rm -r ~/Downloads*
rm -r ~/Desktop/*

このファイルを保存して実行可能ファイルとしてマークし、それを起動アプリケーションに追加します(クリーンアップが必要なアカウント用)。

これにより、それらのディレクトリ内のすべてのファイルがクリアされます。ただし、コンテンツ~/自体をクリーンアップすることは少し複雑であり、安全な方法が見つかった場合は回答を更新します。


1

あなたは次のようなことができます

#!/bin/bash

rm -rf /home/Guest/Desktop/*
rm -rf /home/Guest/Documents/*
rm -rf /home/Guest/Downloads/*
rm -rf /home/Guest/Music/*
rm -rf /home/Guest/Pictures/*
rm -rf /home/Guest/Videos/*

これをのようなものとして保存し、cleanup.shで実行可能にしchmod +x cleanup.shます。その後、を呼び出すことができます./cleanup。これにより、これらのフォルダ内のすべてが削除されることに注意してください。注意して使用してください。「Guest」を必ずユーザー名に変更してください。

スタートアップアプリケーションの設定に追加することで、起動時にこれを実行できます。

このスクリプトをcronジョブとしてシステムに追加して、毎晩実行することもできます。cronジョブの詳細については、こちらをご覧ください。


笑あなたの答えは私のものより良いです:D!ところで、-rfを-rに変更する方が安全です。
RolandiXor

@Roland:必ずしも安全でなく、起こりうる落とし穴:-f読み取り専用ファイル(書き込みビットが設定されていないファイル)の削除を要求するのを防ぎ、確認なしにそれらを削除します。を削除する-fと、ユーザーは/home/Guest/Desktop/000000000ファイルを作成して読み取り専用にすることで、ファイルが削除されないようにすることができます。これにより、スクリプトが非表示の確認でハングし、ファイルの削除が続行されなくなります。Firefoxは読み取り専用ダウンロードを行うことが知られています。
Lekensteyn 2011

これが最初に含めた理由です。読み取り専用ファイルが発生した場合にスクリプトが失敗したくありませんでした。とにかくかなり破壊的なスクリプト-fだったので、フラグを追加してもそれほど害にはならなかったとも思いました。私はに戻って、それを追加することができます。
クリス・ハーパー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.