Ubuntu/Windows (WSL) のゴミ箱フォルダーはどこにありますか?

Ubuntu/Windows (WSL) のゴミ箱フォルダーはどこにありますか?

使っていますWin10のUbuntu、しかし、コマンドを使用してもゴミ箱フォルダが見つかりません

mv ~/.Trash/foo ~/
mv: cannot stat '/home/man/.Trash/foo': No such file or directory

私の質問は、Ubuntu/Win10 でゴミ箱フォルダを開くにはどうすればよいかということです。

答え1

ごみ~/.local/share/Trashは、少なくともUbuntuでは、にあります。 ~/.local– より正確には、~/.local/share– は、XDG準拠のプログラムがユーザーデータ(フォント、メールメッセージなど)を、XDG ベースディレクトリ仕様

WSL上のUbuntuは、デフォルトではターミナルとGUIなし

NautilusやThunarのようなUbuntuのグラフィカルファイルマネージャーからファイルが削除されると、それらは実際にはに移動されます。ファイルは通常、ターミナルからを~/.local/share/Trash使用して削除されます。rmしない動くゴミ箱フォルダへ

したがって、Linux グラフィカル ファイル マネージャーを使用しない限り、WSL にはゴミ箱フォルダーはありません。

答え2

私のWSL(Ubuntu-20.04)には、~/.local/share/Trashフォルダがありませんでした。ここの指示に従いました(https://github.com/sindresorhus/trash) がインストールされ trash、 とともにtrash-cliが使用されていますnpm

このようなものが今は機能しています!

[username@host]$ tldr trash
trash
A CLI for managing your trashcan / recycling bin.More information: https://github.com/andreafrancia/trash-cli.

 - Delete a file (send to trash):
   trash {{path/to/file}}

 - List files in trash:
   trash-list

 - Restore file from trash:
   trash-restore

 - Empty trash:
   trash-empty

 - Empty trash, keeping files trashed less than {{10}} days ago:
   trash-empty {{10}}

 - Remove all files named 'foo' from the trash:
   trash-rm foo

 - Remove all files with a given original location:
   trash-rm {{/absolute/path/to/file_or_directory}}

ヒント:https://github.com/tldr-pages/tldrマニュアルページには通常記載されていないコマンドの実用的な例を取得できる、非常に優れたツールです。

答え3

Ubuntu のゴミ箱フォルダは、通常、gio(Gnome IO) と GVfs (Gnome 仮想ファイルシステム) によって提供されます。Nautilus などのアプリケーションは GVfs 上で動作してゴミ箱にアクセスしますが、コマンドライン ツールを使用して、GUI を使用せずに WSL または Ubuntu Server のコマンドラインから直接実行することもできますgio

それするただし、D-Bus ユーザー セッションが必要ですが、これは (a) Systemd がなく、(b) ユーザー サービスを開始するための「ログイン」という概念がないため、WSL では自動的に実行されません。

WSL Ubuntu ディストリビューションではgio、と D-bus は両方ともデフォルトでインストールされていますが、パッケージを追加する必要がありますgvfs(少なくとも WSL では)。

sudo apt install gvfs

次に、D-Bus サポートを使用してシェルを起動する必要があります。これは複数の方法で実行できますが、おそらく最適なオプションは、WSL 起動コマンド (Windows ターミナルまたはその他の場所) を次のように変更することです。

wsl ~ -e dbus-launch bash # Or your preferred shell

この時点で、WSL コマンド ラインからゴミ箱を使用できます。例:

touch "a test file"
gio trash "a test file"
gio list Trash://
ls -lah ~/.local/share/Trash/files
gio trash --empty
gio list Trash://
ls -lah ~/.local/share/Trash/files

関連情報